diff --git a/Makefile.toml b/Makefile.toml index 236fb15..0897fde 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -18,6 +18,7 @@ dependencies = [ "install_mzoon", "init_pixi_canvas", "init_tauri_glue", + "init_excalidraw_canvas", ] [tasks.start] @@ -27,6 +28,7 @@ run_task = { fork = true, parallel = true, name = [ "tauri_dev_with_cleanup", "watch_pixi_canvas", "watch_tauri_glue", + "watch_excalidraw_canvas", ]} [tasks.start_browser] @@ -36,6 +38,7 @@ run_task = { fork = true, parallel = true, name = [ "mzoon_start_with_cleanup", "watch_pixi_canvas", "watch_tauri_glue", + "watch_excalidraw_canvas", ]} [tasks.start_browser_release] @@ -45,6 +48,7 @@ run_task = { fork = true, parallel = true, name = [ "mzoon_start_release_with_cleanup", "watch_pixi_canvas", "watch_tauri_glue", + "watch_excalidraw_canvas", ]} [tasks.bundle] @@ -204,7 +208,14 @@ run_task = { fork = true, parallel = true, name = [ description = "Compile `frontend/typescript/pixi_canvas` on change" cwd = "frontend/typescript/pixi_canvas" command = "node_modules/.bin/esbuild" -args = ["pixi_canvas.ts", "--bundle", "--outfile=../bundles/pixi_canvas.js", "--format=esm", "--watch"] +args = [ + "pixi_canvas.ts", + "--bundle", + "--outfile=../bundles/pixi_canvas.js", + "--format=esm", + "--minify", + "--watch" +] [tasks.watch_build_pixi_canvas.windows] command = "node_modules/.bin/esbuild.cmd" @@ -249,7 +260,14 @@ run_task = { fork = true, parallel = true, name = [ description = "Compile `frontend/typescript/tauri_glue` on change" cwd = "frontend/typescript/tauri_glue" command = "node_modules/.bin/esbuild" -args = ["tauri_glue.ts", "--bundle", "--outfile=../bundles/tauri_glue.js", "--format=esm", "--watch"] +args = [ + "tauri_glue.ts", + "--bundle", + "--outfile=../bundles/tauri_glue.js", + "--format=esm", + "--minify", + "--watch" +] [tasks.watch_build_tauri_glue.windows] command = "node_modules/.bin/esbuild.cmd" @@ -272,3 +290,68 @@ args = [ [tasks.watch_typecheck_tauri_glue.windows] command = "node_modules/.bin/tsc.cmd" +## excalidraw_canvas ## + +[tasks.init_excalidraw_canvas] +description = "Initialize `frontend/typescript/excalidraw_canvas`" +dependencies = [ + "init_excalidraw_canvas_npm_install", + "init_excalidraw_canvas_en_json", +] + +[tasks.init_excalidraw_canvas_npm_install] +description = "Partly initialize `frontend/typescript/excalidraw_canvas`" +cwd = "frontend/typescript/excalidraw_canvas" +command = "npm" +args = ["install"] + +[tasks.init_excalidraw_canvas_npm_install.windows] +command = "npm.cmd" + +[tasks.init_excalidraw_canvas_en_json] +description = "Partly initialize `frontend/typescript/excalidraw_canvas`" +cwd = "frontend/typescript/excalidraw_canvas" +command = "cp" +args = ["-r", "locales", "node_modules/@excalidraw/excalidraw/types/"] + +[tasks.watch_excalidraw_canvas] +description = "Build and typescheck Typescript on change" +run_task = { fork = true, parallel = true, name = [ + "watch_build_excalidraw_canvas", + "watch_typecheck_excalidraw_canvas", +]} + +[tasks.watch_build_excalidraw_canvas] +description = "Compile `frontend/typescript/excalidraw_canvas` on change" +cwd = "frontend/typescript/excalidraw_canvas" +command = "node_modules/.bin/esbuild" +args = [ + "excalidraw_canvas.tsx", + "--bundle", + "--outfile=../bundles/excalidraw_canvas.js", + "--format=esm", + "--minify", + "--watch", +] + +[tasks.watch_build_excalidraw_canvas.windows] +command = "node_modules/.bin/esbuild.cmd" + +[tasks.watch_typecheck_excalidraw_canvas] +description = "Typecheck `frontend/typescript/excalidraw_canvas` on change" +cwd = "frontend/typescript/excalidraw_canvas" +command = "node_modules/.bin/tsc" +args = [ + "excalidraw_canvas.tsx", + "--jsx", "react", + "--watch", + "--noEmit", + "--preserveWatchOutput", + "--strict", + "--target", "esnext", + "--module", "esnext", + "--moduleResolution", "bundler", +] + +[tasks.watch_typecheck_excalidraw_canvas.windows] +command = "node_modules/.bin/tsc.cmd" diff --git a/MoonZoon.toml b/MoonZoon.toml index d06702c..d23184d 100644 --- a/MoonZoon.toml +++ b/MoonZoon.toml @@ -25,6 +25,7 @@ frontend = [ backend = [ "backend/Cargo.toml", "backend/src", + "backend/globals.js", "backend/index.js", "backend/style.css", ] diff --git a/README.md b/README.md index 696e1b0..1bc24dc 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,11 @@ Fastwave - Decoder Interface

+

Diagrams - open, edit, JS API

+

+ Fastwave - Diagrams +

+ --- ### Installation (desktop version): diff --git a/backend/globals.js b/backend/globals.js new file mode 100644 index 0000000..2455ae5 --- /dev/null +++ b/backend/globals.js @@ -0,0 +1,7 @@ +// -- Excalidraw settings -- +// @TODO replace with "true" once Preact is integrated into ExcalidrawCanvas +var process = { env: { IS_PREACT: "false" } }; +// @TODO probably remove or update once Preact is integrated into ExcalidrawCanvas +window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = { isDisabled: true }; +window.EXCALIDRAW_ASSET_PATH = "/_api/public/excalidraw/"; +// -- / -- diff --git a/backend/index.js b/backend/index.js index b1896bc..7abc7b8 100644 --- a/backend/index.js +++ b/backend/index.js @@ -1,2 +1,3 @@ import { FW } from '/_api/pkg/frontend.js'; window.FW = FW; + diff --git a/backend/src/main.rs b/backend/src/main.rs index c9df718..36e3a05 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -5,6 +5,11 @@ async fn frontend() -> Frontend { .title("FastWave") .append_to_head(include_str!("../favicon.html")) // realfavicongenerator.net .append_to_head(concat!("")) + .append_to_head(concat!( + "" + )) .append_to_head(concat!( "\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n const name = buffer.toLowerCase()\n\n if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code) && buffer.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRawSizeMax) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n return continuationAfter(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow)\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return after\n }\n\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected a line ending')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return effects.attempt(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, ok, nok)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLWZsb3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQVFpQztBQUN3QztBQUNyQjtBQUNRO0FBQ1I7QUFDYjtBQUNFOztBQUV6QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMEVBQWM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaURBQWlELDRFQUFnQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLE1BQU07QUFDbkI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU0sVUFBVSwwRUFBYztBQUNsQyxrQkFBa0IsMEVBQWM7QUFDaEMsa0JBQWtCLDhFQUFrQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsaUZBQXFCO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsdUVBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLDhFQUFrQjtBQUNuQztBQUNBLGVBQWUseUZBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxvRUFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVU7QUFDM0I7QUFDQSxlQUFlLHFGQUFxQjtBQUNwQztBQUNBOztBQUVBLGlCQUFpQixtRkFBdUI7QUFDeEM7QUFDQSxlQUFlLG1GQUFtQjtBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLG9FQUFVO0FBQ2xCO0FBQ0EsZUFBZSx5RkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGtCQUFrQiw0RkFBNEI7O0FBRTlDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsUUFBUSxvRUFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBUztBQUN4QixlQUFlLHVFQUFXO0FBQzFCLGVBQWUsNkVBQWlCO0FBQ2hDLE1BQU0sbUZBQXlCO0FBQy9CO0FBQ0EsNkJBQTZCLHVFQUFXO0FBQ3hDOztBQUVBLG1DQUFtQywrRUFBcUI7QUFDeEQsaUJBQWlCLGlGQUFpQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLGlGQUF1QjtBQUNqQyxpQkFBaUIsbUZBQW1COztBQUVwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLHNGQUFzQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixzRUFBVSxJQUFJLDJFQUFpQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQiw2RUFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsdUVBQVc7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHVFQUFXLGFBQWEsNEVBQWdCLElBQUksb0VBQVU7QUFDdkU7QUFDQTtBQUNBOztBQUVBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBVTtBQUN6QixlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSw0RUFBZ0I7QUFDL0IsTUFBTSwyRUFBaUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsMEVBQWM7QUFDL0I7QUFDQTtBQUNBOztBQUVBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsMEVBQWM7QUFDN0IsZUFBZSwwRUFBYztBQUM3QixlQUFlLDZFQUFpQjtBQUNoQyxlQUFlLDZFQUFpQjtBQUNoQztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLCtFQUFtQixhQUFhLDRFQUFnQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHVFQUFhO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQVM7QUFDeEIsZUFBZSwrRUFBbUI7QUFDbEMsZUFBZSw0RUFBZ0I7QUFDL0IsZUFBZSx1RUFBVztBQUMxQixlQUFlLDBFQUFjO0FBQzdCLGVBQWUsMEVBQWM7QUFDN0IsZUFBZSw2RUFBaUI7QUFDaEMsZUFBZSw2RUFBaUI7QUFDaEMsTUFBTSxtRkFBeUI7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSx1RUFBVztBQUMxQixlQUFlLDZFQUFpQjtBQUNoQyxNQUFNLHVFQUFhO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQiw2RUFBaUI7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHNFQUFVLGVBQWUscUZBQXFCO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsMEVBQWMsZUFBZSxpRkFBaUI7QUFDL0Q7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiw2RUFBaUIsZUFBZSx5RkFBeUI7QUFDMUU7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiw4RUFBa0IsZUFBZSx5RkFBeUI7QUFDM0U7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixvRkFBd0IsZUFBZSxtRkFBbUI7QUFDM0U7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSw0RUFBa0I7QUFDeEIsa0JBQWtCLG1GQUFtQixlQUFlLHNGQUFzQjtBQUMxRTtBQUNBLG1CQUFtQiw4RUFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRCxtQkFBbUIsOEVBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSw4Q0FBTSxDQUFDLDRFQUFrQjtBQUM3QixrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hEO0FBQ0E7O0FBRUEsa0JBQWtCLDhFQUFrQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixzRUFBVTtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsdUVBQVc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDOztBQUVBLFVBQVUsK0VBQXFCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsb0VBQVUsMEJBQTBCLHdGQUF3QjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDZFQUFpQjtBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0VBQVUsZUFBZSxxRkFBcUI7QUFDL0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hELG1CQUFtQiw4RUFBa0I7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDBFQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxRQUFRLDRFQUFrQjtBQUMxQixvQkFBb0IsNEVBQWdCO0FBQ3BDO0FBQ0EsbUJBQW1CLDRFQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU0sQ0FBQyw0RUFBa0I7QUFDN0Isa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakMsMkJBQTJCLHFEQUFTO0FBQ3BDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLWZsb3cuanM/YzhmMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2h0bWxCbG9ja05hbWVzLCBodG1sUmF3TmFtZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaHRtbEZsb3cgPSB7XG4gIG5hbWU6ICdodG1sRmxvdycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUh0bWxGbG93LFxuICByZXNvbHZlVG86IHJlc29sdmVUb0h0bWxGbG93LFxuICBjb25jcmV0ZTogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGJsYW5rTGluZUJlZm9yZSA9IHt0b2tlbml6ZTogdG9rZW5pemVCbGFua0xpbmVCZWZvcmUsIHBhcnRpYWw6IHRydWV9XG5jb25zdCBub25MYXp5Q29udGludWF0aW9uU3RhcnQgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZVRvSHRtbEZsb3coZXZlbnRzKSB7XG4gIGxldCBpbmRleCA9IGV2ZW50cy5sZW5ndGhcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChcbiAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuaHRtbEZsb3dcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGV4ID4gMSAmJiBldmVudHNbaW5kZXggLSAyXVsxXS50eXBlID09PSB0eXBlcy5saW5lUHJlZml4KSB7XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgdG9rZW4uXG4gICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgbGluZSB0b2tlbi5cbiAgICBldmVudHNbaW5kZXggKyAxXVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gUmVtb3ZlIHRoZSBsaW5lIHByZWZpeC5cbiAgICBldmVudHMuc3BsaWNlKGluZGV4IC0gMiwgMilcbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sRmxvdyhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbWFya2VyXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGNsb3NpbmdUYWdcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBidWZmZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge0NvZGV9ICovXG4gIGxldCBtYXJrZXJCXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIEhUTUwgKGZsb3cpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYDxgLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuLCAnZXhwZWN0ZWQgYDxgJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmh0bWxGbG93KVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCB0YWcgbmFtZSBvciBvdGhlciBzdHVmZi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4IC8+XG4gICAqICAgICAgXlxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZXhjbGFtYXRpb25NYXJrKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkZWNsYXJhdGlvbk9wZW5cbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgY2xvc2luZ1RhZyA9IHRydWVcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1ZXN0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSBjb25zdGFudHMuaHRtbEluc3RydWN0aW9uXG4gICAgICAvLyBUbyBkbzpcbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIC8vIFRvIGRvOiB1c2UgYG1hcmtkb3duLXJzYCBzdHlsZSBpbnRlcnJ1cHQuXG4gICAgICAvLyBXaGlsZSB3ZeKAmXJlIGluIGFuIGluc3RydWN0aW9uIGluc3RlYWQgb2YgYSBkZWNsYXJhdGlvbiwgd2XigJlyZSBvbiBhIGA/YFxuICAgICAgLy8gcmlnaHQgbm93LCBzbyB3ZSBkbyBuZWVkIHRvIHNlYXJjaCBmb3IgYD5gLCBzaW1pbGFyIHRvIGRlY2xhcmF0aW9ucy5cbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFgLCBhdCBkZWNsYXJhdGlvbiwgY29tbWVudCwgb3IgQ0RBVEEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgXlxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxDb21tZW50XG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxDZGF0YVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IGNvbnN0YW50cy5odG1sRGVjbGFyYXRpb25cbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IS1gLCBpbnNpZGUgYSBjb21tZW50LCBhdCBhbm90aGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW5zaWRlIENEQVRBLCBleHBlY3RpbmcgYENEQVRBW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgIF5eXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnN0YW50cy5jZGF0YU9wZW5pbmdTdHJpbmdcblxuICAgIGlmIChjb2RlID09PSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KyspKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcblxuICAgICAgaWYgKGluZGV4ID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L2AsIGluIGNsb3NpbmcgdGFnLCBhdCB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwveD5cbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2VTdGFydChjb2RlKSB7XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYj5cbiAgICogICAgICBeXlxuICAgKiA+IHwgPC9hYj5cbiAgICogICAgICAgXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ05hbWUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCBzbGFzaCA9IGNvZGUgPT09IGNvZGVzLnNsYXNoXG4gICAgICBjb25zdCBuYW1lID0gYnVmZmVyLnRvTG93ZXJDYXNlKClcblxuICAgICAgaWYgKCFzbGFzaCAmJiAhY2xvc2luZ1RhZyAmJiBodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxSYXdcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoaHRtbEJsb2NrTmFtZXMuaW5jbHVkZXMoYnVmZmVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgIG1hcmtlciA9IGNvbnN0YW50cy5odG1sQmFzaWNcblxuICAgICAgICBpZiAoc2xhc2gpIHtcbiAgICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgICByZXR1cm4gYmFzaWNTZWxmQ2xvc2luZ1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuXG4gICAgICBtYXJrZXIgPSBjb25zdGFudHMuaHRtbENvbXBsZXRlXG4gICAgICAvLyBEbyBub3Qgc3VwcG9ydCBjb21wbGV0ZSBIVE1MIHdoZW4gaW50ZXJydXB0aW5nLlxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ICYmICFzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV1cbiAgICAgICAgPyBub2soY29kZSlcbiAgICAgICAgOiBjbG9zaW5nVGFnXG4gICAgICAgID8gY29tcGxldGVDbG9zaW5nVGFnQWZ0ZXIoY29kZSlcbiAgICAgICAgOiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoIHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgYmFzaWMgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8ZGl2Lz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmFzaWNTZWxmQ2xvc2luZyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgY29tcGxldGUgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eC8+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUNsb3NpbmdUYWdBZnRlcihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQ2xvc2luZ1RhZ0FmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYW4gYXR0cmlidXRlIG5hbWUuXG4gICAqXG4gICAqIEF0IGZpcnN0LCB0aGlzIHN0YXRlIGlzIHVzZWQgYWZ0ZXIgYSBjb21wbGV0ZSB0YWcgbmFtZSwgYWZ0ZXIgd2hpdGVzcGFjZSxcbiAgICogd2hlcmUgaXQgZXhwZWN0cyBvcHRpb25hbCBhdHRyaWJ1dGVzIG9yIHRoZSBlbmQgb2YgdGhlIHRhZy5cbiAgICogSXQgaXMgYWxzbyByZXVzZWQgYWZ0ZXIgYXR0cmlidXRlcywgd2hlbiBleHBlY3RpbmcgbW9yZSBvcHRpb25hbFxuICAgKiBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgLz5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgX2I+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlRW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGA6YCBhbmQgYF9gLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5jb2xvbiB8fCBjb2RlID09PSBjb2Rlcy51bmRlcnNjb3JlIHx8IGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmVcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGVFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhdHRyaWJ1dGUgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIF9iPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI+XG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLCBgLmAsIGA6YCwgYW5kIGBfYC5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5kYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5kb3QgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmNvbG9uIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy51bmRlcnNjb3JlIHx8XG4gICAgICBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYXR0cmlidXRlIG5hbWUsIGF0IGFuIG9wdGlvbmFsIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSB1bnF1b3RlZCwgZG91YmxlIHF1b3RlZCwgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGFsbG93aW5nXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPWM+XG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVCZWZvcmUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnRcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fCBjb2RlID09PSBjb2Rlcy5hcG9zdHJvcGhlKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBjb2RlXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCA8YSBiPSdjJz5cbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXJCKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBudWxsXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnF1b3RhdGlvbk1hcmsgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmFwb3N0cm9waGUgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZXF1YWxzVG8gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudCB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYmVmb3JlIHdoaXRlc3BhY2Ugb3IgdGhlXG4gICAqIGVuZCBvZiB0aGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXIoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgb2YgYSBjb21wbGV0ZSB0YWcgd2hlcmUgb25seSBhbiBgPmAgaXMgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQWZ0ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYD5gIGluIGEgY29tcGxldGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24gb2YgYW55IEhUTUwga2luZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQ29tbWVudCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ29tbWVudEluc2lkZVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sUmF3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25SYXdUYWdPcGVuXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxEZWNsYXJhdGlvbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVlc3Rpb25NYXJrICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxJbnN0cnVjdGlvbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0ICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxDZGF0YSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2RhdGFJbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgJiZcbiAgICAgIChtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQmFzaWMgfHwgbWFya2VyID09PSBjb25zdGFudHMuaHRtbENvbXBsZXRlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmh0bWxGbG93RGF0YSlcbiAgICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgICBibGFua0xpbmVCZWZvcmUsXG4gICAgICAgIGNvbnRpbnVhdGlvbkFmdGVyLFxuICAgICAgICBjb250aW51YXRpb25TdGFydFxuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqICAgfCBhc2RcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIG5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgICAgIGNvbnRpbnVhdGlvblN0YXJ0Tm9uTGF6eSxcbiAgICAgIGNvbnRpbnVhdGlvbkFmdGVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLCBiZWZvcmUgbm9uLWxhenkgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4PlxuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYXNkXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25TdGFydE5vbkxhenkoY29kZSkge1xuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBjb250aW51YXRpb25CZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24sIGJlZm9yZSBub24tbGF6eSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgPHg+XG4gICAqID4gfCBhc2RcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBjb250aW51YXRpb25TdGFydChjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50IGNvbnRpbnVhdGlvbiwgYWZ0ZXIgb25lIGAtYCwgZXhwZWN0aW5nIGFub3RoZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNvbW1lbnRJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgY29udGludWF0aW9uLCBhZnRlciBgPGAsIGF0IGAvYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxzY3JpcHQ+Y29uc29sZS5sb2coMSk8L3NjcmlwdD5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uUmF3VGFnT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnNsYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciA9ICcnXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJhdyBjb250aW51YXRpb24sIGFmdGVyIGA8L2AsIGluIGEgcmF3IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHNjcmlwdD5jb25zb2xlLmxvZygxKTwvc2NyaXB0PlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25SYXdFbmRUYWcoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgY29uc3QgbmFtZSA9IGJ1ZmZlci50b0xvd2VyQ2FzZSgpXG5cbiAgICAgIGlmIChodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkgJiYgYnVmZmVyLmxlbmd0aCA8IGNvbnN0YW50cy5odG1sUmF3U2l6ZU1heCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBub3QgbnVsbC5cbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNkYXRhIGNvbnRpbnVhdGlvbiwgYWZ0ZXIgYF1gLCBleHBlY3RpbmcgYF0+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNkYXRhSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkZWNsYXJhdGlvbiBvciBpbnN0cnVjdGlvbiBjb250aW51YXRpb24sIGF0IGA+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS0+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPD8+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhcT5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDwhLS1hYi0tPlxuICAgKiAgICAgICAgICAgICBeXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG5cbiAgICAvLyBNb3JlIGRhc2hlcy5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQ29tbWVudCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2xvc2VkIGNvbnRpbnVhdGlvbjogZXZlcnl0aGluZyB3ZSBnZXQgdW50aWwgdGhlIGVvbC9lb2YgaXMgcGFydCBvZiBpdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25DbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5odG1sRmxvd0RhdGEpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQWZ0ZXIoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBEb25lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbEZsb3cpXG4gICAgLy8gLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gZmFsc2VcbiAgICAvLyAvLyBObyBsb25nZXIgY29uY3JldGUuXG4gICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gZmFsc2VcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IGVvbCwgYmVmb3JlIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICogYGBganNcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ICogYGBganNcbiAgICogPiB8IGJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID8gbm9rKGNvZGUpIDogb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsYW5rTGluZUJlZm9yZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgZW9sLCBleHBlY3RpbmcgYmxhbmsgbGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxkaXY+XG4gICAqICAgICAgICAgIF5cbiAgICogICB8XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSwgJ2V4cGVjdGVkIGEgbGluZSBlbmRpbmcnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGJsYW5rTGluZSwgb2ssIG5vaylcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlText\": () => (/* binding */ htmlText)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst htmlText = {name: 'htmlText', tokenize: tokenizeHtmlText}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentOpenInside\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentEnd\n }\n\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentEnd\n }\n\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan\n ? end(code)\n : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.cdataOpeningString\n\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n return end(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n return end(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n effects.consume(code)\n return instructionClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n ) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n ) {\n return nok(code)\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n return ok\n }\n\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(returnState, 'expected return state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol')\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n effects,\n lineEndingAfterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n return returnState(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLXRleHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBT25CO0FBQ21CO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZixrQkFBa0I7O0FBRXpCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtCQUErQjtBQUM1QztBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGFBQWEsT0FBTztBQUNwQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLFVBQVUsMEVBQWM7QUFDbEMsa0JBQWtCLDBFQUFjO0FBQ2hDLGtCQUFrQiw4RUFBa0I7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLGlGQUFxQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVFQUFXO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsOEVBQWtCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsb0VBQVU7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVU7QUFDM0I7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixt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RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDZFQUFpQjtBQUNsQztBQUNBLG1CQUFtQiw4RUFBa0I7QUFDckMsbUJBQW1CLDBFQUFjO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU07QUFDVixJQUFJLCtDQUFNLENBQUMsNEVBQWtCO0FBQzdCLGlCQUFpQiw4RUFBa0I7QUFDbkMsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsSUFBSSw4Q0FBTTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWTtBQUNwQjtBQUNBO0FBQ0EsVUFBVSw0RUFBZ0I7QUFDMUI7QUFDQTtBQUNBLGNBQWMsaUZBQWlCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGtCQUFrQiw4RUFBa0I7QUFDcEM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2Rldi9saWIvaHRtbC10ZXh0LmpzPzYyZDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBodG1sVGV4dCA9IHtuYW1lOiAnaHRtbFRleHQnLCB0b2tlbml6ZTogdG9rZW5pemVIdG1sVGV4dH1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sVGV4dChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtYXJrZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBsZXQgcmV0dXJuU3RhdGVcblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgSFRNTCAodGV4dCkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVzc1RoYW4sICdleHBlY3RlZCBgPGAnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbFRleHQpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5odG1sVGV4dERhdGEpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IHRhZyBuYW1lIG9yIG90aGVyIHN0dWZmLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmV4Y2xhbWF0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGVjbGFyYXRpb25PcGVuXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnNsYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1ZXN0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhYCwgYXQgZGVjbGFyYXRpb24sIGNvbW1lbnQsIG9yIENEQVRBLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb25PcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgY29tbWVudCwgYWZ0ZXIgYDwhLWAsIGF0IGFub3RoZXIgYC1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudEVuZFxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRDbG9zZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gY29tbWVudFxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tbWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQsIGFmdGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50Q2xvc2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50RW5kXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LCBhZnRlciBgLS1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50RW5kKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW5cbiAgICAgID8gZW5kKGNvZGUpXG4gICAgICA6IGNvZGUgPT09IGNvZGVzLmRhc2hcbiAgICAgID8gY29tbWVudENsb3NlKGNvZGUpXG4gICAgICA6IGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW4gQ0RBVEEsIGV4cGVjdGluZyBgQ0RBVEFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YU9wZW5JbnNpZGUoY29kZSkge1xuICAgIGNvbnN0IHZhbHVlID0gY29uc3RhbnRzLmNkYXRhT3BlbmluZ1N0cmluZ1xuXG4gICAgaWYgKGNvZGUgPT09IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgrKykpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluZGV4ID09PSB2YWx1ZS5sZW5ndGggPyBjZGF0YSA6IGNkYXRhT3Blbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgICAgICAgXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNkYXRhQ2xvc2VcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGNkYXRhXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEluIENEQVRBLCBhZnRlciBgXWAsIGF0IGFub3RoZXIgYF1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFDbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY2RhdGFFbmRcbiAgICB9XG5cbiAgICByZXR1cm4gY2RhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQSwgYWZ0ZXIgYF1dYCwgYXQgYD5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjZGF0YUVuZFxuICAgIH1cblxuICAgIHJldHVybiBjZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRlY2xhcmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWI+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGRlY2xhcmF0aW9uXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkZWNsYXJhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGluc3RydWN0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8P2I/PiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zdHJ1Y3Rpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVlc3Rpb25NYXJrKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnN0cnVjdGlvbkNsb3NlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBpbnN0cnVjdGlvblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBpbnN0cnVjdGlvbiwgYWZ0ZXIgYD9gLCBhdCBgPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDw/Yj8+IGNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc3RydWN0aW9uQ2xvc2UoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiA/IGVuZChjb2RlKSA6IGluc3RydWN0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwvYCwgaW4gY2xvc2luZyB0YWcsIGF0IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZVN0YXJ0KGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L3hgLCBpbiBhIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2UoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2ggfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3NpbmcgdGFnLCBhZnRlciB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPC9iPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdDbG9zZUJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2VlblxuICAgIH1cblxuICAgIHJldHVybiBlbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPHhgLCBpbiBvcGVuaW5nIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW4oY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2ggfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5zbGFzaCB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHRhZywgYWZ0ZXIgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkJldHdlZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5zbGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsIGFuZCBgOmAgYW5kIGBfYC5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuY29sb24gfHwgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSB8fCBhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuXG4gICAgfVxuXG4gICAgcmV0dXJuIGVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGF0dHJpYnV0ZSBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPiBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwgYW5kIGAtYCwgYC5gLCBgOmAsIGFuZCBgX2AuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZGFzaCB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZG90IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5jb2xvbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSB8fFxuICAgICAgYXNjaWlBbHBoYW51bWVyaWMoY29kZSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBhdHRyaWJ1dGUgbmFtZSwgYmVmb3JlIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM+IGRcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lcXVhbHNUbykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIHVucXVvdGVkLCBkb3VibGUgcXVvdGVkLCBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYWxsb3dpbmdcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5lcXVhbHNUbyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyYXZlQWNjZW50XG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1b3RhdGlvbk1hcmsgfHwgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSBjb2RlXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1cImRcIj4gZVxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXJcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudFxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBiZWZvcmUgd2hpdGVzcGFjZSBvciB0aGUgZW5kXG4gICAqIG9mIHRoZSB0YWcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlcihjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9mIGEgdGFnIHdoZXJlIG9ubHkgYW4gYD5gIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbFRleHREYXRhKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmh0bWxUZXh0KVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGVvbC5cbiAgICpcbiAgICogPiDwn5GJICoqTm90ZSoqOiB3ZSBjYW7igJl0IGhhdmUgYmxhbmsgbGluZXMgaW4gdGV4dCwgc28gbm8gbmVlZCB0byB3b3JyeSBhYm91dFxuICAgKiA+IGVtcHR5IHRva2Vucy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWFcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiLS0+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpIHtcbiAgICBhc3NlcnQocmV0dXJuU3RhdGUsICdleHBlY3RlZCByZXR1cm4gc3RhdGUnKVxuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5odG1sVGV4dERhdGEpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBsaW5lRW5kaW5nQWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBlb2wsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqID4g8J+RiSAqKk5vdGUqKjogd2UgY2Fu4oCZdCBoYXZlIGJsYW5rIGxpbmVzIGluIHRleHQsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXRcbiAgICogPiBlbXB0eSB0b2tlbnMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhIDwhLS1hXG4gICAqID4gfCBiLS0+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQWZ0ZXIoY29kZSkge1xuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgICAnZXhwZWN0ZWQgYGRpc2FibGUubnVsbGAgdG8gYmUgcG9wdWxhdGVkJ1xuICAgIClcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoXG4gICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICBsaW5lRW5kaW5nQWZ0ZXJQcmVmaXgsXG4gICAgICAgICAgdHlwZXMubGluZVByZWZpeCxcbiAgICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGNvbnN0YW50cy50YWJTaXplXG4gICAgICAgICkoY29kZSlcbiAgICAgIDogbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZW9sLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IHdlIGNhbuKAmXQgaGF2ZSBibGFuayBsaW5lcyBpbiB0ZXh0LCBzbyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0XG4gICAqID4gZW1wdHkgdG9rZW5zLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYSA8IS0tYVxuICAgKiA+IHwgYi0tPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmh0bWxUZXh0RGF0YSlcbiAgICByZXR1cm4gcmV0dXJuU3RhdGUoY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelEnd\": () => (/* binding */ labelEnd)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-destination */ \"../../../node_modules/micromark-factory-destination/dev/index.js\");\n/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-factory-label */ \"../../../node_modules/micromark-factory-label/dev/index.js\");\n/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-factory-title */ \"../../../node_modules/micromark-factory-title/dev/index.js\");\n/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-whitespace */ \"../../../node_modules/micromark-factory-whitespace/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"../../../node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"../../../node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {tokenize: tokenizeResource}\n/** @type {Construct} */\nconst referenceFullConstruct = {tokenize: tokenizeReferenceFull}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {tokenize: tokenizeReferenceCollapsed}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n\n while (++index < events.length) {\n const token = events[index][1]\n\n if (\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ||\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ? 4 : 2)\n token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data\n index++\n }\n }\n\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link ||\n (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n offset = 2\n break\n }\n }\n } else if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) {\n close = index\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(open !== undefined, '`open` is supposed to be found')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(close !== undefined, '`close` is supposed to be found')\n\n const group = {\n type: events[open][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.image,\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n const label = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.label,\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n\n const text = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelText,\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['enter', text, context]])\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n context.parser.constructs.insideSpan.null,\n 'expected `insideSpan.null` to be populated'\n )\n // Between.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(\n media,\n (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(close + 1))\n\n // Media close.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['exit', group, context]])\n\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open, events.length, media)\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket, 'expected `]`')\n\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n\n defined = self.parser.defined.includes(\n (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n self.sliceSerialize({start: labelStart.end, end: self.now()})\n )\n )\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis, 'expected left paren')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n return resourceEnd(code)\n }\n\n return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__.factoryDestination)(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestination,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteral,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteralMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationRaw,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationString,\n micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__.constants.linkResourceDestinationBalanceMax\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis\n ) {\n return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__.factoryTitle)(\n effects,\n resourceTitleAfter,\n nok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitle,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleString\n )(code)\n }\n\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n return ok\n }\n\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n return micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__.factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceString\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n return ok\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1lbmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSx5Q0FBeUM7QUFDdEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRWdFO0FBQ1o7QUFDQTtBQUNVO0FBQ0k7QUFDZjtBQUNvQjtBQUNsQjtBQUNEO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLDJCQUEyQjtBQUMzQixXQUFXLFdBQVc7QUFDdEIsZ0NBQWdDO0FBQ2hDLFdBQVcsV0FBVztBQUN0QixxQ0FBcUM7O0FBRXJDLFdBQVcsVUFBVTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsNEVBQWdCO0FBQ3JDLHFCQUFxQiwyRUFBZTtBQUNwQyxxQkFBcUIsMEVBQWM7QUFDbkM7QUFDQTtBQUNBLDhDQUE4Qyw0RUFBZ0I7QUFDOUQsbUJBQW1CLHNFQUFVO0FBQzdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxhQUFhLG9CQUFvQjtBQUNqQztBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0VBQVU7QUFDakMsd0JBQXdCLDJFQUFlO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseURBQXlELDJFQUFlO0FBQ3hFO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxpQkFBaUIsb0ZBQXdCO0FBQ3pDLG9CQUFvQixpRkFBcUI7QUFDekM7QUFDQSxtQkFBbUIsaUZBQXFCO0FBQ3hDLG1CQUFtQiwyRUFBZTtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLWVuZC5qcz8yMzUwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlEZXN0aW5hdGlvbn0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24nXG5pbXBvcnQge2ZhY3RvcnlMYWJlbH0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktbGFiZWwnXG5pbXBvcnQge2ZhY3RvcnlUaXRsZX0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktdGl0bGUnXG5pbXBvcnQge2ZhY3RvcnlXaGl0ZXNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxFbmQgPSB7XG4gIG5hbWU6ICdsYWJlbEVuZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsRW5kLFxuICByZXNvbHZlVG86IHJlc29sdmVUb0xhYmVsRW5kLFxuICByZXNvbHZlQWxsOiByZXNvbHZlQWxsTGFiZWxFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZXNvdXJjZUNvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVSZXNvdXJjZX1cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgcmVmZXJlbmNlRnVsbENvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVSZWZlcmVuY2VGdWxsfVxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QgPSB7dG9rZW5pemU6IHRva2VuaXplUmVmZXJlbmNlQ29sbGFwc2VkfVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFsbExhYmVsRW5kKGV2ZW50cykge1xuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIGNvbnN0IHRva2VuID0gZXZlbnRzW2luZGV4XVsxXVxuXG4gICAgaWYgKFxuICAgICAgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSB8fFxuICAgICAgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rIHx8XG4gICAgICB0b2tlbi50eXBlID09PSB0eXBlcy5sYWJlbEVuZFxuICAgICkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBtYXJrZXIuXG4gICAgICBldmVudHMuc3BsaWNlKGluZGV4ICsgMSwgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSA/IDQgOiAyKVxuICAgICAgdG9rZW4udHlwZSA9IHR5cGVzLmRhdGFcbiAgICAgIGluZGV4KytcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9MYWJlbEVuZChldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICBsZXQgb2Zmc2V0ID0gMFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdG9rZW5cbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBvcGVuXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2xvc2VcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBtZWRpYVxuXG4gIC8vIEZpbmQgYW4gb3BlbmluZy5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB0b2tlbiA9IGV2ZW50c1tpbmRleF1bMV1cblxuICAgIGlmIChvcGVuKSB7XG4gICAgICAvLyBJZiB3ZSBzZWUgYW5vdGhlciBsaW5rLCBvciBpbmFjdGl2ZSBsaW5rIGxhYmVsLCB3ZeKAmXZlIGJlZW4gaGVyZSBiZWZvcmUuXG4gICAgICBpZiAoXG4gICAgICAgIHRva2VuLnR5cGUgPT09IHR5cGVzLmxpbmsgfHxcbiAgICAgICAgKHRva2VuLnR5cGUgPT09IHR5cGVzLmxhYmVsTGluayAmJiB0b2tlbi5faW5hY3RpdmUpXG4gICAgICApIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgLy8gTWFyayBvdGhlciBsaW5rIG9wZW5pbmdzIGFzIGluYWN0aXZlLCBhcyB3ZSBjYW7igJl0IGhhdmUgbGlua3MgaW5cbiAgICAgIC8vIGxpbmtzLlxuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiYgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSB7XG4gICAgICAgIHRva2VuLl9pbmFjdGl2ZSA9IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNsb3NlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgICAgKHRva2VuLnR5cGUgPT09IHR5cGVzLmxhYmVsSW1hZ2UgfHwgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSAmJlxuICAgICAgICAhdG9rZW4uX2JhbGFuY2VkXG4gICAgICApIHtcbiAgICAgICAgb3BlbiA9IGluZGV4XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IHR5cGVzLmxhYmVsTGluaykge1xuICAgICAgICAgIG9mZnNldCA9IDJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSB0eXBlcy5sYWJlbEVuZCkge1xuICAgICAgY2xvc2UgPSBpbmRleFxuICAgIH1cbiAgfVxuXG4gIGFzc2VydChvcGVuICE9PSB1bmRlZmluZWQsICdgb3BlbmAgaXMgc3VwcG9zZWQgdG8gYmUgZm91bmQnKVxuICBhc3NlcnQoY2xvc2UgIT09IHVuZGVmaW5lZCwgJ2BjbG9zZWAgaXMgc3VwcG9zZWQgdG8gYmUgZm91bmQnKVxuXG4gIGNvbnN0IGdyb3VwID0ge1xuICAgIHR5cGU6IGV2ZW50c1tvcGVuXVsxXS50eXBlID09PSB0eXBlcy5sYWJlbExpbmsgPyB0eXBlcy5saW5rIDogdHlwZXMuaW1hZ2UsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuXG4gIGNvbnN0IGxhYmVsID0ge1xuICAgIHR5cGU6IHR5cGVzLmxhYmVsLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uc3RhcnQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlXVsxXS5lbmQpXG4gIH1cblxuICBjb25zdCB0ZXh0ID0ge1xuICAgIHR5cGU6IHR5cGVzLmxhYmVsVGV4dCxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW4gKyBvZmZzZXQgKyAyXVsxXS5lbmQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlIC0gMl1bMV0uc3RhcnQpXG4gIH1cblxuICBtZWRpYSA9IFtcbiAgICBbJ2VudGVyJywgZ3JvdXAsIGNvbnRleHRdLFxuICAgIFsnZW50ZXInLCBsYWJlbCwgY29udGV4dF1cbiAgXVxuXG4gIC8vIE9wZW5pbmcgbWFya2VyLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShvcGVuICsgMSwgb3BlbiArIG9mZnNldCArIDMpKVxuXG4gIC8vIFRleHQgb3Blbi5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBbWydlbnRlcicsIHRleHQsIGNvbnRleHRdXSlcblxuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICBhc3NlcnQoXG4gICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsXG4gICAgJ2V4cGVjdGVkIGBpbnNpZGVTcGFuLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgKVxuICAvLyBCZXR3ZWVuLlxuICBtZWRpYSA9IHB1c2goXG4gICAgbWVkaWEsXG4gICAgcmVzb2x2ZUFsbChcbiAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLFxuICAgICAgZXZlbnRzLnNsaWNlKG9wZW4gKyBvZmZzZXQgKyA0LCBjbG9zZSAtIDMpLFxuICAgICAgY29udGV4dFxuICAgIClcbiAgKVxuXG4gIC8vIFRleHQgY2xvc2UsIG1hcmtlciBjbG9zZSwgbGFiZWwgY2xvc2UuXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgW1xuICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDJdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDFdLFxuICAgIFsnZXhpdCcsIGxhYmVsLCBjb250ZXh0XVxuICBdKVxuXG4gIC8vIFJlZmVyZW5jZSwgcmVzb3VyY2UsIG9yIHNvLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShjbG9zZSArIDEpKVxuXG4gIC8vIE1lZGlhIGNsb3NlLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIFtbJ2V4aXQnLCBncm91cCwgY29udGV4dF1dKVxuXG4gIHNwbGljZShldmVudHMsIG9wZW4sIGV2ZW50cy5sZW5ndGgsIG1lZGlhKVxuXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMYWJlbEVuZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgbGFiZWxTdGFydFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBkZWZpbmVkXG5cbiAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChcbiAgICAgIChzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSB8fFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSAmJlxuICAgICAgIXNlbGYuZXZlbnRzW2luZGV4XVsxXS5fYmFsYW5jZWRcbiAgICApIHtcbiAgICAgIGxhYmVsU3RhcnQgPSBzZWxmLmV2ZW50c1tpbmRleF1bMV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIGVuZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0LCAnZXhwZWN0ZWQgYF1gJylcblxuICAgIC8vIElmIHRoZXJlIGlzIG5vdCBhbiBva2F5IG9wZW5pbmcuXG4gICAgaWYgKCFsYWJlbFN0YXJ0KSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgbGFiZWwgKGxpbmspIHN0YXJ0IGlzIG1hcmtlZCBhcyBpbmFjdGl2ZSxcbiAgICAvLyBpdCBtZWFucyB3ZeKAmWQgYmUgd3JhcHBpbmcgYSBsaW5rLCBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyBgYGBtYXJrZG93blxuICAgIC8vID4gfCBhIFtiIFtjXShkKSBlXShmKSBnLlxuICAgIC8vICAgICAgICAgICAgICAgICAgXlxuICAgIC8vIGBgYFxuICAgIC8vXG4gICAgLy8gV2UgY2Fu4oCZdCBoYXZlIHRoYXQsIHNvIGl04oCZcyBqdXN0IGJhbGFuY2VkIGJyYWNrZXRzLlxuICAgIGlmIChsYWJlbFN0YXJ0Ll9pbmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIGxhYmVsRW5kTm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZGVmaW5lZCA9IHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHtzdGFydDogbGFiZWxTdGFydC5lbmQsIGVuZDogc2VsZi5ub3coKX0pXG4gICAgICApXG4gICAgKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxFbmQpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbE1hcmtlcilcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGFiZWxNYXJrZXIpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsRW5kKVxuICAgIHJldHVybiBhZnRlclxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIC8vIE5vdGU6IGBtYXJrZG93bi1yc2AgYWxzbyBwYXJzZXMgR0ZNIGZvb3Rub3RlcyBoZXJlLCB3aGljaCBmb3IgdXMgaXMgaW5cbiAgICAvLyBhbiBleHRlbnNpb24uXG5cbiAgICAvLyBSZXNvdXJjZSAoYFthc2RdKGZnaClgKT9cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICByZXNvdXJjZUNvbnN0cnVjdCxcbiAgICAgICAgbGFiZWxFbmRPayxcbiAgICAgICAgZGVmaW5lZCA/IGxhYmVsRW5kT2sgOiBsYWJlbEVuZE5va1xuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIEZ1bGwgKGBbYXNkXVtmZ2hdYCkgb3IgY29sbGFwc2VkIChgW2FzZF1bXWApIHJlZmVyZW5jZT9cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIHJlZmVyZW5jZUZ1bGxDb25zdHJ1Y3QsXG4gICAgICAgIGxhYmVsRW5kT2ssXG4gICAgICAgIGRlZmluZWQgPyByZWZlcmVuY2VOb3RGdWxsIDogbGFiZWxFbmROb2tcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBTaG9ydGN1dCAoYFthc2RdYCkgcmVmZXJlbmNlP1xuICAgIHJldHVybiBkZWZpbmVkID8gbGFiZWxFbmRPayhjb2RlKSA6IGxhYmVsRW5kTm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYF1gLCBhdCBgW2AsIGJ1dCBub3QgYXQgYSBmdWxsIHJlZmVyZW5jZS5cbiAgICpcbiAgICogPiDwn5GJICoqTm90ZSoqOiB3ZSBvbmx5IGdldCBoZXJlIGlmIHRoZSBsYWJlbCBpcyBkZWZpbmVkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZU5vdEZ1bGwoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QsXG4gICAgICBsYWJlbEVuZE9rLFxuICAgICAgbGFiZWxFbmROb2tcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogRG9uZSwgd2UgZm91bmQgc29tZXRoaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEVuZE9rKGNvZGUpIHtcbiAgICAvLyBOb3RlOiBgbWFya2Rvd24tcnNgIGRvZXMgYSBidW5jaCBvZiBzdHVmZiBoZXJlLlxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIERvbmUsIGl04oCZcyBub3RoaW5nLlxuICAgKlxuICAgKiBUaGVyZSB3YXMgYW4gb2theSBvcGVuaW5nLCBidXQgd2UgZGlkbuKAmXQgbWF0Y2ggYW55dGhpbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV1bYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFbmROb2soY29kZSkge1xuICAgIGxhYmVsU3RhcnQuX2JhbGFuY2VkID0gdHJ1ZVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVJlc291cmNlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHJlc291cmNlU3RhcnRcblxuICAvKipcbiAgICogQXQgYSByZXNvdXJjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZVN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzLCAnZXhwZWN0ZWQgbGVmdCBwYXJlbicpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZXNvdXJjZSlcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLnJlc291cmNlTWFya2VyKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5yZXNvdXJjZU1hcmtlcilcbiAgICByZXR1cm4gcmVzb3VyY2VCZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgYChgLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZUJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VPcGVuKShjb2RlKVxuICAgICAgOiByZXNvdXJjZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYClgIG9yIGEgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZUVuZChjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBmYWN0b3J5RGVzdGluYXRpb24oXG4gICAgICBlZmZlY3RzLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbkFmdGVyLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uLFxuICAgICAgdHlwZXMucmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWwsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcixcbiAgICAgIHR5cGVzLnJlc291cmNlRGVzdGluYXRpb25SYXcsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nLFxuICAgICAgY29uc3RhbnRzLmxpbmtSZXNvdXJjZURlc3RpbmF0aW9uQmFsYW5jZU1heFxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24sIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZURlc3RpbmF0aW9uQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIHJlc291cmNlQmV0d2VlbikoY29kZSlcbiAgICAgIDogcmVzb3VyY2VFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBpbnZhbGlkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKDw8KSBiXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcoY29kZSkge1xuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24gYW5kIHdoaXRlc3BhY2UsIGF0IGAoYCBvciB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiICkgY1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VCZXR3ZWVuKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5xdW90YXRpb25NYXJrIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5hcG9zdHJvcGhlIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5sZWZ0UGFyZW50aGVzaXNcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWN0b3J5VGl0bGUoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIHJlc291cmNlVGl0bGVBZnRlcixcbiAgICAgICAgbm9rLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlTWFya2VyLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlU3RyaW5nXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIHRpdGxlLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIgXCJjXCIpIGRcbiAgICogICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlVGl0bGVBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VFbmQpKGNvZGUpXG4gICAgICA6IHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGF0IGApYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZXNvdXJjZU1hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlc291cmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlc291cmNlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplUmVmZXJlbmNlRnVsbChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHJlZmVyZW5jZUZ1bGxcblxuICAvKipcbiAgICogSW4gYSByZWZlcmVuY2UgKGZ1bGwpLCBhdCB0aGUgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW2JdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGwoY29kZSkge1xuICAgIGFzc2VydChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCwgJ2V4cGVjdGVkIGxlZnQgYnJhY2tldCcpXG4gICAgcmV0dXJuIGZhY3RvcnlMYWJlbC5jYWxsKFxuICAgICAgc2VsZixcbiAgICAgIGVmZmVjdHMsXG4gICAgICByZWZlcmVuY2VGdWxsQWZ0ZXIsXG4gICAgICByZWZlcmVuY2VGdWxsTWlzc2luZyxcbiAgICAgIHR5cGVzLnJlZmVyZW5jZSxcbiAgICAgIHR5cGVzLnJlZmVyZW5jZU1hcmtlcixcbiAgICAgIHR5cGVzLnJlZmVyZW5jZVN0cmluZ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIHJlZmVyZW5jZSAoZnVsbCksIGFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiXSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdWzFdKS5zbGljZSgxLCAtMSlcbiAgICAgIClcbiAgICApXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoZnVsbCkgdGhhdCB3YXMgbWlzc2luZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxNaXNzaW5nKGNvZGUpIHtcbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVSZWZlcmVuY2VDb2xsYXBzZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkU3RhcnRcblxuICAvKipcbiAgICogSW4gcmVmZXJlbmNlIChjb2xsYXBzZWQpLCBhdCBgW2AuXG4gICAqXG4gICAqID4g8J+RiSAqKk5vdGUqKjogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgbGFiZWwgaXMgZGVmaW5lZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZFN0YXJ0KGNvZGUpIHtcbiAgICAvLyBXZSBvbmx5IGF0dGVtcHQgYSBjb2xsYXBzZWQgbGFiZWwgaWYgdGhlcmXigJlzIGEgYFtgLlxuICAgIGFzc2VydChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCwgJ2V4cGVjdGVkIGxlZnQgYnJhY2tldCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZWZlcmVuY2UpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZWZlcmVuY2VNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlZmVyZW5jZU1hcmtlcilcbiAgICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkT3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoY29sbGFwc2VkKSwgYXQgYF1gLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IHdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlIGxhYmVsIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bXSBkXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZE9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMucmVmZXJlbmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMucmVmZXJlbmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlZmVyZW5jZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelStartImage\": () => (/* binding */ labelStartImage)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark, 'expected `!`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n return after\n }\n\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1zdGFydC1pbWFnZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ0E7QUFDYjtBQUNBOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQSxjQUFjLDhEQUFtQjtBQUNqQzs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU0sVUFBVSxpRkFBcUI7QUFDekMsa0JBQWtCLDRFQUFnQjtBQUNsQyxrQkFBa0Isa0ZBQXNCO0FBQ3hDO0FBQ0EsaUJBQWlCLGtGQUFzQjtBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixtRkFBdUI7QUFDeEMsb0JBQW9CLDZFQUFpQjtBQUNyQztBQUNBLG1CQUFtQiw2RUFBaUI7QUFDcEMsbUJBQW1CLDRFQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUVBQVc7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLXN0YXJ0LWltYWdlLmpzP2Q3NTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtsYWJlbEVuZH0gZnJvbSAnLi9sYWJlbC1lbmQuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxhYmVsU3RhcnRJbWFnZSA9IHtcbiAgbmFtZTogJ2xhYmVsU3RhcnRJbWFnZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZSxcbiAgcmVzb2x2ZUFsbDogbGFiZWxFbmQucmVzb2x2ZUFsbFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIChpbWFnZSkgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhICFbYl0gY1xuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmV4Y2xhbWF0aW9uTWFyaywgJ2V4cGVjdGVkIGAhYCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbEltYWdlKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxJbWFnZU1hcmtlcilcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGFiZWxJbWFnZU1hcmtlcilcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAhYCwgYXQgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSAhW2JdIGNcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbE1hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsSW1hZ2UpXG4gICAgICByZXR1cm4gYWZ0ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgIVtiXSBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBpcyBuZWVkZWQgaW4gYmVjYXVzZSwgd2hlbiBHRk0gZm9vdG5vdGVzIGFyZSBlbmFibGVkLCBpbWFnZXMgbmV2ZXJcbiAgICogZm9ybSB3aGVuIHN0YXJ0ZWQgd2l0aCBhIGBeYC5cbiAgICogSW5zdGVhZCwgbGlua3MgZm9ybTpcbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogIVteYV0oYilcbiAgICpcbiAgICogIVteYV1bYl1cbiAgICpcbiAgICogW2JdOiBjXG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGBodG1sXG4gICAqIDxwPiE8YSBocmVmPVxcXCJiXFxcIj5eYTwvYT48L3A+XG4gICAqIDxwPiE8YSBocmVmPVxcXCJjXFxcIj5eYTwvYT48L3A+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHVzZSBhIG5ldyBmaWVsZCB0byBkbyB0aGlzLCB0aGlzIGlzIHN0aWxsIG5lZWRlZCBmb3JcbiAgICAvLyBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLCBidXQgdGhlIGBsYWJlbC1zdGFydC1saW5rYFxuICAgIC8vIGJlaGF2aW9yIGlzbuKAmXQuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuY2FyZXQgJiZcbiAgICAgICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelStartLink\": () => (/* binding */ labelStartLink)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1zdGFydC1saW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDQTtBQUNiO0FBQ0E7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBLGNBQWMsOERBQW1CO0FBQ2pDOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLG1GQUF1QjtBQUMzQyxrQkFBa0IsMkVBQWU7QUFDakMsa0JBQWtCLDZFQUFpQjtBQUNuQztBQUNBLGlCQUFpQiw2RUFBaUI7QUFDbEMsaUJBQWlCLDJFQUFlO0FBQ2hDO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUVBQVc7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLXN0YXJ0LWxpbmsuanM/N2Q4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5pbXBvcnQge2xhYmVsRW5kfSBmcm9tICcuL2xhYmVsLWVuZC5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxTdGFydExpbmsgPSB7XG4gIG5hbWU6ICdsYWJlbFN0YXJ0TGluaycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRMaW5rLFxuICByZXNvbHZlQWxsOiBsYWJlbEVuZC5yZXNvbHZlQWxsXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGFiZWxTdGFydExpbmsoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbCAobGluaykgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIFtiXSBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQsICdleHBlY3RlZCBgW2AnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxMaW5rKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsTWFya2VyKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5sYWJlbExpbmspXG4gICAgcmV0dXJuIGFmdGVyXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHRoaXMgaXNu4oCZdCBuZWVkZWQgaW4gYG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLWZvb3Rub3RlYCxcbiAgICAvLyByZW1vdmUuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuY2FyZXQgJiZcbiAgICAgICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"lineEnding\": () => (/* binding */ lineEnding)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code), 'expected eol')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, ok, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saW5lLWVuZGluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ087QUFDUDtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZixvQkFBb0I7O0FBRTNCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTSxDQUFDLDRFQUFrQjtBQUM3QixrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQyxXQUFXLHFFQUFZLGNBQWMsNEVBQWdCO0FBQ3JEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saW5lLWVuZGluZy5qcz9hYTA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxpbmVFbmRpbmcgPSB7bmFtZTogJ2xpbmVFbmRpbmcnLCB0b2tlbml6ZTogdG9rZW5pemVMaW5lRW5kaW5nfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpbmVFbmRpbmcoZWZmZWN0cywgb2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIG9rLCB0eXBlcy5saW5lUHJlZml4KVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/list.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/list.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"list\": () => (/* binding */ list)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./thematic-break.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {tokenize: tokenizeListContinuation},\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {tokenize: tokenizeIndent, partial: true}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n\n return start\n\n /** @type {State} */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n const kind =\n self.containerState.type ||\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.plusSign || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listOrdered)\n\n if (\n kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n ? !self.containerState.marker || code === self.containerState.marker\n : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {_container: true})\n }\n\n if (kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n ? effects.check(_thematic_break_js__WEBPACK_IMPORTED_MODULE_4__.thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.digit1) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) && ++size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.listItemValueSizeMax) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightParenthesis || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot)\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, 'eof (`null`) is not a marker')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n _blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState._closeFlow = undefined\n\n return effects.check(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size')\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n ok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n if (self.containerState.furtherBlankLines || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n effects.attempt(list, ok, nok),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size')\n\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(this.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof this.containerState.type === 'string', 'expected type')\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n\n return !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) &&\n tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace\n ? ok(code)\n : nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saXN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSwrQ0FBK0M7QUFDNUQsYUFBYSx1Q0FBdUM7QUFDcEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ2M7QUFDZDtBQUNRO0FBQ1I7QUFDYjtBQUNFO0FBQ1E7O0FBRWpELFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixtQ0FBbUM7QUFDcEQ7QUFDQTs7QUFFQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLHlCQUF5Qjs7QUFFekI7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RUFBZ0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0EsZ0JBQWdCLDBFQUFjLGFBQWEsMEVBQWMsYUFBYSxzRUFBVTtBQUNoRixVQUFVLCtFQUFtQjtBQUM3QixVQUFVLDZFQUFpQjs7QUFFM0I7QUFDQSxlQUFlLCtFQUFtQjtBQUNsQztBQUNBLFVBQVUsb0VBQVU7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGlCQUFpQjtBQUM5Qzs7QUFFQSxtQkFBbUIsK0VBQW1CO0FBQ3RDLHNCQUFzQixnRkFBb0I7QUFDMUMsd0JBQXdCLDBFQUFjLGFBQWEsc0VBQVU7QUFDN0QsMEJBQTBCLDZEQUFhO0FBQ3ZDO0FBQ0E7O0FBRUEsc0NBQXNDLHdFQUFZO0FBQ2xELHNCQUFzQixnRkFBb0I7QUFDMUMsc0JBQXNCLCtFQUFtQjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsUUFBUSxvRUFBVSxtQkFBbUIsOEZBQThCO0FBQ25FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrRkFBc0IsYUFBYSxxRUFBUztBQUMvRDtBQUNBLG1CQUFtQiwrRUFBbUI7QUFDdEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsSUFBSSwrQ0FBTSxVQUFVLHFFQUFTO0FBQzdCLGtCQUFrQixnRkFBb0I7QUFDdEM7QUFDQSxpQkFBaUIsZ0ZBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxNQUFNLHFEQUFTO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxRQUFRLHVFQUFhO0FBQ3JCLG9CQUFvQiwwRkFBOEI7QUFDbEQ7QUFDQSxtQkFBbUIsMEZBQThCO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1Y7QUFDQTtBQUNBLHVDQUF1QyxnRkFBb0I7QUFDM0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSwrQ0FBTTtBQUNSOztBQUVBLHVCQUF1QixxREFBUzs7QUFFaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcscUVBQVk7QUFDdkI7QUFDQTtBQUNBLE1BQU0sZ0ZBQW9CO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1Ysa0RBQWtELHVFQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUVBQVk7QUFDdkI7QUFDQTtBQUNBLE1BQU0sNEVBQWdCO0FBQ3RCO0FBQ0E7QUFDQSxVQUFVLGlGQUFpQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLCtDQUFNO0FBQ1IsRUFBRSwrQ0FBTTs7QUFFUixTQUFTLHFFQUFZO0FBQ3JCO0FBQ0E7QUFDQSxJQUFJLGdGQUFvQjtBQUN4QjtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0EsdUJBQXVCLGdGQUFvQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0EsRUFBRSw4Q0FBTTtBQUNSLEVBQUUsK0NBQU07QUFDUjtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLCtDQUFNO0FBQ1I7QUFDQTtBQUNBOztBQUVBLFNBQVMscUVBQVk7QUFDckI7QUFDQTtBQUNBLElBQUksMEZBQThCO0FBQ2xDO0FBQ0E7QUFDQSxRQUFRLGlGQUFpQjtBQUN6Qjs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQSxZQUFZLHVFQUFhO0FBQ3pCO0FBQ0EsdUJBQXVCLDBGQUE4QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xpc3QuanM/ZjMzYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db250YWluZXJTdGF0ZX0gQ29udGFpbmVyU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXhpdGVyfSBFeGl0ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHthc2NpaURpZ2l0LCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcbmltcG9ydCB7dGhlbWF0aWNCcmVha30gZnJvbSAnLi90aGVtYXRpYy1icmVhay5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGlzdCA9IHtcbiAgbmFtZTogJ2xpc3QnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMaXN0U3RhcnQsXG4gIGNvbnRpbnVhdGlvbjoge3Rva2VuaXplOiB0b2tlbml6ZUxpc3RDb250aW51YXRpb259LFxuICBleGl0OiB0b2tlbml6ZUxpc3RFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2VDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGluZGVudENvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVJbmRlbnQsIHBhcnRpYWw6IHRydWV9XG5cbi8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIHBhcnNlcyBsaXN0IGl0ZW1zIG9uIHRoZWlyIG93biBhbmQgbGF0ZXIgc3RpdGNoZXMgdGhlbVxuLy8gdG9nZXRoZXIuXG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdFN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gIGxldCBpbml0aWFsU2l6ZSA9XG4gICAgdGFpbCAmJiB0YWlsWzFdLnR5cGUgPT09IHR5cGVzLmxpbmVQcmVmaXhcbiAgICAgID8gdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGhcbiAgICAgIDogMFxuICBsZXQgc2l6ZSA9IDBcblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgY29uc3Qga2luZCA9XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnR5cGUgfHxcbiAgICAgIChjb2RlID09PSBjb2Rlcy5hc3RlcmlzayB8fCBjb2RlID09PSBjb2Rlcy5wbHVzU2lnbiB8fCBjb2RlID09PSBjb2Rlcy5kYXNoXG4gICAgICAgID8gdHlwZXMubGlzdFVub3JkZXJlZFxuICAgICAgICA6IHR5cGVzLmxpc3RPcmRlcmVkKVxuXG4gICAgaWYgKFxuICAgICAga2luZCA9PT0gdHlwZXMubGlzdFVub3JkZXJlZFxuICAgICAgICA/ICFzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciB8fCBjb2RlID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA6IGFzY2lpRGlnaXQoY29kZSlcbiAgICApIHtcbiAgICAgIGlmICghc2VsZi5jb250YWluZXJTdGF0ZS50eXBlKSB7XG4gICAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUudHlwZSA9IGtpbmRcbiAgICAgICAgZWZmZWN0cy5lbnRlcihraW5kLCB7X2NvbnRhaW5lcjogdHJ1ZX0pXG4gICAgICB9XG5cbiAgICAgIGlmIChraW5kID09PSB0eXBlcy5saXN0VW5vcmRlcmVkKSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGlzdEl0ZW1QcmVmaXgpXG4gICAgICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5hc3RlcmlzayB8fCBjb2RlID09PSBjb2Rlcy5kYXNoXG4gICAgICAgICAgPyBlZmZlY3RzLmNoZWNrKHRoZW1hdGljQnJlYWssIG5vaywgYXRNYXJrZXIpKGNvZGUpXG4gICAgICAgICAgOiBhdE1hcmtlcihjb2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbGYuaW50ZXJydXB0IHx8IGNvZGUgPT09IGNvZGVzLmRpZ2l0MSkge1xuICAgICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtUHJlZml4KVxuICAgICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGFzc2VydChzZWxmLmNvbnRhaW5lclN0YXRlLCAnZXhwZWN0ZWQgc3RhdGUnKVxuICAgIGlmIChhc2NpaURpZ2l0KGNvZGUpICYmICsrc2l6ZSA8IGNvbnN0YW50cy5saXN0SXRlbVZhbHVlU2l6ZU1heCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKCFzZWxmLmludGVycnVwdCB8fCBzaXplIDwgMikgJiZcbiAgICAgIChzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA/IGNvZGUgPT09IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyXG4gICAgICAgIDogY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fCBjb2RlID09PSBjb2Rlcy5kb3QpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGlzdEl0ZW1WYWx1ZSlcbiAgICAgIHJldHVybiBhdE1hcmtlcihjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqKi9cbiAgZnVuY3Rpb24gYXRNYXJrZXIoY29kZSkge1xuICAgIGFzc2VydChzZWxmLmNvbnRhaW5lclN0YXRlLCAnZXhwZWN0ZWQgc3RhdGUnKVxuICAgIGFzc2VydChjb2RlICE9PSBjb2Rlcy5lb2YsICdlb2YgKGBudWxsYCkgaXMgbm90IGEgbWFya2VyJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtTWFya2VyKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saXN0SXRlbU1hcmtlcilcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciA9IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyIHx8IGNvZGVcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGJsYW5rTGluZSxcbiAgICAgIC8vIENhbuKAmXQgYmUgZW1wdHkgd2hlbiBpbnRlcnJ1cHRpbmcuXG4gICAgICBzZWxmLmludGVycnVwdCA/IG5vayA6IG9uQmxhbmssXG4gICAgICBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIGxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZUNvbnN0cnVjdCxcbiAgICAgICAgZW5kT2ZQcmVmaXgsXG4gICAgICAgIG90aGVyUHJlZml4XG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gb25CbGFuayhjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdHJ1ZVxuICAgIGluaXRpYWxTaXplKytcbiAgICByZXR1cm4gZW5kT2ZQcmVmaXgoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG90aGVyUHJlZml4KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saXN0SXRlbVByZWZpeFdoaXRlc3BhY2UpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saXN0SXRlbVByZWZpeFdoaXRlc3BhY2UpXG4gICAgICByZXR1cm4gZW5kT2ZQcmVmaXhcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBlbmRPZlByZWZpeChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplID1cbiAgICAgIGluaXRpYWxTaXplICtcbiAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoZWZmZWN0cy5leGl0KHR5cGVzLmxpc3RJdGVtUHJlZml4KSwgdHJ1ZSkubGVuZ3RoXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0Q29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcblxuICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIGVmZmVjdHMuY2hlY2soYmxhbmtMaW5lLCBvbkJsYW5rLCBub3RCbGFuaylcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBvbkJsYW5rKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICBhc3NlcnQodHlwZW9mIHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZSA9PT0gJ251bWJlcicsICdleHBlY3RlZCBzaXplJylcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzID1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgfHxcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZVxuXG4gICAgLy8gV2UgaGF2ZSBhIGJsYW5rIGxpbmUuXG4gICAgLy8gU3RpbGwsIHRyeSB0byBjb25zdW1lIGF0IG1vc3QgdGhlIGl0ZW1zIHNpemUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICBvayxcbiAgICAgIHR5cGVzLmxpc3RJdGVtSW5kZW50LFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplICsgMVxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG5vdEJsYW5rKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICBpZiAoc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyB8fCAhbWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyA9IHVuZGVmaW5lZFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gbm90SW5DdXJyZW50SXRlbShjb2RlKVxuICAgIH1cblxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgPSB1bmRlZmluZWRcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGluZGVudENvbnN0cnVjdCwgb2ssIG5vdEluQ3VycmVudEl0ZW0pKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBub3RJbkN1cnJlbnRJdGVtKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICAvLyBXaGlsZSB3ZSBkbyBjb250aW51ZSwgd2Ugc2lnbmFsIHRoYXQgdGhlIGZsb3cgc2hvdWxkIGJlIGNsb3NlZC5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB0cnVlXG4gICAgLy8gQXMgd2XigJlyZSBjbG9zaW5nIGZsb3csIHdl4oCZcmUgbm8gbG9uZ2VyIGludGVycnVwdGluZy5cbiAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgICAnZXhwZWN0ZWQgYGRpc2FibGUubnVsbGAgdG8gYmUgcG9wdWxhdGVkJ1xuICAgIClcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdHMuYXR0ZW1wdChsaXN0LCBvaywgbm9rKSxcbiAgICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBjb25zdGFudHMudGFiU2l6ZVxuICAgICkoY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUluZGVudChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gIGFzc2VydCh0eXBlb2Ygc2VsZi5jb250YWluZXJTdGF0ZS5zaXplID09PSAnbnVtYmVyJywgJ2V4cGVjdGVkIHNpemUnKVxuXG4gIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgZWZmZWN0cyxcbiAgICBhZnRlclByZWZpeCxcbiAgICB0eXBlcy5saXN0SXRlbUluZGVudCxcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemUgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1JbmRlbnQgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemVcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7RXhpdGVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0RW5kKGVmZmVjdHMpIHtcbiAgYXNzZXJ0KHRoaXMuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gIGFzc2VydCh0eXBlb2YgdGhpcy5jb250YWluZXJTdGF0ZS50eXBlID09PSAnc3RyaW5nJywgJ2V4cGVjdGVkIHR5cGUnKVxuICBlZmZlY3RzLmV4aXQodGhpcy5jb250YWluZXJTdGF0ZS50eXBlKVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cbiAgYXNzZXJ0KFxuICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICdleHBlY3RlZCBgZGlzYWJsZS5udWxsYCB0byBiZSBwb3B1bGF0ZWQnXG4gIClcblxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgYWZ0ZXJQcmVmaXgsXG4gICAgdHlwZXMubGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlLFxuICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogY29uc3RhbnRzLnRhYlNpemUgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG5cbiAgICByZXR1cm4gIW1hcmtkb3duU3BhY2UoY29kZSkgJiZcbiAgICAgIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/list.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setextUnderline\": () => (/* binding */ setextUnderline)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n content = index\n break\n }\n\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph) {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) {\n definition = index\n }\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(text !== undefined, 'expected a `text` index to be found')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(content !== undefined, 'expected a `text` index to be found')\n\n const heading = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeading,\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingText\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo,\n 'expected `=` or `-`'\n )\n\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding &&\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix &&\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n ) {\n paragraph = self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n marker = code\n return before(code)\n }\n\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix)(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n return ok(code)\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9zZXRleHQtdW5kZXJsaW5lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSx5Q0FBeUM7QUFDdEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ3NCO0FBQ3RCO0FBQ0E7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7QUFDQSxhQUFhLG9CQUFvQjtBQUNqQztBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHlFQUFhO0FBQ2pEO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0MsMkVBQWU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx5RUFBYTtBQUNqRDtBQUNBO0FBQ0E7O0FBRUEsbURBQW1ELDRFQUFnQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLDhDQUFNO0FBQ1IsRUFBRSwrQ0FBTTs7QUFFUjtBQUNBLFVBQVUsK0VBQW1CO0FBQzdCLDJCQUEyQjtBQUMzQix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSx5QkFBeUIsbUZBQXVCOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtQkFBbUI7QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUJBQXFCO0FBQ3BDOztBQUVBLElBQUksK0NBQU07QUFDVixlQUFlLHNFQUFVLGFBQWEsMEVBQWM7QUFDcEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLDRFQUFnQjtBQUN2RCx1Q0FBdUMsNEVBQWdCO0FBQ3ZELHVDQUF1Qyx5RUFBYTtBQUNwRDtBQUNBLG1EQUFtRCwyRUFBZTtBQUNsRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1GQUF1QjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGtCQUFrQiwyRkFBK0I7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiwyRkFBK0I7O0FBRWhELFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWSxpQkFBaUIsNEVBQWdCO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVMsSUFBSSw0RUFBa0I7QUFDaEQsbUJBQW1CLG1GQUF1QjtBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL3NldGV4dC11bmRlcmxpbmUuanM/YTlmNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBzZXRleHRVbmRlcmxpbmUgPSB7XG4gIG5hbWU6ICdzZXRleHRVbmRlcmxpbmUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVTZXRleHRVbmRlcmxpbmUsXG4gIHJlc29sdmVUbzogcmVzb2x2ZVRvU2V0ZXh0VW5kZXJsaW5lXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9TZXRleHRVbmRlcmxpbmUoZXZlbnRzLCBjb250ZXh0KSB7XG4gIC8vIFRvIGRvOiByZXNvbHZlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnRlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCB0ZXh0XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZGVmaW5pdGlvblxuXG4gIC8vIEZpbmQgdGhlIG9wZW5pbmcgb2YgdGhlIGNvbnRlbnQuXG4gIC8vIEl04oCZbGwgYWx3YXlzIGV4aXN0OiB3ZSBkb27igJl0IHRva2VuaXplIGlmIGl0IGlzbuKAmXQgdGhlcmUuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmNvbnRlbnQpIHtcbiAgICAgICAgY29udGVudCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLnBhcmFncmFwaCkge1xuICAgICAgICB0ZXh0ID0gaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdFxuICAgIGVsc2Uge1xuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuY29udGVudCkge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbnRlbnQgZW5kIChpZiBuZWVkZWQgd2XigJlsbCBhZGQgaXQgbGF0ZXIpXG4gICAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGVmaW5pdGlvbiAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmRlZmluaXRpb24pIHtcbiAgICAgICAgZGVmaW5pdGlvbiA9IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXNzZXJ0KHRleHQgIT09IHVuZGVmaW5lZCwgJ2V4cGVjdGVkIGEgYHRleHRgIGluZGV4IHRvIGJlIGZvdW5kJylcbiAgYXNzZXJ0KGNvbnRlbnQgIT09IHVuZGVmaW5lZCwgJ2V4cGVjdGVkIGEgYHRleHRgIGluZGV4IHRvIGJlIGZvdW5kJylcblxuICBjb25zdCBoZWFkaW5nID0ge1xuICAgIHR5cGU6IHR5cGVzLnNldGV4dEhlYWRpbmcsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1t0ZXh0XVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgcGFyYWdyYXBoIHRvIHNldGV4dCBoZWFkaW5nIHRleHQuXG4gIGV2ZW50c1t0ZXh0XVsxXS50eXBlID0gdHlwZXMuc2V0ZXh0SGVhZGluZ1RleHRcblxuICAvLyBJZiB3ZSBoYXZlIGRlZmluaXRpb25zIGluIHRoZSBjb250ZW50LCB3ZeKAmWxsIGtlZXAgb24gaGF2aW5nIGNvbnRlbnQsXG4gIC8vIGJ1dCB3ZSBuZWVkIG1vdmUgaXQuXG4gIGlmIChkZWZpbml0aW9uKSB7XG4gICAgZXZlbnRzLnNwbGljZSh0ZXh0LCAwLCBbJ2VudGVyJywgaGVhZGluZywgY29udGV4dF0pXG4gICAgZXZlbnRzLnNwbGljZShkZWZpbml0aW9uICsgMSwgMCwgWydleGl0JywgZXZlbnRzW2NvbnRlbnRdWzFdLCBjb250ZXh0XSlcbiAgICBldmVudHNbY29udGVudF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2RlZmluaXRpb25dWzFdLmVuZClcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbY29udGVudF1bMV0gPSBoZWFkaW5nXG4gIH1cblxuICAvLyBBZGQgdGhlIGhlYWRpbmcgZXhpdCBhdCB0aGUgZW5kLlxuICBldmVudHMucHVzaChbJ2V4aXQnLCBoZWFkaW5nLCBjb250ZXh0XSlcblxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplU2V0ZXh0VW5kZXJsaW5lKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCBvZiBoZWFkaW5nIChzZXRleHQpIHVuZGVybGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgcGFyYWdyYXBoXG5cbiAgICBhc3NlcnQoXG4gICAgICBjb2RlID09PSBjb2Rlcy5kYXNoIHx8IGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvLFxuICAgICAgJ2V4cGVjdGVkIGA9YCBvciBgLWAnXG4gICAgKVxuXG4gICAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAvLyBTa2lwIGVudGVyL2V4aXQgb2YgbGluZSBlbmRpbmcsIGxpbmUgcHJlZml4LCBhbmQgY29udGVudC5cbiAgICAgIC8vIFdlIGNhbiBub3cgZWl0aGVyIGhhdmUgYSBkZWZpbml0aW9uIG9yIGEgcGFyYWdyYXBoLlxuICAgICAgaWYgKFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMubGluZUVuZGluZyAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMubGluZVByZWZpeCAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMuY29udGVudFxuICAgICAgKSB7XG4gICAgICAgIHBhcmFncmFwaCA9IHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSB0eXBlcy5wYXJhZ3JhcGhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUbyBkbzogaGFuZGxlIGxhenkvcGllcmNlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBpZiAoIXNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSAmJiAoc2VsZi5pbnRlcnJ1cHQgfHwgcGFyYWdyYXBoKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5zZXRleHRIZWFkaW5nTGluZSlcbiAgICAgIG1hcmtlciA9IGNvZGVcbiAgICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYC1gIG9yIGA9YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLnNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UpXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5zZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlKVxuXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyLCB0eXBlcy5saW5lU3VmZml4KShjb2RlKVxuICAgICAgOiBhZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNlcXVlbmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnNldGV4dEhlYWRpbmdMaW5lKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js": +/*!*********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"thematicBreak\": () => (/* binding */ thematicBreak)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak)\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore,\n 'expected `*`, `-`, or `_`'\n )\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence)\n return sequence(code)\n }\n\n if (\n size >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.thematicBreakMarkerCountMin &&\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code))\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak)\n return ok(code)\n }\n\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence)\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n : atBreak(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi90aGVtYXRpYy1icmVhay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDc0I7QUFDdEI7QUFDUTtBQUNSO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxrQkFBa0IsK0VBQW1CO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsZUFBZSwwRUFBYztBQUM3QixpQkFBaUIsc0VBQVU7QUFDM0IsaUJBQWlCLDRFQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVGQUEyQjtBQUMvQztBQUNBOztBQUVBO0FBQ0EsY0FBYyxxR0FBcUM7QUFDbkQsZ0JBQWdCLHFFQUFTLElBQUksNEVBQWtCO0FBQy9DO0FBQ0EsbUJBQW1CLCtFQUFtQjtBQUN0QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsdUZBQTJCO0FBQzVDLFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWSxtQkFBbUIsNEVBQWdCO0FBQ3ZEO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL3RoZW1hdGljLWJyZWFrLmpzPzcyZDAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IHRoZW1hdGljQnJlYWsgPSB7XG4gIG5hbWU6ICd0aGVtYXRpY0JyZWFrJyxcbiAgdG9rZW5pemU6IHRva2VuaXplVGhlbWF0aWNCcmVha1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVRoZW1hdGljQnJlYWsoZWZmZWN0cywgb2ssIG5vaykge1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aGVtYXRpYyBicmVhay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMudGhlbWF0aWNCcmVhaylcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmFzdGVyaXNrIHx8XG4gICAgICAgIGNvZGUgPT09IGNvZGVzLmRhc2ggfHxcbiAgICAgICAgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSxcbiAgICAgICdleHBlY3RlZCBgKmAsIGAtYCwgb3IgYF9gJ1xuICAgIClcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy50aGVtYXRpY0JyZWFrU2VxdWVuY2UpXG4gICAgICByZXR1cm4gc2VxdWVuY2UoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzaXplID49IGNvbnN0YW50cy50aGVtYXRpY0JyZWFrTWFya2VyQ291bnRNaW4gJiZcbiAgICAgIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnRoZW1hdGljQnJlYWspXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUrK1xuICAgICAgcmV0dXJuIHNlcXVlbmNlXG4gICAgfVxuXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLnRoZW1hdGljQnJlYWtTZXF1ZW5jZSlcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgdHlwZXMud2hpdGVzcGFjZSkoY29kZSlcbiAgICAgIDogYXRCcmVhayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-destination/dev/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/micromark-factory-destination/dev/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryDestination\": () => (/* binding */ factoryDestination)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)\n ) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)\n ) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n ) {\n effects.consume(code)\n return enclosed\n }\n\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code))\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (balance < limit && code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis) {\n effects.consume(code)\n balance++\n return raw\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)\n ) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n ) {\n effects.consume(code)\n return raw\n }\n\n return raw(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSx3Q0FBd0M7QUFDckQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBTWlDO0FBQ21CO0FBQ1E7QUFDUjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDBFQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSxrRkFBc0I7QUFDckMsTUFBTSxzRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxxRUFBUztBQUN4QixlQUFlLDBFQUFjO0FBQzdCLE1BQU0sNEVBQWtCO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBZTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMEVBQWM7QUFDN0IsZUFBZSw2RUFBaUI7QUFDaEMsZUFBZSwyRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUVBQVM7QUFDekIsaUJBQWlCLGtGQUFzQjtBQUN2QyxRQUFRLG1GQUF5QjtBQUNqQztBQUNBLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0MsaUZBQXFCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrRkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSxpRkFBcUI7QUFDcEMsTUFBTSxzRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsMkVBQWU7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFxQjtBQUNwQyxlQUFlLGtGQUFzQjtBQUNyQyxlQUFlLDJFQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24vZGV2L2luZGV4LmpzPzFhOWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlDb250cm9sLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93bkxpbmVFbmRpbmdcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2UgZGVzdGluYXRpb25zLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiA8YT5cbiAqIDxhXFw+Yj5cbiAqIDxhIGI+XG4gKiA8YSk+XG4gKiBhXG4gKiBhXFwpYlxuICogYShiKWNcbiAqIGEoYilcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtTdGF0ZX0gbm9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gdW5zdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSBmb3Igd2hvbGUgKGA8YT5gIG9yIGBiYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbFR5cGVcbiAqICAgVHlwZSB3aGVuIGVuY2xvc2VkIChgPGE+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbE1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgZW5jbG9zaW5nIChgPGAgYW5kIGA+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gcmF3VHlwZVxuICogICBUeXBlIHdoZW4gbm90IGVuY2xvc2VkIChgYmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIHZhbHVlIChgYWAgb3IgYGJgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBEZXB0aCBvZiBuZXN0ZWQgcGFyZW5zIChpbmNsdXNpdmUpLlxuICogQHJldHVybnMge1N0YXRlfVxuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5RGVzdGluYXRpb24oXG4gIGVmZmVjdHMsXG4gIG9rLFxuICBub2ssXG4gIHR5cGUsXG4gIGxpdGVyYWxUeXBlLFxuICBsaXRlcmFsTWFya2VyVHlwZSxcbiAgcmF3VHlwZSxcbiAgc3RyaW5nVHlwZSxcbiAgbWF4XG4pIHtcbiAgY29uc3QgbGltaXQgPSBtYXggfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4gIGxldCBiYWxhbmNlID0gMFxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgIF5cbiAgICogPiB8IGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKGxpdGVyYWxUeXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgcmV0dXJuIGVuY2xvc2VkQmVmb3JlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCwgc3BhY2UsIGNsb3NpbmcgcGFyZW4uXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5zcGFjZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fFxuICAgICAgYXNjaWlDb250cm9sKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgIGVmZmVjdHMuZW50ZXIocmF3VHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua1N0cmluZywge2NvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVTdHJpbmd9KVxuICAgIHJldHVybiByYXcoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IGFuIGVuY2xvc2VkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFhPlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtTdHJpbmcsIHtjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlU3RyaW5nfSlcbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBlbmNsb3NlZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmNsb3NlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIHJldHVybiBlbmNsb3NlZEJlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2ggPyBlbmNsb3NlZEVzY2FwZSA6IGVuY2xvc2VkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhXFwqYT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkRXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmJhY2tzbGFzaFxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5jbG9zZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmF3KGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICAhYmFsYW5jZSAmJlxuICAgICAgKGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgICBjb2RlID09PSBjb2Rlcy5yaWdodFBhcmVudGhlc2lzIHx8XG4gICAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChyYXdUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoYmFsYW5jZSA8IGxpbWl0ICYmIGNvZGUgPT09IGNvZGVzLmxlZnRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlKytcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlLS1cbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBjb250cm9sIChidXQgKm5vdCogYFxcMGApIGFuZCBzcGFjZSBhbmQgYChgLlxuICAgIC8vIE5vdGU6IGluIGBtYXJrZG93bi1yc2AsIGBcXDBgIGV4aXN0cyBpbiBjb2RlcywgaW4gYG1pY3JvbWFyay1qc2AgaXRcbiAgICAvLyBkb2VzbuKAmXQuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5zcGFjZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzIHx8XG4gICAgICBhc2NpaUNvbnRyb2woY29kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuYmFja3NsYXNoID8gcmF3RXNjYXBlIDogcmF3XG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYVxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByYXdFc2NhcGUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRQYXJlbnRoZXNpcyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYmFja3NsYXNoXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICByZXR1cm4gcmF3KGNvZGUpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-destination/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-label/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-label/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryLabel\": () => (/* binding */ factoryLabel)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n return atBreak\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeString})\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) ||\n size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString)\n return atBreak(code)\n }\n\n effects.consume(code)\n if (!seen) seen = !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket\n ) {\n effects.consume(code)\n size++\n return labelInside\n }\n\n return labelInside(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWxhYmVsL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUUwRTtBQUN0QjtBQUNRO0FBQ1I7QUFDYjs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLG1GQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOEZBQThCO0FBQzNDLGVBQWUscUVBQVM7QUFDeEIsZUFBZSxtRkFBdUI7QUFDdEMsZ0JBQWdCLG9GQUF3QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVFQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsNEVBQWtCO0FBQzFCLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7O0FBRUEsa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQVM7QUFDeEIsZUFBZSxtRkFBdUI7QUFDdEMsZUFBZSxvRkFBd0I7QUFDdkMsTUFBTSw0RUFBa0I7QUFDeEIsZUFBZSw4RkFBOEI7QUFDN0M7QUFDQSxtQkFBbUIsNkVBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsdUVBQWE7QUFDcEMsb0JBQW9CLDJFQUFlO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRkFBdUI7QUFDdEMsZUFBZSwyRUFBZTtBQUM5QixlQUFlLG9GQUF3QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktbGFiZWwvZGV2L2luZGV4LmpzP2ZhMjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKlxuICogUGFyc2UgbGFiZWxzLlxuICpcbiAqID4g8J+RiSAqKk5vdGUqKjogbGFiZWxzIGluIG1hcmtkb3duIGFyZSBjYXBwZWQgYXQgOTk5IGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGBtYXJrZG93blxuICogW2FdXG4gKiBbYVxuICogYl1cbiAqIFthXFxdYl1cbiAqIGBgYFxuICpcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiAgIFRva2VuaXplIGNvbnRleHQuXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIGxhYmVsIChgW2FdYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbWFya2VyVHlwZVxuICogICBUeXBlIGZvciB0aGUgbWFya2VycyAoYFtgIGFuZCBgXWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIGlkZW50aWZpZXIgKGBhYCkuXG4gKiBAcmV0dXJucyB7U3RhdGV9XG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlMYWJlbChlZmZlY3RzLCBvaywgbm9rLCB0eXBlLCBtYXJrZXJUeXBlLCBzdHJpbmdUeXBlKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBzaXplID0gMFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBzZWVuXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0LCAnZXhwZWN0ZWQgYFtgJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICByZXR1cm4gYXRCcmVha1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBhdCBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChcbiAgICAgIHNpemUgPiBjb25zdGFudHMubGlua1JlZmVyZW5jZVNpemVNYXggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQgfHxcbiAgICAgIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQgJiYgIXNlZW4pIHx8XG4gICAgICAvLyBUbyBkbzogcmVtb3ZlIGluIHRoZSBmdXR1cmUgb25jZSB3ZeKAmXZlIHN3aXRjaGVkIGZyb21cbiAgICAgIC8vIGBtaWNyb21hcmstZXh0ZW5zaW9uLWZvb3Rub3RlYCB0byBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLFxuICAgICAgLy8gd2hpY2ggZG9lc27igJl0IG5lZWQgdGhpcy5cbiAgICAgIC8vIEhpZGRlbiBmb290bm90ZXMgaG9vay5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICAgIChjb2RlID09PSBjb2Rlcy5jYXJldCAmJlxuICAgICAgICAhc2l6ZSAmJlxuICAgICAgICAnX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCcgaW4gc2VsZi5wYXJzZXIuY29uc3RydWN0cylcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIC8vIFRvIGRvOiBpbmRlbnQ/IExpbmsgY2h1bmtzIGFuZCBFT0xzIHRvZ2V0aGVyP1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICByZXR1cm4gYXRCcmVha1xuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtTdHJpbmcsIHtjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlU3RyaW5nfSlcbiAgICByZXR1cm4gbGFiZWxJbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgaW4gdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB8fFxuICAgICAgc2l6ZSsrID4gY29uc3RhbnRzLmxpbmtSZWZlcmVuY2VTaXplTWF4XG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGlmICghc2Vlbikgc2VlbiA9ICFtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IGNvZGVzLmJhY2tzbGFzaCA/IGxhYmVsRXNjYXBlIDogbGFiZWxJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBhIHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FcXCphXVxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFc2NhcGUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldFxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplKytcbiAgICAgIHJldHVybiBsYWJlbEluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBsYWJlbEluc2lkZShjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-label/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-space/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-space/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factorySpace\": () => (/* binding */ factorySpace)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nfunction factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n\n return start\n\n /** @type {State} */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXNwYWNlL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsYUFBYSx3Q0FBd0M7QUFDckQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRXNEOztBQUV0RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxRQUFRLHVFQUFhO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1zcGFjZS9kZXYvaW5kZXguanM/N2YxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcblxuLy8gVG8gZG86IGltcGxlbWVudCBgc3BhY2VPclRhYmAsIGBzcGFjZU9yVGFiTWluTWF4YCwgYHNwYWNlT3JUYWJXaXRoT3B0aW9uc2AuXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgc3BhY2VzIGluIG1hcmtkb3duIGFyZSBvZnRlbiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSB0aGlzIGZhY3RvcnkgY2FuIGJlXG4gKiAgICAgdXNlZCBhbmQgYG9rYCB3aWxsIGJlIHN3aXRjaGVkIHRvIHdoZXRoZXIgc3BhY2VzIHdlcmUgZm91bmQgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoIGBtYXJrZG93blNwYWNlKGNvZGUpYCByaWdodFxuICogICAgIGJlZm9yZSB1c2luZyBgZmFjdG9yeVNwYWNlYFxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIFdoZXJlIGDikIlgIHJlcHJlc2VudHMgYSB0YWIgKHBsdXMgaG93IG11Y2ggaXQgZXhwYW5kcykgYW5kIGDikKBgIHJlcHJlc2VudHMgYVxuICogc2luZ2xlIHNwYWNlLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiDikIlcbiAqIOKQoOKQoOKQoOKQoFxuICog4pCJ4pCgXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgKGAnIFxcdCdgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBNYXggKGV4Y2x1c2l2ZSkuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBvaywgdHlwZSwgbWF4KSB7XG4gIGNvbnN0IGxpbWl0ID0gbWF4ID8gbWF4IC0gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICBsZXQgc2l6ZSA9IDBcblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICAgIHJldHVybiBwcmVmaXgoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHByZWZpeChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkgJiYgc2l6ZSsrIDwgbGltaXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHByZWZpeFxuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-space/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-title/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-title/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryTitle\": () => (/* binding */ factoryTitle)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis\n ) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ? micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis : code\n return begin\n }\n\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeString})\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n return atBreak(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash) {\n effects.consume(code)\n return inside\n }\n\n return inside(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXRpdGxlL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVvRDtBQUNPO0FBQ1A7QUFDUTtBQUNSOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQLGFBQWEsbUJBQW1CO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrRUFBbUI7QUFDbEMsZUFBZSw0RUFBZ0I7QUFDL0IsZUFBZSxpRkFBcUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpRkFBcUIsR0FBRyxrRkFBc0I7QUFDdEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHFFQUFTO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDRFQUFrQjtBQUMxQjtBQUNBLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DLGFBQWEscUVBQVksbUJBQW1CLDRFQUFnQjtBQUM1RDs7QUFFQSxrQkFBa0IsNkVBQWlCLEdBQUcsYUFBYSwyRkFBMkIsQ0FBQztBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0Esb0NBQW9DLHFFQUFTLElBQUksNEVBQWtCO0FBQ25FLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBZTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxvQ0FBb0MsMkVBQWU7QUFDbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktdGl0bGUvZGV2L2luZGV4LmpzPzBkNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2UgdGl0bGVzLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiBcImFcIlxuICogJ2InXG4gKiAoYylcbiAqIFwiYVxuICogYlwiXG4gKiAnYVxuICogICAgIGInXG4gKiAoYVxcKWIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIHRpdGxlIChgXCJhXCJgLCBgJ2InYCwgYChjKWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IG1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgdGhlIG1hcmtlcnMgKGBcImAsIGAnYCwgYChgLCBhbmQgYClgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBzdHJpbmdUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSB2YWx1ZSAoYGFgKS5cbiAqIEByZXR1cm5zIHtTdGF0ZX1cbiAqICAgU3RhcnQgc3RhdGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeVRpdGxlKGVmZmVjdHMsIG9rLCBub2ssIHR5cGUsIG1hcmtlclR5cGUsIHN0cmluZ1R5cGUpIHtcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVwiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgICAgbWFya2VyID0gY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzID8gY29kZXMucmlnaHRQYXJlbnRoZXNpcyA6IGNvZGVcbiAgICAgIHJldHVybiBiZWdpblxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcGVuaW5nIG1hcmtlci5cbiAgICpcbiAgICogVGhpcyBpcyBhbHNvIHVzZWQgYXQgdGhlIGNsb3NpbmcgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXCJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWdpbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgcmV0dXJuIGJlZ2luKG1hcmtlcilcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gTm90ZTogYmxhbmsgbGluZXMgY2Fu4oCZdCBleGlzdCBpbiBjb250ZW50LlxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIC8vIFRvIGRvOiB1c2UgYHNwYWNlX29yX3RhYl9lb2xfd2l0aF9vcHRpb25zYCwgY29ubmVjdC5cbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGF0QnJlYWssIHR5cGVzLmxpbmVQcmVmaXgpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua1N0cmluZywge2NvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVTdHJpbmd9KVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIgfHwgY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rU3RyaW5nKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuYmFja3NsYXNoID8gZXNjYXBlIDogaW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVxcKmJcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlciB8fCBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-title/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-whitespace/dev/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-factory-whitespace/dev/index.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryWhitespace\": () => (/* binding */ factoryWhitespace)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nfunction factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n\n return start\n\n /** @type {State} */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n seen = true\n return start\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n effects,\n start,\n seen ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix\n )(code)\n }\n\n return ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25EOztBQUVvRDtBQUNzQjtBQUN0Qjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsYUFBYSxTQUFTO0FBQ3RCOztBQUVBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLFFBQVEsNEVBQWtCO0FBQzFCLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHVFQUFhO0FBQ3JCLGFBQWEscUVBQVk7QUFDekI7QUFDQTtBQUNBLGVBQWUsNEVBQWdCLEdBQUcsNEVBQWdCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlL2Rldi9pbmRleC5qcz9kYzJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgbGluZSBlbmRpbmdzIG9yIHNwYWNlcyBpbiBtYXJrZG93biBhcmUgb2Z0ZW4gb3B0aW9uYWwsIGluIHdoaWNoIGNhc2UgdGhpc1xuICogICAgIGZhY3RvcnkgY2FuIGJlIHVzZWQgYW5kIGBva2Agd2lsbCBiZSBzd2l0Y2hlZCB0byB3aGV0aGVyIHNwYWNlcyB3ZXJlIGZvdW5kXG4gKiAgICAgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoXG4gKiAgICAgYG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlgIHJpZ2h0IGJlZm9yZSB1c2luZyBgZmFjdG9yeVdoaXRlc3BhY2VgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIG9rKSB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IHNlZW5cblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICAgIHNlZW4gPSB0cnVlXG4gICAgICByZXR1cm4gc3RhcnRcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHNlZW4gPyB0eXBlcy5saW5lUHJlZml4IDogdHlwZXMubGluZVN1ZmZpeFxuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-whitespace/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-character/dev/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark-util-character/dev/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"asciiAlpha\": () => (/* binding */ asciiAlpha),\n/* harmony export */ \"asciiAlphanumeric\": () => (/* binding */ asciiAlphanumeric),\n/* harmony export */ \"asciiAtext\": () => (/* binding */ asciiAtext),\n/* harmony export */ \"asciiControl\": () => (/* binding */ asciiControl),\n/* harmony export */ \"asciiDigit\": () => (/* binding */ asciiDigit),\n/* harmony export */ \"asciiHexDigit\": () => (/* binding */ asciiHexDigit),\n/* harmony export */ \"asciiPunctuation\": () => (/* binding */ asciiPunctuation),\n/* harmony export */ \"markdownLineEnding\": () => (/* binding */ markdownLineEnding),\n/* harmony export */ \"markdownLineEndingOrSpace\": () => (/* binding */ markdownLineEndingOrSpace),\n/* harmony export */ \"markdownSpace\": () => (/* binding */ markdownSpace),\n/* harmony export */ \"unicodePunctuation\": () => (/* binding */ unicodePunctuation),\n/* harmony export */ \"unicodeWhitespace\": () => (/* binding */ unicodeWhitespace)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/unicode-punctuation-regex.js */ \"../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.del)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownLineEnding(code) {\n return code !== null && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownLineEndingOrSpace(code) {\n return code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownSpace(code) {\n return (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space\n )\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst unicodePunctuation = regexCheck(_lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xEOztBQUVvRDtBQUNzQjs7QUFFMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1RUFBVyxhQUFhLHFFQUFTO0FBQzlEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxnREFBZ0Q7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGlDQUFpQywrRUFBbUI7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1Asa0NBQWtDLHFFQUFTLGFBQWEsdUVBQVc7QUFDbkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1A7QUFDQSxhQUFhLCtFQUFtQjtBQUNoQyxhQUFhLDhFQUFrQjtBQUMvQixhQUFhLHVFQUFXO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sc0NBQXNDLHNGQUF1Qjs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvaW5kZXguanM/YTY1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICovXG5cbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dW5pY29kZVB1bmN0dWF0aW9uUmVnZXh9IGZyb20gJy4vbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMnXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhbHBoYSAoYGFgIHRocm91Z2ggYHpgLFxuICogY2FzZSBpbnNlbnNpdGl2ZSkuXG4gKlxuICogQW4gKipBU0NJSSBhbHBoYSoqIGlzIGFuIEFTQ0lJIHVwcGVyIGFscGhhIG9yIEFTQ0lJIGxvd2VyIGFscGhhLlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA0MSAoYEFgKVxuICogdG8gVSswMDVBIChgWmApLlxuICpcbiAqIEFuICoqQVNDSUkgbG93ZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA2MSAoYGFgKVxuICogdG8gVSswMDdBIChgemApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUFscGhhID0gcmVnZXhDaGVjaygvW0EtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChgYWBcbiAqIHRocm91Z2ggYHpgLCBjYXNlIGluc2Vuc2l0aXZlLCBvciBgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgYWxwaGFudW1lcmljKiogaXMgYW4gQVNDSUkgZGlnaXQgKHNlZSBgYXNjaWlEaWdpdGApIG9yIEFTQ0lJIGFscGhhXG4gKiAoc2VlIGBhc2NpaUFscGhhYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQWxwaGFudW1lcmljID0gcmVnZXhDaGVjaygvW1xcZEEtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYXRleHQuXG4gKlxuICogYXRleHQgaXMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChzZWUgYGFzY2lpQWxwaGFudW1lcmljYCksIG9yIGEgY2hhcmFjdGVyIGluXG4gKiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBVKzAwMjMgTlVNQkVSIFNJR04gKGAjYCkgdG8gVSswMDI3IEFQT1NUUk9QSEUgKGAnYCksXG4gKiBVKzAwMkEgQVNURVJJU0sgKGAqYCksIFUrMDAyQiBQTFVTIFNJR04gKGArYCksIFUrMDAyRCBEQVNIIChgLWApLCBVKzAwMkZcbiAqIFNMQVNIIChgL2ApLCBVKzAwM0QgRVFVQUxTIFRPIChgPWApLCBVKzAwM0YgUVVFU1RJT04gTUFSSyAoYD9gKSwgVSswMDVFXG4gKiBDQVJFVCAoYF5gKSB0byBVKzAwNjAgR1JBVkUgQUNDRU5UIChgYCBgIGBgKSwgb3IgVSswMDdCIExFRlQgQ1VSTFkgQlJBQ0VcbiAqIChge2ApIHRvIFUrMDA3RSBUSUxERSAoYH5gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1JGQzUzMjJdKio6XG4gKiBbSW50ZXJuZXQgTWVzc2FnZSBGb3JtYXRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyKS5cbiAqIFAuIFJlc25pY2suXG4gKiBJRVRGLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUF0ZXh0ID0gcmVnZXhDaGVjaygvWyMtJyorXFwtLTk9P0EtWl4tfl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhbiBBU0NJSSBjb250cm9sIGNoYXJhY3Rlci5cbiAqXG4gKiBBbiAqKkFTQ0lJIGNvbnRyb2wqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAwMCBOVUxMIChOVUwpXG4gKiB0byBVKzAwMUYgKFVTKSwgb3IgVSswMDdGIChERUwpLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzY2lpQ29udHJvbChjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgLy8gU3BlY2lhbCB3aGl0ZXNwYWNlIGNvZGVzICh3aGljaCBoYXZlIG5lZ2F0aXZlIHZhbHVlcyksIEMwIGFuZCBDb250cm9sXG4gICAgLy8gY2hhcmFjdGVyIERFTFxuICAgIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCBjb2Rlcy5zcGFjZSB8fCBjb2RlID09PSBjb2Rlcy5kZWwpXG4gIClcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGRpZ2l0IChgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAzMCAoYDBgKSB0b1xuICogVSswMDM5IChgOWApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaURpZ2l0ID0gcmVnZXhDaGVjaygvXFxkLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGhleCBkaWdpdCAoYGFgIHRocm91Z2hcbiAqIGBmYCwgY2FzZSBpbnNlbnNpdGl2ZSwgb3IgYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGhleCBkaWdpdCoqIGlzIGFuIEFTQ0lJIGRpZ2l0IChzZWUgYGFzY2lpRGlnaXRgKSwgQVNDSUkgdXBwZXIgaGV4XG4gKiBkaWdpdCwgb3IgYW4gQVNDSUkgbG93ZXIgaGV4IGRpZ2l0LlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgaGV4IGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNDFcbiAqIChgQWApIHRvIFUrMDA0NiAoYEZgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGxvd2VyIGhleCBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDYxXG4gKiAoYGFgKSB0byBVKzAwNjYgKGBmYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpSGV4RGlnaXQgPSByZWdleENoZWNrKC9bXFxkQS1GYS1mXS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBBU0NJSSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBbiAqKkFTQ0lJIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgVSswMDIxXG4gKiBFWENMQU1BVElPTiBNQVJLIChgIWApIHRvIFUrMDAyRiBTTEFTSCAoYC9gKSwgVSswMDNBIENPTE9OIChgOmApIHRvIFUrMDA0MCBBVFxuICogU0lHTiAoYEBgKSwgVSswMDVCIExFRlQgU1FVQVJFIEJSQUNLRVQgKGBbYCkgdG8gVSswMDYwIEdSQVZFIEFDQ0VOVFxuICogKGBgIGAgYGApLCBvciBVKzAwN0IgTEVGVCBDVVJMWSBCUkFDRSAoYHtgKSB0byBVKzAwN0UgVElMREUgKGB+YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpUHVuY3R1YXRpb24gPSByZWdleENoZWNrKC9bIS0vOi1AWy1gey1+XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcuXG4gKlxuICogQSAqKm1hcmtkb3duIGxpbmUgZW5kaW5nKiogaXMgdGhlIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDMgQ0FSUklBR0UgUkVUVVJOXG4gKiBMSU5FIEZFRUQgKENSTEYpLCBNLTAwMDQgTElORSBGRUVEIChMRikgYW5kIE0tMDAwNSBDQVJSSUFHRSBSRVRVUk4gKENSKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBhbmQgVSswMDBEIENBUlJJQUdFXG4gKiBSRVRVUk4gKENSKSBhcmUgcmVwbGFjZWQgYnkgdGhlc2UgdmlydHVhbCBjaGFyYWN0ZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyXG4gKiB0aGV5IG9jY3VycmVkIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIGNvZGUgPCBjb2Rlcy5ob3Jpem9udGFsVGFiXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcgKHNlZVxuICogYG1hcmtkb3duTGluZUVuZGluZ2ApIG9yIG1hcmtkb3duIHNwYWNlIChzZWUgYG1hcmtkb3duU3BhY2VgKS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCBjb2Rlcy5udWwgfHwgY29kZSA9PT0gY29kZXMuc3BhY2UpXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gc3BhY2UuXG4gKlxuICogQSAqKm1hcmtkb3duIHNwYWNlKiogaXMgdGhlIGNvbmNyZXRlIGNoYXJhY3RlciBVKzAwMjAgU1BBQ0UgKFNQKSBhbmQgdGhlXG4gKiB2aXJ0dWFsIGNoYXJhY3RlcnMgTS0wMDAxIFZJUlRVQUwgU1BBQ0UgKFZTKSBhbmQgTS0wMDAyIEhPUklaT05UQUwgVEFCIChIVCkuXG4gKlxuICogSW4gbWljcm9tYXJrLCB0aGUgYWN0dWFsIGNoYXJhY3RlciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSBpc1xuICogcmVwbGFjZWQgYnkgb25lIE0tMDAwMiBIT1JJWk9OVEFMIFRBQiAoSFQpIGFuZCBiZXR3ZWVuIDAgYW5kIDMgTS0wMDAxIFZJUlRVQUxcbiAqIFNQQUNFIChWUykgY2hhcmFjdGVycywgZGVwZW5kaW5nIG9uIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIHRhYiBvY2N1cnJlZC5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93blNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICBjb2RlID09PSBjb2Rlcy5ob3Jpem9udGFsVGFiIHx8XG4gICAgY29kZSA9PT0gY29kZXMudmlydHVhbFNwYWNlIHx8XG4gICAgY29kZSA9PT0gY29kZXMuc3BhY2VcbiAgKVxufVxuXG4vLyBTaXplIG5vdGU6IHJlbW92aW5nIEFTQ0lJIGZyb20gdGhlIHJlZ2V4IGFuZCB1c2luZyBgYXNjaWlQdW5jdHVhdGlvbmAgaGVyZVxuLy8gSW4gZmFjdCBhZGRzIHRvIHRoZSBidW5kbGUgc2l6ZS5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHB1bmN0dWF0aW9uLlxuICpcbiAqIEEgKipVbmljb2RlIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFBjYCAoUHVuY3R1YXRpb24sXG4gKiBDb25uZWN0b3IpLCBgUGRgIChQdW5jdHVhdGlvbiwgRGFzaCksIGBQZWAgKFB1bmN0dWF0aW9uLCBDbG9zZSksIGBQZmBcbiAqIChQdW5jdHVhdGlvbiwgRmluYWwgcXVvdGUpLCBgUGlgIChQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZSksIGBQb2BcbiAqIChQdW5jdHVhdGlvbiwgT3RoZXIpLCBvciBgUHNgIChQdW5jdHVhdGlvbiwgT3BlbikgY2F0ZWdvcmllcywgb3IgYW4gQVNDSUlcbiAqIHB1bmN0dWF0aW9uIChzZWUgYGFzY2lpUHVuY3R1YXRpb25gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvbiA9IHJlZ2V4Q2hlY2sodW5pY29kZVB1bmN0dWF0aW9uUmVnZXgpXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHdoaXRlc3BhY2UuXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZG9lcyBoYW5kbGUgbWljcm9tYXJrIHNwZWNpZmljIG1hcmtkb3duIHdoaXRlc3BhY2UgY2hhcmFjdGVycy5cbiAqIFNlZSBgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZWAgdG8gY2hlY2sgdGhhdC5cbiAqXG4gKiBBICoqVW5pY29kZSB3aGl0ZXNwYWNlKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFpzYCAoU2VwYXJhdG9yLFxuICogU3BhY2UpIGNhdGVnb3J5LCBvciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSwgVSswMDBBIExJTkUgRkVFRCAoTEYpLFxuICogVSswMDBDIChGRiksIG9yIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSAoKipcXFtVTklDT0RFXSoqKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVXaGl0ZXNwYWNlID0gcmVnZXhDaGVjaygvXFxzLylcblxuLyoqXG4gKiBDcmVhdGUgYSBjb2RlIGNoZWNrIGZyb20gYSByZWdleC5cbiAqXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhcbiAqIEByZXR1cm5zIHsoY29kZTogQ29kZSkgPT4gYm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gcmVnZXhDaGVjayhyZWdleCkge1xuICByZXR1cm4gY2hlY2tcblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGNvZGUgbWF0Y2hlcyB0aGUgYm91bmQgcmVnZXguXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiAgIENoYXJhY3RlciBjb2RlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogICBXaGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSBtYXRjaGVzIHRoZSBib3VuZCByZWdleC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiByZWdleC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-character/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js": +/*!*******************************************************************************************!*\ + !*** ../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"unicodePunctuationRegex\": () => (/* binding */ unicodePunctuationRegex)\n/* harmony export */ });\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nconst unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGNBQWMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanM/NmExMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgYnkgYHNjcmlwdC9gLlxuLy9cbi8vIENvbW1vbk1hcmsgaGFuZGxlcyBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpIG1hcmtlcnMgYmFzZWQgb24gd2hhdCBjb21lc1xuLy8gYmVmb3JlIG9yIGFmdGVyIHRoZW0uXG4vLyBPbmUgc3VjaCBkaWZmZXJlbmNlIGlzIGlmIHRob3NlIGNoYXJhY3RlcnMgYXJlIFVuaWNvZGUgcHVuY3R1YXRpb24uXG4vLyBUaGlzIHNjcmlwdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgVW5pY29kZSBkYXRhLlxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgYSB1bmljb2RlIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4ID1cbiAgL1shLS86LUBbLWB7LX5cXHUwMEExXFx1MDBBN1xcdTAwQUJcXHUwMEI2XFx1MDBCN1xcdTAwQkJcXHUwMEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRC1cXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQjdEXFx1MUI3RVxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyLVxcdTJFNURcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XS9cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-chunked/dev/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/micromark-util-chunked/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"push\": () => (/* binding */ push),\n/* harmony export */ \"splice\": () => (/* binding */ splice)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n\n\n/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nfunction splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(\n chunkStart,\n chunkStart + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n )\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n\n chunkStart += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n start += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nfunction push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNodW5rZWQvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLGdCQUFnQjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFCQUFxQiw0RkFBNEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0RkFBNEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLDRGQUE0QjtBQUNoRCxlQUFlLDRGQUE0QjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2h1bmtlZC9kZXYvaW5kZXguanM/ZjA2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcblxuLyoqXG4gKiBMaWtlIGBBcnJheSNzcGxpY2VgLCBidXQgc21hcnRlciBmb3IgZ2lhbnQgYXJyYXlzLlxuICpcbiAqIGBBcnJheSNzcGxpY2VgIHRha2VzIGFsbCBpdGVtcyB0byBiZSBpbnNlcnRlZCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50IHdoaWNoXG4gKiBjYXVzZXMgYSBzdGFjayBvdmVyZmxvdyBpbiBWOCB3aGVuIHRyeWluZyB0byBpbnNlcnQgMTAwayBpdGVtcyBmb3IgaW5zdGFuY2UuXG4gKlxuICogT3RoZXJ3aXNlLCB0aGlzIGRvZXMgbm90IHJldHVybiB0aGUgcmVtb3ZlZCBpdGVtcywgYW5kIHRha2VzIGBpdGVtc2AgYXMgYW5cbiAqIGFycmF5IGluc3RlYWQgb2YgcmVzdCBwYXJhbWV0ZXJzLlxuICpcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogICBJdGVtIHR5cGUuXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBsaXN0XG4gKiAgIExpc3QgdG8gb3BlcmF0ZSBvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydFxuICogICBJbmRleCB0byByZW1vdmUvaW5zZXJ0IGF0IChjYW4gYmUgbmVnYXRpdmUpLlxuICogQHBhcmFtIHtudW1iZXJ9IHJlbW92ZVxuICogICBOdW1iZXIgb2YgaXRlbXMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gaXRlbXNcbiAqICAgSXRlbXMgdG8gaW5qZWN0IGludG8gYGxpc3RgLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UobGlzdCwgc3RhcnQsIHJlbW92ZSwgaXRlbXMpIHtcbiAgY29uc3QgZW5kID0gbGlzdC5sZW5ndGhcbiAgbGV0IGNodW5rU3RhcnQgPSAwXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGxldCBwYXJhbWV0ZXJzXG5cbiAgLy8gTWFrZSBzdGFydCBiZXR3ZWVuIHplcm8gYW5kIGBlbmRgIChpbmNsdWRlZCkuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGVuZCA/IDAgOiBlbmQgKyBzdGFydFxuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gc3RhcnQgPiBlbmQgPyBlbmQgOiBzdGFydFxuICB9XG5cbiAgcmVtb3ZlID0gcmVtb3ZlID4gMCA/IHJlbW92ZSA6IDBcblxuICAvLyBObyBuZWVkIHRvIGNodW5rIHRoZSBpdGVtcyBpZiB0aGVyZeKAmXMgb25seSBhIGNvdXBsZSAoMTBrKSBpdGVtcy5cbiAgaWYgKGl0ZW1zLmxlbmd0aCA8IGNvbnN0YW50cy52OE1heFNhZmVDaHVua1NpemUpIHtcbiAgICBwYXJhbWV0ZXJzID0gQXJyYXkuZnJvbShpdGVtcylcbiAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIHJlbW92ZSlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl04oCZcyBmaW5lLlxuICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRGVsZXRlIGByZW1vdmVgIGl0ZW1zIHN0YXJ0aW5nIGZyb20gYHN0YXJ0YFxuICAgIGlmIChyZW1vdmUpIGxpc3Quc3BsaWNlKHN0YXJ0LCByZW1vdmUpXG5cbiAgICAvLyBJbnNlcnQgdGhlIGl0ZW1zIGluIGNodW5rcyB0byBub3QgY2F1c2Ugc3RhY2sgb3ZlcmZsb3dzLlxuICAgIHdoaWxlIChjaHVua1N0YXJ0IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gaXRlbXMuc2xpY2UoXG4gICAgICAgIGNodW5rU3RhcnQsXG4gICAgICAgIGNodW5rU3RhcnQgKyBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgICApXG4gICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIDApXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl04oCZcyBmaW5lLlxuICAgICAgbGlzdC5zcGxpY2UoLi4ucGFyYW1ldGVycylcblxuICAgICAgY2h1bmtTdGFydCArPSBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgICBzdGFydCArPSBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXBwZW5kIGBpdGVtc2AgKGFuIGFycmF5KSBhdCB0aGUgZW5kIG9mIGBsaXN0YCAoYW5vdGhlciBhcnJheSkuXG4gKiBXaGVuIGBsaXN0YCB3YXMgZW1wdHksIHJldHVybnMgYGl0ZW1zYCBpbnN0ZWFkLlxuICpcbiAqIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWxseSBleHBlbnNpdmUgb3BlcmF0aW9uIHdoZW4gYGxpc3RgIGlzIGVtcHR5LFxuICogYW5kIGFkZHMgaXRlbXMgaW4gYmF0Y2hlcyB0byBwcmV2ZW50IFY4IGZyb20gaGFuZ2luZy5cbiAqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFRcbiAqICAgSXRlbSB0eXBlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gbGlzdFxuICogICBMaXN0IHRvIG9wZXJhdGUgb24uXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBpdGVtc1xuICogICBJdGVtcyB0byBhZGQgdG8gYGxpc3RgLlxuICogQHJldHVybnMge0FycmF5PFQ+fVxuICogICBFaXRoZXIgYGxpc3RgIG9yIGBpdGVtc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoKGxpc3QsIGl0ZW1zKSB7XG4gIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICBzcGxpY2UobGlzdCwgbGlzdC5sZW5ndGgsIDAsIGl0ZW1zKVxuICAgIHJldHVybiBsaXN0XG4gIH1cblxuICByZXR1cm4gaXRlbXNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-chunked/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-classify-character/dev/index.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-util-classify-character/dev/index.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"classifyCharacter\": () => (/* binding */ classifyCharacter)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nfunction classifyCharacter(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code) ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodeWhitespace)(code)\n ) {\n return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupWhitespace\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuation)(code)) {\n return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupPunctuation\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNsYXNzaWZ5LWNoYXJhY3Rlci9kZXYvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQ7O0FBTWlDO0FBQ21CO0FBQ1E7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDtBQUNBLGFBQWEscUVBQVM7QUFDdEIsSUFBSSxtRkFBeUI7QUFDN0IsSUFBSSwyRUFBaUI7QUFDckI7QUFDQSxXQUFXLGtHQUFrQztBQUM3Qzs7QUFFQSxNQUFNLDRFQUFrQjtBQUN4QixXQUFXLG1HQUFtQztBQUM5QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jbGFzc2lmeS1jaGFyYWN0ZXIvZGV2L2luZGV4LmpzPzQ1OTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqL1xuXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICB1bmljb2RlUHVuY3R1YXRpb24sXG4gIHVuaWNvZGVXaGl0ZXNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIENsYXNzaWZ5IHdoZXRoZXIgYSBjb2RlIHJlcHJlc2VudHMgd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIG9yIHNvbWV0aGluZ1xuICogZWxzZS5cbiAqXG4gKiBVc2VkIGZvciBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpLCB3aG9zZSBzZXF1ZW5jZXMgY2FuIG9wZW4gb3IgY2xvc2VcbiAqIGJhc2VkIG9uIHRoZSBjbGFzcyBvZiBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqID4g8J+RiSAqKk5vdGUqKjogZW9mIChgbnVsbGApIGlzIHNlZW4gYXMgd2hpdGVzcGFjZS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHt0eXBlb2YgY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwV2hpdGVzcGFjZSB8IHR5cGVvZiBjb25zdGFudHMuY2hhcmFjdGVyR3JvdXBQdW5jdHVhdGlvbiB8IHVuZGVmaW5lZH1cbiAqICAgR3JvdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUNoYXJhY3Rlcihjb2RlKSB7XG4gIGlmIChcbiAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHx8XG4gICAgdW5pY29kZVdoaXRlc3BhY2UoY29kZSlcbiAgKSB7XG4gICAgcmV0dXJuIGNvbnN0YW50cy5jaGFyYWN0ZXJHcm91cFdoaXRlc3BhY2VcbiAgfVxuXG4gIGlmICh1bmljb2RlUHVuY3R1YXRpb24oY29kZSkpIHtcbiAgICByZXR1cm4gY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb25cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-classify-character/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-combine-extensions/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/micromark-util-combine-extensions/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"combineExtensions\": () => (/* binding */ combineExtensions),\n/* harmony export */ \"combineHtmlExtensions\": () => (/* binding */ combineHtmlExtensions)\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\n\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nfunction combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__.splice)(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nfunction combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNvbWJpbmUtZXh0ZW5zaW9ucy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsOENBQThDO0FBQzNELGFBQWEsb0RBQW9EO0FBQ2pFOztBQUU2Qzs7QUFFN0MseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUCxhQUFhLHFCQUFxQjtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEMseUNBQXlDO0FBQ3pDLGVBQWUscUNBQXFDO0FBQ3BEO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsV0FBVyxnQkFBZ0I7QUFDM0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSw4REFBTTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0JBQXNCO0FBQ2pDO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGFBQWEsZUFBZTtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBLGVBQWUsZUFBZTtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMvaW5kZXguanM/YjNkZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSGFuZGxlc30gSGFuZGxlc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5IdG1sRXh0ZW5zaW9ufSBIdG1sRXh0ZW5zaW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLk5vcm1hbGl6ZWRFeHRlbnNpb259IE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcblxuY29uc3QgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgc3ludGF4IGV4dGVuc2lvbnMgaW50byBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFeHRlbnNpb24+fSBleHRlbnNpb25zXG4gKiAgIExpc3Qgb2Ygc3ludGF4IGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZEV4dGVuc2lvbn1cbiAqICAgQSBzaW5nbGUgY29tYmluZWQgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUV4dGVuc2lvbnMoZXh0ZW5zaW9ucykge1xuICAvKiogQHR5cGUge05vcm1hbGl6ZWRFeHRlbnNpb259ICovXG4gIGNvbnN0IGFsbCA9IHt9XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBleHRlbnNpb25zLmxlbmd0aCkge1xuICAgIHN5bnRheEV4dGVuc2lvbihhbGwsIGV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGFsbFxufVxuXG4vKipcbiAqIE1lcmdlIGBleHRlbnNpb25gIGludG8gYGFsbGAuXG4gKlxuICogQHBhcmFtIHtOb3JtYWxpemVkRXh0ZW5zaW9ufSBhbGxcbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlIGludG8uXG4gKiBAcGFyYW0ge0V4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBzeW50YXhFeHRlbnNpb24oYWxsLCBleHRlbnNpb24pIHtcbiAgLyoqIEB0eXBlIHtrZXlvZiBFeHRlbnNpb259ICovXG4gIGxldCBob29rXG5cbiAgZm9yIChob29rIGluIGV4dGVuc2lvbikge1xuICAgIGNvbnN0IG1heWJlID0gaGFzT3duUHJvcGVydHkuY2FsbChhbGwsIGhvb2spID8gYWxsW2hvb2tdIDogdW5kZWZpbmVkXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi9cbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWR9ICovXG4gICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25baG9va11cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgY29kZVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBmb3IgKGNvZGUgaW4gcmlnaHQpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKGxlZnQsIGNvZGUpKSBsZWZ0W2NvZGVdID0gW11cbiAgICAgICAgY29uc3QgdmFsdWUgPSByaWdodFtjb2RlXVxuICAgICAgICBjb25zdHJ1Y3RzKFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhIGxpc3QuXG4gICAgICAgICAgbGVmdFtjb2RlXSxcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyBbdmFsdWVdIDogW11cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIGBsaXN0YCBpbnRvIGBleGlzdGluZ2AgKGJvdGggbGlzdHMgb2YgY29uc3RydWN0cykuXG4gKiBNdXRhdGVzIGBleGlzdGluZ2AuXG4gKlxuICogQHBhcmFtIHtBcnJheTx1bmtub3duPn0gZXhpc3RpbmdcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IGxpc3RcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RzKGV4aXN0aW5nLCBsaXN0KSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGNvbnN0IGJlZm9yZSA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhbiBvYmplY3QuXG4gICAgOyhsaXN0W2luZGV4XS5hZGQgPT09ICdhZnRlcicgPyBleGlzdGluZyA6IGJlZm9yZSkucHVzaChsaXN0W2luZGV4XSlcbiAgfVxuXG4gIHNwbGljZShleGlzdGluZywgMCwgMCwgYmVmb3JlKVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgSFRNTCBleHRlbnNpb25zIGludG8gb25lLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8SHRtbEV4dGVuc2lvbj59IGh0bWxFeHRlbnNpb25zXG4gKiAgIExpc3Qgb2YgSFRNTCBleHRlbnNpb25zLlxuICogQHJldHVybnMge0h0bWxFeHRlbnNpb259XG4gKiAgIEEgc2luZ2xlIGNvbWJpbmVkIEhUTUwgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUh0bWxFeHRlbnNpb25zKGh0bWxFeHRlbnNpb25zKSB7XG4gIC8qKiBAdHlwZSB7SHRtbEV4dGVuc2lvbn0gKi9cbiAgY29uc3QgaGFuZGxlcnMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgaHRtbEV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgaHRtbEV4dGVuc2lvbihoYW5kbGVycywgaHRtbEV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzXG59XG5cbi8qKlxuICogTWVyZ2UgYGV4dGVuc2lvbmAgaW50byBgYWxsYC5cbiAqXG4gKiBAcGFyYW0ge0h0bWxFeHRlbnNpb259IGFsbFxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UgaW50by5cbiAqIEBwYXJhbSB7SHRtbEV4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBodG1sRXh0ZW5zaW9uKGFsbCwgZXh0ZW5zaW9uKSB7XG4gIC8qKiBAdHlwZSB7a2V5b2YgSHRtbEV4dGVuc2lvbn0gKi9cbiAgbGV0IGhvb2tcblxuICBmb3IgKGhvb2sgaW4gZXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgbWF5YmUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFsbCwgaG9vaykgPyBhbGxbaG9va10gOiB1bmRlZmluZWRcbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2hvb2tdXG4gICAgLyoqIEB0eXBlIHtrZXlvZiBIYW5kbGVzfSAqL1xuICAgIGxldCB0eXBlXG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGZvciAodHlwZSBpbiByaWdodCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFzc3VtZSBkb2N1bWVudCB2cyByZWd1bGFyIGhhbmRsZXIgYXJlIG1hbmFnZWQgY29ycmVjdGx5LlxuICAgICAgICBsZWZ0W3R5cGVdID0gcmlnaHRbdHlwZV1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-combine-extensions/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js": +/*!********************************************************************************************!*\ + !*** ../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeNumericCharacterReference\": () => (/* binding */ decodeNumericCharacterReference)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n\n\n\n/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nfunction decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.vt ||\n (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.cr && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) ||\n /* eslint-disable no-bitwise */\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 ||\n /* eslint-enable no-bitwise */\n // Out of range\n code > 1114111\n ) {\n return micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__.values.replacementCharacter\n }\n\n return String.fromCharCode(code)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFvRDtBQUNFOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxvRUFBUTtBQUNuQixhQUFhLG9FQUFRO0FBQ3JCLFlBQVksb0VBQVEsV0FBVyx1RUFBVztBQUMxQztBQUNBLFlBQVksdUVBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0ZBQTJCO0FBQ3RDOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UvZGV2L2luZGV4LmpzPzdhZjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt2YWx1ZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC92YWx1ZXMuanMnXG5cbi8qKlxuICogVHVybiB0aGUgbnVtYmVyIChpbiBzdHJpbmcgZm9ybSBhcyBlaXRoZXIgaGV4YS0gb3IgcGxhaW4gZGVjaW1hbCkgY29taW5nIGZyb21cbiAqIGEgbnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGludG8gYSBjaGFyYWN0ZXIuXG4gKlxuICogU29ydCBvZiBsaWtlIGBTdHJpbmcuZnJvbUNoYXJDb2RlKE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSkpYCwgYnV0IG1ha2VzXG4gKiBub24tY2hhcmFjdGVycyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzIHNhZmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIFZhbHVlIHRvIGRlY29kZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlXG4gKiAgIE51bWVyaWMgYmFzZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIENoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UodmFsdWUsIGJhc2UpIHtcbiAgY29uc3QgY29kZSA9IE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSlcblxuICBpZiAoXG4gICAgLy8gQzAgZXhjZXB0IGZvciBIVCwgTEYsIEZGLCBDUiwgc3BhY2UuXG4gICAgY29kZSA8IGNvZGVzLmh0IHx8XG4gICAgY29kZSA9PT0gY29kZXMudnQgfHxcbiAgICAoY29kZSA+IGNvZGVzLmNyICYmIGNvZGUgPCBjb2Rlcy5zcGFjZSkgfHxcbiAgICAvLyBDb250cm9sIGNoYXJhY3RlciAoREVMKSBvZiBDMCwgYW5kIEMxIGNvbnRyb2xzLlxuICAgIChjb2RlID4gY29kZXMudGlsZGUgJiYgY29kZSA8IDE2MCkgfHxcbiAgICAvLyBMb25lIGhpZ2ggc3Vycm9nYXRlcyBhbmQgbG93IHN1cnJvZ2F0ZXMuXG4gICAgKGNvZGUgPiA1NTI5NSAmJiBjb2RlIDwgNTczNDQpIHx8XG4gICAgLy8gTm9uY2hhcmFjdGVycy5cbiAgICAoY29kZSA+IDY0OTc1ICYmIGNvZGUgPCA2NTAwOCkgfHxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM1IHx8XG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM0IHx8XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1iaXR3aXNlICovXG4gICAgLy8gT3V0IG9mIHJhbmdlXG4gICAgY29kZSA+IDExMTQxMTFcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5yZXBsYWNlbWVudENoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-decode-string/dev/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-util-decode-string/dev/index.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeString\": () => (/* binding */ decodeString)\n/* harmony export */ });\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! decode-named-character-reference */ \"../../../node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ \"../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n\n\n\n\n\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nfunction decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n\n if (head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign) {\n const head = $2.charCodeAt(1)\n const hex = head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lowercaseX || head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.uppercaseX\n return (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__.decodeNumericCharacterReference)(\n $2.slice(hex ? 2 : 1),\n hex ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseHexadecimal : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseDecimal\n )\n }\n\n return (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__.decodeNamedCharacterReference)($2) || $0\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1zdHJpbmcvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQThFO0FBQ21CO0FBQzdDO0FBQ1E7O0FBRTVEO0FBQ0EsaUJBQWlCLGNBQWMsSUFBSSxVQUFVLElBQUksVUFBVSxLQUFLLEVBQUU7O0FBRWxFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZUFBZSw0RUFBZ0I7QUFDL0I7QUFDQSx5QkFBeUIsNEVBQWdCLGFBQWEsNEVBQWdCO0FBQ3RFLFdBQVcsa0hBQStCO0FBQzFDO0FBQ0EsWUFBWSxnR0FBZ0MsR0FBRyw0RkFBNEI7QUFDM0U7QUFDQTs7QUFFQSxTQUFTLCtGQUE2QjtBQUN0QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZy9kZXYvaW5kZXguanM/OTBhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdkZWNvZGUtbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7ZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuXG5jb25zdCBjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSA9XG4gIC9cXFxcKFshLS86LUBbLWB7LX5dKXwmKCMoPzpcXGR7MSw3fXx4W1xcZGEtZl17MSw2fSl8W1xcZGEtel17MSwzMX0pOy9naVxuXG4vKipcbiAqIERlY29kZSBtYXJrZG93biBzdHJpbmdzICh3aGljaCBvY2N1ciBpbiBwbGFjZXMgc3VjaCBhcyBmZW5jZWQgY29kZSBpbmZvXG4gKiBzdHJpbmdzLCBkZXN0aW5hdGlvbnMsIGxhYmVscywgYW5kIHRpdGxlcykuXG4gKlxuICogVGhlIOKAnHN0cmluZ+KAnSBjb250ZW50IHR5cGUgYWxsb3dzIGNoYXJhY3RlciBlc2NhcGVzIGFuZCAtcmVmZXJlbmNlcy5cbiAqIFRoaXMgZGVjb2RlcyB0aG9zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgVmFsdWUgdG8gZGVjb2RlLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRGVjb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVN0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSwgZGVjb2RlKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMFxuICogQHBhcmFtIHtzdHJpbmd9ICQxXG4gKiBAcGFyYW0ge3N0cmluZ30gJDJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRlY29kZSgkMCwgJDEsICQyKSB7XG4gIGlmICgkMSkge1xuICAgIC8vIEVzY2FwZS5cbiAgICByZXR1cm4gJDFcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZS5cbiAgY29uc3QgaGVhZCA9ICQyLmNoYXJDb2RlQXQoMClcblxuICBpZiAoaGVhZCA9PT0gY29kZXMubnVtYmVyU2lnbikge1xuICAgIGNvbnN0IGhlYWQgPSAkMi5jaGFyQ29kZUF0KDEpXG4gICAgY29uc3QgaGV4ID0gaGVhZCA9PT0gY29kZXMubG93ZXJjYXNlWCB8fCBoZWFkID09PSBjb2Rlcy51cHBlcmNhc2VYXG4gICAgcmV0dXJuIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoXG4gICAgICAkMi5zbGljZShoZXggPyAyIDogMSksXG4gICAgICBoZXggPyBjb25zdGFudHMubnVtZXJpY0Jhc2VIZXhhZGVjaW1hbCA6IGNvbnN0YW50cy5udW1lcmljQmFzZURlY2ltYWxcbiAgICApXG4gIH1cblxuICByZXR1cm4gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoJDIpIHx8ICQwXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-decode-string/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-html-tag-name/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark-util-html-tag-name/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlBlockNames\": () => (/* binding */ htmlBlockNames),\n/* harmony export */ \"htmlRawNames\": () => (/* binding */ htmlRawNames)\n/* harmony export */ });\n/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nconst htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nconst htmlRawNames = ['pre', 'script', 'style', 'textarea']\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtaHRtbC10YWctbmFtZS9pbmRleC5qcz9jOTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCDigJxibG9ja+KAnSB0YWcgbmFtZXMuXG4gKlxuICogVGhlIGxpc3QsIHdoZW4gcGFyc2luZyBIVE1MIChmbG93KSwgcmVzdWx0cyBpbiBtb3JlIHJlbGF4ZWQgcnVsZXMgKGNvbmRpdGlvblxuICogNikuXG4gKiBCZWNhdXNlIHRoZXkgYXJlIGtub3duIGJsb2NrcywgdGhlIEhUTUwtbGlrZSBzeW50YXggZG9lc27igJl0IGhhdmUgdG8gYmVcbiAqIHN0cmljdGx5IHBhcnNlZC5cbiAqIEZvciB0YWcgbmFtZXMgbm90IGluIHRoaXMgbGlzdCwgYSBtb3JlIHN0cmljdCBhbGdvcml0aG0gKGNvbmRpdGlvbiA3KSBpcyB1c2VkXG4gKiB0byBkZXRlY3Qgd2hldGhlciB0aGUgSFRNTC1saWtlIHN5bnRheCBpcyBzZWVuIGFzIEhUTUwgKGZsb3cpIG9yIG5vdC5cbiAqXG4gKiBUaGlzIGlzIGNvcGllZCBmcm9tOlxuICogPGh0dHBzOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjMwLyNodG1sLWJsb2Nrcz4uXG4gKlxuICogPiDwn5GJICoqTm90ZSoqOiBgc2VhcmNoYCB3YXMgYWRkZWQgaW4gYENvbW1vbk1hcmtAMC4zMWAuXG4gKi9cbmV4cG9ydCBjb25zdCBodG1sQmxvY2tOYW1lcyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3NlYXJjaCcsXG4gICdzZWN0aW9uJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG5cbi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCDigJxyYXfigJ0gdGFnIG5hbWVzLlxuICpcbiAqIFRoZSBsaXN0LCB3aGVuIHBhcnNpbmcgSFRNTCAoZmxvdyksIHJlc3VsdHMgaW4gSFRNTCB0aGF0IGNhbiBpbmNsdWRlIGxpbmVzXG4gKiB3aXRob3V0IGV4aXRpbmcsIHVudGlsIGEgY2xvc2luZyB0YWcgYWxzbyBpbiB0aGlzIGxpc3QgaXMgZm91bmQgKGNvbmRpdGlvblxuICogMSkuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgY29waWVkIGZyb206XG4gKiA8aHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMzAvI2h0bWwtYmxvY2tzPi5cbiAqXG4gKiA+IPCfkYkgKipOb3RlKio6IGB0ZXh0YXJlYWAgd2FzIGFkZGVkIGluIGBDb21tb25NYXJrQDAuMzBgLlxuICovXG5leHBvcnQgY29uc3QgaHRtbFJhd05hbWVzID0gWydwcmUnLCAnc2NyaXB0JywgJ3N0eWxlJywgJ3RleHRhcmVhJ11cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-html-tag-name/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-normalize-identifier/dev/index.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-util-normalize-identifier/dev/index.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"normalizeIdentifier\": () => (/* binding */ normalizeIdentifier)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n\n\n/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nfunction normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__.values.space)\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseUVBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllci9kZXYvaW5kZXguanM/OGIwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3ZhbHVlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3ZhbHVlcy5qcydcblxuLyoqXG4gKiBOb3JtYWxpemUgYW4gaWRlbnRpZmllciAoYXMgZm91bmQgaW4gcmVmZXJlbmNlcywgZGVmaW5pdGlvbnMpLlxuICpcbiAqIENvbGxhcHNlcyBtYXJrZG93biB3aGl0ZXNwYWNlLCB0cmltLCBhbmQgdGhlbiBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAqXG4gKiBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQg4oCcdXBwZXJjYXNl4oCdLCBzdWNoIGFzIFUrMDNGNCAoYM+0YCksIGJ1dCBpZiB0aGVpclxuICogbG93ZXJjYXNlIGNvdW50ZXJwYXJ0IChVKzAzQjggKGDOuGApKSBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50XG4gKiB1cHBlcmNhc2UgY2hhcmFjdGVyIChVKzAzOTggKGDOmGApKS5cbiAqIFNvLCB0byBnZXQgYSBjYW5vbmljYWwgZm9ybSwgd2UgcGVyZm9ybSBib3RoIGxvd2VyLSBhbmQgdXBwZXJjYXNlLlxuICpcbiAqIFVzaW5nIHVwcGVyY2FzZSBsYXN0IG1ha2VzIHN1cmUga2V5cyB3aWxsIG5ldmVyIGludGVyYWN0IHdpdGggZGVmYXVsdFxuICogcHJvdG90eXBhbCB2YWx1ZXMgKHN1Y2ggYXMgYGNvbnN0cnVjdG9yYCk6IG5vdGhpbmcgaW4gdGhlIHByb3RvdHlwZSBvZlxuICogYE9iamVjdGAgaXMgdXBwZXJjYXNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogICBJZGVudGlmaWVyIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIE5vcm1hbGl6ZWQgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkZW50aWZpZXIodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZVxuICAgICAgLy8gQ29sbGFwc2UgbWFya2Rvd24gd2hpdGVzcGFjZS5cbiAgICAgIC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rL2csIHZhbHVlcy5zcGFjZSlcbiAgICAgIC8vIFRyaW0uXG4gICAgICAucmVwbGFjZSgvXiB8ICQvZywgJycpXG4gICAgICAvLyBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQg4oCcdXBwZXJjYXNl4oCdLCBidXQgaWYgdGhlaXIgbG93ZXJjYXNlXG4gICAgICAvLyBjb3VudGVycGFydCBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50IHVwcGVyY2FzZVxuICAgICAgLy8gY2hhcmFjdGVyLlxuICAgICAgLy8gSGVuY2UsIHRvIGdldCB0aGF0IGZvcm0sIHdlIHBlcmZvcm0gYm90aCBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAgICAgIC8vIFVwcGVyIGNhc2UgbWFrZXMgc3VyZSBrZXlzIHdpbGwgbm90IGludGVyYWN0IHdpdGggZGVmYXVsdCBwcm90b3R5cGFsXG4gICAgICAvLyBtZXRob2RzOiBubyBtZXRob2QgaXMgdXBwZXJjYXNlLlxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC50b1VwcGVyQ2FzZSgpXG4gIClcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-normalize-identifier/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-resolve-all/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/micromark-util-resolve-all/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resolveAll\": () => (/* binding */ resolveAll)\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nfunction resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsZ0RBQWdEO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTyxrQ0FBa0MsR0FBRztBQUN2RDtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsL2luZGV4LmpzPzE1MDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG4vKipcbiAqIENhbGwgYWxsIGByZXNvbHZlQWxsYHMuXG4gKlxuICogQHBhcmFtIHtBcnJheTx7cmVzb2x2ZUFsbD86IFJlc29sdmVyIHwgdW5kZWZpbmVkfT59IGNvbnN0cnVjdHNcbiAqICAgTGlzdCBvZiBjb25zdHJ1Y3RzLCBvcHRpb25hbGx5IHdpdGggYHJlc29sdmVBbGxgcy5cbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqICAgTGlzdCBvZiBldmVudHMuXG4gKiBAcGFyYW0ge1Rva2VuaXplQ29udGV4dH0gY29udGV4dFxuICogICBDb250ZXh0IHVzZWQgYnkgYHRva2VuaXplYC5cbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKiAgIENoYW5nZWQgZXZlbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFsbChjb25zdHJ1Y3RzLCBldmVudHMsIGNvbnRleHQpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxSZXNvbHZlcj59ICovXG4gIGNvbnN0IGNhbGxlZCA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjb25zdHJ1Y3RzLmxlbmd0aCkge1xuICAgIGNvbnN0IHJlc29sdmUgPSBjb25zdHJ1Y3RzW2luZGV4XS5yZXNvbHZlQWxsXG5cbiAgICBpZiAocmVzb2x2ZSAmJiAhY2FsbGVkLmluY2x1ZGVzKHJlc29sdmUpKSB7XG4gICAgICBldmVudHMgPSByZXNvbHZlKGV2ZW50cywgY29udGV4dClcbiAgICAgIGNhbGxlZC5wdXNoKHJlc29sdmUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV2ZW50c1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-resolve-all/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-subtokenize/dev/index.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/micromark-util-subtokenize/dev/index.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"subtokenize\": () => (/* binding */ subtokenize)\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n\n\n\n\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nfunction subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow &&\n events[index - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix\n ) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(event[1]._tokenizer, 'expected `_tokenizer` on subtokens')\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n break\n }\n\n if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText) {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n }\n\n otherEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token.contentType, 'expected `contentType` on subtokens')\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n !previous || current.previous === previous,\n 'expected previous to match'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!previous || previous.next === current, 'expected next to match')\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected a current token')\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!current.next, 'expected no next token')\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(start !== undefined, 'expected a start position when splicing')\n jumps.unshift([start, start + slice.length - 1])\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQ7O0FBRTZDO0FBQ087QUFDQTtBQUNiOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1AsYUFBYSx3QkFBd0I7QUFDckM7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWU7QUFDdkMsb0NBQW9DLGdGQUFvQjtBQUN4RDtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEMsaUZBQXFCO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDLHlFQUFhO0FBQ3ZEO0FBQ0E7QUFDQSxnREFBZ0QseUVBQWE7QUFDN0Q7QUFDQTs7QUFFQSxnREFBZ0QsMkVBQWU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLDRFQUFnQjtBQUNqRCxpQ0FBaUMsaUZBQXFCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxpRkFBcUI7QUFDL0Q7O0FBRUEsaUNBQWlDLDRFQUFnQjtBQUNqRDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxRQUFRLCtEQUFNO0FBQ2Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZUFBZTtBQUM1QjtBQUNBLEVBQUUsK0NBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QjtBQUN0QztBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxtQkFBbUI7QUFDaEM7QUFDQTtBQUNBLGFBQWEsbUJBQW1CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtDQUFNOztBQUVWOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IscUVBQVM7QUFDN0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtDQUFNO0FBQ1YsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBLElBQUksK0RBQU07QUFDVjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1zdWJ0b2tlbml6ZS9kZXYvaW5kZXguanM/MTIyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKipcbiAqIFRva2VuaXplIHN1YmNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogICBMaXN0IG9mIGV2ZW50cy5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIHN1YnRva2VucyB3ZXJlIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidG9rZW5pemUoZXZlbnRzKSB7XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgY29uc3QganVtcHMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge0V2ZW50fSAqL1xuICBsZXQgZXZlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBsaW5lSW5kZXhcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvdGhlckluZGV4XG4gIC8qKiBAdHlwZSB7RXZlbnR9ICovXG4gIGxldCBvdGhlckV2ZW50XG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgcGFyYW1ldGVyc1xuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IHN1YmV2ZW50c1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtb3JlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgd2hpbGUgKGluZGV4IGluIGp1bXBzKSB7XG4gICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgIH1cblxuICAgIGV2ZW50ID0gZXZlbnRzW2luZGV4XVxuXG4gICAgLy8gQWRkIGEgaG9vayBmb3IgdGhlIEdGTSB0YXNrbGlzdCBleHRlbnNpb24sIHdoaWNoIG5lZWRzIHRvIGtub3cgaWYgdGV4dFxuICAgIC8vIGlzIGluIHRoZSBmaXJzdCBjb250ZW50IG9mIGEgbGlzdCBpdGVtLlxuICAgIGlmIChcbiAgICAgIGluZGV4ICYmXG4gICAgICBldmVudFsxXS50eXBlID09PSB0eXBlcy5jaHVua0Zsb3cgJiZcbiAgICAgIGV2ZW50c1tpbmRleCAtIDFdWzFdLnR5cGUgPT09IHR5cGVzLmxpc3RJdGVtUHJlZml4XG4gICAgKSB7XG4gICAgICBhc3NlcnQoZXZlbnRbMV0uX3Rva2VuaXplciwgJ2V4cGVjdGVkIGBfdG9rZW5pemVyYCBvbiBzdWJ0b2tlbnMnKVxuICAgICAgc3ViZXZlbnRzID0gZXZlbnRbMV0uX3Rva2VuaXplci5ldmVudHNcbiAgICAgIG90aGVySW5kZXggPSAwXG5cbiAgICAgIGlmIChcbiAgICAgICAgb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGggJiZcbiAgICAgICAgc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmdCbGFua1xuICAgICAgKSB7XG4gICAgICAgIG90aGVySW5kZXggKz0gMlxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIG90aGVySW5kZXggPCBzdWJldmVudHMubGVuZ3RoICYmXG4gICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSB0eXBlcy5jb250ZW50XG4gICAgICApIHtcbiAgICAgICAgd2hpbGUgKCsrb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSB0eXBlcy5jaHVua1RleHQpIHtcbiAgICAgICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB0cnVlXG4gICAgICAgICAgICBvdGhlckluZGV4KytcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnRlci5cbiAgICBpZiAoZXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudFsxXS5jb250ZW50VHlwZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGp1bXBzLCBzdWJjb250ZW50KGV2ZW50cywgaW5kZXgpKVxuICAgICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgICAgICBtb3JlID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeGl0LlxuICAgIGVsc2UgaWYgKGV2ZW50WzFdLl9jb250YWluZXIpIHtcbiAgICAgIG90aGVySW5kZXggPSBpbmRleFxuICAgICAgbGluZUluZGV4ID0gdW5kZWZpbmVkXG5cbiAgICAgIHdoaWxlIChvdGhlckluZGV4LS0pIHtcbiAgICAgICAgb3RoZXJFdmVudCA9IGV2ZW50c1tvdGhlckluZGV4XVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmcgfHxcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmdCbGFua1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAob3RoZXJFdmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAgICAgICBldmVudHNbbGluZUluZGV4XVsxXS50eXBlID0gdHlwZXMubGluZUVuZGluZ0JsYW5rXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG90aGVyRXZlbnRbMV0udHlwZSA9IHR5cGVzLmxpbmVFbmRpbmdcbiAgICAgICAgICAgIGxpbmVJbmRleCA9IG90aGVySW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobGluZUluZGV4KSB7XG4gICAgICAgIC8vIEZpeCBwb3NpdGlvbi5cbiAgICAgICAgZXZlbnRbMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2xpbmVJbmRleF1bMV0uc3RhcnQpXG5cbiAgICAgICAgLy8gU3dpdGNoIGNvbnRhaW5lciBleGl0IHcvIGxpbmUgZW5kaW5ncy5cbiAgICAgICAgcGFyYW1ldGVycyA9IGV2ZW50cy5zbGljZShsaW5lSW5kZXgsIGluZGV4KVxuICAgICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoZXZlbnQpXG4gICAgICAgIHNwbGljZShldmVudHMsIGxpbmVJbmRleCwgaW5kZXggLSBsaW5lSW5kZXggKyAxLCBwYXJhbWV0ZXJzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhbW9yZVxufVxuXG4vKipcbiAqIFRva2VuaXplIGVtYmVkZGVkIHRva2Vucy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gZXZlbnRJbmRleFxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIG51bWJlcj59XG4gKi9cbmZ1bmN0aW9uIHN1YmNvbnRlbnQoZXZlbnRzLCBldmVudEluZGV4KSB7XG4gIGNvbnN0IHRva2VuID0gZXZlbnRzW2V2ZW50SW5kZXhdWzFdXG4gIGNvbnN0IGNvbnRleHQgPSBldmVudHNbZXZlbnRJbmRleF1bMl1cbiAgbGV0IHN0YXJ0UG9zaXRpb24gPSBldmVudEluZGV4IC0gMVxuICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovXG4gIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gW11cbiAgYXNzZXJ0KHRva2VuLmNvbnRlbnRUeXBlLCAnZXhwZWN0ZWQgYGNvbnRlbnRUeXBlYCBvbiBzdWJ0b2tlbnMnKVxuICBjb25zdCB0b2tlbml6ZXIgPVxuICAgIHRva2VuLl90b2tlbml6ZXIgfHwgY29udGV4dC5wYXJzZXJbdG9rZW4uY29udGVudFR5cGVdKHRva2VuLnN0YXJ0KVxuICBjb25zdCBjaGlsZEV2ZW50cyA9IHRva2VuaXplci5ldmVudHNcbiAgLyoqIEB0eXBlIHtBcnJheTxbbnVtYmVyLCBudW1iZXJdPn0gKi9cbiAgY29uc3QganVtcHMgPSBbXVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGdhcHMgPSB7fVxuICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgbGV0IHN0cmVhbVxuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgcHJldmlvdXNcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGN1cnJlbnQgPSB0b2tlblxuICBsZXQgYWRqdXN0ID0gMFxuICBsZXQgc3RhcnQgPSAwXG4gIGNvbnN0IGJyZWFrcyA9IFtzdGFydF1cblxuICAvLyBMb29wIGZvcndhcmQgdGhyb3VnaCB0aGUgbGlua2VkIHRva2VucyB0byBwYXNzIHRoZW0gaW4gb3JkZXIgdG8gdGhlXG4gIC8vIHN1YnRva2VuaXplci5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAvLyBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgZm9yIHRoaXMgdG9rZW4uXG4gICAgd2hpbGUgKGV2ZW50c1srK3N0YXJ0UG9zaXRpb25dWzFdICE9PSBjdXJyZW50KSB7XG4gICAgICAvLyBFbXB0eS5cbiAgICB9XG5cbiAgICBhc3NlcnQoXG4gICAgICAhcHJldmlvdXMgfHwgY3VycmVudC5wcmV2aW91cyA9PT0gcHJldmlvdXMsXG4gICAgICAnZXhwZWN0ZWQgcHJldmlvdXMgdG8gbWF0Y2gnXG4gICAgKVxuICAgIGFzc2VydCghcHJldmlvdXMgfHwgcHJldmlvdXMubmV4dCA9PT0gY3VycmVudCwgJ2V4cGVjdGVkIG5leHQgdG8gbWF0Y2gnKVxuXG4gICAgc3RhcnRQb3NpdGlvbnMucHVzaChzdGFydFBvc2l0aW9uKVxuXG4gICAgaWYgKCFjdXJyZW50Ll90b2tlbml6ZXIpIHtcbiAgICAgIHN0cmVhbSA9IGNvbnRleHQuc2xpY2VTdHJlYW0oY3VycmVudClcblxuICAgICAgaWYgKCFjdXJyZW50Lm5leHQpIHtcbiAgICAgICAgc3RyZWFtLnB1c2goY29kZXMuZW9mKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgdG9rZW5pemVyLmRlZmluZVNraXAoY3VycmVudC5zdGFydClcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnQuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtKSB7XG4gICAgICAgIHRva2VuaXplci5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICB0b2tlbml6ZXIud3JpdGUoc3RyZWFtKVxuXG4gICAgICBpZiAoY3VycmVudC5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0pIHtcbiAgICAgICAgdG9rZW5pemVyLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnJhdmVsIHRoZSBuZXh0IHRva2VuLlxuICAgIHByZXZpb3VzID0gY3VycmVudFxuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRcbiAgfVxuXG4gIC8vIE5vdywgbG9vcCBiYWNrIHRocm91Z2ggYWxsIGV2ZW50cyAoYW5kIGxpbmtlZCB0b2tlbnMpLCB0byBmaWd1cmUgb3V0IHdoaWNoXG4gIC8vIHBhcnRzIGJlbG9uZyB3aGVyZS5cbiAgY3VycmVudCA9IHRva2VuXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjaGlsZEV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoXG4gICAgICAvLyBGaW5kIGEgdm9pZCB0b2tlbiB0aGF0IGluY2x1ZGVzIGEgYnJlYWsuXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleF1bMF0gPT09ICdleGl0JyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXggLSAxXVswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IGNoaWxkRXZlbnRzW2luZGV4IC0gMV1bMV0udHlwZSAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnN0YXJ0LmxpbmUgIT09IGNoaWxkRXZlbnRzW2luZGV4XVsxXS5lbmQubGluZVxuICAgICkge1xuICAgICAgYXNzZXJ0KGN1cnJlbnQsICdleHBlY3RlZCBhIGN1cnJlbnQgdG9rZW4nKVxuICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgIGJyZWFrcy5wdXNoKHN0YXJ0KVxuICAgICAgLy8gSGVscCBHQy5cbiAgICAgIGN1cnJlbnQuX3Rva2VuaXplciA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHAgR0MuXG4gIHRva2VuaXplci5ldmVudHMgPSBbXVxuXG4gIC8vIElmIHRoZXJl4oCZcyBvbmUgbW9yZSB0b2tlbiAod2hpY2ggaXMgdGhlIGNhc2VzIGZvciBsaW5lcyB0aGF0IGVuZCBpbiBhblxuICAvLyBFT0YpLCB0aGF04oCZcyBwZXJmZWN0OiB0aGUgbGFzdCBwb2ludCB3ZSBmb3VuZCBzdGFydHMgaXQuXG4gIC8vIElmIHRoZXJlIGlzbuKAmXQgdGhlbiBtYWtlIHN1cmUgYW55IHJlbWFpbmluZyBjb250ZW50IGlzIGFkZGVkIHRvIGl0LlxuICBpZiAoY3VycmVudCkge1xuICAgIC8vIEhlbHAgR0MuXG4gICAgY3VycmVudC5fdG9rZW5pemVyID0gdW5kZWZpbmVkXG4gICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgIGFzc2VydCghY3VycmVudC5uZXh0LCAnZXhwZWN0ZWQgbm8gbmV4dCB0b2tlbicpXG4gIH0gZWxzZSB7XG4gICAgYnJlYWtzLnBvcCgpXG4gIH1cblxuICAvLyBOb3cgc3BsaWNlIHRoZSBldmVudHMgZnJvbSB0aGUgc3VidG9rZW5pemVyIGludG8gdGhlIGN1cnJlbnQgZXZlbnRzLFxuICAvLyBtb3ZpbmcgYmFjayB0byBmcm9udCBzbyB0aGF0IHNwbGljZSBpbmRpY2VzIGFyZW7igJl0IGFmZmVjdGVkLlxuICBpbmRleCA9IGJyZWFrcy5sZW5ndGhcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGNvbnN0IHNsaWNlID0gY2hpbGRFdmVudHMuc2xpY2UoYnJlYWtzW2luZGV4XSwgYnJlYWtzW2luZGV4ICsgMV0pXG4gICAgY29uc3Qgc3RhcnQgPSBzdGFydFBvc2l0aW9ucy5wb3AoKVxuICAgIGFzc2VydChzdGFydCAhPT0gdW5kZWZpbmVkLCAnZXhwZWN0ZWQgYSBzdGFydCBwb3NpdGlvbiB3aGVuIHNwbGljaW5nJylcbiAgICBqdW1wcy51bnNoaWZ0KFtzdGFydCwgc3RhcnQgKyBzbGljZS5sZW5ndGggLSAxXSlcbiAgICBzcGxpY2UoZXZlbnRzLCBzdGFydCwgMiwgc2xpY2UpXG4gIH1cblxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBqdW1wcy5sZW5ndGgpIHtcbiAgICBnYXBzW2FkanVzdCArIGp1bXBzW2luZGV4XVswXV0gPSBhZGp1c3QgKyBqdW1wc1tpbmRleF1bMV1cbiAgICBhZGp1c3QgKz0ganVtcHNbaW5kZXhdWzFdIC0ganVtcHNbaW5kZXhdWzBdIC0gMVxuICB9XG5cbiAgcmV0dXJuIGdhcHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-subtokenize/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/codes.js": +/*!************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/codes.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"codes\": () => (/* binding */ codes)\n/* harmony export */ });\n/**\n * Character codes.\n *\n * This module is compiled away!\n *\n * micromark works based on character codes.\n * This module contains constants for the ASCII block and the replacement\n * character.\n * A couple of them are handled in a special way, such as the line endings\n * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal\n * tab) and its expansion based on what column it’s at (virtual space),\n * and the end-of-file (eof) character.\n * As values are preprocessed before handling them, the actual characters LF,\n * CR, HT, and NUL (which is present as the replacement character), are\n * guaranteed to not exist.\n *\n * Unicode basic latin block.\n */\nconst codes = /** @type {const} */ ({\n carriageReturn: -5,\n lineFeed: -4,\n carriageReturnLineFeed: -3,\n horizontalTab: -2,\n virtualSpace: -1,\n eof: null,\n nul: 0,\n soh: 1,\n stx: 2,\n etx: 3,\n eot: 4,\n enq: 5,\n ack: 6,\n bel: 7,\n bs: 8,\n ht: 9, // `\\t`\n lf: 10, // `\\n`\n vt: 11, // `\\v`\n ff: 12, // `\\f`\n cr: 13, // `\\r`\n so: 14,\n si: 15,\n dle: 16,\n dc1: 17,\n dc2: 18,\n dc3: 19,\n dc4: 20,\n nak: 21,\n syn: 22,\n etb: 23,\n can: 24,\n em: 25,\n sub: 26,\n esc: 27,\n fs: 28,\n gs: 29,\n rs: 30,\n us: 31,\n space: 32,\n exclamationMark: 33, // `!`\n quotationMark: 34, // `\"`\n numberSign: 35, // `#`\n dollarSign: 36, // `$`\n percentSign: 37, // `%`\n ampersand: 38, // `&`\n apostrophe: 39, // `'`\n leftParenthesis: 40, // `(`\n rightParenthesis: 41, // `)`\n asterisk: 42, // `*`\n plusSign: 43, // `+`\n comma: 44, // `,`\n dash: 45, // `-`\n dot: 46, // `.`\n slash: 47, // `/`\n digit0: 48, // `0`\n digit1: 49, // `1`\n digit2: 50, // `2`\n digit3: 51, // `3`\n digit4: 52, // `4`\n digit5: 53, // `5`\n digit6: 54, // `6`\n digit7: 55, // `7`\n digit8: 56, // `8`\n digit9: 57, // `9`\n colon: 58, // `:`\n semicolon: 59, // `;`\n lessThan: 60, // `<`\n equalsTo: 61, // `=`\n greaterThan: 62, // `>`\n questionMark: 63, // `?`\n atSign: 64, // `@`\n uppercaseA: 65, // `A`\n uppercaseB: 66, // `B`\n uppercaseC: 67, // `C`\n uppercaseD: 68, // `D`\n uppercaseE: 69, // `E`\n uppercaseF: 70, // `F`\n uppercaseG: 71, // `G`\n uppercaseH: 72, // `H`\n uppercaseI: 73, // `I`\n uppercaseJ: 74, // `J`\n uppercaseK: 75, // `K`\n uppercaseL: 76, // `L`\n uppercaseM: 77, // `M`\n uppercaseN: 78, // `N`\n uppercaseO: 79, // `O`\n uppercaseP: 80, // `P`\n uppercaseQ: 81, // `Q`\n uppercaseR: 82, // `R`\n uppercaseS: 83, // `S`\n uppercaseT: 84, // `T`\n uppercaseU: 85, // `U`\n uppercaseV: 86, // `V`\n uppercaseW: 87, // `W`\n uppercaseX: 88, // `X`\n uppercaseY: 89, // `Y`\n uppercaseZ: 90, // `Z`\n leftSquareBracket: 91, // `[`\n backslash: 92, // `\\`\n rightSquareBracket: 93, // `]`\n caret: 94, // `^`\n underscore: 95, // `_`\n graveAccent: 96, // `` ` ``\n lowercaseA: 97, // `a`\n lowercaseB: 98, // `b`\n lowercaseC: 99, // `c`\n lowercaseD: 100, // `d`\n lowercaseE: 101, // `e`\n lowercaseF: 102, // `f`\n lowercaseG: 103, // `g`\n lowercaseH: 104, // `h`\n lowercaseI: 105, // `i`\n lowercaseJ: 106, // `j`\n lowercaseK: 107, // `k`\n lowercaseL: 108, // `l`\n lowercaseM: 109, // `m`\n lowercaseN: 110, // `n`\n lowercaseO: 111, // `o`\n lowercaseP: 112, // `p`\n lowercaseQ: 113, // `q`\n lowercaseR: 114, // `r`\n lowercaseS: 115, // `s`\n lowercaseT: 116, // `t`\n lowercaseU: 117, // `u`\n lowercaseV: 118, // `v`\n lowercaseW: 119, // `w`\n lowercaseX: 120, // `x`\n lowercaseY: 121, // `y`\n lowercaseZ: 122, // `z`\n leftCurlyBrace: 123, // `{`\n verticalBar: 124, // `|`\n rightCurlyBrace: 125, // `}`\n tilde: 126, // `~`\n del: 127,\n // Unicode Specials block.\n byteOrderMarker: 65279,\n // Unicode Specials block.\n replacementCharacter: 65533 // `�`\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08seUJBQXlCLE9BQU87QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzPzY3YWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGFyYWN0ZXIgY29kZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgY29tcGlsZWQgYXdheSFcbiAqXG4gKiBtaWNyb21hcmsgd29ya3MgYmFzZWQgb24gY2hhcmFjdGVyIGNvZGVzLlxuICogVGhpcyBtb2R1bGUgY29udGFpbnMgY29uc3RhbnRzIGZvciB0aGUgQVNDSUkgYmxvY2sgYW5kIHRoZSByZXBsYWNlbWVudFxuICogY2hhcmFjdGVyLlxuICogQSBjb3VwbGUgb2YgdGhlbSBhcmUgaGFuZGxlZCBpbiBhIHNwZWNpYWwgd2F5LCBzdWNoIGFzIHRoZSBsaW5lIGVuZGluZ3NcbiAqIChDUiwgTEYsIGFuZCBDUitMRiwgY29tbW9ubHkga25vd24gYXMgZW5kLW9mLWxpbmU6IEVPTHMpLCB0aGUgdGFiIChob3Jpem9udGFsXG4gKiB0YWIpIGFuZCBpdHMgZXhwYW5zaW9uIGJhc2VkIG9uIHdoYXQgY29sdW1uIGl04oCZcyBhdCAodmlydHVhbCBzcGFjZSksXG4gKiBhbmQgdGhlIGVuZC1vZi1maWxlIChlb2YpIGNoYXJhY3Rlci5cbiAqIEFzIHZhbHVlcyBhcmUgcHJlcHJvY2Vzc2VkIGJlZm9yZSBoYW5kbGluZyB0aGVtLCB0aGUgYWN0dWFsIGNoYXJhY3RlcnMgTEYsXG4gKiBDUiwgSFQsIGFuZCBOVUwgKHdoaWNoIGlzIHByZXNlbnQgYXMgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciksIGFyZVxuICogZ3VhcmFudGVlZCB0byBub3QgZXhpc3QuXG4gKlxuICogVW5pY29kZSBiYXNpYyBsYXRpbiBibG9jay5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvZGVzID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgY2FycmlhZ2VSZXR1cm46IC01LFxuICBsaW5lRmVlZDogLTQsXG4gIGNhcnJpYWdlUmV0dXJuTGluZUZlZWQ6IC0zLFxuICBob3Jpem9udGFsVGFiOiAtMixcbiAgdmlydHVhbFNwYWNlOiAtMSxcbiAgZW9mOiBudWxsLFxuICBudWw6IDAsXG4gIHNvaDogMSxcbiAgc3R4OiAyLFxuICBldHg6IDMsXG4gIGVvdDogNCxcbiAgZW5xOiA1LFxuICBhY2s6IDYsXG4gIGJlbDogNyxcbiAgYnM6IDgsXG4gIGh0OiA5LCAvLyBgXFx0YFxuICBsZjogMTAsIC8vIGBcXG5gXG4gIHZ0OiAxMSwgLy8gYFxcdmBcbiAgZmY6IDEyLCAvLyBgXFxmYFxuICBjcjogMTMsIC8vIGBcXHJgXG4gIHNvOiAxNCxcbiAgc2k6IDE1LFxuICBkbGU6IDE2LFxuICBkYzE6IDE3LFxuICBkYzI6IDE4LFxuICBkYzM6IDE5LFxuICBkYzQ6IDIwLFxuICBuYWs6IDIxLFxuICBzeW46IDIyLFxuICBldGI6IDIzLFxuICBjYW46IDI0LFxuICBlbTogMjUsXG4gIHN1YjogMjYsXG4gIGVzYzogMjcsXG4gIGZzOiAyOCxcbiAgZ3M6IDI5LFxuICByczogMzAsXG4gIHVzOiAzMSxcbiAgc3BhY2U6IDMyLFxuICBleGNsYW1hdGlvbk1hcms6IDMzLCAvLyBgIWBcbiAgcXVvdGF0aW9uTWFyazogMzQsIC8vIGBcImBcbiAgbnVtYmVyU2lnbjogMzUsIC8vIGAjYFxuICBkb2xsYXJTaWduOiAzNiwgLy8gYCRgXG4gIHBlcmNlbnRTaWduOiAzNywgLy8gYCVgXG4gIGFtcGVyc2FuZDogMzgsIC8vIGAmYFxuICBhcG9zdHJvcGhlOiAzOSwgLy8gYCdgXG4gIGxlZnRQYXJlbnRoZXNpczogNDAsIC8vIGAoYFxuICByaWdodFBhcmVudGhlc2lzOiA0MSwgLy8gYClgXG4gIGFzdGVyaXNrOiA0MiwgLy8gYCpgXG4gIHBsdXNTaWduOiA0MywgLy8gYCtgXG4gIGNvbW1hOiA0NCwgLy8gYCxgXG4gIGRhc2g6IDQ1LCAvLyBgLWBcbiAgZG90OiA0NiwgLy8gYC5gXG4gIHNsYXNoOiA0NywgLy8gYC9gXG4gIGRpZ2l0MDogNDgsIC8vIGAwYFxuICBkaWdpdDE6IDQ5LCAvLyBgMWBcbiAgZGlnaXQyOiA1MCwgLy8gYDJgXG4gIGRpZ2l0MzogNTEsIC8vIGAzYFxuICBkaWdpdDQ6IDUyLCAvLyBgNGBcbiAgZGlnaXQ1OiA1MywgLy8gYDVgXG4gIGRpZ2l0NjogNTQsIC8vIGA2YFxuICBkaWdpdDc6IDU1LCAvLyBgN2BcbiAgZGlnaXQ4OiA1NiwgLy8gYDhgXG4gIGRpZ2l0OTogNTcsIC8vIGA5YFxuICBjb2xvbjogNTgsIC8vIGA6YFxuICBzZW1pY29sb246IDU5LCAvLyBgO2BcbiAgbGVzc1RoYW46IDYwLCAvLyBgPGBcbiAgZXF1YWxzVG86IDYxLCAvLyBgPWBcbiAgZ3JlYXRlclRoYW46IDYyLCAvLyBgPmBcbiAgcXVlc3Rpb25NYXJrOiA2MywgLy8gYD9gXG4gIGF0U2lnbjogNjQsIC8vIGBAYFxuICB1cHBlcmNhc2VBOiA2NSwgLy8gYEFgXG4gIHVwcGVyY2FzZUI6IDY2LCAvLyBgQmBcbiAgdXBwZXJjYXNlQzogNjcsIC8vIGBDYFxuICB1cHBlcmNhc2VEOiA2OCwgLy8gYERgXG4gIHVwcGVyY2FzZUU6IDY5LCAvLyBgRWBcbiAgdXBwZXJjYXNlRjogNzAsIC8vIGBGYFxuICB1cHBlcmNhc2VHOiA3MSwgLy8gYEdgXG4gIHVwcGVyY2FzZUg6IDcyLCAvLyBgSGBcbiAgdXBwZXJjYXNlSTogNzMsIC8vIGBJYFxuICB1cHBlcmNhc2VKOiA3NCwgLy8gYEpgXG4gIHVwcGVyY2FzZUs6IDc1LCAvLyBgS2BcbiAgdXBwZXJjYXNlTDogNzYsIC8vIGBMYFxuICB1cHBlcmNhc2VNOiA3NywgLy8gYE1gXG4gIHVwcGVyY2FzZU46IDc4LCAvLyBgTmBcbiAgdXBwZXJjYXNlTzogNzksIC8vIGBPYFxuICB1cHBlcmNhc2VQOiA4MCwgLy8gYFBgXG4gIHVwcGVyY2FzZVE6IDgxLCAvLyBgUWBcbiAgdXBwZXJjYXNlUjogODIsIC8vIGBSYFxuICB1cHBlcmNhc2VTOiA4MywgLy8gYFNgXG4gIHVwcGVyY2FzZVQ6IDg0LCAvLyBgVGBcbiAgdXBwZXJjYXNlVTogODUsIC8vIGBVYFxuICB1cHBlcmNhc2VWOiA4NiwgLy8gYFZgXG4gIHVwcGVyY2FzZVc6IDg3LCAvLyBgV2BcbiAgdXBwZXJjYXNlWDogODgsIC8vIGBYYFxuICB1cHBlcmNhc2VZOiA4OSwgLy8gYFlgXG4gIHVwcGVyY2FzZVo6IDkwLCAvLyBgWmBcbiAgbGVmdFNxdWFyZUJyYWNrZXQ6IDkxLCAvLyBgW2BcbiAgYmFja3NsYXNoOiA5MiwgLy8gYFxcYFxuICByaWdodFNxdWFyZUJyYWNrZXQ6IDkzLCAvLyBgXWBcbiAgY2FyZXQ6IDk0LCAvLyBgXmBcbiAgdW5kZXJzY29yZTogOTUsIC8vIGBfYFxuICBncmF2ZUFjY2VudDogOTYsIC8vIGBgIGAgYGBcbiAgbG93ZXJjYXNlQTogOTcsIC8vIGBhYFxuICBsb3dlcmNhc2VCOiA5OCwgLy8gYGJgXG4gIGxvd2VyY2FzZUM6IDk5LCAvLyBgY2BcbiAgbG93ZXJjYXNlRDogMTAwLCAvLyBgZGBcbiAgbG93ZXJjYXNlRTogMTAxLCAvLyBgZWBcbiAgbG93ZXJjYXNlRjogMTAyLCAvLyBgZmBcbiAgbG93ZXJjYXNlRzogMTAzLCAvLyBgZ2BcbiAgbG93ZXJjYXNlSDogMTA0LCAvLyBgaGBcbiAgbG93ZXJjYXNlSTogMTA1LCAvLyBgaWBcbiAgbG93ZXJjYXNlSjogMTA2LCAvLyBgamBcbiAgbG93ZXJjYXNlSzogMTA3LCAvLyBga2BcbiAgbG93ZXJjYXNlTDogMTA4LCAvLyBgbGBcbiAgbG93ZXJjYXNlTTogMTA5LCAvLyBgbWBcbiAgbG93ZXJjYXNlTjogMTEwLCAvLyBgbmBcbiAgbG93ZXJjYXNlTzogMTExLCAvLyBgb2BcbiAgbG93ZXJjYXNlUDogMTEyLCAvLyBgcGBcbiAgbG93ZXJjYXNlUTogMTEzLCAvLyBgcWBcbiAgbG93ZXJjYXNlUjogMTE0LCAvLyBgcmBcbiAgbG93ZXJjYXNlUzogMTE1LCAvLyBgc2BcbiAgbG93ZXJjYXNlVDogMTE2LCAvLyBgdGBcbiAgbG93ZXJjYXNlVTogMTE3LCAvLyBgdWBcbiAgbG93ZXJjYXNlVjogMTE4LCAvLyBgdmBcbiAgbG93ZXJjYXNlVzogMTE5LCAvLyBgd2BcbiAgbG93ZXJjYXNlWDogMTIwLCAvLyBgeGBcbiAgbG93ZXJjYXNlWTogMTIxLCAvLyBgeWBcbiAgbG93ZXJjYXNlWjogMTIyLCAvLyBgemBcbiAgbGVmdEN1cmx5QnJhY2U6IDEyMywgLy8gYHtgXG4gIHZlcnRpY2FsQmFyOiAxMjQsIC8vIGB8YFxuICByaWdodEN1cmx5QnJhY2U6IDEyNSwgLy8gYH1gXG4gIHRpbGRlOiAxMjYsIC8vIGB+YFxuICBkZWw6IDEyNyxcbiAgLy8gVW5pY29kZSBTcGVjaWFscyBibG9jay5cbiAgYnl0ZU9yZGVyTWFya2VyOiA2NTI3OSxcbiAgLy8gVW5pY29kZSBTcGVjaWFscyBibG9jay5cbiAgcmVwbGFjZW1lbnRDaGFyYWN0ZXI6IDY1NTMzIC8vIGDvv71gXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/codes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/constants.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/constants.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"constants\": () => (/* binding */ constants)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Parsing markdown comes with a couple of constants, such as minimum or maximum\n * sizes of certain sequences.\n * Additionally, there are a couple symbols used inside micromark.\n * These are all defined here, but compiled away by scripts.\n */\nconst constants = /** @type {const} */ ({\n attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a`\n attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*`\n atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t.\n autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many.\n autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many.\n cdataOpeningString: 'CDATA[', // And preceded by ``\n htmlComment: 2, // Symbol for ``\n htmlInstruction: 3, // Symbol for ``\n htmlDeclaration: 4, // Symbol for ``\n htmlCdata: 5, // Symbol for ``\n htmlBasic: 6, // Symbol for ``\n htmlRawSizeMax: 8, // Length of `textarea`.\n linkResourceDestinationBalanceMax: 32, // See: , \n linkReferenceSizeMax: 999, // See: \n listItemValueSizeMax: 10, // See: \n numericBaseDecimal: 10,\n numericBaseHexadecimal: 0x10,\n tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark.\n thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed.\n v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyw2QkFBNkIsT0FBTztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JELHlEQUF5RDtBQUN6RCwyRUFBMkU7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanM/NDMwZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbW9kdWxlIGlzIGNvbXBpbGVkIGF3YXkhXG4gKlxuICogUGFyc2luZyBtYXJrZG93biBjb21lcyB3aXRoIGEgY291cGxlIG9mIGNvbnN0YW50cywgc3VjaCBhcyBtaW5pbXVtIG9yIG1heGltdW1cbiAqIHNpemVzIG9mIGNlcnRhaW4gc2VxdWVuY2VzLlxuICogQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUgYSBjb3VwbGUgc3ltYm9scyB1c2VkIGluc2lkZSBtaWNyb21hcmsuXG4gKiBUaGVzZSBhcmUgYWxsIGRlZmluZWQgaGVyZSwgYnV0IGNvbXBpbGVkIGF3YXkgYnkgc2NyaXB0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnN0YW50cyA9IC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gIGF0dGVudGlvblNpZGVCZWZvcmU6IDEsIC8vIFN5bWJvbCB0byBtYXJrIGFuIGF0dGVudGlvbiBzZXF1ZW5jZSBhcyBiZWZvcmUgY29udGVudDogYCphYFxuICBhdHRlbnRpb25TaWRlQWZ0ZXI6IDIsIC8vIFN5bWJvbCB0byBtYXJrIGFuIGF0dGVudGlvbiBzZXF1ZW5jZSBhcyBhZnRlciBjb250ZW50OiBgYSpgXG4gIGF0eEhlYWRpbmdPcGVuaW5nRmVuY2VTaXplTWF4OiA2LCAvLyA2IG51bWJlciBzaWducyBpcyBmaW5lLCA3IGlzbuKAmXQuXG4gIGF1dG9saW5rRG9tYWluU2l6ZU1heDogNjMsIC8vIDYzIGNoYXJhY3RlcnMgaXMgZmluZSwgNjQgaXMgdG9vIG1hbnkuXG4gIGF1dG9saW5rU2NoZW1lU2l6ZU1heDogMzIsIC8vIDMyIGNoYXJhY3RlcnMgaXMgZmluZSwgMzMgaXMgdG9vIG1hbnkuXG4gIGNkYXRhT3BlbmluZ1N0cmluZzogJ0NEQVRBWycsIC8vIEFuZCBwcmVjZWRlZCBieSBgPCFbYC5cbiAgY2hhcmFjdGVyR3JvdXBXaGl0ZXNwYWNlOiAxLCAvLyBTeW1ib2wgdXNlZCB0byBpbmRpY2F0ZSBhIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlXG4gIGNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb246IDIsIC8vIFN5bWJvbCB1c2VkIHRvIGluZGljYXRlIGEgY2hhcmFjdGVyIGlzIHB1bmN0dWF0aW9uXG4gIGNoYXJhY3RlclJlZmVyZW5jZURlY2ltYWxTaXplTWF4OiA3LCAvLyBgJiM5OTk5OTk5O2AuXG4gIGNoYXJhY3RlclJlZmVyZW5jZUhleGFkZWNpbWFsU2l6ZU1heDogNiwgLy8gYCYjeGZmOTk5OTtgLlxuICBjaGFyYWN0ZXJSZWZlcmVuY2VOYW1lZFNpemVNYXg6IDMxLCAvLyBgJkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7YC5cbiAgY29kZUZlbmNlZFNlcXVlbmNlU2l6ZU1pbjogMywgLy8gQXQgbGVhc3QgMyB0aWNrcyBvciB0aWxkZXMgYXJlIG5lZWRlZC5cbiAgY29udGVudFR5cGVEb2N1bWVudDogJ2RvY3VtZW50JyxcbiAgY29udGVudFR5cGVGbG93OiAnZmxvdycsXG4gIGNvbnRlbnRUeXBlQ29udGVudDogJ2NvbnRlbnQnLFxuICBjb250ZW50VHlwZVN0cmluZzogJ3N0cmluZycsXG4gIGNvbnRlbnRUeXBlVGV4dDogJ3RleHQnLFxuICBoYXJkQnJlYWtQcmVmaXhTaXplTWluOiAyLCAvLyBBdCBsZWFzdCAyIHRyYWlsaW5nIHNwYWNlcyBhcmUgbmVlZGVkLlxuICBodG1sUmF3OiAxLCAvLyBTeW1ib2wgZm9yIGA8c2NyaXB0PmBcbiAgaHRtbENvbW1lbnQ6IDIsIC8vIFN5bWJvbCBmb3IgYDwhLS0tLT5gXG4gIGh0bWxJbnN0cnVjdGlvbjogMywgLy8gU3ltYm9sIGZvciBgPD9waHA/PmBcbiAgaHRtbERlY2xhcmF0aW9uOiA0LCAvLyBTeW1ib2wgZm9yIGA8IWRvY3R5cGU+YFxuICBodG1sQ2RhdGE6IDUsIC8vIFN5bWJvbCBmb3IgYDwhW0NEQVRBW11dPmBcbiAgaHRtbEJhc2ljOiA2LCAvLyBTeW1ib2wgZm9yIGA8ZGl2YFxuICBodG1sQ29tcGxldGU6IDcsIC8vIFN5bWJvbCBmb3IgYDx4PmBcbiAgaHRtbFJhd1NpemVNYXg6IDgsIC8vIExlbmd0aCBvZiBgdGV4dGFyZWFgLlxuICBsaW5rUmVzb3VyY2VEZXN0aW5hdGlvbkJhbGFuY2VNYXg6IDMyLCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jbGluay1kZXN0aW5hdGlvbj4sIDxodHRwczovL2dpdGh1Yi5jb20vcmVtYXJranMvcmVhY3QtbWFya2Rvd24vaXNzdWVzLzY1OCNpc3N1ZWNvbW1lbnQtOTg0MzQ1NTc3PlxuICBsaW5rUmVmZXJlbmNlU2l6ZU1heDogOTk5LCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jbGluay1sYWJlbD5cbiAgbGlzdEl0ZW1WYWx1ZVNpemVNYXg6IDEwLCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jb3JkZXJlZC1saXN0LW1hcmtlcj5cbiAgbnVtZXJpY0Jhc2VEZWNpbWFsOiAxMCxcbiAgbnVtZXJpY0Jhc2VIZXhhZGVjaW1hbDogMHgxMCxcbiAgdGFiU2l6ZTogNCwgLy8gVGFicyBoYXZlIGEgaGFyZC1jb2RlZCBzaXplIG9mIDQsIHBlciBDb21tb25NYXJrLlxuICB0aGVtYXRpY0JyZWFrTWFya2VyQ291bnRNaW46IDMsIC8vIEF0IGxlYXN0IDMgYXN0ZXJpc2tzLCBkYXNoZXMsIG9yIHVuZGVyc2NvcmVzIGFyZSBuZWVkZWQuXG4gIHY4TWF4U2FmZUNodW5rU2l6ZTogMTAwMDAgLy8gVjggKGFuZCBwb3RlbnRpYWxseSBvdGhlcnMpIGhhdmUgcHJvYmxlbXMgaW5qZWN0aW5nIGdpYW50IGFycmF5cyBpbnRvIG90aGVyIGFycmF5cywgaGVuY2Ugd2Ugb3BlcmF0ZSBpbiBjaHVua3MuXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/constants.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/types.js": +/*!************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/types.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"types\": () => (/* binding */ types)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Here is the list of all types of tokens exposed by micromark, with a short\n * explanation of what they include and where they are found.\n * In picking names, generally, the rule is to be as explicit as possible\n * instead of reusing names.\n * For example, there is a `definitionDestination` and a `resourceDestination`,\n * instead of one shared name.\n */\n\n// Note: when changing the next record, you must also change `TokenTypeMap`\n// in `micromark-util-types/index.d.ts`.\nconst types = /** @type {const} */ ({\n // Generic type for data, such as in a title, a destination, etc.\n data: 'data',\n\n // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).\n // Such as, between a fenced code fence and an info string.\n whitespace: 'whitespace',\n\n // Generic type for line endings (line feed, carriage return, carriage return +\n // line feed).\n lineEnding: 'lineEnding',\n\n // A line ending, but ending a blank line.\n lineEndingBlank: 'lineEndingBlank',\n\n // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a\n // line.\n linePrefix: 'linePrefix',\n\n // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a\n // line.\n lineSuffix: 'lineSuffix',\n\n // Whole ATX heading:\n //\n // ```markdown\n // #\n // ## Alpha\n // ### Bravo ###\n // ```\n //\n // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.\n atxHeading: 'atxHeading',\n\n // Sequence of number signs in an ATX heading (`###`).\n atxHeadingSequence: 'atxHeadingSequence',\n\n // Content in an ATX heading (`alpha`).\n // Includes text.\n atxHeadingText: 'atxHeadingText',\n\n // Whole autolink (`` or ``)\n // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.\n autolink: 'autolink',\n\n // Email autolink w/o markers (`admin@example.com`)\n autolinkEmail: 'autolinkEmail',\n\n // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).\n autolinkMarker: 'autolinkMarker',\n\n // Protocol autolink w/o markers (`https://example.com`)\n autolinkProtocol: 'autolinkProtocol',\n\n // A whole character escape (`\\-`).\n // Includes `escapeMarker` and `characterEscapeValue`.\n characterEscape: 'characterEscape',\n\n // The escaped character (`-`).\n characterEscapeValue: 'characterEscapeValue',\n\n // A whole character reference (`&`, `≠`, or `𝌆`).\n // Includes `characterReferenceMarker`, an optional\n // `characterReferenceMarkerNumeric`, in which case an optional\n // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.\n characterReference: 'characterReference',\n\n // The start or end marker (`&` or `;`).\n characterReferenceMarker: 'characterReferenceMarker',\n\n // Mark reference as numeric (`#`).\n characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',\n\n // Mark reference as numeric (`x` or `X`).\n characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',\n\n // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).\n characterReferenceValue: 'characterReferenceValue',\n\n // Whole fenced code:\n //\n // ````markdown\n // ```js\n // alert(1)\n // ```\n // ````\n codeFenced: 'codeFenced',\n\n // A fenced code fence, including whitespace, sequence, info, and meta\n // (` ```js `).\n codeFencedFence: 'codeFencedFence',\n\n // Sequence of grave accent or tilde characters (` ``` `) in a fence.\n codeFencedFenceSequence: 'codeFencedFenceSequence',\n\n // Info word (`js`) in a fence.\n // Includes string.\n codeFencedFenceInfo: 'codeFencedFenceInfo',\n\n // Meta words (`highlight=\"1\"`) in a fence.\n // Includes string.\n codeFencedFenceMeta: 'codeFencedFenceMeta',\n\n // A line of code.\n codeFlowValue: 'codeFlowValue',\n\n // Whole indented code:\n //\n // ```markdown\n // alert(1)\n // ```\n //\n // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.\n codeIndented: 'codeIndented',\n\n // A text code (``` `alpha` ```).\n // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include\n // `codeTextPadding`.\n codeText: 'codeText',\n\n codeTextData: 'codeTextData',\n\n // A space or line ending right after or before a tick.\n codeTextPadding: 'codeTextPadding',\n\n // A text code fence (` `` `).\n codeTextSequence: 'codeTextSequence',\n\n // Whole content:\n //\n // ```markdown\n // [a]: b\n // c\n // =\n // d\n // ```\n //\n // Includes `paragraph` and `definition`.\n content: 'content',\n // Whole definition:\n //\n // ```markdown\n // [micromark]: https://github.com/micromark/micromark\n // ```\n //\n // Includes `definitionLabel`, `definitionMarker`, `whitespace`,\n // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.\n definition: 'definition',\n\n // Destination of a definition (`https://github.com/micromark/micromark` or\n // ``).\n // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.\n definitionDestination: 'definitionDestination',\n\n // Enclosed destination of a definition\n // (``).\n // Includes `definitionDestinationLiteralMarker` and optionally\n // `definitionDestinationString`.\n definitionDestinationLiteral: 'definitionDestinationLiteral',\n\n // Markers of an enclosed definition destination (`<` or `>`).\n definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',\n\n // Unenclosed destination of a definition\n // (`https://github.com/micromark/micromark`).\n // Includes `definitionDestinationString`.\n definitionDestinationRaw: 'definitionDestinationRaw',\n\n // Text in an destination (`https://github.com/micromark/micromark`).\n // Includes string.\n definitionDestinationString: 'definitionDestinationString',\n\n // Label of a definition (`[micromark]`).\n // Includes `definitionLabelMarker` and `definitionLabelString`.\n definitionLabel: 'definitionLabel',\n\n // Markers of a definition label (`[` or `]`).\n definitionLabelMarker: 'definitionLabelMarker',\n\n // Value of a definition label (`micromark`).\n // Includes string.\n definitionLabelString: 'definitionLabelString',\n\n // Marker between a label and a destination (`:`).\n definitionMarker: 'definitionMarker',\n\n // Title of a definition (`\"x\"`, `'y'`, or `(z)`).\n // Includes `definitionTitleMarker` and optionally `definitionTitleString`.\n definitionTitle: 'definitionTitle',\n\n // Marker around a title of a definition (`\"`, `'`, `(`, or `)`).\n definitionTitleMarker: 'definitionTitleMarker',\n\n // Data without markers in a title (`z`).\n // Includes string.\n definitionTitleString: 'definitionTitleString',\n\n // Emphasis (`*alpha*`).\n // Includes `emphasisSequence` and `emphasisText`.\n emphasis: 'emphasis',\n\n // Sequence of emphasis markers (`*` or `_`).\n emphasisSequence: 'emphasisSequence',\n\n // Emphasis text (`alpha`).\n // Includes text.\n emphasisText: 'emphasisText',\n\n // The character escape marker (`\\`).\n escapeMarker: 'escapeMarker',\n\n // A hard break created with a backslash (`\\\\n`).\n // Note: does not include the line ending.\n hardBreakEscape: 'hardBreakEscape',\n\n // A hard break created with trailing spaces (` \\n`).\n // Does not include the line ending.\n hardBreakTrailing: 'hardBreakTrailing',\n\n // Flow HTML:\n //\n // ```markdown\n // b`).\n // Includes `lineEnding`, `htmlTextData`.\n htmlText: 'htmlText',\n\n htmlTextData: 'htmlTextData',\n\n // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or\n // `![alpha]`).\n // Includes `label` and an optional `resource` or `reference`.\n image: 'image',\n\n // Whole link label (`[*alpha*]`).\n // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.\n label: 'label',\n\n // Text in an label (`*alpha*`).\n // Includes text.\n labelText: 'labelText',\n\n // Start a link label (`[`).\n // Includes a `labelMarker`.\n labelLink: 'labelLink',\n\n // Start an image label (`![`).\n // Includes `labelImageMarker` and `labelMarker`.\n labelImage: 'labelImage',\n\n // Marker of a label (`[` or `]`).\n labelMarker: 'labelMarker',\n\n // Marker to start an image (`!`).\n labelImageMarker: 'labelImageMarker',\n\n // End a label (`]`).\n // Includes `labelMarker`.\n labelEnd: 'labelEnd',\n\n // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).\n // Includes `label` and an optional `resource` or `reference`.\n link: 'link',\n\n // Whole paragraph:\n //\n // ```markdown\n // alpha\n // bravo.\n // ```\n //\n // Includes text.\n paragraph: 'paragraph',\n\n // A reference (`[alpha]` or `[]`).\n // Includes `referenceMarker` and an optional `referenceString`.\n reference: 'reference',\n\n // A reference marker (`[` or `]`).\n referenceMarker: 'referenceMarker',\n\n // Reference text (`alpha`).\n // Includes string.\n referenceString: 'referenceString',\n\n // A resource (`(https://example.com \"alpha\")`).\n // Includes `resourceMarker`, an optional `resourceDestination` with an optional\n // `whitespace` and `resourceTitle`.\n resource: 'resource',\n\n // A resource destination (`https://example.com`).\n // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.\n resourceDestination: 'resourceDestination',\n\n // A literal resource destination (``).\n // Includes `resourceDestinationLiteralMarker` and optionally\n // `resourceDestinationString`.\n resourceDestinationLiteral: 'resourceDestinationLiteral',\n\n // A resource destination marker (`<` or `>`).\n resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',\n\n // A raw resource destination (`https://example.com`).\n // Includes `resourceDestinationString`.\n resourceDestinationRaw: 'resourceDestinationRaw',\n\n // Resource destination text (`https://example.com`).\n // Includes string.\n resourceDestinationString: 'resourceDestinationString',\n\n // A resource marker (`(` or `)`).\n resourceMarker: 'resourceMarker',\n\n // A resource title (`\"alpha\"`, `'alpha'`, or `(alpha)`).\n // Includes `resourceTitleMarker` and optionally `resourceTitleString`.\n resourceTitle: 'resourceTitle',\n\n // A resource title marker (`\"`, `'`, `(`, or `)`).\n resourceTitleMarker: 'resourceTitleMarker',\n\n // Resource destination title (`alpha`).\n // Includes string.\n resourceTitleString: 'resourceTitleString',\n\n // Whole setext heading:\n //\n // ```markdown\n // alpha\n // bravo\n // =====\n // ```\n //\n // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and\n // `setextHeadingLine`.\n setextHeading: 'setextHeading',\n\n // Content in a setext heading (`alpha\\nbravo`).\n // Includes text.\n setextHeadingText: 'setextHeadingText',\n\n // Underline in a setext heading, including whitespace suffix (`==`).\n // Includes `setextHeadingLineSequence`.\n setextHeadingLine: 'setextHeadingLine',\n\n // Sequence of equals or dash characters in underline in a setext heading (`-`).\n setextHeadingLineSequence: 'setextHeadingLineSequence',\n\n // Strong (`**alpha**`).\n // Includes `strongSequence` and `strongText`.\n strong: 'strong',\n\n // Sequence of strong markers (`**` or `__`).\n strongSequence: 'strongSequence',\n\n // Strong text (`alpha`).\n // Includes text.\n strongText: 'strongText',\n\n // Whole thematic break:\n //\n // ```markdown\n // * * *\n // ```\n //\n // Includes `thematicBreakSequence` and `whitespace`.\n thematicBreak: 'thematicBreak',\n\n // A sequence of one or more thematic break markers (`***`).\n thematicBreakSequence: 'thematicBreakSequence',\n\n // Whole block quote:\n //\n // ```markdown\n // > a\n // >\n // > b\n // ```\n //\n // Includes `blockQuotePrefix` and flow.\n blockQuote: 'blockQuote',\n // The `>` or `> ` of a block quote.\n blockQuotePrefix: 'blockQuotePrefix',\n // The `>` of a block quote prefix.\n blockQuoteMarker: 'blockQuoteMarker',\n // The optional ` ` of a block quote prefix.\n blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',\n\n // Whole unordered list:\n //\n // ```markdown\n // - a\n // b\n // ```\n //\n // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further\n // lines.\n listOrdered: 'listOrdered',\n\n // Whole ordered list:\n //\n // ```markdown\n // 1. a\n // b\n // ```\n //\n // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further\n // lines.\n listUnordered: 'listUnordered',\n\n // The indent of further list item lines.\n listItemIndent: 'listItemIndent',\n\n // A marker, as in, `*`, `+`, `-`, `.`, or `)`.\n listItemMarker: 'listItemMarker',\n\n // The thing that starts a list item, such as `1. `.\n // Includes `listItemValue` if ordered, `listItemMarker`, and\n // `listItemPrefixWhitespace` (unless followed by a line ending).\n listItemPrefix: 'listItemPrefix',\n\n // The whitespace after a marker.\n listItemPrefixWhitespace: 'listItemPrefixWhitespace',\n\n // The numerical value of an ordered item.\n listItemValue: 'listItemValue',\n\n // Internal types used for subtokenizers, compiled away\n chunkDocument: 'chunkDocument',\n chunkContent: 'chunkContent',\n chunkFlow: 'chunkFlow',\n chunkText: 'chunkText',\n chunkString: 'chunkString'\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPLHlCQUF5QixPQUFPO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdDQUF3QyxXQUFXLGdCQUFnQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcz8wZGVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgaXMgY29tcGlsZWQgYXdheSFcbiAqXG4gKiBIZXJlIGlzIHRoZSBsaXN0IG9mIGFsbCB0eXBlcyBvZiB0b2tlbnMgZXhwb3NlZCBieSBtaWNyb21hcmssIHdpdGggYSBzaG9ydFxuICogZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGV5IGluY2x1ZGUgYW5kIHdoZXJlIHRoZXkgYXJlIGZvdW5kLlxuICogSW4gcGlja2luZyBuYW1lcywgZ2VuZXJhbGx5LCB0aGUgcnVsZSBpcyB0byBiZSBhcyBleHBsaWNpdCBhcyBwb3NzaWJsZVxuICogaW5zdGVhZCBvZiByZXVzaW5nIG5hbWVzLlxuICogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIGEgYGRlZmluaXRpb25EZXN0aW5hdGlvbmAgYW5kIGEgYHJlc291cmNlRGVzdGluYXRpb25gLFxuICogaW5zdGVhZCBvZiBvbmUgc2hhcmVkIG5hbWUuXG4gKi9cblxuLy8gTm90ZTogd2hlbiBjaGFuZ2luZyB0aGUgbmV4dCByZWNvcmQsIHlvdSBtdXN0IGFsc28gY2hhbmdlIGBUb2tlblR5cGVNYXBgXG4vLyBpbiBgbWljcm9tYXJrLXV0aWwtdHlwZXMvaW5kZXguZC50c2AuXG5leHBvcnQgY29uc3QgdHlwZXMgPSAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAvLyBHZW5lcmljIHR5cGUgZm9yIGRhdGEsIHN1Y2ggYXMgaW4gYSB0aXRsZSwgYSBkZXN0aW5hdGlvbiwgZXRjLlxuICBkYXRhOiAnZGF0YScsXG5cbiAgLy8gR2VuZXJpYyB0eXBlIGZvciBzeW50YWN0aWMgd2hpdGVzcGFjZSAodGFicywgdmlydHVhbCBzcGFjZXMsIHNwYWNlcykuXG4gIC8vIFN1Y2ggYXMsIGJldHdlZW4gYSBmZW5jZWQgY29kZSBmZW5jZSBhbmQgYW4gaW5mbyBzdHJpbmcuXG4gIHdoaXRlc3BhY2U6ICd3aGl0ZXNwYWNlJyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIGxpbmUgZW5kaW5ncyAobGluZSBmZWVkLCBjYXJyaWFnZSByZXR1cm4sIGNhcnJpYWdlIHJldHVybiArXG4gIC8vIGxpbmUgZmVlZCkuXG4gIGxpbmVFbmRpbmc6ICdsaW5lRW5kaW5nJyxcblxuICAvLyBBIGxpbmUgZW5kaW5nLCBidXQgZW5kaW5nIGEgYmxhbmsgbGluZS5cbiAgbGluZUVuZGluZ0JsYW5rOiAnbGluZUVuZGluZ0JsYW5rJyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIHdoaXRlc3BhY2UgKHRhYnMsIHZpcnR1YWwgc3BhY2VzLCBzcGFjZXMpIGF0IHRoZSBzdGFydCBvZiBhXG4gIC8vIGxpbmUuXG4gIGxpbmVQcmVmaXg6ICdsaW5lUHJlZml4JyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIHdoaXRlc3BhY2UgKHRhYnMsIHZpcnR1YWwgc3BhY2VzLCBzcGFjZXMpIGF0IHRoZSBlbmQgb2YgYVxuICAvLyBsaW5lLlxuICBsaW5lU3VmZml4OiAnbGluZVN1ZmZpeCcsXG5cbiAgLy8gV2hvbGUgQVRYIGhlYWRpbmc6XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vICNcbiAgLy8gIyMgQWxwaGFcbiAgLy8gIyMjIEJyYXZvICMjI1xuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGF0eEhlYWRpbmdTZXF1ZW5jZWAsIGB3aGl0ZXNwYWNlYCwgYGF0eEhlYWRpbmdUZXh0YC5cbiAgYXR4SGVhZGluZzogJ2F0eEhlYWRpbmcnLFxuXG4gIC8vIFNlcXVlbmNlIG9mIG51bWJlciBzaWducyBpbiBhbiBBVFggaGVhZGluZyAoYCMjI2ApLlxuICBhdHhIZWFkaW5nU2VxdWVuY2U6ICdhdHhIZWFkaW5nU2VxdWVuY2UnLFxuXG4gIC8vIENvbnRlbnQgaW4gYW4gQVRYIGhlYWRpbmcgKGBhbHBoYWApLlxuICAvLyBJbmNsdWRlcyB0ZXh0LlxuICBhdHhIZWFkaW5nVGV4dDogJ2F0eEhlYWRpbmdUZXh0JyxcblxuICAvLyBXaG9sZSBhdXRvbGluayAoYDxodHRwczovL2V4YW1wbGUuY29tPmAgb3IgYDxhZG1pbkBleGFtcGxlLmNvbT5gKVxuICAvLyBJbmNsdWRlcyBgYXV0b2xpbmtNYXJrZXJgIGFuZCBgYXV0b2xpbmtQcm90b2NvbGAgb3IgYGF1dG9saW5rRW1haWxgLlxuICBhdXRvbGluazogJ2F1dG9saW5rJyxcblxuICAvLyBFbWFpbCBhdXRvbGluayB3L28gbWFya2VycyAoYGFkbWluQGV4YW1wbGUuY29tYClcbiAgYXV0b2xpbmtFbWFpbDogJ2F1dG9saW5rRW1haWwnLFxuXG4gIC8vIE1hcmtlciBhcm91bmQgYW4gYGF1dG9saW5rUHJvdG9jb2xgIG9yIGBhdXRvbGlua0VtYWlsYCAoYDxgIG9yIGA+YCkuXG4gIGF1dG9saW5rTWFya2VyOiAnYXV0b2xpbmtNYXJrZXInLFxuXG4gIC8vIFByb3RvY29sIGF1dG9saW5rIHcvbyBtYXJrZXJzIChgaHR0cHM6Ly9leGFtcGxlLmNvbWApXG4gIGF1dG9saW5rUHJvdG9jb2w6ICdhdXRvbGlua1Byb3RvY29sJyxcblxuICAvLyBBIHdob2xlIGNoYXJhY3RlciBlc2NhcGUgKGBcXC1gKS5cbiAgLy8gSW5jbHVkZXMgYGVzY2FwZU1hcmtlcmAgYW5kIGBjaGFyYWN0ZXJFc2NhcGVWYWx1ZWAuXG4gIGNoYXJhY3RlckVzY2FwZTogJ2NoYXJhY3RlckVzY2FwZScsXG5cbiAgLy8gVGhlIGVzY2FwZWQgY2hhcmFjdGVyIChgLWApLlxuICBjaGFyYWN0ZXJFc2NhcGVWYWx1ZTogJ2NoYXJhY3RlckVzY2FwZVZhbHVlJyxcblxuICAvLyBBIHdob2xlIGNoYXJhY3RlciByZWZlcmVuY2UgKGAmYW1wO2AsIGAmIzg4MDA7YCwgb3IgYCYjeDFEMzA2O2ApLlxuICAvLyBJbmNsdWRlcyBgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyYCwgYW4gb3B0aW9uYWxcbiAgLy8gYGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWNgLCBpbiB3aGljaCBjYXNlIGFuIG9wdGlvbmFsXG4gIC8vIGBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbGAsIGFuZCBhIGBjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZWAuXG4gIGNoYXJhY3RlclJlZmVyZW5jZTogJ2NoYXJhY3RlclJlZmVyZW5jZScsXG5cbiAgLy8gVGhlIHN0YXJ0IG9yIGVuZCBtYXJrZXIgKGAmYCBvciBgO2ApLlxuICBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXI6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInLFxuXG4gIC8vIE1hcmsgcmVmZXJlbmNlIGFzIG51bWVyaWMgKGAjYCkuXG4gIGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWM6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljJyxcblxuICAvLyBNYXJrIHJlZmVyZW5jZSBhcyBudW1lcmljIChgeGAgb3IgYFhgKS5cbiAgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCcsXG5cbiAgLy8gVmFsdWUgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZSB3L28gbWFya2VycyAoYGFtcGAsIGA4ODAwYCwgb3IgYDFEMzA2YCkuXG4gIGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOiAnY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnLFxuXG4gIC8vIFdob2xlIGZlbmNlZCBjb2RlOlxuICAvL1xuICAvLyBgYGBgbWFya2Rvd25cbiAgLy8gYGBganNcbiAgLy8gYWxlcnQoMSlcbiAgLy8gYGBgXG4gIC8vIGBgYGBcbiAgY29kZUZlbmNlZDogJ2NvZGVGZW5jZWQnLFxuXG4gIC8vIEEgZmVuY2VkIGNvZGUgZmVuY2UsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLCBzZXF1ZW5jZSwgaW5mbywgYW5kIG1ldGFcbiAgLy8gKGAgYGBganMgYCkuXG4gIGNvZGVGZW5jZWRGZW5jZTogJ2NvZGVGZW5jZWRGZW5jZScsXG5cbiAgLy8gU2VxdWVuY2Ugb2YgZ3JhdmUgYWNjZW50IG9yIHRpbGRlIGNoYXJhY3RlcnMgKGAgYGBgIGApIGluIGEgZmVuY2UuXG4gIGNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlOiAnY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnLFxuXG4gIC8vIEluZm8gd29yZCAoYGpzYCkgaW4gYSBmZW5jZS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICBjb2RlRmVuY2VkRmVuY2VJbmZvOiAnY29kZUZlbmNlZEZlbmNlSW5mbycsXG5cbiAgLy8gTWV0YSB3b3JkcyAoYGhpZ2hsaWdodD1cIjFcImApIGluIGEgZmVuY2UuXG4gIC8vIEluY2x1ZGVzIHN0cmluZy5cbiAgY29kZUZlbmNlZEZlbmNlTWV0YTogJ2NvZGVGZW5jZWRGZW5jZU1ldGEnLFxuXG4gIC8vIEEgbGluZSBvZiBjb2RlLlxuICBjb2RlRmxvd1ZhbHVlOiAnY29kZUZsb3dWYWx1ZScsXG5cbiAgLy8gV2hvbGUgaW5kZW50ZWQgY29kZTpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gICAgIGFsZXJ0KDEpXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgbGluZUVuZGluZ2AsIGBsaW5lUHJlZml4YCwgYW5kIGBjb2RlRmxvd1ZhbHVlYC5cbiAgY29kZUluZGVudGVkOiAnY29kZUluZGVudGVkJyxcblxuICAvLyBBIHRleHQgY29kZSAoYGBgIGBhbHBoYWAgYGBgKS5cbiAgLy8gSW5jbHVkZXMgYGNvZGVUZXh0U2VxdWVuY2VgLCBgY29kZVRleHREYXRhYCwgYGxpbmVFbmRpbmdgLCBhbmQgY2FuIGluY2x1ZGVcbiAgLy8gYGNvZGVUZXh0UGFkZGluZ2AuXG4gIGNvZGVUZXh0OiAnY29kZVRleHQnLFxuXG4gIGNvZGVUZXh0RGF0YTogJ2NvZGVUZXh0RGF0YScsXG5cbiAgLy8gQSBzcGFjZSBvciBsaW5lIGVuZGluZyByaWdodCBhZnRlciBvciBiZWZvcmUgYSB0aWNrLlxuICBjb2RlVGV4dFBhZGRpbmc6ICdjb2RlVGV4dFBhZGRpbmcnLFxuXG4gIC8vIEEgdGV4dCBjb2RlIGZlbmNlIChgIGBgIGApLlxuICBjb2RlVGV4dFNlcXVlbmNlOiAnY29kZVRleHRTZXF1ZW5jZScsXG5cbiAgLy8gV2hvbGUgY29udGVudDpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gW2FdOiBiXG4gIC8vIGNcbiAgLy8gPVxuICAvLyBkXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgcGFyYWdyYXBoYCBhbmQgYGRlZmluaXRpb25gLlxuICBjb250ZW50OiAnY29udGVudCcsXG4gIC8vIFdob2xlIGRlZmluaXRpb246XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vIFttaWNyb21hcmtdOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXJrL21pY3JvbWFya1xuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGRlZmluaXRpb25MYWJlbGAsIGBkZWZpbml0aW9uTWFya2VyYCwgYHdoaXRlc3BhY2VgLFxuICAvLyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uYCwgYW5kIG9wdGlvbmFsbHkgYGxpbmVFbmRpbmdgIGFuZCBgZGVmaW5pdGlvblRpdGxlYC5cbiAgZGVmaW5pdGlvbjogJ2RlZmluaXRpb24nLFxuXG4gIC8vIERlc3RpbmF0aW9uIG9mIGEgZGVmaW5pdGlvbiAoYGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrYCBvclxuICAvLyBgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrPmApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbGAgb3IgYGRlZmluaXRpb25EZXN0aW5hdGlvblJhd2AuXG4gIGRlZmluaXRpb25EZXN0aW5hdGlvbjogJ2RlZmluaXRpb25EZXN0aW5hdGlvbicsXG5cbiAgLy8gRW5jbG9zZWQgZGVzdGluYXRpb24gb2YgYSBkZWZpbml0aW9uXG4gIC8vIChgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrPmApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcmAgYW5kIG9wdGlvbmFsbHlcbiAgLy8gYGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZ2AuXG4gIGRlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWw6ICdkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsJyxcblxuICAvLyBNYXJrZXJzIG9mIGFuIGVuY2xvc2VkIGRlZmluaXRpb24gZGVzdGluYXRpb24gKGA8YCBvciBgPmApLlxuICBkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyOiAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcicsXG5cbiAgLy8gVW5lbmNsb3NlZCBkZXN0aW5hdGlvbiBvZiBhIGRlZmluaXRpb25cbiAgLy8gKGBodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXJrL21pY3JvbWFya2ApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nYC5cbiAgZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3OiAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3JyxcblxuICAvLyBUZXh0IGluIGFuIGRlc3RpbmF0aW9uIChgaHR0cHM6Ly9naXRodWIuY29tL21pY3JvbWFyay9taWNyb21hcmtgKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICBkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6ICdkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmcnLFxuXG4gIC8vIExhYmVsIG9mIGEgZGVmaW5pdGlvbiAoYFttaWNyb21hcmtdYCkuXG4gIC8vIEluY2x1ZGVzIGBkZWZpbml0aW9uTGFiZWxNYXJrZXJgIGFuZCBgZGVmaW5pdGlvbkxhYmVsU3RyaW5nYC5cbiAgZGVmaW5pdGlvbkxhYmVsOiAnZGVmaW5pdGlvbkxhYmVsJyxcblxuICAvLyBNYXJrZXJzIG9mIGEgZGVmaW5pdGlvbiBsYWJlbCAoYFtgIG9yIGBdYCkuXG4gIGRlZmluaXRpb25MYWJlbE1hcmtlcjogJ2RlZmluaXRpb25MYWJlbE1hcmtlcicsXG5cbiAgLy8gVmFsdWUgb2YgYSBkZWZpbml0aW9uIGxhYmVsIChgbWljcm9tYXJrYCkuXG4gIC8vIEluY2x1ZGVzIHN0cmluZy5cbiAgZGVmaW5pdGlvbkxhYmVsU3RyaW5nOiAnZGVmaW5pdGlvbkxhYmVsU3RyaW5nJyxcblxuICAvLyBNYXJrZXIgYmV0d2VlbiBhIGxhYmVsIGFuZCBhIGRlc3RpbmF0aW9uIChgOmApLlxuICBkZWZpbml0aW9uTWFya2VyOiAnZGVmaW5pdGlvbk1hcmtlcicsXG5cbiAgLy8gVGl0bGUgb2YgYSBkZWZpbml0aW9uIChgXCJ4XCJgLCBgJ3knYCwgb3IgYCh6KWApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvblRpdGxlTWFya2VyYCBhbmQgb3B0aW9uYWxseSBgZGVmaW5pdGlvblRpdGxlU3RyaW5nYC5cbiAgZGVmaW5pdGlvblRpdGxlOiAnZGVmaW5pdGlvblRpdGxlJyxcblxuICAvLyBNYXJrZXIgYXJvdW5kIGEgdGl0bGUgb2YgYSBkZWZpbml0aW9uIChgXCJgLCBgJ2AsIGAoYCwgb3IgYClgKS5cbiAgZGVmaW5pdGlvblRpdGxlTWFya2VyOiAnZGVmaW5pdGlvblRpdGxlTWFya2VyJyxcblxuICAvLyBEYXRhIHdpdGhvdXQgbWFya2VycyBpbiBhIHRpdGxlIChgemApLlxuICAvLyBJbmNsdWRlcyBzdHJpbmcuXG4gIGRlZmluaXRpb25UaXRsZVN0cmluZzogJ2RlZmluaXRpb25UaXRsZVN0cmluZycsXG5cbiAgLy8gRW1waGFzaXMgKGAqYWxwaGEqYCkuXG4gIC8vIEluY2x1ZGVzIGBlbXBoYXNpc1NlcXVlbmNlYCBhbmQgYGVtcGhhc2lzVGV4dGAuXG4gIGVtcGhhc2lzOiAnZW1waGFzaXMnLFxuXG4gIC8vIFNlcXVlbmNlIG9mIGVtcGhhc2lzIG1hcmtlcnMgKGAqYCBvciBgX2ApLlxuICBlbXBoYXNpc1NlcXVlbmNlOiAnZW1waGFzaXNTZXF1ZW5jZScsXG5cbiAgLy8gRW1waGFzaXMgdGV4dCAoYGFscGhhYCkuXG4gIC8vIEluY2x1ZGVzIHRleHQuXG4gIGVtcGhhc2lzVGV4dDogJ2VtcGhhc2lzVGV4dCcsXG5cbiAgLy8gVGhlIGNoYXJhY3RlciBlc2NhcGUgbWFya2VyIChgXFxgKS5cbiAgZXNjYXBlTWFya2VyOiAnZXNjYXBlTWFya2VyJyxcblxuICAvLyBBIGhhcmQgYnJlYWsgY3JlYXRlZCB3aXRoIGEgYmFja3NsYXNoIChgXFxcXG5gKS5cbiAgLy8gTm90ZTogZG9lcyBub3QgaW5jbHVkZSB0aGUgbGluZSBlbmRpbmcuXG4gIGhhcmRCcmVha0VzY2FwZTogJ2hhcmRCcmVha0VzY2FwZScsXG5cbiAgLy8gQSBoYXJkIGJyZWFrIGNyZWF0ZWQgd2l0aCB0cmFpbGluZyBzcGFjZXMgKGAgIFxcbmApLlxuICAvLyBEb2VzIG5vdCBpbmNsdWRlIHRoZSBsaW5lIGVuZGluZy5cbiAgaGFyZEJyZWFrVHJhaWxpbmc6ICdoYXJkQnJlYWtUcmFpbGluZycsXG5cbiAgLy8gRmxvdyBIVE1MOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyA8ZGl2XG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmxjdWRlcyBgbGluZUVuZGluZ2AsIGBodG1sRmxvd0RhdGFgLlxuICBodG1sRmxvdzogJ2h0bWxGbG93JyxcblxuICBodG1sRmxvd0RhdGE6ICdodG1sRmxvd0RhdGEnLFxuXG4gIC8vIEhUTUwgaW4gdGV4dCAodGhlIHRhZyBpbiBgYSA8aT4gYmApLlxuICAvLyBJbmNsdWRlcyBgbGluZUVuZGluZ2AsIGBodG1sVGV4dERhdGFgLlxuICBodG1sVGV4dDogJ2h0bWxUZXh0JyxcblxuICBodG1sVGV4dERhdGE6ICdodG1sVGV4dERhdGEnLFxuXG4gIC8vIFdob2xlIGltYWdlIChgIVthbHBoYV0oYnJhdm8pYCwgYCFbYWxwaGFdW2JyYXZvXWAsIGAhW2FscGhhXVtdYCwgb3JcbiAgLy8gYCFbYWxwaGFdYCkuXG4gIC8vIEluY2x1ZGVzIGBsYWJlbGAgYW5kIGFuIG9wdGlvbmFsIGByZXNvdXJjZWAgb3IgYHJlZmVyZW5jZWAuXG4gIGltYWdlOiAnaW1hZ2UnLFxuXG4gIC8vIFdob2xlIGxpbmsgbGFiZWwgKGBbKmFscGhhKl1gKS5cbiAgLy8gSW5jbHVkZXMgYGxhYmVsTGlua2Agb3IgYGxhYmVsSW1hZ2VgLCBgbGFiZWxUZXh0YCwgYW5kIGBsYWJlbEVuZGAuXG4gIGxhYmVsOiAnbGFiZWwnLFxuXG4gIC8vIFRleHQgaW4gYW4gbGFiZWwgKGAqYWxwaGEqYCkuXG4gIC8vIEluY2x1ZGVzIHRleHQuXG4gIGxhYmVsVGV4dDogJ2xhYmVsVGV4dCcsXG5cbiAgLy8gU3RhcnQgYSBsaW5rIGxhYmVsIChgW2ApLlxuICAvLyBJbmNsdWRlcyBhIGBsYWJlbE1hcmtlcmAuXG4gIGxhYmVsTGluazogJ2xhYmVsTGluaycsXG5cbiAgLy8gU3RhcnQgYW4gaW1hZ2UgbGFiZWwgKGAhW2ApLlxuICAvLyBJbmNsdWRlcyBgbGFiZWxJbWFnZU1hcmtlcmAgYW5kIGBsYWJlbE1hcmtlcmAuXG4gIGxhYmVsSW1hZ2U6ICdsYWJlbEltYWdlJyxcblxuICAvLyBNYXJrZXIgb2YgYSBsYWJlbCAoYFtgIG9yIGBdYCkuXG4gIGxhYmVsTWFya2VyOiAnbGFiZWxNYXJrZXInLFxuXG4gIC8vIE1hcmtlciB0byBzdGFydCBhbiBpbWFnZSAoYCFgKS5cbiAgbGFiZWxJbWFnZU1hcmtlcjogJ2xhYmVsSW1hZ2VNYXJrZXInLFxuXG4gIC8vIEVuZCBhIGxhYmVsIChgXWApLlxuICAvLyBJbmNsdWRlcyBgbGFiZWxNYXJrZXJgLlxuICBsYWJlbEVuZDogJ2xhYmVsRW5kJyxcblxuICAvLyBXaG9sZSBsaW5rIChgW2FscGhhXShicmF2bylgLCBgW2FscGhhXVticmF2b11gLCBgW2FscGhhXVtdYCwgb3IgYFthbHBoYV1gKS5cbiAgLy8gSW5jbHVkZXMgYGxhYmVsYCBhbmQgYW4gb3B0aW9uYWwgYHJlc291cmNlYCBvciBgcmVmZXJlbmNlYC5cbiAgbGluazogJ2xpbmsnLFxuXG4gIC8vIFdob2xlIHBhcmFncmFwaDpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gYWxwaGFcbiAgLy8gYnJhdm8uXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyB0ZXh0LlxuICBwYXJhZ3JhcGg6ICdwYXJhZ3JhcGgnLFxuXG4gIC8vIEEgcmVmZXJlbmNlIChgW2FscGhhXWAgb3IgYFtdYCkuXG4gIC8vIEluY2x1ZGVzIGByZWZlcmVuY2VNYXJrZXJgIGFuZCBhbiBvcHRpb25hbCBgcmVmZXJlbmNlU3RyaW5nYC5cbiAgcmVmZXJlbmNlOiAncmVmZXJlbmNlJyxcblxuICAvLyBBIHJlZmVyZW5jZSBtYXJrZXIgKGBbYCBvciBgXWApLlxuICByZWZlcmVuY2VNYXJrZXI6ICdyZWZlcmVuY2VNYXJrZXInLFxuXG4gIC8vIFJlZmVyZW5jZSB0ZXh0IChgYWxwaGFgKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICByZWZlcmVuY2VTdHJpbmc6ICdyZWZlcmVuY2VTdHJpbmcnLFxuXG4gIC8vIEEgcmVzb3VyY2UgKGAoaHR0cHM6Ly9leGFtcGxlLmNvbSBcImFscGhhXCIpYCkuXG4gIC8vIEluY2x1ZGVzIGByZXNvdXJjZU1hcmtlcmAsIGFuIG9wdGlvbmFsIGByZXNvdXJjZURlc3RpbmF0aW9uYCB3aXRoIGFuIG9wdGlvbmFsXG4gIC8vIGB3aGl0ZXNwYWNlYCBhbmQgYHJlc291cmNlVGl0bGVgLlxuICByZXNvdXJjZTogJ3Jlc291cmNlJyxcblxuICAvLyBBIHJlc291cmNlIGRlc3RpbmF0aW9uIChgaHR0cHM6Ly9leGFtcGxlLmNvbWApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxgIG9yIGByZXNvdXJjZURlc3RpbmF0aW9uUmF3YC5cbiAgcmVzb3VyY2VEZXN0aW5hdGlvbjogJ3Jlc291cmNlRGVzdGluYXRpb24nLFxuXG4gIC8vIEEgbGl0ZXJhbCByZXNvdXJjZSBkZXN0aW5hdGlvbiAoYDxodHRwczovL2V4YW1wbGUuY29tPmApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXJgIGFuZCBvcHRpb25hbGx5XG4gIC8vIGByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nYC5cbiAgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWw6ICdyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbCcsXG5cbiAgLy8gQSByZXNvdXJjZSBkZXN0aW5hdGlvbiBtYXJrZXIgKGA8YCBvciBgPmApLlxuICByZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcjogJ3Jlc291cmNlRGVzdGluYXRpb25MaXRlcmFsTWFya2VyJyxcblxuICAvLyBBIHJhdyByZXNvdXJjZSBkZXN0aW5hdGlvbiAoYGh0dHBzOi8vZXhhbXBsZS5jb21gKS5cbiAgLy8gSW5jbHVkZXMgYHJlc291cmNlRGVzdGluYXRpb25TdHJpbmdgLlxuICByZXNvdXJjZURlc3RpbmF0aW9uUmF3OiAncmVzb3VyY2VEZXN0aW5hdGlvblJhdycsXG5cbiAgLy8gUmVzb3VyY2UgZGVzdGluYXRpb24gdGV4dCAoYGh0dHBzOi8vZXhhbXBsZS5jb21gKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOiAncmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZycsXG5cbiAgLy8gQSByZXNvdXJjZSBtYXJrZXIgKGAoYCBvciBgKWApLlxuICByZXNvdXJjZU1hcmtlcjogJ3Jlc291cmNlTWFya2VyJyxcblxuICAvLyBBIHJlc291cmNlIHRpdGxlIChgXCJhbHBoYVwiYCwgYCdhbHBoYSdgLCBvciBgKGFscGhhKWApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VUaXRsZU1hcmtlcmAgYW5kIG9wdGlvbmFsbHkgYHJlc291cmNlVGl0bGVTdHJpbmdgLlxuICByZXNvdXJjZVRpdGxlOiAncmVzb3VyY2VUaXRsZScsXG5cbiAgLy8gQSByZXNvdXJjZSB0aXRsZSBtYXJrZXIgKGBcImAsIGAnYCwgYChgLCBvciBgKWApLlxuICByZXNvdXJjZVRpdGxlTWFya2VyOiAncmVzb3VyY2VUaXRsZU1hcmtlcicsXG5cbiAgLy8gUmVzb3VyY2UgZGVzdGluYXRpb24gdGl0bGUgKGBhbHBoYWApLlxuICAvLyBJbmNsdWRlcyBzdHJpbmcuXG4gIHJlc291cmNlVGl0bGVTdHJpbmc6ICdyZXNvdXJjZVRpdGxlU3RyaW5nJyxcblxuICAvLyBXaG9sZSBzZXRleHQgaGVhZGluZzpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gYWxwaGFcbiAgLy8gYnJhdm9cbiAgLy8gPT09PT1cbiAgLy8gYGBgXG4gIC8vXG4gIC8vIEluY2x1ZGVzIGBzZXRleHRIZWFkaW5nVGV4dGAsIGBsaW5lRW5kaW5nYCwgYGxpbmVQcmVmaXhgLCBhbmRcbiAgLy8gYHNldGV4dEhlYWRpbmdMaW5lYC5cbiAgc2V0ZXh0SGVhZGluZzogJ3NldGV4dEhlYWRpbmcnLFxuXG4gIC8vIENvbnRlbnQgaW4gYSBzZXRleHQgaGVhZGluZyAoYGFscGhhXFxuYnJhdm9gKS5cbiAgLy8gSW5jbHVkZXMgdGV4dC5cbiAgc2V0ZXh0SGVhZGluZ1RleHQ6ICdzZXRleHRIZWFkaW5nVGV4dCcsXG5cbiAgLy8gVW5kZXJsaW5lIGluIGEgc2V0ZXh0IGhlYWRpbmcsIGluY2x1ZGluZyB3aGl0ZXNwYWNlIHN1ZmZpeCAoYD09YCkuXG4gIC8vIEluY2x1ZGVzIGBzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlYC5cbiAgc2V0ZXh0SGVhZGluZ0xpbmU6ICdzZXRleHRIZWFkaW5nTGluZScsXG5cbiAgLy8gU2VxdWVuY2Ugb2YgZXF1YWxzIG9yIGRhc2ggY2hhcmFjdGVycyBpbiB1bmRlcmxpbmUgaW4gYSBzZXRleHQgaGVhZGluZyAoYC1gKS5cbiAgc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZTogJ3NldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UnLFxuXG4gIC8vIFN0cm9uZyAoYCoqYWxwaGEqKmApLlxuICAvLyBJbmNsdWRlcyBgc3Ryb25nU2VxdWVuY2VgIGFuZCBgc3Ryb25nVGV4dGAuXG4gIHN0cm9uZzogJ3N0cm9uZycsXG5cbiAgLy8gU2VxdWVuY2Ugb2Ygc3Ryb25nIG1hcmtlcnMgKGAqKmAgb3IgYF9fYCkuXG4gIHN0cm9uZ1NlcXVlbmNlOiAnc3Ryb25nU2VxdWVuY2UnLFxuXG4gIC8vIFN0cm9uZyB0ZXh0IChgYWxwaGFgKS5cbiAgLy8gSW5jbHVkZXMgdGV4dC5cbiAgc3Ryb25nVGV4dDogJ3N0cm9uZ1RleHQnLFxuXG4gIC8vIFdob2xlIHRoZW1hdGljIGJyZWFrOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyAqICogKlxuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYHRoZW1hdGljQnJlYWtTZXF1ZW5jZWAgYW5kIGB3aGl0ZXNwYWNlYC5cbiAgdGhlbWF0aWNCcmVhazogJ3RoZW1hdGljQnJlYWsnLFxuXG4gIC8vIEEgc2VxdWVuY2Ugb2Ygb25lIG9yIG1vcmUgdGhlbWF0aWMgYnJlYWsgbWFya2VycyAoYCoqKmApLlxuICB0aGVtYXRpY0JyZWFrU2VxdWVuY2U6ICd0aGVtYXRpY0JyZWFrU2VxdWVuY2UnLFxuXG4gIC8vIFdob2xlIGJsb2NrIHF1b3RlOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyA+IGFcbiAgLy8gPlxuICAvLyA+IGJcbiAgLy8gYGBgXG4gIC8vXG4gIC8vIEluY2x1ZGVzIGBibG9ja1F1b3RlUHJlZml4YCBhbmQgZmxvdy5cbiAgYmxvY2tRdW90ZTogJ2Jsb2NrUXVvdGUnLFxuICAvLyBUaGUgYD5gIG9yIGA+IGAgb2YgYSBibG9jayBxdW90ZS5cbiAgYmxvY2tRdW90ZVByZWZpeDogJ2Jsb2NrUXVvdGVQcmVmaXgnLFxuICAvLyBUaGUgYD5gIG9mIGEgYmxvY2sgcXVvdGUgcHJlZml4LlxuICBibG9ja1F1b3RlTWFya2VyOiAnYmxvY2tRdW90ZU1hcmtlcicsXG4gIC8vIFRoZSBvcHRpb25hbCBgIGAgb2YgYSBibG9jayBxdW90ZSBwcmVmaXguXG4gIGJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlOiAnYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UnLFxuXG4gIC8vIFdob2xlIHVub3JkZXJlZCBsaXN0OlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyAtIGFcbiAgLy8gICBiXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgbGlzdEl0ZW1QcmVmaXhgLCBmbG93LCBhbmQgb3B0aW9uYWxseSAgYGxpc3RJdGVtSW5kZW50YCBvbiBmdXJ0aGVyXG4gIC8vIGxpbmVzLlxuICBsaXN0T3JkZXJlZDogJ2xpc3RPcmRlcmVkJyxcblxuICAvLyBXaG9sZSBvcmRlcmVkIGxpc3Q6XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vIDEuIGFcbiAgLy8gICAgYlxuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGxpc3RJdGVtUHJlZml4YCwgZmxvdywgYW5kIG9wdGlvbmFsbHkgIGBsaXN0SXRlbUluZGVudGAgb24gZnVydGhlclxuICAvLyBsaW5lcy5cbiAgbGlzdFVub3JkZXJlZDogJ2xpc3RVbm9yZGVyZWQnLFxuXG4gIC8vIFRoZSBpbmRlbnQgb2YgZnVydGhlciBsaXN0IGl0ZW0gbGluZXMuXG4gIGxpc3RJdGVtSW5kZW50OiAnbGlzdEl0ZW1JbmRlbnQnLFxuXG4gIC8vIEEgbWFya2VyLCBhcyBpbiwgYCpgLCBgK2AsIGAtYCwgYC5gLCBvciBgKWAuXG4gIGxpc3RJdGVtTWFya2VyOiAnbGlzdEl0ZW1NYXJrZXInLFxuXG4gIC8vIFRoZSB0aGluZyB0aGF0IHN0YXJ0cyBhIGxpc3QgaXRlbSwgc3VjaCBhcyBgMS4gYC5cbiAgLy8gSW5jbHVkZXMgYGxpc3RJdGVtVmFsdWVgIGlmIG9yZGVyZWQsIGBsaXN0SXRlbU1hcmtlcmAsIGFuZFxuICAvLyBgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlYCAodW5sZXNzIGZvbGxvd2VkIGJ5IGEgbGluZSBlbmRpbmcpLlxuICBsaXN0SXRlbVByZWZpeDogJ2xpc3RJdGVtUHJlZml4JyxcblxuICAvLyBUaGUgd2hpdGVzcGFjZSBhZnRlciBhIG1hcmtlci5cbiAgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlOiAnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJyxcblxuICAvLyBUaGUgbnVtZXJpY2FsIHZhbHVlIG9mIGFuIG9yZGVyZWQgaXRlbS5cbiAgbGlzdEl0ZW1WYWx1ZTogJ2xpc3RJdGVtVmFsdWUnLFxuXG4gIC8vIEludGVybmFsIHR5cGVzIHVzZWQgZm9yIHN1YnRva2VuaXplcnMsIGNvbXBpbGVkIGF3YXlcbiAgY2h1bmtEb2N1bWVudDogJ2NodW5rRG9jdW1lbnQnLFxuICBjaHVua0NvbnRlbnQ6ICdjaHVua0NvbnRlbnQnLFxuICBjaHVua0Zsb3c6ICdjaHVua0Zsb3cnLFxuICBjaHVua1RleHQ6ICdjaHVua1RleHQnLFxuICBjaHVua1N0cmluZzogJ2NodW5rU3RyaW5nJ1xufSlcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/types.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/values.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/values.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"values\": () => (/* binding */ values)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * While micromark works based on character codes, this module includes the\n * string versions of ’em.\n * The C0 block, except for LF, CR, HT, and w/ the replacement character added,\n * are available here.\n */\nconst values = /** @type {const} */ ({\n ht: '\\t',\n lf: '\\n',\n cr: '\\r',\n space: ' ',\n exclamationMark: '!',\n quotationMark: '\"',\n numberSign: '#',\n dollarSign: '$',\n percentSign: '%',\n ampersand: '&',\n apostrophe: \"'\",\n leftParenthesis: '(',\n rightParenthesis: ')',\n asterisk: '*',\n plusSign: '+',\n comma: ',',\n dash: '-',\n dot: '.',\n slash: '/',\n digit0: '0',\n digit1: '1',\n digit2: '2',\n digit3: '3',\n digit4: '4',\n digit5: '5',\n digit6: '6',\n digit7: '7',\n digit8: '8',\n digit9: '9',\n colon: ':',\n semicolon: ';',\n lessThan: '<',\n equalsTo: '=',\n greaterThan: '>',\n questionMark: '?',\n atSign: '@',\n uppercaseA: 'A',\n uppercaseB: 'B',\n uppercaseC: 'C',\n uppercaseD: 'D',\n uppercaseE: 'E',\n uppercaseF: 'F',\n uppercaseG: 'G',\n uppercaseH: 'H',\n uppercaseI: 'I',\n uppercaseJ: 'J',\n uppercaseK: 'K',\n uppercaseL: 'L',\n uppercaseM: 'M',\n uppercaseN: 'N',\n uppercaseO: 'O',\n uppercaseP: 'P',\n uppercaseQ: 'Q',\n uppercaseR: 'R',\n uppercaseS: 'S',\n uppercaseT: 'T',\n uppercaseU: 'U',\n uppercaseV: 'V',\n uppercaseW: 'W',\n uppercaseX: 'X',\n uppercaseY: 'Y',\n uppercaseZ: 'Z',\n leftSquareBracket: '[',\n backslash: '\\\\',\n rightSquareBracket: ']',\n caret: '^',\n underscore: '_',\n graveAccent: '`',\n lowercaseA: 'a',\n lowercaseB: 'b',\n lowercaseC: 'c',\n lowercaseD: 'd',\n lowercaseE: 'e',\n lowercaseF: 'f',\n lowercaseG: 'g',\n lowercaseH: 'h',\n lowercaseI: 'i',\n lowercaseJ: 'j',\n lowercaseK: 'k',\n lowercaseL: 'l',\n lowercaseM: 'm',\n lowercaseN: 'n',\n lowercaseO: 'o',\n lowercaseP: 'p',\n lowercaseQ: 'q',\n lowercaseR: 'r',\n lowercaseS: 's',\n lowercaseT: 't',\n lowercaseU: 'u',\n lowercaseV: 'v',\n lowercaseW: 'w',\n lowercaseX: 'x',\n lowercaseY: 'y',\n lowercaseZ: 'z',\n leftCurlyBrace: '{',\n verticalBar: '|',\n rightCurlyBrace: '}',\n tilde: '~',\n replacementCharacter: '�'\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC92YWx1ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywwQkFBMEIsT0FBTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1zeW1ib2wvdmFsdWVzLmpzPzBjNGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIG1vZHVsZSBpcyBjb21waWxlZCBhd2F5IVxuICpcbiAqIFdoaWxlIG1pY3JvbWFyayB3b3JrcyBiYXNlZCBvbiBjaGFyYWN0ZXIgY29kZXMsIHRoaXMgbW9kdWxlIGluY2x1ZGVzIHRoZVxuICogc3RyaW5nIHZlcnNpb25zIG9mIOKAmWVtLlxuICogVGhlIEMwIGJsb2NrLCBleGNlcHQgZm9yIExGLCBDUiwgSFQsIGFuZCB3LyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGFkZGVkLFxuICogYXJlIGF2YWlsYWJsZSBoZXJlLlxuICovXG5leHBvcnQgY29uc3QgdmFsdWVzID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgaHQ6ICdcXHQnLFxuICBsZjogJ1xcbicsXG4gIGNyOiAnXFxyJyxcbiAgc3BhY2U6ICcgJyxcbiAgZXhjbGFtYXRpb25NYXJrOiAnIScsXG4gIHF1b3RhdGlvbk1hcms6ICdcIicsXG4gIG51bWJlclNpZ246ICcjJyxcbiAgZG9sbGFyU2lnbjogJyQnLFxuICBwZXJjZW50U2lnbjogJyUnLFxuICBhbXBlcnNhbmQ6ICcmJyxcbiAgYXBvc3Ryb3BoZTogXCInXCIsXG4gIGxlZnRQYXJlbnRoZXNpczogJygnLFxuICByaWdodFBhcmVudGhlc2lzOiAnKScsXG4gIGFzdGVyaXNrOiAnKicsXG4gIHBsdXNTaWduOiAnKycsXG4gIGNvbW1hOiAnLCcsXG4gIGRhc2g6ICctJyxcbiAgZG90OiAnLicsXG4gIHNsYXNoOiAnLycsXG4gIGRpZ2l0MDogJzAnLFxuICBkaWdpdDE6ICcxJyxcbiAgZGlnaXQyOiAnMicsXG4gIGRpZ2l0MzogJzMnLFxuICBkaWdpdDQ6ICc0JyxcbiAgZGlnaXQ1OiAnNScsXG4gIGRpZ2l0NjogJzYnLFxuICBkaWdpdDc6ICc3JyxcbiAgZGlnaXQ4OiAnOCcsXG4gIGRpZ2l0OTogJzknLFxuICBjb2xvbjogJzonLFxuICBzZW1pY29sb246ICc7JyxcbiAgbGVzc1RoYW46ICc8JyxcbiAgZXF1YWxzVG86ICc9JyxcbiAgZ3JlYXRlclRoYW46ICc+JyxcbiAgcXVlc3Rpb25NYXJrOiAnPycsXG4gIGF0U2lnbjogJ0AnLFxuICB1cHBlcmNhc2VBOiAnQScsXG4gIHVwcGVyY2FzZUI6ICdCJyxcbiAgdXBwZXJjYXNlQzogJ0MnLFxuICB1cHBlcmNhc2VEOiAnRCcsXG4gIHVwcGVyY2FzZUU6ICdFJyxcbiAgdXBwZXJjYXNlRjogJ0YnLFxuICB1cHBlcmNhc2VHOiAnRycsXG4gIHVwcGVyY2FzZUg6ICdIJyxcbiAgdXBwZXJjYXNlSTogJ0knLFxuICB1cHBlcmNhc2VKOiAnSicsXG4gIHVwcGVyY2FzZUs6ICdLJyxcbiAgdXBwZXJjYXNlTDogJ0wnLFxuICB1cHBlcmNhc2VNOiAnTScsXG4gIHVwcGVyY2FzZU46ICdOJyxcbiAgdXBwZXJjYXNlTzogJ08nLFxuICB1cHBlcmNhc2VQOiAnUCcsXG4gIHVwcGVyY2FzZVE6ICdRJyxcbiAgdXBwZXJjYXNlUjogJ1InLFxuICB1cHBlcmNhc2VTOiAnUycsXG4gIHVwcGVyY2FzZVQ6ICdUJyxcbiAgdXBwZXJjYXNlVTogJ1UnLFxuICB1cHBlcmNhc2VWOiAnVicsXG4gIHVwcGVyY2FzZVc6ICdXJyxcbiAgdXBwZXJjYXNlWDogJ1gnLFxuICB1cHBlcmNhc2VZOiAnWScsXG4gIHVwcGVyY2FzZVo6ICdaJyxcbiAgbGVmdFNxdWFyZUJyYWNrZXQ6ICdbJyxcbiAgYmFja3NsYXNoOiAnXFxcXCcsXG4gIHJpZ2h0U3F1YXJlQnJhY2tldDogJ10nLFxuICBjYXJldDogJ14nLFxuICB1bmRlcnNjb3JlOiAnXycsXG4gIGdyYXZlQWNjZW50OiAnYCcsXG4gIGxvd2VyY2FzZUE6ICdhJyxcbiAgbG93ZXJjYXNlQjogJ2InLFxuICBsb3dlcmNhc2VDOiAnYycsXG4gIGxvd2VyY2FzZUQ6ICdkJyxcbiAgbG93ZXJjYXNlRTogJ2UnLFxuICBsb3dlcmNhc2VGOiAnZicsXG4gIGxvd2VyY2FzZUc6ICdnJyxcbiAgbG93ZXJjYXNlSDogJ2gnLFxuICBsb3dlcmNhc2VJOiAnaScsXG4gIGxvd2VyY2FzZUo6ICdqJyxcbiAgbG93ZXJjYXNlSzogJ2snLFxuICBsb3dlcmNhc2VMOiAnbCcsXG4gIGxvd2VyY2FzZU06ICdtJyxcbiAgbG93ZXJjYXNlTjogJ24nLFxuICBsb3dlcmNhc2VPOiAnbycsXG4gIGxvd2VyY2FzZVA6ICdwJyxcbiAgbG93ZXJjYXNlUTogJ3EnLFxuICBsb3dlcmNhc2VSOiAncicsXG4gIGxvd2VyY2FzZVM6ICdzJyxcbiAgbG93ZXJjYXNlVDogJ3QnLFxuICBsb3dlcmNhc2VVOiAndScsXG4gIGxvd2VyY2FzZVY6ICd2JyxcbiAgbG93ZXJjYXNlVzogJ3cnLFxuICBsb3dlcmNhc2VYOiAneCcsXG4gIGxvd2VyY2FzZVk6ICd5JyxcbiAgbG93ZXJjYXNlWjogJ3onLFxuICBsZWZ0Q3VybHlCcmFjZTogJ3snLFxuICB2ZXJ0aWNhbEJhcjogJ3wnLFxuICByaWdodEN1cmx5QnJhY2U6ICd9JyxcbiAgdGlsZGU6ICd+JyxcbiAgcmVwbGFjZW1lbnRDaGFyYWN0ZXI6ICfvv70nXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/values.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/constructs.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/constructs.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attentionMarkers\": () => (/* binding */ attentionMarkers),\n/* harmony export */ \"contentInitial\": () => (/* binding */ contentInitial),\n/* harmony export */ \"disable\": () => (/* binding */ disable),\n/* harmony export */ \"document\": () => (/* binding */ document),\n/* harmony export */ \"flow\": () => (/* binding */ flow),\n/* harmony export */ \"flowInitial\": () => (/* binding */ flowInitial),\n/* harmony export */ \"insideSpan\": () => (/* binding */ insideSpan),\n/* harmony export */ \"string\": () => (/* binding */ string),\n/* harmony export */ \"text\": () => (/* binding */ text)\n/* harmony export */ });\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/list.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/block-quote.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/definition.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-indented.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/character-reference.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/character-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/attention.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/autolink.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-text.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./initialize/text.js */ \"../../../node_modules/micromark/dev/lib/initialize/text.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n\n/** @satisfies {Extension['document']} */\nconst document = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.plusSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit0]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit1]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit2]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit3]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit4]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit5]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit6]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit7]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit8]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit9]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__.blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nconst contentInitial = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nconst flowInitial = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nconst flow = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__.headingAtx,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__.htmlFlow,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.equalsTo]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nconst string = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nconst text = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.exclamationMark]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__.labelStartImage,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__.autolink, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__.htmlText],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__.labelStartLink,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__.hardBreakEscape, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__.labelEnd,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__.codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nconst insideSpan = {null: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__.resolver]}\n\n/** @satisfies {Extension['attentionMarkers']} */\nconst attentionMarkers = {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk, micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]}\n\n/** @satisfies {Extension['disable']} */\nconst disable = {null: []}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NvbnN0cnVjdHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBdUJrQztBQUNrQjtBQUNROztBQUU1RCxnQkFBZ0IsdUJBQXVCO0FBQ2hDO0FBQ1AsR0FBRywwRUFBYyxHQUFHLDJEQUFJO0FBQ3hCLEdBQUcsMEVBQWMsR0FBRywyREFBSTtBQUN4QixHQUFHLHNFQUFVLEdBQUcsMkRBQUk7QUFDcEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsNkVBQWlCLEdBQUcsaUVBQVU7QUFDakM7O0FBRUEsZ0JBQWdCLDZCQUE2QjtBQUN0QztBQUNQLEdBQUcsbUZBQXVCLEdBQUcsaUVBQVU7QUFDdkM7O0FBRUEsZ0JBQWdCLDBCQUEwQjtBQUNuQztBQUNQLEdBQUcsK0VBQW1CLEdBQUcsbUVBQVk7QUFDckMsR0FBRyw4RUFBa0IsR0FBRyxtRUFBWTtBQUNwQyxHQUFHLHVFQUFXLEdBQUcsbUVBQVk7QUFDN0I7O0FBRUEsZ0JBQWdCLG1CQUFtQjtBQUM1QjtBQUNQLEdBQUcsNEVBQWdCLEdBQUcsaUVBQVU7QUFDaEMsR0FBRywwRUFBYyxHQUFHLG9FQUFhO0FBQ2pDLEdBQUcsc0VBQVUsSUFBSSxzRUFBZSxFQUFFLG9FQUFhO0FBQy9DLEdBQUcsMEVBQWMsR0FBRywrREFBUTtBQUM1QixHQUFHLDBFQUFjLEdBQUcsc0VBQWU7QUFDbkMsR0FBRyw0RUFBZ0IsR0FBRyxvRUFBYTtBQUNuQyxHQUFHLDZFQUFpQixHQUFHLGlFQUFVO0FBQ2pDLEdBQUcsdUVBQVcsR0FBRyxpRUFBVTtBQUMzQjs7QUFFQSxnQkFBZ0IscUJBQXFCO0FBQzlCO0FBQ1AsR0FBRywyRUFBZSxHQUFHLDBFQUFrQjtBQUN2QyxHQUFHLDJFQUFlLEdBQUcsdUVBQWU7QUFDcEM7O0FBRUEsZ0JBQWdCLG1CQUFtQjtBQUM1QjtBQUNQLEdBQUcsZ0ZBQW9CLEdBQUcsa0VBQVU7QUFDcEMsR0FBRywwRUFBYyxHQUFHLGtFQUFVO0FBQzlCLEdBQUcsd0ZBQTRCLEdBQUcsa0VBQVU7QUFDNUMsR0FBRyxpRkFBcUIsR0FBRyx1RUFBZTtBQUMxQyxHQUFHLDJFQUFlLEdBQUcsMEVBQWtCO0FBQ3ZDLEdBQUcsMEVBQWMsR0FBRyxpRUFBUztBQUM3QixHQUFHLDBFQUFjLElBQUksZ0VBQVEsRUFBRSxnRUFBUTtBQUN2QyxHQUFHLG1GQUF1QixHQUFHLHNFQUFjO0FBQzNDLEdBQUcsMkVBQWUsSUFBSSx1RUFBZSxFQUFFLHVFQUFlO0FBQ3RELEdBQUcsb0ZBQXdCLEdBQUcsZ0VBQVE7QUFDdEMsR0FBRyw0RUFBZ0IsR0FBRyxpRUFBUztBQUMvQixHQUFHLDZFQUFpQixHQUFHLGdFQUFRO0FBQy9COztBQUVBLGdCQUFnQix5QkFBeUI7QUFDbEMsb0JBQW9CLE9BQU8saUVBQVMsRUFBRSwwREFBVzs7QUFFeEQsZ0JBQWdCLCtCQUErQjtBQUN4QywwQkFBMEIsT0FBTywwRUFBYyxFQUFFLDRFQUFnQjs7QUFFeEUsZ0JBQWdCLHNCQUFzQjtBQUMvQixpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NvbnN0cnVjdHMuanM/ZDdiMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge1xuICBhdHRlbnRpb24sXG4gIGF1dG9saW5rLFxuICBibG9ja1F1b3RlLFxuICBjaGFyYWN0ZXJFc2NhcGUsXG4gIGNoYXJhY3RlclJlZmVyZW5jZSxcbiAgY29kZUZlbmNlZCxcbiAgY29kZUluZGVudGVkLFxuICBjb2RlVGV4dCxcbiAgZGVmaW5pdGlvbixcbiAgaGFyZEJyZWFrRXNjYXBlLFxuICBoZWFkaW5nQXR4LFxuICBodG1sRmxvdyxcbiAgaHRtbFRleHQsXG4gIGxhYmVsRW5kLFxuICBsYWJlbFN0YXJ0SW1hZ2UsXG4gIGxhYmVsU3RhcnRMaW5rLFxuICBsaW5lRW5kaW5nLFxuICBsaXN0LFxuICBzZXRleHRVbmRlcmxpbmUsXG4gIHRoZW1hdGljQnJlYWtcbn0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7cmVzb2x2ZXIgYXMgcmVzb2x2ZVRleHR9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkb2N1bWVudCddfSAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50ID0ge1xuICBbY29kZXMuYXN0ZXJpc2tdOiBsaXN0LFxuICBbY29kZXMucGx1c1NpZ25dOiBsaXN0LFxuICBbY29kZXMuZGFzaF06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDBdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQxXTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0Ml06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDNdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQ0XTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0NV06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDZdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQ3XTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0OF06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDldOiBsaXN0LFxuICBbY29kZXMuZ3JlYXRlclRoYW5dOiBibG9ja1F1b3RlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2NvbnRlbnRJbml0aWFsJ119ICovXG5leHBvcnQgY29uc3QgY29udGVudEluaXRpYWwgPSB7XG4gIFtjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldF06IGRlZmluaXRpb25cbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZmxvd0luaXRpYWwnXX0gKi9cbmV4cG9ydCBjb25zdCBmbG93SW5pdGlhbCA9IHtcbiAgW2NvZGVzLmhvcml6b250YWxUYWJdOiBjb2RlSW5kZW50ZWQsXG4gIFtjb2Rlcy52aXJ0dWFsU3BhY2VdOiBjb2RlSW5kZW50ZWQsXG4gIFtjb2Rlcy5zcGFjZV06IGNvZGVJbmRlbnRlZFxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydmbG93J119ICovXG5leHBvcnQgY29uc3QgZmxvdyA9IHtcbiAgW2NvZGVzLm51bWJlclNpZ25dOiBoZWFkaW5nQXR4LFxuICBbY29kZXMuYXN0ZXJpc2tdOiB0aGVtYXRpY0JyZWFrLFxuICBbY29kZXMuZGFzaF06IFtzZXRleHRVbmRlcmxpbmUsIHRoZW1hdGljQnJlYWtdLFxuICBbY29kZXMubGVzc1RoYW5dOiBodG1sRmxvdyxcbiAgW2NvZGVzLmVxdWFsc1RvXTogc2V0ZXh0VW5kZXJsaW5lLFxuICBbY29kZXMudW5kZXJzY29yZV06IHRoZW1hdGljQnJlYWssXG4gIFtjb2Rlcy5ncmF2ZUFjY2VudF06IGNvZGVGZW5jZWQsXG4gIFtjb2Rlcy50aWxkZV06IGNvZGVGZW5jZWRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnc3RyaW5nJ119ICovXG5leHBvcnQgY29uc3Qgc3RyaW5nID0ge1xuICBbY29kZXMuYW1wZXJzYW5kXTogY2hhcmFjdGVyUmVmZXJlbmNlLFxuICBbY29kZXMuYmFja3NsYXNoXTogY2hhcmFjdGVyRXNjYXBlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ3RleHQnXX0gKi9cbmV4cG9ydCBjb25zdCB0ZXh0ID0ge1xuICBbY29kZXMuY2FycmlhZ2VSZXR1cm5dOiBsaW5lRW5kaW5nLFxuICBbY29kZXMubGluZUZlZWRdOiBsaW5lRW5kaW5nLFxuICBbY29kZXMuY2FycmlhZ2VSZXR1cm5MaW5lRmVlZF06IGxpbmVFbmRpbmcsXG4gIFtjb2Rlcy5leGNsYW1hdGlvbk1hcmtdOiBsYWJlbFN0YXJ0SW1hZ2UsXG4gIFtjb2Rlcy5hbXBlcnNhbmRdOiBjaGFyYWN0ZXJSZWZlcmVuY2UsXG4gIFtjb2Rlcy5hc3Rlcmlza106IGF0dGVudGlvbixcbiAgW2NvZGVzLmxlc3NUaGFuXTogW2F1dG9saW5rLCBodG1sVGV4dF0sXG4gIFtjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldF06IGxhYmVsU3RhcnRMaW5rLFxuICBbY29kZXMuYmFja3NsYXNoXTogW2hhcmRCcmVha0VzY2FwZSwgY2hhcmFjdGVyRXNjYXBlXSxcbiAgW2NvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldF06IGxhYmVsRW5kLFxuICBbY29kZXMudW5kZXJzY29yZV06IGF0dGVudGlvbixcbiAgW2NvZGVzLmdyYXZlQWNjZW50XTogY29kZVRleHRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnaW5zaWRlU3BhbiddfSAqL1xuZXhwb3J0IGNvbnN0IGluc2lkZVNwYW4gPSB7bnVsbDogW2F0dGVudGlvbiwgcmVzb2x2ZVRleHRdfVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydhdHRlbnRpb25NYXJrZXJzJ119ICovXG5leHBvcnQgY29uc3QgYXR0ZW50aW9uTWFya2VycyA9IHtudWxsOiBbY29kZXMuYXN0ZXJpc2ssIGNvZGVzLnVuZGVyc2NvcmVdfVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkaXNhYmxlJ119ICovXG5leHBvcnQgY29uc3QgZGlzYWJsZSA9IHtudWxsOiBbXX1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/constructs.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/create-tokenizer.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/create-tokenizer.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createTokenizer\": () => (/* binding */ createTokenizer)\n/* harmony export */ });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ \"../../../node_modules/debug/src/browser.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-resolve-all */ \"../../../node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\n\n\n\n\n\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_0__('micromark')\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nfunction createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from ? Object.assign({}, from) : {line: 1, column: 1, offset: 0},\n {_index: 0, _bufferIndex: -1}\n )\n /** @type {Record} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {interrupt: true})\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n code: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.push)(chunks, slice)\n\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n return []\n }\n\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__.resolveAll)(resolveAllConstructs, context.events, context)\n\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {line, column, offset, _index, _bufferIndex}\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n debug('position: define skip: `%j`', point)\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(consumed === true, 'expected character to be consumed')\n consumed = undefined\n debug('main: passing `%s` to %s', code, state && state.name)\n expectedCode = code\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof state === 'function', 'expected state')\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected given code to equal expected code')\n\n debug('consume: `%s`', code)\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n consumed === undefined,\n 'expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n code === null\n ? context.events.length === 0 ||\n context.events[context.events.length - 1][0] === 'exit'\n : context.events[context.events.length - 1][0] === 'enter',\n 'expected last token to be open'\n )\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n point.line++\n point.column = 1\n point.offset += code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed ? 2 : 1\n accountForPotentialSkip()\n debug('position: after eol: `%j`', point)\n } else if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string')\n debug('enter: `%s`', type)\n\n context.events.push(['enter', token, context])\n\n stack.push(token)\n\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string')\n\n const token = stack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(token, 'cannot close w/o open tokens')\n token.end = now()\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type === token.type, 'expected exit token to match current token')\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n !(\n token.start._index === token.end._index &&\n token.start._bufferIndex === token.end._bufferIndex\n ),\n 'expected non-empty token (`' + type + '`)'\n )\n\n debug('exit: `%s`', token.type)\n context.events.push(['exit', token, context])\n\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(bogusState, 'expected `bogusState` to be given')\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n context.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code')\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code')\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n construct.partial ||\n context.events.length === 0 ||\n context.events[context.events.length - 1][0] === 'exit',\n 'expected last token to end'\n )\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n\n return {restore, from: startEventsIndex}\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n debug('position: restore: `%j`', point)\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n let view\n\n if (startIndex === endIndex) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(endBufferIndex > -1, 'expected non-negative end buffer index')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex > -1, 'expected non-negative start buffer index')\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex === 0, 'expected `startBufferIndex` to be `0`')\n view.shift()\n }\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturn: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lineFeed: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab: {\n value = expandTabs ? micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space : micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.ht\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace: {\n if (!expandTabs && atTab) continue\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space\n\n break\n }\n\n default: {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof chunk === 'number', 'expected number')\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab\n result.push(value)\n }\n\n return result.join('')\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NyZWF0ZS10b2tlbml6ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsaURBQWlEO0FBQzlELGFBQWEsNkNBQTZDO0FBQzFELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsZ0RBQWdEO0FBQzdEOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGNBQWMsU0FBUztBQUN2QixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsTUFBTTtBQUNqQixhQUFhO0FBQ2I7O0FBRStCO0FBQzRCO0FBQ1I7QUFDRTtBQUNEO0FBQ0U7QUFDZjs7QUFFdkMsY0FBYyxrQ0FBVzs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsa0JBQWtCO0FBQzdCLFdBQVcsb0RBQW9EO0FBQy9ELGFBQWE7QUFDYjtBQUNPO0FBQ1AsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsMkJBQTJCLFdBQVcsOEJBQThCO0FBQ3BFLEtBQUs7QUFDTDtBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0EsYUFBYSxrQkFBa0I7QUFDL0I7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsZ0JBQWdCO0FBQ3BFOztBQUVBO0FB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QjtBQUMvQjtBQUNBLGtCQUFrQix5RUFBWTs7QUFFOUI7QUFDQTs7QUFFQTtBQUNBLFVBQVUsOENBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLCtFQUFtQjtBQUN6QztBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NyZWF0ZS10b2tlbml6ZXIuanM/YTMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0UmVjb3JkfSBDb25zdHJ1Y3RSZWNvcmRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlQ29udGV4dH0gUGFyc2VDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgUmVzdG9yZVxuICogQHJldHVybnMge3ZvaWR9XG4gKlxuICogQHR5cGVkZWYgSW5mb1xuICogQHByb3BlcnR5IHtSZXN0b3JlfSByZXN0b3JlXG4gKiBAcHJvcGVydHkge251bWJlcn0gZnJvbVxuICpcbiAqIEBjYWxsYmFjayBSZXR1cm5IYW5kbGVcbiAqICAgSGFuZGxlIGEgc3VjY2Vzc2Z1bCBydW4uXG4gKiBAcGFyYW0ge0NvbnN0cnVjdH0gY29uc3RydWN0XG4gKiBAcGFyYW0ge0luZm99IGluZm9cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbmltcG9ydCBjcmVhdGVEZWJ1ZyBmcm9tICdkZWJ1ZydcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7cmVzb2x2ZUFsbH0gZnJvbSAnbWljcm9tYXJrLXV0aWwtcmVzb2x2ZS1hbGwnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3ZhbHVlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3ZhbHVlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG5jb25zdCBkZWJ1ZyA9IGNyZWF0ZURlYnVnKCdtaWNyb21hcmsnKVxuXG4vKipcbiAqIENyZWF0ZSBhIHRva2VuaXplci5cbiAqIFRva2VuaXplcnMgZGVhbCB3aXRoIG9uZSB0eXBlIG9mIGRhdGEgKGUuZy4sIGNvbnRhaW5lcnMsIGZsb3csIHRleHQpLlxuICogVGhlIHBhcnNlciBpcyB0aGUgb2JqZWN0IGRlYWxpbmcgd2l0aCBpdCBhbGwuXG4gKiBgaW5pdGlhbGl6ZWAgd29ya3MgbGlrZSBvdGhlciBjb25zdHJ1Y3RzLCBleGNlcHQgdGhhdCBvbmx5IGl0cyBgdG9rZW5pemVgXG4gKiBmdW5jdGlvbiBpcyB1c2VkLCBpbiB3aGljaCBjYXNlIGl0IGRvZXNu4oCZdCByZWNlaXZlIGFuIGBva2Agb3IgYG5va2AuXG4gKiBgZnJvbWAgY2FuIGJlIGdpdmVuIHRvIHNldCB0aGUgcG9pbnQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGFsdGhvdWdoXG4gKiB3aGVuIGZ1cnRoZXIgbGluZXMgYXJlIGluZGVudGVkLCB0aGV5IG11c3QgYmUgc2V0IHdpdGggYGRlZmluZVNraXBgLlxuICpcbiAqIEBwYXJhbSB7UGFyc2VDb250ZXh0fSBwYXJzZXJcbiAqIEBwYXJhbSB7SW5pdGlhbENvbnN0cnVjdH0gaW5pdGlhbGl6ZVxuICogQHBhcmFtIHtPbWl0PFBvaW50LCAnX2J1ZmZlckluZGV4JyB8ICdfaW5kZXgnPiB8IHVuZGVmaW5lZH0gW2Zyb21dXG4gKiBAcmV0dXJucyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbGl6ZSwgZnJvbSkge1xuICAvKiogQHR5cGUge1BvaW50fSAqL1xuICBsZXQgcG9pbnQgPSBPYmplY3QuYXNzaWduKFxuICAgIGZyb20gPyBPYmplY3QuYXNzaWduKHt9LCBmcm9tKSA6IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH0sXG4gICAge19pbmRleDogMCwgX2J1ZmZlckluZGV4OiAtMX1cbiAgKVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGNvbHVtblN0YXJ0ID0ge31cbiAgLyoqIEB0eXBlIHtBcnJheTxDb25zdHJ1Y3Q+fSAqL1xuICBjb25zdCByZXNvbHZlQWxsQ29uc3RydWN0cyA9IFtdXG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgY2h1bmtzID0gW11cbiAgLyoqIEB0eXBlIHtBcnJheTxUb2tlbj59ICovXG4gIGxldCBzdGFjayA9IFtdXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnN1bWVkID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBUb29scyB1c2VkIGZvciB0b2tlbml6aW5nLlxuICAgKlxuICAgKiBAdHlwZSB7RWZmZWN0c31cbiAgICovXG4gIGNvbnN0IGVmZmVjdHMgPSB7XG4gICAgY29uc3VtZSxcbiAgICBlbnRlcixcbiAgICBleGl0LFxuICAgIGF0dGVtcHQ6IGNvbnN0cnVjdEZhY3Rvcnkob25zdWNjZXNzZnVsY29uc3RydWN0KSxcbiAgICBjaGVjazogY29uc3RydWN0RmFjdG9yeShvbnN1Y2Nlc3NmdWxjaGVjayksXG4gICAgaW50ZXJydXB0OiBjb25zdHJ1Y3RGYWN0b3J5KG9uc3VjY2Vzc2Z1bGNoZWNrLCB7aW50ZXJydXB0OiB0cnVlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZSBhbmQgdG9vbHMgZm9yIHJlc29sdmluZyBhbmQgc2VyaWFsaXppbmcuXG4gICAqXG4gICAqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHR9XG4gICAqL1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHByZXZpb3VzOiBjb2Rlcy5lb2YsXG4gICAgY29kZTogY29kZXMuZW9mLFxuICAgIGNvbnRhaW5lclN0YXRlOiB7fSxcbiAgICBldmVudHM6IFtdLFxuICAgIHBhcnNlcixcbiAgICBzbGljZVN0cmVhbSxcbiAgICBzbGljZVNlcmlhbGl6ZSxcbiAgICBub3csXG4gICAgZGVmaW5lU2tpcCxcbiAgICB3cml0ZVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHR5cGUge1N0YXRlIHwgdm9pZH1cbiAgICovXG4gIGxldCBzdGF0ZSA9IGluaXRpYWxpemUudG9rZW5pemUuY2FsbChjb250ZXh0LCBlZmZlY3RzKVxuXG4gIC8qKlxuICAgKiBUcmFjayB3aGljaCBjaGFyYWN0ZXIgd2UgZXhwZWN0IHRvIGJlIGNvbnN1bWVkLCB0byBjYXRjaCBidWdzLlxuICAgKlxuICAgKiBAdHlwZSB7Q29kZX1cbiAgICovXG4gIGxldCBleHBlY3RlZENvZGVcblxuICBpZiAoaW5pdGlhbGl6ZS5yZXNvbHZlQWxsKSB7XG4gICAgcmVzb2x2ZUFsbENvbnN0cnVjdHMucHVzaChpbml0aWFsaXplKVxuICB9XG5cbiAgcmV0dXJuIGNvbnRleHRcblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnd3JpdGUnXX0gKi9cbiAgZnVuY3Rpb24gd3JpdGUoc2xpY2UpIHtcbiAgICBjaHVua3MgPSBwdXNoKGNodW5rcywgc2xpY2UpXG5cbiAgICBtYWluKClcblxuICAgIC8vIEV4aXQgaWYgd2XigJlyZSBub3QgZG9uZSwgcmVzb2x2ZSBtaWdodCBjaGFuZ2Ugc3R1ZmYuXG4gICAgaWYgKGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0gIT09IGNvZGVzLmVvZikge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgYWRkUmVzdWx0KGluaXRpYWxpemUsIDApXG5cbiAgICAvLyBPdGhlcndpc2UsIHJlc29sdmUsIGFuZCBleGl0LlxuICAgIGNvbnRleHQuZXZlbnRzID0gcmVzb2x2ZUFsbChyZXNvbHZlQWxsQ29uc3RydWN0cywgY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG5cbiAgICByZXR1cm4gY29udGV4dC5ldmVudHNcbiAgfVxuXG4gIC8vXG4gIC8vIFRvb2xzLlxuICAvL1xuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0WydzbGljZVNlcmlhbGl6ZSddfSAqL1xuICBmdW5jdGlvbiBzbGljZVNlcmlhbGl6ZSh0b2tlbiwgZXhwYW5kVGFicykge1xuICAgIHJldHVybiBzZXJpYWxpemVDaHVua3Moc2xpY2VTdHJlYW0odG9rZW4pLCBleHBhbmRUYWJzKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU3RyZWFtJ119ICovXG4gIGZ1bmN0aW9uIHNsaWNlU3RyZWFtKHRva2VuKSB7XG4gICAgcmV0dXJuIHNsaWNlQ2h1bmtzKGNodW5rcywgdG9rZW4pXG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnbm93J119ICovXG4gIGZ1bmN0aW9uIG5vdygpIHtcbiAgICAvLyBUaGlzIGlzIGEgaG90IHBhdGgsIHNvIHdlIGNsb25lIG1hbnVhbGx5IGluc3RlYWQgb2YgYE9iamVjdC5hc3NpZ24oe30sIHBvaW50KWBcbiAgICBjb25zdCB7bGluZSwgY29sdW1uLCBvZmZzZXQsIF9pbmRleCwgX2J1ZmZlckluZGV4fSA9IHBvaW50XG4gICAgcmV0dXJuIHtsaW5lLCBjb2x1bW4sIG9mZnNldCwgX2luZGV4LCBfYnVmZmVySW5kZXh9XG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnZGVmaW5lU2tpcCddfSAqL1xuICBmdW5jdGlvbiBkZWZpbmVTa2lwKHZhbHVlKSB7XG4gICAgY29sdW1uU3RhcnRbdmFsdWUubGluZV0gPSB2YWx1ZS5jb2x1bW5cbiAgICBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpXG4gICAgZGVidWcoJ3Bvc2l0aW9uOiBkZWZpbmUgc2tpcDogYCVqYCcsIHBvaW50KVxuICB9XG5cbiAgLy9cbiAgLy8gU3RhdGUgbWFuYWdlbWVudC5cbiAgLy9cblxuICAvKipcbiAgICogTWFpbiBsb29wIChub3RlIHRoYXQgYF9pbmRleGAgYW5kIGBfYnVmZmVySW5kZXhgIGluIGBwb2ludGAgYXJlIG1vZGlmaWVkIGJ5XG4gICAqIGBjb25zdW1lYCkuXG4gICAqIEhlcmUgaXMgd2hlcmUgd2Ugd2FsayB0aHJvdWdoIHRoZSBjaHVua3MsIHdoaWNoIGVpdGhlciBpbmNsdWRlIHN0cmluZ3Mgb2ZcbiAgICogc2V2ZXJhbCBjaGFyYWN0ZXJzLCBvciBudW1lcmljYWwgY2hhcmFjdGVyIGNvZGVzLlxuICAgKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaW4gYSBsb29wIGluc3RlYWQgb2YgYSBjYWxsIGlzIHNvIHRoZSBzdGFjayBjYW5cbiAgICogZHJhaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gbWFpbigpIHtcbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgY2h1bmtJbmRleFxuXG4gICAgd2hpbGUgKHBvaW50Ll9pbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gY2h1bmtzW3BvaW50Ll9pbmRleF1cblxuICAgICAgLy8gSWYgd2XigJlyZSBpbiBhIGJ1ZmZlciBjaHVuaywgbG9vcCB0aHJvdWdoIGl0LlxuICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2h1bmtJbmRleCA9IHBvaW50Ll9pbmRleFxuXG4gICAgICAgIGlmIChwb2ludC5fYnVmZmVySW5kZXggPCAwKSB7XG4gICAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gMFxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIHBvaW50Ll9pbmRleCA9PT0gY2h1bmtJbmRleCAmJlxuICAgICAgICAgIHBvaW50Ll9idWZmZXJJbmRleCA8IGNodW5rLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBnbyhjaHVuay5jaGFyQ29kZUF0KHBvaW50Ll9idWZmZXJJbmRleCkpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvKGNodW5rKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFsIHdpdGggb25lIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdvKGNvZGUpIHtcbiAgICBhc3NlcnQoY29uc3VtZWQgPT09IHRydWUsICdleHBlY3RlZCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQnKVxuICAgIGNvbnN1bWVkID0gdW5kZWZpbmVkXG4gICAgZGVidWcoJ21haW46IHBhc3NpbmcgYCVzYCB0byAlcycsIGNvZGUsIHN0YXRlICYmIHN0YXRlLm5hbWUpXG4gICAgZXhwZWN0ZWRDb2RlID0gY29kZVxuICAgIGFzc2VydCh0eXBlb2Ygc3RhdGUgPT09ICdmdW5jdGlvbicsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc3RhdGUgPSBzdGF0ZShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydjb25zdW1lJ119ICovXG4gIGZ1bmN0aW9uIGNvbnN1bWUoY29kZSkge1xuICAgIGFzc2VydChjb2RlID09PSBleHBlY3RlZENvZGUsICdleHBlY3RlZCBnaXZlbiBjb2RlIHRvIGVxdWFsIGV4cGVjdGVkIGNvZGUnKVxuXG4gICAgZGVidWcoJ2NvbnN1bWU6IGAlc2AnLCBjb2RlKVxuXG4gICAgYXNzZXJ0KFxuICAgICAgY29uc3VtZWQgPT09IHVuZGVmaW5lZCxcbiAgICAgICdleHBlY3RlZCBjb2RlIHRvIG5vdCBoYXZlIGJlZW4gY29uc3VtZWQ6IHRoaXMgbWlnaHQgYmUgYmVjYXVzZSBgcmV0dXJuIHgoY29kZSlgIGluc3RlYWQgb2YgYHJldHVybiB4YCB3YXMgdXNlZCdcbiAgICApXG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gbnVsbFxuICAgICAgICA/IGNvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgY29udGV4dC5ldmVudHNbY29udGV4dC5ldmVudHMubGVuZ3RoIC0gMV1bMF0gPT09ICdleGl0J1xuICAgICAgICA6IGNvbnRleHQuZXZlbnRzW2NvbnRleHQuZXZlbnRzLmxlbmd0aCAtIDFdWzBdID09PSAnZW50ZXInLFxuICAgICAgJ2V4cGVjdGVkIGxhc3QgdG9rZW4gdG8gYmUgb3BlbidcbiAgICApXG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBwb2ludC5saW5lKytcbiAgICAgIHBvaW50LmNvbHVtbiA9IDFcbiAgICAgIHBvaW50Lm9mZnNldCArPSBjb2RlID09PSBjb2Rlcy5jYXJyaWFnZVJldHVybkxpbmVGZWVkID8gMiA6IDFcbiAgICAgIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKClcbiAgICAgIGRlYnVnKCdwb3NpdGlvbjogYWZ0ZXIgZW9sOiBgJWpgJywgcG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlICE9PSBjb2Rlcy52aXJ0dWFsU3BhY2UpIHtcbiAgICAgIHBvaW50LmNvbHVtbisrXG4gICAgICBwb2ludC5vZmZzZXQrK1xuICAgIH1cblxuICAgIC8vIE5vdCBpbiBhIHN0cmluZyBjaHVuay5cbiAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4IDwgMCkge1xuICAgICAgcG9pbnQuX2luZGV4KytcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnQuX2J1ZmZlckluZGV4KytcblxuICAgICAgLy8gQXQgZW5kIG9mIHN0cmluZyBjaHVuay5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUG9pbnRzIHcvIG5vbi1uZWdhdGl2ZSBgX2J1ZmZlckluZGV4YCByZWZlcmVuY2VcbiAgICAgIC8vIHN0cmluZ3MuXG4gICAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4ID09PSBjaHVua3NbcG9pbnQuX2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gLTFcbiAgICAgICAgcG9pbnQuX2luZGV4KytcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci5cbiAgICBjb250ZXh0LnByZXZpb3VzID0gY29kZVxuXG4gICAgLy8gTWFyayBhcyBjb25zdW1lZC5cbiAgICBjb25zdW1lZCA9IHRydWVcbiAgfVxuXG4gIC8qKiBAdHlwZSB7RWZmZWN0c1snZW50ZXInXX0gKi9cbiAgZnVuY3Rpb24gZW50ZXIodHlwZSwgZmllbGRzKSB7XG4gICAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFBhdGNoIGluc3RlYWQgb2YgYXNzaWduIHJlcXVpcmVkIGZpZWxkcyB0byBoZWxwIEdDLlxuICAgIGNvbnN0IHRva2VuID0gZmllbGRzIHx8IHt9XG4gICAgdG9rZW4udHlwZSA9IHR5cGVcbiAgICB0b2tlbi5zdGFydCA9IG5vdygpXG5cbiAgICBhc3NlcnQodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnLCAnZXhwZWN0ZWQgc3RyaW5nIHR5cGUnKVxuICAgIGFzc2VydCh0eXBlLmxlbmd0aCA+IDAsICdleHBlY3RlZCBub24tZW1wdHkgc3RyaW5nJylcbiAgICBkZWJ1ZygnZW50ZXI6IGAlc2AnLCB0eXBlKVxuXG4gICAgY29udGV4dC5ldmVudHMucHVzaChbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdKVxuXG4gICAgc3RhY2sucHVzaCh0b2tlbilcblxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydleGl0J119ICovXG4gIGZ1bmN0aW9uIGV4aXQodHlwZSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsICdleHBlY3RlZCBzdHJpbmcgdHlwZScpXG4gICAgYXNzZXJ0KHR5cGUubGVuZ3RoID4gMCwgJ2V4cGVjdGVkIG5vbi1lbXB0eSBzdHJpbmcnKVxuXG4gICAgY29uc3QgdG9rZW4gPSBzdGFjay5wb3AoKVxuICAgIGFzc2VydCh0b2tlbiwgJ2Nhbm5vdCBjbG9zZSB3L28gb3BlbiB0b2tlbnMnKVxuICAgIHRva2VuLmVuZCA9IG5vdygpXG5cbiAgICBhc3NlcnQodHlwZSA9PT0gdG9rZW4udHlwZSwgJ2V4cGVjdGVkIGV4aXQgdG9rZW4gdG8gbWF0Y2ggY3VycmVudCB0b2tlbicpXG5cbiAgICBhc3NlcnQoXG4gICAgICAhKFxuICAgICAgICB0b2tlbi5zdGFydC5faW5kZXggPT09IHRva2VuLmVuZC5faW5kZXggJiZcbiAgICAgICAgdG9rZW4uc3RhcnQuX2J1ZmZlckluZGV4ID09PSB0b2tlbi5lbmQuX2J1ZmZlckluZGV4XG4gICAgICApLFxuICAgICAgJ2V4cGVjdGVkIG5vbi1lbXB0eSB0b2tlbiAoYCcgKyB0eXBlICsgJ2ApJ1xuICAgIClcblxuICAgIGRlYnVnKCdleGl0OiBgJXNgJywgdG9rZW4udHlwZSlcbiAgICBjb250ZXh0LmV2ZW50cy5wdXNoKFsnZXhpdCcsIHRva2VuLCBjb250ZXh0XSlcblxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSByZXN1bHRzLlxuICAgKlxuICAgKiBAdHlwZSB7UmV0dXJuSGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25zdWNjZXNzZnVsY29uc3RydWN0KGNvbnN0cnVjdCwgaW5mbykge1xuICAgIGFkZFJlc3VsdChjb25zdHJ1Y3QsIGluZm8uZnJvbSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjYXJkIHJlc3VsdHMuXG4gICAqXG4gICAqIEB0eXBlIHtSZXR1cm5IYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbnN1Y2Nlc3NmdWxjaGVjayhfLCBpbmZvKSB7XG4gICAgaW5mby5yZXN0b3JlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IHRvIGF0dGVtcHQvY2hlY2svaW50ZXJydXB0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JldHVybkhhbmRsZX0gb25yZXR1cm5cbiAgICogQHBhcmFtIHt7aW50ZXJydXB0PzogYm9vbGVhbiB8IHVuZGVmaW5lZH0gfCB1bmRlZmluZWR9IFtmaWVsZHNdXG4gICAqL1xuICBmdW5jdGlvbiBjb25zdHJ1Y3RGYWN0b3J5KG9ucmV0dXJuLCBmaWVsZHMpIHtcbiAgICByZXR1cm4gaG9va1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGVpdGhlciBhbiBvYmplY3QgbWFwcGluZyBjb2RlcyB0byBjb25zdHJ1Y3RzLCBhIGxpc3Qgb2ZcbiAgICAgKiBjb25zdHJ1Y3RzLCBvciBhIHNpbmdsZSBjb25zdHJ1Y3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD4gfCBDb25zdHJ1Y3QgfCBDb25zdHJ1Y3RSZWNvcmR9IGNvbnN0cnVjdHNcbiAgICAgKiBAcGFyYW0ge1N0YXRlfSByZXR1cm5TdGF0ZVxuICAgICAqIEBwYXJhbSB7U3RhdGUgfCB1bmRlZmluZWR9IFtib2d1c1N0YXRlXVxuICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBob29rKGNvbnN0cnVjdHMsIHJldHVyblN0YXRlLCBib2d1c1N0YXRlKSB7XG4gICAgICAvKiogQHR5cGUge0FycmF5PENvbnN0cnVjdD59ICovXG4gICAgICBsZXQgbGlzdE9mQ29uc3RydWN0c1xuICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgICBsZXQgY29uc3RydWN0SW5kZXhcbiAgICAgIC8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuICAgICAgbGV0IGN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIC8qKiBAdHlwZSB7SW5mb30gKi9cbiAgICAgIGxldCBpbmZvXG5cbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbnN0cnVjdHMpXG4gICAgICAgID8gLyogYzggaWdub3JlIG5leHQgMSAqL1xuICAgICAgICAgIGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMoY29uc3RydWN0cylcbiAgICAgICAgOiAndG9rZW5pemUnIGluIGNvbnN0cnVjdHNcbiAgICAgICAgPyAvLyBAdHMtZXhwZWN0LWVycm9yIExvb2tzIGxpa2UgYSBjb25zdHJ1Y3QuXG4gICAgICAgICAgaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhbY29uc3RydWN0c10pXG4gICAgICAgIDogaGFuZGxlTWFwT2ZDb25zdHJ1Y3RzKGNvbnN0cnVjdHMpXG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlIGEgbGlzdCBvZiBjb25zdHJ1Y3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtDb25zdHJ1Y3RSZWNvcmR9IG1hcFxuICAgICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBoYW5kbGVNYXBPZkNvbnN0cnVjdHMobWFwKSB7XG4gICAgICAgIHJldHVybiBzdGFydFxuXG4gICAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBjb2RlICE9PSBudWxsICYmIG1hcFtjb2RlXVxuICAgICAgICAgIGNvbnN0IGFsbCA9IGNvZGUgIT09IG51bGwgJiYgbWFwLm51bGxcbiAgICAgICAgICBjb25zdCBsaXN0ID0gW1xuICAgICAgICAgICAgLy8gVG8gZG86IGFkZCBtb3JlIGV4dGVuc2lvbiB0ZXN0cy5cbiAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDIgKi9cbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGRlZikgPyBkZWYgOiBkZWYgPyBbZGVmXSA6IFtdKSxcbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGFsbCkgPyBhbGwgOiBhbGwgPyBbYWxsXSA6IFtdKVxuICAgICAgICAgIF1cblxuICAgICAgICAgIHJldHVybiBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKGxpc3QpKGNvZGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBsaXN0IG9mIGNvbnN0cnVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD59IGxpc3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhsaXN0KSB7XG4gICAgICAgIGxpc3RPZkNvbnN0cnVjdHMgPSBsaXN0XG4gICAgICAgIGNvbnN0cnVjdEluZGV4ID0gMFxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGFzc2VydChib2d1c1N0YXRlLCAnZXhwZWN0ZWQgYGJvZ3VzU3RhdGVgIHRvIGJlIGdpdmVuJylcbiAgICAgICAgICByZXR1cm4gYm9ndXNTdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0W2NvbnN0cnVjdEluZGV4XSlcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBzaW5nbGUgY29uc3RydWN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlQ29uc3RydWN0KGNvbnN0cnVjdCkge1xuICAgICAgICByZXR1cm4gc3RhcnRcblxuICAgICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICAgICAgLy8gVG8gZG86IG5vdCBuZWVkZWQgdG8gc3RvcmUgaWYgdGhlcmUgaXMgbm8gYm9ndXMgc3RhdGUsIHByb2JhYmx5P1xuICAgICAgICAgIC8vIEN1cnJlbnRseSBkb2VzbuKAmXQgd29yayBiZWNhdXNlIGBpbnNwZWN0YCBpbiBkb2N1bWVudCBkb2VzIGEgY2hlY2tcbiAgICAgICAgICAvLyB3L28gYSBib2d1cywgd2hpY2ggZG9lc27igJl0IG1ha2Ugc2Vuc2UuIEJ1dCBpdCBkb2VzIHNlZW0gdG8gaGVscCBwZXJmXG4gICAgICAgICAgLy8gYnkgbm90IHN0b3JpbmcuXG4gICAgICAgICAgaW5mbyA9IHN0b3JlKClcbiAgICAgICAgICBjdXJyZW50Q29uc3RydWN0ID0gY29uc3RydWN0XG5cbiAgICAgICAgICBpZiAoIWNvbnN0cnVjdC5wYXJ0aWFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICAgICAgICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25zdHJ1Y3QubmFtZSAmJlxuICAgICAgICAgICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoY29uc3RydWN0Lm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC50b2tlbml6ZS5jYWxsKFxuICAgICAgICAgICAgLy8gSWYgd2UgZG8gaGF2ZSBmaWVsZHMsIGNyZWF0ZSBhbiBvYmplY3Qgdy8gYGNvbnRleHRgIGFzIGl0c1xuICAgICAgICAgICAgLy8gcHJvdG90eXBlLlxuICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgYSDigJxsaXZlIGJpbmRpbmfigJ0sIHdoaWNoIGlzIG5lZWRlZCBmb3IgYGludGVycnVwdGAuXG4gICAgICAgICAgICBmaWVsZHMgPyBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoY29udGV4dCksIGZpZWxkcykgOiBjb250ZXh0LFxuICAgICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICAgIG9rLFxuICAgICAgICAgICAgbm9rXG4gICAgICAgICAgKShjb2RlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICBmdW5jdGlvbiBvayhjb2RlKSB7XG4gICAgICAgIGFzc2VydChjb2RlID09PSBleHBlY3RlZENvZGUsICdleHBlY3RlZCBjb2RlJylcbiAgICAgICAgY29uc3VtZWQgPSB0cnVlXG4gICAgICAgIG9ucmV0dXJuKGN1cnJlbnRDb25zdHJ1Y3QsIGluZm8pXG4gICAgICAgIHJldHVybiByZXR1cm5TdGF0ZVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgZnVuY3Rpb24gbm9rKGNvZGUpIHtcbiAgICAgICAgYXNzZXJ0KGNvZGUgPT09IGV4cGVjdGVkQ29kZSwgJ2V4cGVjdGVkIGNvZGUnKVxuICAgICAgICBjb25zdW1lZCA9IHRydWVcbiAgICAgICAgaW5mby5yZXN0b3JlKClcblxuICAgICAgICBpZiAoKytjb25zdHJ1Y3RJbmRleCA8IGxpc3RPZkNvbnN0cnVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0T2ZDb25zdHJ1Y3RzW2NvbnN0cnVjdEluZGV4XSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBib2d1c1N0YXRlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBhZGRSZXN1bHQoY29uc3RydWN0LCBmcm9tKSB7XG4gICAgaWYgKGNvbnN0cnVjdC5yZXNvbHZlQWxsICYmICFyZXNvbHZlQWxsQ29uc3RydWN0cy5pbmNsdWRlcyhjb25zdHJ1Y3QpKSB7XG4gICAgICByZXNvbHZlQWxsQ29uc3RydWN0cy5wdXNoKGNvbnN0cnVjdClcbiAgICB9XG5cbiAgICBpZiAoY29uc3RydWN0LnJlc29sdmUpIHtcbiAgICAgIHNwbGljZShcbiAgICAgICAgY29udGV4dC5ldmVudHMsXG4gICAgICAgIGZyb20sXG4gICAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCAtIGZyb20sXG4gICAgICAgIGNvbnN0cnVjdC5yZXNvbHZlKGNvbnRleHQuZXZlbnRzLnNsaWNlKGZyb20pLCBjb250ZXh0KVxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChjb25zdHJ1Y3QucmVzb2x2ZVRvKSB7XG4gICAgICBjb250ZXh0LmV2ZW50cyA9IGNvbnN0cnVjdC5yZXNvbHZlVG8oY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG4gICAgfVxuXG4gICAgYXNzZXJ0KFxuICAgICAgY29uc3RydWN0LnBhcnRpYWwgfHxcbiAgICAgICAgY29udGV4dC5ldmVudHMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgIGNvbnRleHQuZXZlbnRzW2NvbnRleHQuZXZlbnRzLmxlbmd0aCAtIDFdWzBdID09PSAnZXhpdCcsXG4gICAgICAnZXhwZWN0ZWQgbGFzdCB0b2tlbiB0byBlbmQnXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7SW5mb31cbiAgICovXG4gIGZ1bmN0aW9uIHN0b3JlKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBub3coKVxuICAgIGNvbnN0IHN0YXJ0UHJldmlvdXMgPSBjb250ZXh0LnByZXZpb3VzXG4gICAgY29uc3Qgc3RhcnRDdXJyZW50Q29uc3RydWN0ID0gY29udGV4dC5jdXJyZW50Q29uc3RydWN0XG4gICAgY29uc3Qgc3RhcnRFdmVudHNJbmRleCA9IGNvbnRleHQuZXZlbnRzLmxlbmd0aFxuICAgIGNvbnN0IHN0YXJ0U3RhY2sgPSBBcnJheS5mcm9tKHN0YWNrKVxuXG4gICAgcmV0dXJuIHtyZXN0b3JlLCBmcm9tOiBzdGFydEV2ZW50c0luZGV4fVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3RvcmUoKSB7XG4gICAgICBwb2ludCA9IHN0YXJ0UG9pbnRcbiAgICAgIGNvbnRleHQucHJldmlvdXMgPSBzdGFydFByZXZpb3VzXG4gICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBzdGFydEN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCA9IHN0YXJ0RXZlbnRzSW5kZXhcbiAgICAgIHN0YWNrID0gc3RhcnRTdGFja1xuICAgICAgYWNjb3VudEZvclBvdGVudGlhbFNraXAoKVxuICAgICAgZGVidWcoJ3Bvc2l0aW9uOiByZXN0b3JlOiBgJWpgJywgcG9pbnQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGN1cnJlbnQgcG9pbnQgYSBiaXQgZm9yd2FyZCBpbiB0aGUgbGluZSB3aGVuIGl04oCZcyBvbiBhIGNvbHVtblxuICAgKiBza2lwLlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKCkge1xuICAgIGlmIChwb2ludC5saW5lIGluIGNvbHVtblN0YXJ0ICYmIHBvaW50LmNvbHVtbiA8IDIpIHtcbiAgICAgIHBvaW50LmNvbHVtbiA9IGNvbHVtblN0YXJ0W3BvaW50LmxpbmVdXG4gICAgICBwb2ludC5vZmZzZXQgKz0gY29sdW1uU3RhcnRbcG9pbnQubGluZV0gLSAxXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjaHVua3MgZnJvbSBhIHNsaWNlIG9mIGNodW5rcyBpbiB0aGUgcmFuZ2Ugb2YgYSB0b2tlbi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PENodW5rPn0gY2h1bmtzXG4gKiBAcGFyYW0ge1BpY2s8VG9rZW4sICdlbmQnIHwgJ3N0YXJ0Jz59IHRva2VuXG4gKiBAcmV0dXJucyB7QXJyYXk8Q2h1bms+fVxuICovXG5mdW5jdGlvbiBzbGljZUNodW5rcyhjaHVua3MsIHRva2VuKSB7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSB0b2tlbi5zdGFydC5faW5kZXhcbiAgY29uc3Qgc3RhcnRCdWZmZXJJbmRleCA9IHRva2VuLnN0YXJ0Ll9idWZmZXJJbmRleFxuICBjb25zdCBlbmRJbmRleCA9IHRva2VuLmVuZC5faW5kZXhcbiAgY29uc3QgZW5kQnVmZmVySW5kZXggPSB0b2tlbi5lbmQuX2J1ZmZlckluZGV4XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgdmlld1xuXG4gIGlmIChzdGFydEluZGV4ID09PSBlbmRJbmRleCkge1xuICAgIGFzc2VydChlbmRCdWZmZXJJbmRleCA+IC0xLCAnZXhwZWN0ZWQgbm9uLW5lZ2F0aXZlIGVuZCBidWZmZXIgaW5kZXgnKVxuICAgIGFzc2VydChzdGFydEJ1ZmZlckluZGV4ID4gLTEsICdleHBlY3RlZCBub24tbmVnYXRpdmUgc3RhcnQgYnVmZmVyIGluZGV4JylcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICB2aWV3ID0gW2NodW5rc1tzdGFydEluZGV4XS5zbGljZShzdGFydEJ1ZmZlckluZGV4LCBlbmRCdWZmZXJJbmRleCldXG4gIH0gZWxzZSB7XG4gICAgdmlldyA9IGNodW5rcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcblxuICAgIGlmIChzdGFydEJ1ZmZlckluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGhlYWQgPSB2aWV3WzBdXG4gICAgICBpZiAodHlwZW9mIGhlYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZpZXdbMF0gPSBoZWFkLnNsaWNlKHN0YXJ0QnVmZmVySW5kZXgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoc3RhcnRCdWZmZXJJbmRleCA9PT0gMCwgJ2V4cGVjdGVkIGBzdGFydEJ1ZmZlckluZGV4YCB0byBiZSBgMGAnKVxuICAgICAgICB2aWV3LnNoaWZ0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kQnVmZmVySW5kZXggPiAwKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICAgIHZpZXcucHVzaChjaHVua3NbZW5kSW5kZXhdLnNsaWNlKDAsIGVuZEJ1ZmZlckluZGV4KSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmlld1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgc2xpY2Ugb2YgY2h1bmtzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8Q2h1bms+fSBjaHVua3NcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2V4cGFuZFRhYnM9ZmFsc2VdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVDaHVua3MoY2h1bmtzLCBleHBhbmRUYWJzKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRUYWJcblxuICB3aGlsZSAoKytpbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICBjb25zdCBjaHVuayA9IGNodW5rc1tpbmRleF1cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgdmFsdWVcblxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IGNodW5rXG4gICAgfSBlbHNlXG4gICAgICBzd2l0Y2ggKGNodW5rKSB7XG4gICAgICAgIGNhc2UgY29kZXMuY2FycmlhZ2VSZXR1cm46IHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlcy5jclxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgY29kZXMubGluZUZlZWQ6IHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlcy5sZlxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgY29kZXMuY2FycmlhZ2VSZXR1cm5MaW5lRmVlZDoge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWVzLmNyICsgdmFsdWVzLmxmXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBjb2Rlcy5ob3Jpem9udGFsVGFiOiB7XG4gICAgICAgICAgdmFsdWUgPSBleHBhbmRUYWJzID8gdmFsdWVzLnNwYWNlIDogdmFsdWVzLmh0XG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBjb2Rlcy52aXJ0dWFsU3BhY2U6IHtcbiAgICAgICAgICBpZiAoIWV4cGFuZFRhYnMgJiYgYXRUYWIpIGNvbnRpbnVlXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZXMuc3BhY2VcblxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgYXNzZXJ0KHR5cGVvZiBjaHVuayA9PT0gJ251bWJlcicsICdleHBlY3RlZCBudW1iZXInKVxuICAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHJlcGxhY2VtZW50IGNoYXJhY3Rlci5cbiAgICAgICAgICB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2h1bmspXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIGF0VGFiID0gY2h1bmsgPT09IGNvZGVzLmhvcml6b250YWxUYWJcbiAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignJylcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/create-tokenizer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/content.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/content.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"content\": () => (/* binding */ content)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst content = {tokenize: initializeContent}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, contentStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix)\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n 'expected anything other than a line ending or EOF'\n )\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeText,\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n effects.consume(code)\n return\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) {\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvY29udGVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDRDQUE0QztBQUN6RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RDs7QUFFb0Q7QUFDTztBQUNQO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLGtCQUFrQjtBQUN0QixpQkFBaUI7O0FBRXhCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLCtDQUFNO0FBQ1YsZUFBZSxxRUFBUyxJQUFJLDRFQUFrQjtBQUM5QztBQUNBOztBQUVBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakMsV0FBVyxxRUFBWSx3QkFBd0IsNEVBQWdCO0FBQy9EOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVixlQUFlLHFFQUFTLEtBQUssNEVBQWtCO0FBQy9DO0FBQ0E7QUFDQSxrQkFBa0IsMkVBQWU7QUFDakM7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxnQ0FBZ0MsMkVBQWU7QUFDL0MsbUJBQW1CLHlGQUF5QjtBQUM1QztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsaUJBQWlCLHFFQUFTO0FBQzFCLG1CQUFtQiwyRUFBZTtBQUNsQyxtQkFBbUIsMkVBQWU7QUFDbEM7QUFDQTtBQUNBOztBQUVBLFFBQVEsNEVBQWtCO0FBQzFCO0FBQ0EsbUJBQW1CLDJFQUFlO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrL2Rldi9saWIvaW5pdGlhbGl6ZS9jb250ZW50LmpzPzljMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvbnRlbnQgPSB7dG9rZW5pemU6IGluaXRpYWxpemVDb250ZW50fVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVDb250ZW50KGVmZmVjdHMpIHtcbiAgY29uc3QgY29udGVudFN0YXJ0ID0gZWZmZWN0cy5hdHRlbXB0KFxuICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuY29udGVudEluaXRpYWwsXG4gICAgYWZ0ZXJDb250ZW50U3RhcnRDb25zdHJ1Y3QsXG4gICAgcGFyYWdyYXBoSW5pdGlhbFxuICApXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBwcmV2aW91c1xuXG4gIHJldHVybiBjb250ZW50U3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlckNvbnRlbnRTdGFydENvbnN0cnVjdChjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSxcbiAgICAgICdleHBlY3RlZCBlb2wgb3IgZW9mJ1xuICAgIClcblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgY29udGVudFN0YXJ0LCB0eXBlcy5saW5lUHJlZml4KVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gcGFyYWdyYXBoSW5pdGlhbChjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSAhPT0gY29kZXMuZW9mICYmICFtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksXG4gICAgICAnZXhwZWN0ZWQgYW55dGhpbmcgb3RoZXIgdGhhbiBhIGxpbmUgZW5kaW5nIG9yIEVPRidcbiAgICApXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5wYXJhZ3JhcGgpXG4gICAgcmV0dXJuIGxpbmVTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gbGluZVN0YXJ0KGNvZGUpIHtcbiAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtUZXh0LCB7XG4gICAgICBjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlVGV4dCxcbiAgICAgIHByZXZpb3VzXG4gICAgfSlcblxuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgcHJldmlvdXMubmV4dCA9IHRva2VuXG4gICAgfVxuXG4gICAgcHJldmlvdXMgPSB0b2tlblxuXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua1RleHQpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMucGFyYWdyYXBoKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua1RleHQpXG4gICAgICByZXR1cm4gbGluZVN0YXJ0XG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/content.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/document.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/document.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"document\": () => (/* binding */ document)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst document = {tokenize: initializeDocument}\n\n/** @type {Construct} */\nconst containerConstruct = {tokenize: tokenizeContainer}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n item[0].continuation,\n 'expected `continuation` to be defined on container construct'\n )\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined after continuation'\n )\n\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.currentConstruct,\n 'expected `currentConstruct` to be defined on tokenizer'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined on tokenizer'\n )\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeFlow,\n previous: childToken,\n _tokenizer: childFlow\n })\n\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n effects.consume(code)\n writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when continuing')\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n entry[0].exit,\n 'expected `exit` to be defined on container construct'\n )\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined when closing flow'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when closing it')\n childFlow.write([micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n this.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n )\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZG9jdW1lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsK0NBQStDO0FBQzVELGFBQWEsaURBQWlEO0FBQzlELGFBQWEsNENBQTRDO0FBQ3pELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVBO0FBQ0EsYUFBYSw2QkFBNkI7QUFDMUM7O0FBRW9EO0FBQ087QUFDZDtBQUNPO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLGtCQUFrQjtBQUN0QixrQkFBa0I7O0FBRXpCLFdBQVcsV0FBVztBQUN0Qiw0QkFBNEI7O0FBRTVCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0EsYUFBYSw2QkFBNkI7QUFDMUM7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQztBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sK0NBQU07QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELDJF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Q0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxFQUFFLDhDQUFNO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUyxxRUFBWTtBQUNyQjtBQUNBO0FBQ0EsSUFBSSw0RUFBZ0I7QUFDcEI7QUFDQTtBQUNBLFFBQVEsaUZBQWlCO0FBQ3pCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZG9jdW1lbnQuanM/OWIzZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29udGFpbmVyU3RhdGV9IENvbnRhaW5lclN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7W0NvbnN0cnVjdCwgQ29udGFpbmVyU3RhdGVdfSBTdGFja0l0ZW1cbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0luaXRpYWxDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgZG9jdW1lbnQgPSB7dG9rZW5pemU6IGluaXRpYWxpemVEb2N1bWVudH1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBjb250YWluZXJDb25zdHJ1Y3QgPSB7dG9rZW5pemU6IHRva2VuaXplQ29udGFpbmVyfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVEb2N1bWVudChlZmZlY3RzKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7QXJyYXk8U3RhY2tJdGVtPn0gKi9cbiAgY29uc3Qgc3RhY2sgPSBbXVxuICBsZXQgY29udGludWVkID0gMFxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dCB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNoaWxkRmxvd1xuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2hpbGRUb2tlblxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGxpbmVTdGFydE9mZnNldFxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBGaXJzdCB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIG9wZW4gYmxvY2tzLCBzdGFydGluZyB3aXRoIHRoZSByb290XG4gICAgLy8gZG9jdW1lbnQsIGFuZCBkZXNjZW5kaW5nIHRocm91Z2ggbGFzdCBjaGlsZHJlbiBkb3duIHRvIHRoZSBsYXN0IG9wZW5cbiAgICAvLyBibG9jay5cbiAgICAvLyBFYWNoIGJsb2NrIGltcG9zZXMgYSBjb25kaXRpb24gdGhhdCB0aGUgbGluZSBtdXN0IHNhdGlzZnkgaWYgdGhlIGJsb2NrIGlzXG4gICAgLy8gdG8gcmVtYWluIG9wZW4uXG4gICAgLy8gRm9yIGV4YW1wbGUsIGEgYmxvY2sgcXVvdGUgcmVxdWlyZXMgYSBgPmAgY2hhcmFjdGVyLlxuICAgIC8vIEEgcGFyYWdyYXBoIHJlcXVpcmVzIGEgbm9uLWJsYW5rIGxpbmUuXG4gICAgLy8gSW4gdGhpcyBwaGFzZSB3ZSBtYXkgbWF0Y2ggYWxsIG9yIGp1c3Qgc29tZSBvZiB0aGUgb3BlbiBibG9ja3MuXG4gICAgLy8gQnV0IHdlIGNhbm5vdCBjbG9zZSB1bm1hdGNoZWQgYmxvY2tzIHlldCwgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBhIGxhenlcbiAgICAvLyBjb250aW51YXRpb24gbGluZS5cbiAgICBpZiAoY29udGludWVkIDwgc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBpdGVtID0gc3RhY2tbY29udGludWVkXVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGl0ZW1bMV1cbiAgICAgIGFzc2VydChcbiAgICAgICAgaXRlbVswXS5jb250aW51YXRpb24sXG4gICAgICAgICdleHBlY3RlZCBgY29udGludWF0aW9uYCB0byBiZSBkZWZpbmVkIG9uIGNvbnRhaW5lciBjb25zdHJ1Y3QnXG4gICAgICApXG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICBpdGVtWzBdLmNvbnRpbnVhdGlvbixcbiAgICAgICAgZG9jdW1lbnRDb250aW51ZSxcbiAgICAgICAgY2hlY2tOZXdDb250YWluZXJzXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRG9uZS5cbiAgICByZXR1cm4gY2hlY2tOZXdDb250YWluZXJzKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBkb2N1bWVudENvbnRpbnVlKGNvZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLFxuICAgICAgJ2V4cGVjdGVkIGBjb250YWluZXJTdGF0ZWAgdG8gYmUgZGVmaW5lZCBhZnRlciBjb250aW51YXRpb24nXG4gICAgKVxuXG4gICAgY29udGludWVkKytcblxuICAgIC8vIE5vdGU6IHRoaXMgZmllbGQgaXMgY2FsbGVkIGBfY2xvc2VGbG93YCBidXQgaXQgYWxzbyBjbG9zZXMgY29udGFpbmVycy5cbiAgICAvLyBQZXJoYXBzIGEgZ29vZCBpZGVhIHRvIHJlbmFtZSBpdCBidXQgaXTigJlzIGFscmVhZHkgdXNlZCBpbiB0aGUgd2lsZCBieVxuICAgIC8vIGV4dGVuc2lvbnMuXG4gICAgaWYgKHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdykge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG5cbiAgICAgIGlmIChjaGlsZEZsb3cpIHtcbiAgICAgICAgY2xvc2VGbG93KClcbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBkZWFsaW5nIHdpdGggbGF6eSBsaW5lcyBpbiBgd3JpdGVUb0NoaWxkYC5cbiAgICAgIGNvbnN0IGluZGV4QmVmb3JlRXhpdHMgPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgICAgIGxldCBpbmRleEJlZm9yZUZsb3cgPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZsb3cgY2h1bmsuXG4gICAgICB3aGlsZSAoaW5kZXhCZWZvcmVGbG93LS0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0udHlwZSA9PT0gdHlwZXMuY2h1bmtGbG93XG4gICAgICAgICkge1xuICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChwb2ludCwgJ2NvdWxkIG5vdCBmaW5kIHByZXZpb3VzIGZsb3cgY2h1bmsnKVxuXG4gICAgICBleGl0Q29udGFpbmVycyhjb250aW51ZWQpXG5cbiAgICAgIC8vIEZpeCBwb3NpdGlvbnMuXG4gICAgICBsZXQgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV54oCZcmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG5cbiAgICAgIHJldHVybiBjaGVja05ld0NvbnRhaW5lcnMoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhcnQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGNoZWNrTmV3Q29udGFpbmVycyhjb2RlKSB7XG4gICAgLy8gTmV4dCwgYWZ0ZXIgY29uc3VtaW5nIHRoZSBjb250aW51YXRpb24gbWFya2VycyBmb3IgZXhpc3RpbmcgYmxvY2tzLCB3ZVxuICAgIC8vIGxvb2sgZm9yIG5ldyBibG9jayBzdGFydHMgKGUuZy4gYD5gIGZvciBhIGJsb2NrIHF1b3RlKS5cbiAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBuZXcgYmxvY2sgc3RhcnQsIHdlIGNsb3NlIGFueSBibG9ja3MgdW5tYXRjaGVkIGluXG4gICAgLy8gc3RlcCAxIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3IGJsb2NrIGFzIGEgY2hpbGQgb2YgdGhlIGxhc3QgbWF0Y2hlZFxuICAgIC8vIGJsb2NrLlxuICAgIGlmIChjb250aW51ZWQgPT09IHN0YWNrLmxlbmd0aCkge1xuICAgICAgLy8gTm8gbmVlZCB0byBgY2hlY2tgIHdoZXRoZXIgdGhlcmXigJlzIGEgY29udGFpbmVyLCBvZiBgZXhpdENvbnRhaW5lcnNgXG4gICAgICAvLyB3b3VsZCBiZSBtb290LlxuICAgICAgLy8gV2UgY2FuIGluc3RlYWQgaW1tZWRpYXRlbHkgYGF0dGVtcHRgIHRvIHBhcnNlIG9uZS5cbiAgICAgIGlmICghY2hpbGRGbG93KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGNvbmNyZXRlIGNvbnRlbnQsIHN1Y2ggYXMgYmxvY2sgSFRNTCBvciBmZW5jZWQgY29kZSxcbiAgICAgIC8vIHdlIGNhbuKAmXQgaGF2ZSBjb250YWluZXJzIOKAnHBpZXJjZeKAnSBpbnRvIHRoZW0sIHNvIHdlIGNhbiBpbW1lZGlhdGVseVxuICAgICAgLy8gc3RhcnQuXG4gICAgICBpZiAoY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QuY29uY3JldGUpIHtcbiAgICAgICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBkbyBoYXZlIGZsb3csIGl0IGNvdWxkIHN0aWxsIGJlIGEgYmxhbmsgbGluZSxcbiAgICAgIC8vIGJ1dCB3ZeKAmWQgYmUgaW50ZXJydXB0aW5nIGl0IHcvIGEgbmV3IGNvbnRhaW5lciBpZiB0aGVyZeKAmXMgYSBjdXJyZW50XG4gICAgICAvLyBjb25zdHJ1Y3QuXG4gICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogcmVtb3ZlIGBfZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja2AgKG5vIGxvbmdlclxuICAgICAgLy8gbmVlZGVkIGluIG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLXRhYmxlQDEuMC42KS5cbiAgICAgIHNlbGYuaW50ZXJydXB0ID0gQm9vbGVhbihcbiAgICAgICAgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgIWNoaWxkRmxvdy5fZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgbmV3IGNvbnRhaW5lci5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGNvbnRhaW5lckNvbnN0cnVjdCxcbiAgICAgIHRoZXJlSXNBTmV3Q29udGFpbmVyLFxuICAgICAgdGhlcmVJc05vTmV3Q29udGFpbmVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc0FOZXdDb250YWluZXIoY29kZSkge1xuICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc05vTmV3Q29udGFpbmVyKGNvZGUpIHtcbiAgICBzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gPSBjb250aW51ZWQgIT09IHN0YWNrLmxlbmd0aFxuICAgIGxpbmVTdGFydE9mZnNldCA9IHNlbGYubm93KCkub2Zmc2V0XG4gICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZG9jdW1lbnRDb250aW51ZWQoY29kZSkge1xuICAgIC8vIFRyeSBuZXcgY29udGFpbmVycy5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgY29udGFpbmVyQ29uc3RydWN0LFxuICAgICAgY29udGFpbmVyQ29udGludWUsXG4gICAgICBmbG93U3RhcnRcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBjb250YWluZXJDb250aW51ZShjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5jdXJyZW50Q29uc3RydWN0LFxuICAgICAgJ2V4cGVjdGVkIGBjdXJyZW50Q29uc3RydWN0YCB0byBiZSBkZWZpbmVkIG9uIHRva2VuaXplcidcbiAgICApXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSxcbiAgICAgICdleHBlY3RlZCBgY29udGFpbmVyU3RhdGVgIHRvIGJlIGRlZmluZWQgb24gdG9rZW5pemVyJ1xuICAgIClcbiAgICBjb250aW51ZWQrK1xuICAgIHN0YWNrLnB1c2goW3NlbGYuY3VycmVudENvbnN0cnVjdCwgc2VsZi5jb250YWluZXJTdGF0ZV0pXG4gICAgLy8gVHJ5IGFub3RoZXIuXG4gICAgcmV0dXJuIGRvY3VtZW50Q29udGludWVkKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBmbG93U3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgICBleGl0Q29udGFpbmVycygwKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjaGlsZEZsb3cgPSBjaGlsZEZsb3cgfHwgc2VsZi5wYXJzZXIuZmxvdyhzZWxmLm5vdygpKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtGbG93LCB7XG4gICAgICBjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlRmxvdyxcbiAgICAgIHByZXZpb3VzOiBjaGlsZFRva2VuLFxuICAgICAgX3Rva2VuaXplcjogY2hpbGRGbG93XG4gICAgfSlcblxuICAgIHJldHVybiBmbG93Q29udGludWUoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGZsb3dDb250aW51ZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgd3JpdGVUb0NoaWxkKGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua0Zsb3cpLCB0cnVlKVxuICAgICAgZXhpdENvbnRhaW5lcnMoMClcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICB3cml0ZVRvQ2hpbGQoZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rRmxvdykpXG4gICAgICAvLyBHZXQgcmVhZHkgZm9yIHRoZSBuZXh0IGxpbmUuXG4gICAgICBjb250aW51ZWQgPSAwXG4gICAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGZsb3dDb250aW51ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2VvZl1cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiB3cml0ZVRvQ2hpbGQodG9rZW4sIGVvZikge1xuICAgIGFzc2VydChjaGlsZEZsb3csICdleHBlY3RlZCBgY2hpbGRGbG93YCB0byBiZSBkZWZpbmVkIHdoZW4gY29udGludWluZycpXG4gICAgY29uc3Qgc3RyZWFtID0gc2VsZi5zbGljZVN0cmVhbSh0b2tlbilcbiAgICBpZiAoZW9mKSBzdHJlYW0ucHVzaChudWxsKVxuICAgIHRva2VuLnByZXZpb3VzID0gY2hpbGRUb2tlblxuICAgIGlmIChjaGlsZFRva2VuKSBjaGlsZFRva2VuLm5leHQgPSB0b2tlblxuICAgIGNoaWxkVG9rZW4gPSB0b2tlblxuICAgIGNoaWxkRmxvdy5kZWZpbmVTa2lwKHRva2VuLnN0YXJ0KVxuICAgIGNoaWxkRmxvdy53cml0ZShzdHJlYW0pXG5cbiAgICAvLyBBbHJpZ2h0LCBzbyB3ZSBqdXN0IGFkZGVkIGEgbGF6eSBsaW5lOlxuICAgIC8vXG4gICAgLy8gYGBgbWFya2Rvd25cbiAgICAvLyA+IGFcbiAgICAvLyBiLlxuICAgIC8vXG4gICAgLy8gT3I6XG4gICAgLy9cbiAgICAvLyA+IH5+fmNcbiAgICAvLyBkXG4gICAgLy9cbiAgICAvLyBPcjpcbiAgICAvL1xuICAgIC8vID4gfCBlIHxcbiAgICAvLyBmXG4gICAgLy8gYGBgXG4gICAgLy9cbiAgICAvLyBUaGUgY29uc3RydWN0IGluIHRoZSBzZWNvbmQgZXhhbXBsZSAoZmVuY2VkIGNvZGUpIGRvZXMgbm90IGFjY2VwdCBsYXp5XG4gICAgLy8gbGluZXMsIHNvIGl0IG1hcmtlZCBpdHNlbGYgYXMgZG9uZSBhdCB0aGUgZW5kIG9mIGl0cyBmaXJzdCBsaW5lLCBhbmRcbiAgICAvLyB0aGVuIHRoZSBjb250ZW50IGNvbnN0cnVjdCBwYXJzZXMgYGRgLlxuICAgIC8vIE1vc3QgY29uc3RydWN0cyBpbiBtYXJrZG93biBtYXRjaCBvbiB0aGUgZmlyc3QgbGluZTogaWYgdGhlIGZpcnN0IGxpbmVcbiAgICAvLyBmb3JtcyBhIGNvbnN0cnVjdCwgYSBub24tbGF6eSBsaW5lIGNhbuKAmXQg4oCcdW5tYWtl4oCdIGl0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvbnN0cnVjdCBpbiB0aGUgdGhpcmQgZXhhbXBsZSBpcyBwb3RlbnRpYWxseSBhIEdGTSB0YWJsZSwgYW5kXG4gICAgLy8gdGhvc2UgYXJlICp3ZWlyZCouXG4gICAgLy8gSXQgKmNvdWxkKiBiZSBhIHRhYmxlLCBmcm9tIHRoZSBmaXJzdCBsaW5lLCBpZiB0aGUgZm9sbG93aW5nIGxpbmVcbiAgICAvLyBtYXRjaGVzIGEgY29uZGl0aW9uLlxuICAgIC8vIEluIHRoaXMgY2FzZSwgdGhhdCBzZWNvbmQgbGluZSBpcyBsYXp5LCB3aGljaCDigJx1bm1ha2Vz4oCdIHRoZSBmaXJzdCBsaW5lXG4gICAgLy8gYW5kIHR1cm5zIHRoZSB3aG9sZSBpbnRvIG9uZSBjb250ZW50IGJsb2NrLlxuICAgIC8vXG4gICAgLy8gV2XigJl2ZSBub3cgcGFyc2VkIHRoZSBub24tbGF6eSBhbmQgdGhlIGxhenkgbGluZSwgYW5kIGNhbiBmaWd1cmUgb3V0XG4gICAgLy8gd2hldGhlciB0aGUgbGF6eSBsaW5lIHN0YXJ0ZWQgYSBuZXcgZmxvdyBibG9jay5cbiAgICAvLyBJZiBpdCBkaWQsIHdlIGV4aXQgdGhlIGN1cnJlbnQgY29udGFpbmVycyBiZXR3ZWVuIHRoZSB0d28gZmxvdyBibG9ja3MuXG4gICAgaWYgKHNlbGYucGFyc2VyLmxhenlbdG9rZW4uc3RhcnQubGluZV0pIHtcbiAgICAgIGxldCBpbmRleCA9IGNoaWxkRmxvdy5ldmVudHMubGVuZ3RoXG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBUaGUgdG9rZW4gc3RhcnRzIGJlZm9yZSB0aGUgbGluZSBlbmRpbmfigKZcbiAgICAgICAgICBjaGlsZEZsb3cuZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQgPCBsaW5lU3RhcnRPZmZzZXQgJiZcbiAgICAgICAgICAvLyDigKZhbmQgZWl0aGVyIGlzIG5vdCBlbmRlZCB5ZXTigKZcbiAgICAgICAgICAoIWNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZCB8fFxuICAgICAgICAgICAgLy8g4oCmb3IgZW5kcyBhZnRlciBpdC5cbiAgICAgICAgICAgIGNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIEV4aXQ6IHRoZXJl4oCZcyBzdGlsbCBzb21ldGhpbmcgb3Blbiwgd2hpY2ggbWVhbnMgaXTigJlzIGEgbGF6eSBsaW5lXG4gICAgICAgICAgLy8gcGFydCBvZiBzb21ldGhpbmcuXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBjbG9zaW5nIGZsb3cgaW4gYGRvY3VtZW50Q29udGludWVgLlxuICAgICAgY29uc3QgaW5kZXhCZWZvcmVFeGl0cyA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgICAgbGV0IGluZGV4QmVmb3JlRmxvdyA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBzZWVuXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIHByZXZpb3VzIGNodW5rICh0aGUgb25lIGJlZm9yZSB0aGUgbGF6eSBsaW5lKS5cbiAgICAgIHdoaWxlIChpbmRleEJlZm9yZUZsb3ctLSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS50eXBlID09PSB0eXBlcy5jaHVua0Zsb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VlbiA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhc3NlcnQocG9pbnQsICdjb3VsZCBub3QgZmluZCBwcmV2aW91cyBmbG93IGNodW5rJylcblxuICAgICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuXG4gICAgICAvLyBGaXggcG9zaXRpb25zLlxuICAgICAgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV54oCZcmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gZXhpdENvbnRhaW5lcnMoc2l6ZSkge1xuICAgIGxldCBpbmRleCA9IHN0YWNrLmxlbmd0aFxuXG4gICAgLy8gRXhpdCBvcGVuIGNvbnRhaW5lcnMuXG4gICAgd2hpbGUgKGluZGV4LS0gPiBzaXplKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrW2luZGV4XVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGVudHJ5WzFdXG4gICAgICBhc3NlcnQoXG4gICAgICAgIGVudHJ5WzBdLmV4aXQsXG4gICAgICAgICdleHBlY3RlZCBgZXhpdGAgdG8gYmUgZGVmaW5lZCBvbiBjb250YWluZXIgY29uc3RydWN0J1xuICAgICAgKVxuICAgICAgZW50cnlbMF0uZXhpdC5jYWxsKHNlbGYsIGVmZmVjdHMpXG4gICAgfVxuXG4gICAgc3RhY2subGVuZ3RoID0gc2l6ZVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VGbG93KCkge1xuICAgIGFzc2VydChcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUsXG4gICAgICAnZXhwZWN0ZWQgYGNvbnRhaW5lclN0YXRlYCB0byBiZSBkZWZpbmVkIHdoZW4gY2xvc2luZyBmbG93J1xuICAgIClcbiAgICBhc3NlcnQoY2hpbGRGbG93LCAnZXhwZWN0ZWQgYGNoaWxkRmxvd2AgdG8gYmUgZGVmaW5lZCB3aGVuIGNsb3NpbmcgaXQnKVxuICAgIGNoaWxkRmxvdy53cml0ZShbY29kZXMuZW9mXSlcbiAgICBjaGlsZFRva2VuID0gdW5kZWZpbmVkXG4gICAgY2hpbGRGbG93ID0gdW5kZWZpbmVkXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250YWluZXIoZWZmZWN0cywgb2ssIG5vaykge1xuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICBhc3NlcnQoXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgKVxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgZWZmZWN0cy5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZG9jdW1lbnQsIG9rLCBub2spLFxuICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBjb25zdGFudHMudGFiU2l6ZVxuICApXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/document.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/flow.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/flow.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"flow\": () => (/* binding */ flow)\n/* harmony export */ });\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/content.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst flow = {tokenize: initializeFlow}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.content, afterConstruct)\n ),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix\n )\n )\n )\n\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n self.currentConstruct = undefined\n return initial\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZmxvdy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxpREFBaUQ7QUFDOUQsYUFBYSw0Q0FBNEM7QUFDekQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0Q7O0FBRTREO0FBQ1I7QUFDTztBQUNQO0FBQ0E7QUFDYjs7QUFFdkMsV0FBVyxrQkFBa0I7QUFDdEIsY0FBYzs7QUFFckI7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUVBQVk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsOERBQU87QUFDakM7QUFDQSxRQUFRLDRFQUFnQjtBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWLGVBQWUscUVBQVMsSUFBSSw0RUFBa0I7QUFDOUM7QUFDQTs7QUFFQSxpQkFBaUIscUVBQVM7QUFDMUI7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixpRkFBcUI7QUFDdkM7QUFDQSxpQkFBaUIsaUZBQXFCO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsZUFBZSxxRUFBUyxJQUFJLDRFQUFrQjtBQUM5QztBQUNBOztBQUVBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZmxvdy5qcz9hZjM5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2JsYW5rTGluZSwgY29udGVudH0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGZsb3cgPSB7dG9rZW5pemU6IGluaXRpYWxpemVGbG93fVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVGbG93KGVmZmVjdHMpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgaW5pdGlhbCA9IGVmZmVjdHMuYXR0ZW1wdChcbiAgICAvLyBUcnkgdG8gcGFyc2UgYSBibGFuayBsaW5lLlxuICAgIGJsYW5rTGluZSxcbiAgICBhdEJsYW5rRW5kaW5nLFxuICAgIC8vIFRyeSB0byBwYXJzZSBpbml0aWFsIGZsb3cgKGVzc2VudGlhbGx5LCBvbmx5IGNvZGUpLlxuICAgIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvd0luaXRpYWwsXG4gICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxcbiAgICAgICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgICAgICBlZmZlY3RzLmF0dGVtcHQoY29udGVudCwgYWZ0ZXJDb25zdHJ1Y3QpXG4gICAgICAgICksXG4gICAgICAgIHR5cGVzLmxpbmVQcmVmaXhcbiAgICAgIClcbiAgICApXG4gIClcblxuICByZXR1cm4gaW5pdGlhbFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGF0QmxhbmtFbmRpbmcoY29kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksXG4gICAgICAnZXhwZWN0ZWQgZW9sIG9yIGVvZidcbiAgICApXG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZ0JsYW5rKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nQmxhbmspXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyQ29uc3RydWN0KGNvZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpLFxuICAgICAgJ2V4cGVjdGVkIGVvbCBvciBlb2YnXG4gICAgKVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/flow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/text.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/text.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resolver\": () => (/* binding */ resolver),\n/* harmony export */ \"string\": () => (/* binding */ string),\n/* harmony export */ \"text\": () => (/* binding */ text)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\nconst resolver = {resolveAll: createResolver()}\nconst string = initializeFactory('string')\nconst text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data)\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data)\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(Array.isArray(list), 'expected `disable.null` to be populated')\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) &&\n events[eventIndex - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.horizontalTab) {\n tabs = true\n size++\n } else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.virtualSpace) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length ||\n tabs ||\n size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.hardBreakPrefixSizeMin\n ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineSuffix\n : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakTrailing,\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvdGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDRDQUE0QztBQUN6RCxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RDs7QUFFb0Q7QUFDUTtBQUNSO0FBQ2I7O0FBRWhDLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVQO0FBQ0EsV0FBVyxtQkFBbUI7QUFDOUIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1osWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxtQkFBbUIscUVBQVM7QUFDNUI7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzRUFBVTtBQUM5QjtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVU7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBLG1CQUFtQixxRUFBUztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVEsOENBQU07O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNCQUFzQjtBQUNqQyxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsc0VBQVU7QUFDakU7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBcUQsc0VBQVU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsNEVBQWdCO0FBQ3ZELHlDQUF5QyxzRUFBVTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx1REFBdUQsdUVBQVc7QUFDbEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLCtFQUFtQjtBQUM5QztBQUNBO0FBQ0EsVUFBVSxtQkFBbUIsOEVBQWtCO0FBQy9DO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnR0FBZ0M7QUFDbkQsZ0JBQWdCLDRFQUFnQjtBQUNoQyxnQkFBZ0IsbUZBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsK0JBQStCO0FBQy9COztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvdGV4dC5qcz8xM2I5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZXIgPSB7cmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoKX1cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSBpbml0aWFsaXplRmFjdG9yeSgnc3RyaW5nJylcbmV4cG9ydCBjb25zdCB0ZXh0ID0gaW5pdGlhbGl6ZUZhY3RvcnkoJ3RleHQnKVxuXG4vKipcbiAqIEBwYXJhbSB7J3N0cmluZycgfCAndGV4dCd9IGZpZWxkXG4gKiBAcmV0dXJucyB7SW5pdGlhbENvbnN0cnVjdH1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUZhY3RvcnkoZmllbGQpIHtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbml6ZTogaW5pdGlhbGl6ZVRleHQsXG4gICAgcmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoXG4gICAgICBmaWVsZCA9PT0gJ3RleHQnID8gcmVzb2x2ZUFsbExpbmVTdWZmaXhlcyA6IHVuZGVmaW5lZFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICAgKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBpbml0aWFsaXplVGV4dChlZmZlY3RzKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgICBjb25zdCBjb25zdHJ1Y3RzID0gdGhpcy5wYXJzZXIuY29uc3RydWN0c1tmaWVsZF1cbiAgICBjb25zdCB0ZXh0ID0gZWZmZWN0cy5hdHRlbXB0KGNvbnN0cnVjdHMsIHN0YXJ0LCBub3RUZXh0KVxuXG4gICAgcmV0dXJuIHN0YXJ0XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpID8gdGV4dChjb2RlKSA6IG5vdFRleHQoY29kZSlcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIG5vdFRleHQoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuZGF0YSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgICAgaWYgKGF0QnJlYWsoY29kZSkpIHtcbiAgICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmRhdGEpXG4gICAgICAgIHJldHVybiB0ZXh0KGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIERhdGEuXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpc3QgPSBjb25zdHJ1Y3RzW2NvZGVdXG4gICAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgICBpZiAobGlzdCkge1xuICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShsaXN0KSwgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCcpXG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2luZGV4XVxuICAgICAgICAgIGlmICghaXRlbS5wcmV2aW91cyB8fCBpdGVtLnByZXZpb3VzLmNhbGwoc2VsZiwgc2VsZi5wcmV2aW91cykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVzb2x2ZXIgfCB1bmRlZmluZWR9IFtleHRyYVJlc29sdmVyXVxuICogQHJldHVybnMge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlcihleHRyYVJlc29sdmVyKSB7XG4gIHJldHVybiByZXNvbHZlQWxsVGV4dFxuXG4gIC8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG4gIGZ1bmN0aW9uIHJlc29sdmVBbGxUZXh0KGV2ZW50cywgY29udGV4dCkge1xuICAgIGxldCBpbmRleCA9IC0xXG4gICAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGVudGVyXG5cbiAgICAvLyBBIHJhdGhlciBib3JpbmcgY29tcHV0YXRpb24gKHRvIG1lcmdlIGFkamFjZW50IGBkYXRhYCBldmVudHMpIHdoaWNoXG4gICAgLy8gaW1wcm92ZXMgbW0gcGVyZm9ybWFuY2UgYnkgMjklLlxuICAgIHdoaWxlICgrK2luZGV4IDw9IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIGlmIChlbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChldmVudHNbaW5kZXhdICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuZGF0YSkge1xuICAgICAgICAgIGVudGVyID0gaW5kZXhcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWV2ZW50c1tpbmRleF0gfHwgZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSB0eXBlcy5kYXRhKSB7XG4gICAgICAgIC8vIERvbuKAmXQgZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgb25lIGRhdGEgdG9rZW4uXG4gICAgICAgIGlmIChpbmRleCAhPT0gZW50ZXIgKyAyKSB7XG4gICAgICAgICAgZXZlbnRzW2VudGVyXVsxXS5lbmQgPSBldmVudHNbaW5kZXggLSAxXVsxXS5lbmRcbiAgICAgICAgICBldmVudHMuc3BsaWNlKGVudGVyICsgMiwgaW5kZXggLSBlbnRlciAtIDIpXG4gICAgICAgICAgaW5kZXggPSBlbnRlciArIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGVudGVyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dHJhUmVzb2x2ZXIgPyBleHRyYVJlc29sdmVyKGV2ZW50cywgY29udGV4dCkgOiBldmVudHNcbiAgfVxufVxuXG4vKipcbiAqIEEgcmF0aGVyIHVnbHkgc2V0IG9mIGluc3RydWN0aW9ucyB3aGljaCBhZ2FpbiBsb29rcyBhdCBjaHVua3MgaW4gdGhlIGlucHV0XG4gKiBzdHJlYW0uXG4gKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaGVyZSBpcyB0aGF0IGl0IGlzICptdWNoKiBmYXN0ZXIgdG8gcGFyc2UgaW4gcmV2ZXJzZS5cbiAqIEFuZCB0aGF0IHdlIGNhbuKAmXQgaG9vayBpbnRvIGBudWxsYCB0byBzcGxpdCB0aGUgbGluZSBzdWZmaXggYmVmb3JlIGFuIEVPRi5cbiAqIFRvIGRvOiBmaWd1cmUgb3V0IGlmIHdlIGNhbiBtYWtlIHRoaXMgaW50byBhIGNsZWFuIHV0aWxpdHksIG9yIGV2ZW4gaW4gY29yZS5cbiAqIEFzIGl0IHdpbGwgYmUgdXNlZnVsIGZvciBHRk1zIGxpdGVyYWwgYXV0b2xpbmsgZXh0ZW5zaW9uIChhbmQgbWF5YmUgZXZlblxuICogdGFibGVzPylcbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxMaW5lU3VmZml4ZXMoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBldmVudEluZGV4ID0gMCAvLyBTa2lwIGZpcnN0LlxuXG4gIHdoaWxlICgrK2V2ZW50SW5kZXggPD0gZXZlbnRzLmxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIChldmVudEluZGV4ID09PSBldmVudHMubGVuZ3RoIHx8XG4gICAgICAgIGV2ZW50c1tldmVudEluZGV4XVsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nKSAmJlxuICAgICAgZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXS50eXBlID09PSB0eXBlcy5kYXRhXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXVxuICAgICAgY29uc3QgY2h1bmtzID0gY29udGV4dC5zbGljZVN0cmVhbShkYXRhKVxuICAgICAgbGV0IGluZGV4ID0gY2h1bmtzLmxlbmd0aFxuICAgICAgbGV0IGJ1ZmZlckluZGV4ID0gLTFcbiAgICAgIGxldCBzaXplID0gMFxuICAgICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHRhYnNcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBjaHVua3NbaW5kZXhdXG5cbiAgICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IGNodW5rLmxlbmd0aFxuXG4gICAgICAgICAgd2hpbGUgKGNodW5rLmNoYXJDb2RlQXQoYnVmZmVySW5kZXggLSAxKSA9PT0gY29kZXMuc3BhY2UpIHtcbiAgICAgICAgICAgIHNpemUrK1xuICAgICAgICAgICAgYnVmZmVySW5kZXgtLVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChidWZmZXJJbmRleCkgYnJlYWtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IC0xXG4gICAgICAgIH1cbiAgICAgICAgLy8gTnVtYmVyXG4gICAgICAgIGVsc2UgaWYgKGNodW5rID09PSBjb2Rlcy5ob3Jpem9udGFsVGFiKSB7XG4gICAgICAgICAgdGFicyA9IHRydWVcbiAgICAgICAgICBzaXplKytcbiAgICAgICAgfSBlbHNlIGlmIChjaHVuayA9PT0gY29kZXMudmlydHVhbFNwYWNlKSB7XG4gICAgICAgICAgLy8gRW1wdHlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXBsYWNlbWVudCBjaGFyYWN0ZXIsIGV4aXQuXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB7XG4gICAgICAgICAgdHlwZTpcbiAgICAgICAgICAgIGV2ZW50SW5kZXggPT09IGV2ZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgIHRhYnMgfHxcbiAgICAgICAgICAgIHNpemUgPCBjb25zdGFudHMuaGFyZEJyZWFrUHJlZml4U2l6ZU1pblxuICAgICAgICAgICAgICA/IHR5cGVzLmxpbmVTdWZmaXhcbiAgICAgICAgICAgICAgOiB0eXBlcy5oYXJkQnJlYWtUcmFpbGluZyxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgbGluZTogZGF0YS5lbmQubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogZGF0YS5lbmQuY29sdW1uIC0gc2l6ZSxcbiAgICAgICAgICAgIG9mZnNldDogZGF0YS5lbmQub2Zmc2V0IC0gc2l6ZSxcbiAgICAgICAgICAgIF9pbmRleDogZGF0YS5zdGFydC5faW5kZXggKyBpbmRleCxcbiAgICAgICAgICAgIF9idWZmZXJJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgPyBidWZmZXJJbmRleFxuICAgICAgICAgICAgICA6IGRhdGEuc3RhcnQuX2J1ZmZlckluZGV4ICsgYnVmZmVySW5kZXhcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZGF0YS5lbmQpXG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIHRva2VuLnN0YXJ0KVxuXG4gICAgICAgIGlmIChkYXRhLnN0YXJ0Lm9mZnNldCA9PT0gZGF0YS5lbmQub2Zmc2V0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCB0b2tlbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldmVudHMuc3BsaWNlKFxuICAgICAgICAgICAgZXZlbnRJbmRleCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgdG9rZW4sIGNvbnRleHRdXG4gICAgICAgICAgKVxuICAgICAgICAgIGV2ZW50SW5kZXggKz0gMlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV2ZW50SW5kZXgrK1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/parse.js": +/*!********************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/parse.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parse\": () => (/* binding */ parse)\n/* harmony export */ });\n/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ \"../../../node_modules/micromark-util-combine-extensions/index.js\");\n/* harmony import */ var _initialize_content_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initialize/content.js */ \"../../../node_modules/micromark/dev/lib/initialize/content.js\");\n/* harmony import */ var _initialize_document_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialize/document.js */ \"../../../node_modules/micromark/dev/lib/initialize/document.js\");\n/* harmony import */ var _initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./initialize/flow.js */ \"../../../node_modules/micromark/dev/lib/initialize/flow.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initialize/text.js */ \"../../../node_modules/micromark/dev/lib/initialize/text.js\");\n/* harmony import */ var _create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-tokenizer.js */ \"../../../node_modules/micromark/dev/lib/create-tokenizer.js\");\n/* harmony import */ var _constructs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructs.js */ \"../../../node_modules/micromark/dev/lib/constructs.js\");\n/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nfunction parse(options) {\n const settings = options || {}\n const constructs = /** @type {FullNormalizedExtension} */ (\n (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)([_constructs_js__WEBPACK_IMPORTED_MODULE_1__, ...(settings.extensions || [])])\n )\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(_initialize_content_js__WEBPACK_IMPORTED_MODULE_2__.content),\n document: create(_initialize_document_js__WEBPACK_IMPORTED_MODULE_3__.document),\n flow: create(_initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__.flow),\n string: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.string),\n text: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.text)\n }\n\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return (0,_create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__.createTokenizer)(parser, initial, from)\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3BhcnNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHVDQUF1QztBQUNwRCxhQUFhLHdEQUF3RDtBQUNyRSxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDZDQUE2QztBQUMxRCxhQUFhLDZDQUE2QztBQUMxRDs7QUFFbUU7QUFDcEI7QUFDRTtBQUNSO0FBQ1E7QUFDSTtBQUNEOztBQUVwRDtBQUNBLFdBQVcsaUNBQWlDO0FBQzVDLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MseUJBQXlCO0FBQ3pELElBQUksb0ZBQWlCLEVBQUUsMkNBQWlCO0FBQ3hDOztBQUVBLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0Esb0JBQW9CLDJEQUFPO0FBQzNCLHFCQUFxQiw2REFBUTtBQUM3QixpQkFBaUIscURBQUk7QUFDckIsbUJBQW1CLHVEQUFNO0FBQ3pCLGlCQUFpQixxREFBSTtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGFBQWEscUVBQWU7QUFDNUI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmsvZGV2L2xpYi9wYXJzZS5qcz9iMzVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DcmVhdGV9IENyZWF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5GdWxsTm9ybWFsaXplZEV4dGVuc2lvbn0gRnVsbE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZUNvbnRleHR9IFBhcnNlQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZU9wdGlvbnN9IFBhcnNlT3B0aW9uc1xuICovXG5cbmltcG9ydCB7Y29tYmluZUV4dGVuc2lvbnN9IGZyb20gJ21pY3JvbWFyay11dGlsLWNvbWJpbmUtZXh0ZW5zaW9ucydcbmltcG9ydCB7Y29udGVudH0gZnJvbSAnLi9pbml0aWFsaXplL2NvbnRlbnQuanMnXG5pbXBvcnQge2RvY3VtZW50fSBmcm9tICcuL2luaXRpYWxpemUvZG9jdW1lbnQuanMnXG5pbXBvcnQge2Zsb3d9IGZyb20gJy4vaW5pdGlhbGl6ZS9mbG93LmpzJ1xuaW1wb3J0IHt0ZXh0LCBzdHJpbmd9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuaW1wb3J0IHtjcmVhdGVUb2tlbml6ZXJ9IGZyb20gJy4vY3JlYXRlLXRva2VuaXplci5qcydcbmltcG9ydCAqIGFzIGRlZmF1bHRDb25zdHJ1Y3RzIGZyb20gJy4vY29uc3RydWN0cy5qcydcblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICogQHJldHVybnMge1BhcnNlQ29udGV4dH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IGNvbnN0cnVjdHMgPSAvKiogQHR5cGUge0Z1bGxOb3JtYWxpemVkRXh0ZW5zaW9ufSAqLyAoXG4gICAgY29tYmluZUV4dGVuc2lvbnMoW2RlZmF1bHRDb25zdHJ1Y3RzLCAuLi4oc2V0dGluZ3MuZXh0ZW5zaW9ucyB8fCBbXSldKVxuICApXG5cbiAgLyoqIEB0eXBlIHtQYXJzZUNvbnRleHR9ICovXG4gIGNvbnN0IHBhcnNlciA9IHtcbiAgICBkZWZpbmVkOiBbXSxcbiAgICBsYXp5OiB7fSxcbiAgICBjb25zdHJ1Y3RzLFxuICAgIGNvbnRlbnQ6IGNyZWF0ZShjb250ZW50KSxcbiAgICBkb2N1bWVudDogY3JlYXRlKGRvY3VtZW50KSxcbiAgICBmbG93OiBjcmVhdGUoZmxvdyksXG4gICAgc3RyaW5nOiBjcmVhdGUoc3RyaW5nKSxcbiAgICB0ZXh0OiBjcmVhdGUodGV4dClcbiAgfVxuXG4gIHJldHVybiBwYXJzZXJcblxuICAvKipcbiAgICogQHBhcmFtIHtJbml0aWFsQ29uc3RydWN0fSBpbml0aWFsXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGUoaW5pdGlhbCkge1xuICAgIHJldHVybiBjcmVhdG9yXG4gICAgLyoqIEB0eXBlIHtDcmVhdGV9ICovXG4gICAgZnVuY3Rpb24gY3JlYXRvcihmcm9tKSB7XG4gICAgICByZXR1cm4gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbCwgZnJvbSlcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/parse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/postprocess.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/postprocess.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"postprocess\": () => (/* binding */ postprocess)\n/* harmony export */ });\n/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-subtokenize */ \"../../../node_modules/micromark-util-subtokenize/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nfunction postprocess(events) {\n while (!(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__.subtokenize)(events)) {\n // Empty\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3Bvc3Rwcm9jZXNzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxhQUFhLHNDQUFzQztBQUNuRDs7QUFFc0Q7O0FBRXREO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWE7QUFDYjtBQUNPO0FBQ1AsVUFBVSx1RUFBVztBQUNyQjtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3Bvc3Rwcm9jZXNzLmpzPzEyOGMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICovXG5cbmltcG9ydCB7c3VidG9rZW5pemV9IGZyb20gJ21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplJ1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0cHJvY2VzcyhldmVudHMpIHtcbiAgd2hpbGUgKCFzdWJ0b2tlbml6ZShldmVudHMpKSB7XG4gICAgLy8gRW1wdHlcbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/postprocess.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/preprocess.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/preprocess.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"preprocess\": () => (/* binding */ preprocess)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\n\n\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nfunction preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.byteOrderMarker) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf &&\n startPosition === endPosition &&\n atCarriageReturn\n ) {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul: {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.replacementCharacter)\n column++\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht: {\n next = Math.ceil(column / micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize) * micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab)\n while (column++ < next) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace)\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf: {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed)\n column = 1\n\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n if (buffer) chunks.push(buffer)\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof)\n }\n\n return chunks\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3ByZXByb2Nlc3MuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsNkJBQTZCO0FBQ3hDLFdBQVcsNEJBQTRCO0FBQ3ZDLGFBQWE7QUFDYjs7QUFFb0Q7QUFDUTs7QUFFNUQ7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQztBQUNBLGFBQWEscUJBQXFCO0FBQ2xDOztBQUVBOztBQUVBLGFBQWEsY0FBYztBQUMzQjtBQUNBLGVBQWUsY0FBYztBQUM3QjtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0MsaUZBQXFCO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsb0VBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdGQUE0QjtBQUNoRDtBQUNBLFFBQVE7QUFDUjtBQUNBLHNCQUFzQixnRkFBb0I7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUscUVBQVM7QUFDeEIsd0JBQXdCLHNGQUEwQjtBQUNsRDs7QUFFQTtBQUNBOztBQUVBLGVBQWUsb0VBQVE7QUFDdkIsc0NBQXNDLGlGQUFpQixJQUFJLGlGQUFpQjtBQUM1RSx3QkFBd0IsK0VBQW1CO0FBQzNDLGdEQUFnRCw4RUFBa0I7O0FBRWxFO0FBQ0E7O0FBRUEsZUFBZSxvRUFBUTtBQUN2Qix3QkFBd0IsMEVBQWM7QUFDdEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHdDQUF3QyxnRkFBb0I7QUFDNUQ7QUFDQSxrQkFBa0IscUVBQVM7QUFDM0I7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmsvZGV2L2xpYi9wcmVwcm9jZXNzLmpzP2YwMDUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNodW5rfSBDaHVua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVuY29kaW5nfSBFbmNvZGluZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5WYWx1ZX0gVmFsdWVcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBQcmVwcm9jZXNzb3JcbiAqIEBwYXJhbSB7VmFsdWV9IHZhbHVlXG4gKiBAcGFyYW0ge0VuY29kaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuY29kaW5nXVxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZD1mYWxzZV1cbiAqIEByZXR1cm5zIHtBcnJheTxDaHVuaz59XG4gKi9cblxuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5cbmNvbnN0IHNlYXJjaCA9IC9bXFwwXFx0XFxuXFxyXS9nXG5cbi8qKlxuICogQHJldHVybnMge1ByZXByb2Nlc3Nvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoKSB7XG4gIGxldCBjb2x1bW4gPSAxXG4gIGxldCBidWZmZXIgPSAnJ1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBzdGFydCA9IHRydWVcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRDYXJyaWFnZVJldHVyblxuXG4gIHJldHVybiBwcmVwcm9jZXNzb3JcblxuICAvKiogQHR5cGUge1ByZXByb2Nlc3Nvcn0gKi9cbiAgZnVuY3Rpb24gcHJlcHJvY2Vzc29yKHZhbHVlLCBlbmNvZGluZywgZW5kKSB7XG4gICAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gICAgY29uc3QgY2h1bmtzID0gW11cbiAgICAvKiogQHR5cGUge1JlZ0V4cE1hdGNoQXJyYXkgfCBudWxsfSAqL1xuICAgIGxldCBtYXRjaFxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBuZXh0XG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IHN0YXJ0UG9zaXRpb25cbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgZW5kUG9zaXRpb25cbiAgICAvKiogQHR5cGUge0NvZGV9ICovXG4gICAgbGV0IGNvZGVcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYEJ1ZmZlcmAgZG9lcyBhbGxvdyBhbiBlbmNvZGluZy5cbiAgICB2YWx1ZSA9IGJ1ZmZlciArIHZhbHVlLnRvU3RyaW5nKGVuY29kaW5nKVxuICAgIHN0YXJ0UG9zaXRpb24gPSAwXG4gICAgYnVmZmVyID0gJydcblxuICAgIGlmIChzdGFydCkge1xuICAgICAgLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgYWN0dWFsbHkgcGFyc2VzIEJPTXMgKGJ5dGUgb3JkZXIgbWFyaykuXG4gICAgICBpZiAodmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gY29kZXMuYnl0ZU9yZGVyTWFya2VyKSB7XG4gICAgICAgIHN0YXJ0UG9zaXRpb24rK1xuICAgICAgfVxuXG4gICAgICBzdGFydCA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHdoaWxlIChzdGFydFBvc2l0aW9uIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBzZWFyY2gubGFzdEluZGV4ID0gc3RhcnRQb3NpdGlvblxuICAgICAgbWF0Y2ggPSBzZWFyY2guZXhlYyh2YWx1ZSlcbiAgICAgIGVuZFBvc2l0aW9uID1cbiAgICAgICAgbWF0Y2ggJiYgbWF0Y2guaW5kZXggIT09IHVuZGVmaW5lZCA/IG1hdGNoLmluZGV4IDogdmFsdWUubGVuZ3RoXG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChlbmRQb3NpdGlvbilcblxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBidWZmZXIgPSB2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvZGUgPT09IGNvZGVzLmxmICYmXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPT09IGVuZFBvc2l0aW9uICYmXG4gICAgICAgIGF0Q2FycmlhZ2VSZXR1cm5cbiAgICAgICkge1xuICAgICAgICBjaHVua3MucHVzaChjb2Rlcy5jYXJyaWFnZVJldHVybkxpbmVGZWVkKVxuICAgICAgICBhdENhcnJpYWdlUmV0dXJuID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikge1xuICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLmNhcnJpYWdlUmV0dXJuKVxuICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydFBvc2l0aW9uIDwgZW5kUG9zaXRpb24pIHtcbiAgICAgICAgICBjaHVua3MucHVzaCh2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpXG4gICAgICAgICAgY29sdW1uICs9IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvblxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgY2FzZSBjb2Rlcy5udWw6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLnJlcGxhY2VtZW50Q2hhcmFjdGVyKVxuICAgICAgICAgICAgY29sdW1uKytcblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIGNvZGVzLmh0OiB7XG4gICAgICAgICAgICBuZXh0ID0gTWF0aC5jZWlsKGNvbHVtbiAvIGNvbnN0YW50cy50YWJTaXplKSAqIGNvbnN0YW50cy50YWJTaXplXG4gICAgICAgICAgICBjaHVua3MucHVzaChjb2Rlcy5ob3Jpem9udGFsVGFiKVxuICAgICAgICAgICAgd2hpbGUgKGNvbHVtbisrIDwgbmV4dCkgY2h1bmtzLnB1c2goY29kZXMudmlydHVhbFNwYWNlKVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgY29kZXMubGY6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLmxpbmVGZWVkKVxuICAgICAgICAgICAgY29sdW1uID0gMVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB0cnVlXG4gICAgICAgICAgICBjb2x1bW4gPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0YXJ0UG9zaXRpb24gPSBlbmRQb3NpdGlvbiArIDFcbiAgICB9XG5cbiAgICBpZiAoZW5kKSB7XG4gICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikgY2h1bmtzLnB1c2goY29kZXMuY2FycmlhZ2VSZXR1cm4pXG4gICAgICBpZiAoYnVmZmVyKSBjaHVua3MucHVzaChidWZmZXIpXG4gICAgICBjaHVua3MucHVzaChjb2Rlcy5lb2YpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rc1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/preprocess.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/incircle.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/incircle.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"incircle\": () => (/* binding */ incircle),\n/* harmony export */ \"incirclefast\": () => (/* binding */ incirclefast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst iccerrboundA = (10 + 96 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst iccerrboundB = (4 + 48 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst iccerrboundC = (44 + 576 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst aa = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst cc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst v = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst axtbc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst aytbc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bxtca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bytca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cxtab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cytab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bct = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cat = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abtt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bctt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst catt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _16b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _16c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _32 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(32);\nconst _32b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(32);\nconst _48 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _64 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(64);\n\nlet fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nlet fin2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\n\nfunction finadd(finlen, a, alen) {\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(finlen, fin, a, alen, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n let abtlen, bctlen, catlen;\n let abttlen, bcttlen, cattlen;\n let n1, n0;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n s1 = bdx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adx, _8), _8, adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdx, _8), _8, bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdx, _8), _8, cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n\n errbound = iccerrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n\n if (adxtail !== 0) {\n axtbclen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(axtbclen, axtbc, 2 * adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adytail, aytbc);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(aytbclen, aytbc, 2 * ady, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdytail, bytca);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bytcalen, bytca, 2 * bdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cxtablen, cxtab, 2 * cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdytail, cytab);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cytablen, cytab, 2 * cdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(axtbclen, axtbc, adxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, adxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n if (bdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(aytbclen, aytbc, adytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * ady, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, adytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bxtcalen, bxtca, bdxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, bdxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n if (cdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bytcalen, bytca, bdytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * bdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, bdytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cxtablen, cxtab, cdxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, cdxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n if (adytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cytablen, cytab, cdytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * cdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, cdytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n\n return fin[finlen - 1];\n}\n\nfunction incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n const alift = adx * adx + ady * ady;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n const blift = bdx * bdx + bdy * bdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n const clift = cdx * cdx + cdy * cdy;\n\n const det =\n alift * (bdxcdy - cdxbdy) +\n blift * (cdxady - adxcdy) +\n clift * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n const errbound = iccerrboundA * permanent;\n\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nfunction incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const ady = ay - dy;\n const bdx = bx - dx;\n const bdy = by - dy;\n const cdx = cx - dx;\n const cdy = cy - dy;\n\n const abdet = adx * bdy - bdx * ady;\n const bcdet = bdx * cdy - cdx * bdy;\n const cadet = cdx * ady - adx * cdy;\n const alift = adx * adx + ady * ady;\n const blift = bdx * bdx + bdy * bdy;\n const clift = cdx * cdx + cdy * cdy;\n\n return alift * bcdet + blift * cadet + clift * abdet;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbmNpcmNsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBa0c7O0FBRWxHLGdDQUFnQyw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2xELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTdELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFVBQVUsNkNBQUc7QUFDYixVQUFVLDZDQUFHO0FBQ2IsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7O0FBRWhCLFdBQVcsNkNBQUc7QUFDZCxZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHOztBQUVmLFVBQVUsNkNBQUc7QUFDYixXQUFXLDZDQUFHOztBQUVkO0FBQ0EsYUFBYSw2Q0FBRztBQUNoQixxQkFBcUIsWUFBWTtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSw2Q0FBRztBQUNoQixRQUFRLDZDQUFHO0FBQ1gsWUFBWSw2Q0FBRztBQUNmLGdCQUFnQiwrQ0FBSyxDQUFDLCtDQUFLO0FBQzNCLGdCQUFnQiwrQ0FBSyxDQUFDLCtDQUFLO0FBQzNCLFlBQVksNkNBQUc7QUFDZixnQkFBZ0IsK0NBQUssQ0FBQywrQ0FBSztBQUMzQixnQkFBZ0IsK0NBQUssQ0FBQywrQ0FBSztBQUMzQixRQUFRLDZDQUFHO0FBQ1gsWUFBWSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ3ZCLFlBQVksK0NBQUssQ0FBQywrQ0FBSzs7QUFFdkIsY0FBYyxrREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMENBQTBDLG9EQUFjO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksOENBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhDQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4Q0FBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhDQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw4Q0FBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLCtDQUFLO0FBQ3hCLGdDQUFnQyxtREFBUztBQUN6QyxZQUFZLCtDQUFLO0FBQ2pCLFlBQVksK0NBQUssQ0FBQywrQ0FBSztBQUN2QixZQUFZLCtDQUFLLENBQUMsK0NBQUs7QUFDdkI7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBSztBQUN4QixnQ0FBZ0MsbURBQVM7QUFDekMsWUFBWSwrQ0FBSztBQUNqQixZQUFZLCtDQUFLLENBQUMsK0NBQUs7QUFDdkIsWUFBWSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ3ZCO0FBQ0E7QUFDQSxtQkFBbUIsK0NBQUs7QUFDeEIsZ0NBQWdDLG1EQUFTO0FBQ3pDLFlBQVksK0NBQUs7QUFDakIsWUFBWSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ3ZCLFlBQVksK0NBQUssQ0FBQywrQ0FBSztBQUN2QjtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFLO0FBQ3hCLGdDQUFnQyxtREFBUztBQUN6QyxZQUFZLCtDQUFLO0FBQ2pCLFlBQVksK0NBQUssQ0FBQywrQ0FBSztBQUN2QixZQUFZLCtDQUFLLENBQUMsK0NBQUs7QUFDdkI7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBSztBQUN4QixnQ0FBZ0MsbURBQVM7QUFDekMsWUFBWSwrQ0FBSztBQUNqQixZQUFZLCtDQUFLLENBQUMsK0NBQUs7QUFDdkIsWUFBWSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ3ZCO0FBQ0E7QUFDQSxtQkFBbUIsK0NBQUs7QUFDeEIsZ0NBQWdDLG1EQUFTO0FBQ3pDLFlBQVksK0NBQUs7QUFDakIsWUFBWSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ3ZCLFlBQVksK0NBQUssQ0FBQywrQ0FBSztBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFHO0FBQ3hCO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrQ0FBSztBQUM3QixvQ0FBb0MsNkNBQUc7QUFDdkMsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSzs7QUFFckIseUJBQXlCLCtDQUFLO0FBQzlCLG9DQUFvQyxtREFBUztBQUM3QyxnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSzs7QUFFckI7QUFDQSx3Q0FBd0MsK0NBQUssQ0FBQywrQ0FBSztBQUNuRDtBQUNBO0FBQ0Esd0NBQXdDLCtDQUFLLENBQUMsK0NBQUs7QUFDbkQ7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLCtDQUFLO0FBQzdCLG9DQUFvQyw2Q0FBRztBQUN2QyxnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLOztBQUVyQix5QkFBeUIsK0NBQUs7QUFDOUIsb0NBQW9DLG1EQUFTO0FBQzdDLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBRztBQUN4QjtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsK0NBQUs7QUFDN0Isb0NBQW9DLDZDQUFHO0FBQ3ZDLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7O0FBRXJCLHlCQUF5QiwrQ0FBSztBQUM5QixvQ0FBb0MsbURBQVM7QUFDN0MsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7O0FBRXJCO0FBQ0Esd0NBQXdDLCtDQUFLLENBQUMsK0NBQUs7QUFDbkQ7QUFDQTtBQUNBLHdDQUF3QywrQ0FBSyxDQUFDLCtDQUFLO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrQ0FBSztBQUM3QixvQ0FBb0MsNkNBQUc7QUFDdkMsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSzs7QUFFckIseUJBQXlCLCtDQUFLO0FBQzlCLG9DQUFvQyxtREFBUztBQUM3QyxnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkNBQUc7QUFDeEI7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLCtDQUFLO0FBQzdCLG9DQUFvQyw2Q0FBRztBQUN2QyxnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLOztBQUVyQix5QkFBeUIsK0NBQUs7QUFDOUIsb0NBQW9DLG1EQUFTO0FBQzdDLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7QUFDckIsZ0JBQWdCLCtDQUFLOztBQUVyQjtBQUNBLHdDQUF3QywrQ0FBSyxDQUFDLCtDQUFLO0FBQ25EO0FBQ0E7QUFDQSx3Q0FBd0MsK0NBQUssQ0FBQywrQ0FBSztBQUNuRDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsK0NBQUs7QUFDN0Isb0NBQW9DLDZDQUFHO0FBQ3ZDLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7O0FBRXJCLHlCQUF5QiwrQ0FBSztBQUM5QixvQ0FBb0MsbURBQVM7QUFDN0MsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7QUFDckI7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbmNpcmNsZS5qcz84ZjBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXBzaWxvbiwgc3BsaXR0ZXIsIHJlc3VsdGVycmJvdW5kLCBlc3RpbWF0ZSwgdmVjLCBzdW0sIHN1bV90aHJlZSwgc2NhbGV9IGZyb20gJy4vdXRpbC5qcyc7XG5cbmNvbnN0IGljY2VycmJvdW5kQSA9ICgxMCArIDk2ICogZXBzaWxvbikgKiBlcHNpbG9uO1xuY29uc3QgaWNjZXJyYm91bmRCID0gKDQgKyA0OCAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGljY2VycmJvdW5kQyA9ICg0NCArIDU3NiAqIGVwc2lsb24pICogZXBzaWxvbiAqIGVwc2lsb247XG5cbmNvbnN0IGJjID0gdmVjKDQpO1xuY29uc3QgY2EgPSB2ZWMoNCk7XG5jb25zdCBhYiA9IHZlYyg0KTtcbmNvbnN0IGFhID0gdmVjKDQpO1xuY29uc3QgYmIgPSB2ZWMoNCk7XG5jb25zdCBjYyA9IHZlYyg0KTtcbmNvbnN0IHUgPSB2ZWMoNCk7XG5jb25zdCB2ID0gdmVjKDQpO1xuY29uc3QgYXh0YmMgPSB2ZWMoOCk7XG5jb25zdCBheXRiYyA9IHZlYyg4KTtcbmNvbnN0IGJ4dGNhID0gdmVjKDgpO1xuY29uc3QgYnl0Y2EgPSB2ZWMoOCk7XG5jb25zdCBjeHRhYiA9IHZlYyg4KTtcbmNvbnN0IGN5dGFiID0gdmVjKDgpO1xuY29uc3QgYWJ0ID0gdmVjKDgpO1xuY29uc3QgYmN0ID0gdmVjKDgpO1xuY29uc3QgY2F0ID0gdmVjKDgpO1xuY29uc3QgYWJ0dCA9IHZlYyg0KTtcbmNvbnN0IGJjdHQgPSB2ZWMoNCk7XG5jb25zdCBjYXR0ID0gdmVjKDQpO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYygxNik7XG5jb25zdCBfMTZiID0gdmVjKDE2KTtcbmNvbnN0IF8xNmMgPSB2ZWMoMTYpO1xuY29uc3QgXzMyID0gdmVjKDMyKTtcbmNvbnN0IF8zMmIgPSB2ZWMoMzIpO1xuY29uc3QgXzQ4ID0gdmVjKDQ4KTtcbmNvbnN0IF82NCA9IHZlYyg2NCk7XG5cbmxldCBmaW4gPSB2ZWMoMTE1Mik7XG5sZXQgZmluMiA9IHZlYygxMTUyKTtcblxuZnVuY3Rpb24gZmluYWRkKGZpbmxlbiwgYSwgYWxlbikge1xuICAgIGZpbmxlbiA9IHN1bShmaW5sZW4sIGZpbiwgYSwgYWxlbiwgZmluMik7XG4gICAgY29uc3QgdG1wID0gZmluOyBmaW4gPSBmaW4yOyBmaW4yID0gdG1wO1xuICAgIHJldHVybiBmaW5sZW47XG59XG5cbmZ1bmN0aW9uIGluY2lyY2xlYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZHgsIGR5LCBwZXJtYW5lbnQpIHtcbiAgICBsZXQgZmlubGVuO1xuICAgIGxldCBhZHh0YWlsLCBiZHh0YWlsLCBjZHh0YWlsLCBhZHl0YWlsLCBiZHl0YWlsLCBjZHl0YWlsO1xuICAgIGxldCBheHRiY2xlbiwgYXl0YmNsZW4sIGJ4dGNhbGVuLCBieXRjYWxlbiwgY3h0YWJsZW4sIGN5dGFibGVuO1xuICAgIGxldCBhYnRsZW4sIGJjdGxlbiwgY2F0bGVuO1xuICAgIGxldCBhYnR0bGVuLCBiY3R0bGVuLCBjYXR0bGVuO1xuICAgIGxldCBuMSwgbjA7XG5cbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfMCwgczEsIHMwLCB0MSwgdDAsIHUzO1xuXG4gICAgY29uc3QgYWR4ID0gYXggLSBkeDtcbiAgICBjb25zdCBiZHggPSBieCAtIGR4O1xuICAgIGNvbnN0IGNkeCA9IGN4IC0gZHg7XG4gICAgY29uc3QgYWR5ID0gYXkgLSBkeTtcbiAgICBjb25zdCBiZHkgPSBieSAtIGR5O1xuICAgIGNvbnN0IGNkeSA9IGN5IC0gZHk7XG5cbiAgICBzMSA9IGJkeCAqIGNkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICBhbG8gPSBiZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgYmxvID0gY2R5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNkeCAqIGJkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICBhbG8gPSBjZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgYmxvID0gYmR5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGJjWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSB1MztcbiAgICBzMSA9IGNkeCAqIGFkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICBhbG8gPSBjZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgYmxvID0gYWR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFkeCAqIGNkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYWR4KTtcbiAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgYmxvID0gY2R5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGNhWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgY2FbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGNhWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgY2FbM10gPSB1MztcbiAgICBzMSA9IGFkeCAqIGJkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYWR4KTtcbiAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgYmxvID0gYmR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJkeCAqIGFkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICBhbG8gPSBiZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgYmxvID0gYWR5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGFiWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYWJbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGFiWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYWJbM10gPSB1MztcblxuICAgIGZpbmxlbiA9IHN1bShcbiAgICAgICAgc3VtKFxuICAgICAgICAgICAgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJjLCBhZHgsIF84KSwgXzgsIGFkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJjLCBhZHksIF84KSwgXzgsIGFkeSwgXzE2YiksIF8xNmIsIF8zMiksIF8zMixcbiAgICAgICAgICAgIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYSwgYmR4LCBfOCksIF84LCBiZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYSwgYmR5LCBfOCksIF84LCBiZHksIF8xNmIpLCBfMTZiLCBfMzJiKSwgXzMyYiwgXzY0KSwgXzY0LFxuICAgICAgICBzdW0oXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBhYiwgY2R4LCBfOCksIF84LCBjZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFiLCBjZHksIF84KSwgXzgsIGNkeSwgXzE2YiksIF8xNmIsIF8zMiksIF8zMiwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gaWNjZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZHg7XG4gICAgYWR4dGFpbCA9IGF4IC0gKGFkeCArIGJ2aXJ0KSArIChidmlydCAtIGR4KTtcbiAgICBidmlydCA9IGF5IC0gYWR5O1xuICAgIGFkeXRhaWwgPSBheSAtIChhZHkgKyBidmlydCkgKyAoYnZpcnQgLSBkeSk7XG4gICAgYnZpcnQgPSBieCAtIGJkeDtcbiAgICBiZHh0YWlsID0gYnggLSAoYmR4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHgpO1xuICAgIGJ2aXJ0ID0gYnkgLSBiZHk7XG4gICAgYmR5dGFpbCA9IGJ5IC0gKGJkeSArIGJ2aXJ0KSArIChidmlydCAtIGR5KTtcbiAgICBidmlydCA9IGN4IC0gY2R4O1xuICAgIGNkeHRhaWwgPSBjeCAtIChjZHggKyBidmlydCkgKyAoYnZpcnQgLSBkeCk7XG4gICAgYnZpcnQgPSBjeSAtIGNkeTtcbiAgICBjZHl0YWlsID0gY3kgLSAoY2R5ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHkpO1xuICAgIGlmIChhZHh0YWlsID09PSAwICYmIGJkeHRhaWwgPT09IDAgJiYgY2R4dGFpbCA9PT0gMCAmJiBhZHl0YWlsID09PSAwICYmIGJkeXRhaWwgPT09IDAgJiYgY2R5dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gaWNjZXJyYm91bmRDICogcGVybWFuZW50ICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuICAgIGRldCArPSAoKGFkeCAqIGFkeCArIGFkeSAqIGFkeSkgKiAoKGJkeCAqIGNkeXRhaWwgKyBjZHkgKiBiZHh0YWlsKSAtIChiZHkgKiBjZHh0YWlsICsgY2R4ICogYmR5dGFpbCkpICtcbiAgICAgICAgMiAqIChhZHggKiBhZHh0YWlsICsgYWR5ICogYWR5dGFpbCkgKiAoYmR4ICogY2R5IC0gYmR5ICogY2R4KSkgK1xuICAgICAgICAoKGJkeCAqIGJkeCArIGJkeSAqIGJkeSkgKiAoKGNkeCAqIGFkeXRhaWwgKyBhZHkgKiBjZHh0YWlsKSAtIChjZHkgKiBhZHh0YWlsICsgYWR4ICogY2R5dGFpbCkpICtcbiAgICAgICAgMiAqIChiZHggKiBiZHh0YWlsICsgYmR5ICogYmR5dGFpbCkgKiAoY2R4ICogYWR5IC0gY2R5ICogYWR4KSkgK1xuICAgICAgICAoKGNkeCAqIGNkeCArIGNkeSAqIGNkeSkgKiAoKGFkeCAqIGJkeXRhaWwgKyBiZHkgKiBhZHh0YWlsKSAtIChhZHkgKiBiZHh0YWlsICsgYmR4ICogYWR5dGFpbCkpICtcbiAgICAgICAgMiAqIChjZHggKiBjZHh0YWlsICsgY2R5ICogY2R5dGFpbCkgKiAoYWR4ICogYmR5IC0gYWR5ICogYmR4KSk7XG5cbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBpZiAoYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwIHx8IGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICBzMSA9IGFkeCAqIGFkeDtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgICAgIHMwID0gYWxvICogYWxvIC0gKHMxIC0gYWhpICogYWhpIC0gKGFoaSArIGFoaSkgKiBhbG8pO1xuICAgICAgICB0MSA9IGFkeSAqIGFkeTtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgICAgICBhbG8gPSBhZHkgLSBhaGk7XG4gICAgICAgIHQwID0gYWxvICogYWxvIC0gKHQxIC0gYWhpICogYWhpIC0gKGFoaSArIGFoaSkgKiBhbG8pO1xuICAgICAgICBfaSA9IHMwICsgdDA7XG4gICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgYWFbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgX2ogPSBzMSArIF9pO1xuICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgIF9pID0gXzAgKyB0MTtcbiAgICAgICAgYnZpcnQgPSBfaSAtIF8wO1xuICAgICAgICBhYVsxXSA9IF8wIC0gKF9pIC0gYnZpcnQpICsgKHQxIC0gYnZpcnQpO1xuICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICAgICAgYWFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgYWFbM10gPSB1MztcbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCB8fCBhZHh0YWlsICE9PSAwIHx8IGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgczEgPSBiZHggKiBiZHg7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeDtcbiAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICBzMCA9IGFsbyAqIGFsbyAtIChzMSAtIGFoaSAqIGFoaSAtIChhaGkgKyBhaGkpICogYWxvKTtcbiAgICAgICAgdDEgPSBiZHkgKiBiZHk7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICAgICAgYWhpID0gYyAtIChjIC0gYmR5KTtcbiAgICAgICAgYWxvID0gYmR5IC0gYWhpO1xuICAgICAgICB0MCA9IGFsbyAqIGFsbyAtICh0MSAtIGFoaSAqIGFoaSAtIChhaGkgKyBhaGkpICogYWxvKTtcbiAgICAgICAgX2kgPSBzMCArIHQwO1xuICAgICAgICBidmlydCA9IF9pIC0gczA7XG4gICAgICAgIGJiWzBdID0gczAgLSAoX2kgLSBidmlydCkgKyAodDAgLSBidmlydCk7XG4gICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgIGJ2aXJ0ID0gX2kgLSBfMDtcbiAgICAgICAgYmJbMV0gPSBfMCAtIChfaSAtIGJ2aXJ0KSArICh0MSAtIGJ2aXJ0KTtcbiAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgIGJiWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgIGJiWzNdID0gdTM7XG4gICAgfVxuICAgIGlmIChhZHh0YWlsICE9PSAwIHx8IGFkeXRhaWwgIT09IDAgfHwgYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgIHMxID0gY2R4ICogY2R4O1xuICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgICAgIGFsbyA9IGNkeCAtIGFoaTtcbiAgICAgICAgczAgPSBhbG8gKiBhbG8gLSAoczEgLSBhaGkgKiBhaGkgLSAoYWhpICsgYWhpKSAqIGFsbyk7XG4gICAgICAgIHQxID0gY2R5ICogY2R5O1xuICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHk7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgICAgIGFsbyA9IGNkeSAtIGFoaTtcbiAgICAgICAgdDAgPSBhbG8gKiBhbG8gLSAodDEgLSBhaGkgKiBhaGkgLSAoYWhpICsgYWhpKSAqIGFsbyk7XG4gICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgYnZpcnQgPSBfaSAtIHMwO1xuICAgICAgICBjY1swXSA9IHMwIC0gKF9pIC0gYnZpcnQpICsgKHQwIC0gYnZpcnQpO1xuICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgX2kgPSBfMCArIHQxO1xuICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgIGNjWzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgIHUzID0gX2ogKyBfaTtcbiAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICBjY1syXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICBjY1szXSA9IHUzO1xuICAgIH1cblxuICAgIGlmIChhZHh0YWlsICE9PSAwKSB7XG4gICAgICAgIGF4dGJjbGVuID0gc2NhbGUoNCwgYmMsIGFkeHRhaWwsIGF4dGJjKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgc2NhbGUoYXh0YmNsZW4sIGF4dGJjLCAyICogYWR4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYWR4dGFpbCwgXzgpLCBfOCwgYmR5LCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJiLCBhZHh0YWlsLCBfOCksIF84LCAtY2R5LCBfMTZjKSwgXzE2YywgXzMyLCBfNDgpLCBfNDgpO1xuICAgIH1cbiAgICBpZiAoYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICBheXRiY2xlbiA9IHNjYWxlKDQsIGJjLCBhZHl0YWlsLCBheXRiYyk7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgIHNjYWxlKGF5dGJjbGVuLCBheXRiYywgMiAqIGFkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGFkeXRhaWwsIF84KSwgXzgsIGNkeCwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYWR5dGFpbCwgXzgpLCBfOCwgLWJkeCwgXzE2YyksIF8xNmMsIF8zMiwgXzQ4KSwgXzQ4KTtcbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDApIHtcbiAgICAgICAgYnh0Y2FsZW4gPSBzY2FsZSg0LCBjYSwgYmR4dGFpbCwgYnh0Y2EpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICBzY2FsZShieHRjYWxlbiwgYnh0Y2EsIDIgKiBiZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHh0YWlsLCBfOCksIF84LCBjZHksIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgY2MsIGJkeHRhaWwsIF84KSwgXzgsIC1hZHksIF8xNmMpLCBfMTZjLCBfMzIsIF80OCksIF80OCk7XG4gICAgfVxuICAgIGlmIChiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgIGJ5dGNhbGVuID0gc2NhbGUoNCwgY2EsIGJkeXRhaWwsIGJ5dGNhKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgc2NhbGUoYnl0Y2FsZW4sIGJ5dGNhLCAyICogYmR5LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYmR5dGFpbCwgXzgpLCBfOCwgYWR4LCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHl0YWlsLCBfOCksIF84LCAtY2R4LCBfMTZjKSwgXzE2YywgXzMyLCBfNDgpLCBfNDgpO1xuICAgIH1cbiAgICBpZiAoY2R4dGFpbCAhPT0gMCkge1xuICAgICAgICBjeHRhYmxlbiA9IHNjYWxlKDQsIGFiLCBjZHh0YWlsLCBjeHRhYik7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgIHNjYWxlKGN4dGFibGVuLCBjeHRhYiwgMiAqIGNkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGNkeHRhaWwsIF84KSwgXzgsIGFkeSwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBhYSwgY2R4dGFpbCwgXzgpLCBfOCwgLWJkeSwgXzE2YyksIF8xNmMsIF8zMiwgXzQ4KSwgXzQ4KTtcbiAgICB9XG4gICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgY3l0YWJsZW4gPSBzY2FsZSg0LCBhYiwgY2R5dGFpbCwgY3l0YWIpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICBzY2FsZShjeXRhYmxlbiwgY3l0YWIsIDIgKiBjZHksIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBjZHl0YWlsLCBfOCksIF84LCBiZHgsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGNkeXRhaWwsIF84KSwgXzgsIC1hZHgsIF8xNmMpLCBfMTZjLCBfMzIsIF80OCksIF80OCk7XG4gICAgfVxuXG4gICAgaWYgKGFkeHRhaWwgIT09IDAgfHwgYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwIHx8IGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBiZHh0YWlsICogY2R5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGJkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYmR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgICAgICAgICBibG8gPSBjZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGJkeCAqIGNkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBiZHgpO1xuICAgICAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gY2R5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBzMSA9IGNkeHRhaWwgKiAtYmR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIC1iZHk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSAtYmR5KTtcbiAgICAgICAgICAgIGJsbyA9IC1iZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeCAqIC1iZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICAgICAgICAgIGFsbyA9IGNkeCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIC1iZHl0YWlsO1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gLWJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gLWJkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwICsgdDA7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gczA7XG4gICAgICAgICAgICB2WzBdID0gczAgLSAoX2kgLSBidmlydCkgKyAodDAgLSBidmlydCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCArIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfaSAtIF8wO1xuICAgICAgICAgICAgdlsxXSA9IF8wIC0gKF9pIC0gYnZpcnQpICsgKHQxIC0gYnZpcnQpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgdlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgdlszXSA9IHUzO1xuICAgICAgICAgICAgYmN0bGVuID0gc3VtKDQsIHUsIDQsIHYsIGJjdCk7XG4gICAgICAgICAgICBzMSA9IGJkeHRhaWwgKiBjZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGJkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYmR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGNkeXRhaWw7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBjZHl0YWlsKTtcbiAgICAgICAgICAgIGJsbyA9IGNkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeHRhaWwgKiBiZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeXRhaWw7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBiZHl0YWlsKTtcbiAgICAgICAgICAgIGJsbyA9IGJkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwIC0gdDA7XG4gICAgICAgICAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgICAgICAgICBiY3R0WzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCAtIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgICAgICAgICAgYmN0dFsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgYmN0dFsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgYmN0dFszXSA9IHUzO1xuICAgICAgICAgICAgYmN0dGxlbiA9IDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiY3RbMF0gPSAwO1xuICAgICAgICAgICAgYmN0bGVuID0gMTtcbiAgICAgICAgICAgIGJjdHRbMF0gPSAwO1xuICAgICAgICAgICAgYmN0dGxlbiA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkeHRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGJjdGxlbiwgYmN0LCBhZHh0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShheHRiY2xlbiwgYXh0YmMsIGFkeHRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBhZHgsIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGJjdHRsZW4sIGJjdHQsIGFkeHRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGFkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBhZHh0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGFkeHRhaWwsIF8zMiksIF8zMiwgXzMyYiwgXzY0KSwgXzY0KTtcblxuICAgICAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBjYywgYWR4dGFpbCwgXzgpLCBfOCwgYmR5dGFpbCwgXzE2KSwgXzE2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoc2NhbGUoNCwgYmIsIC1hZHh0YWlsLCBfOCksIF84LCBjZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSBzY2FsZShiY3RsZW4sIGJjdCwgYWR5dGFpbCwgXzE2Yyk7XG4gICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW0oXG4gICAgICAgICAgICAgICAgc2NhbGUoYXl0YmNsZW4sIGF5dGJjLCBhZHl0YWlsLCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuLCBfMTZjLCAyICogYWR5LCBfMzIpLCBfMzIsIF80OCksIF80OCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxlbjIgPSBzY2FsZShiY3R0bGVuLCBiY3R0LCBhZHl0YWlsLCBfOCk7XG4gICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIDIgKiBhZHksIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgYWR5dGFpbCwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuLCBfMTZjLCBhZHl0YWlsLCBfMzIpLCBfMzIsIF8zMmIsIF82NCksIF82NCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDAgfHwgYmR5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoY2R4dGFpbCAhPT0gMCB8fCBjZHl0YWlsICE9PSAwIHx8IGFkeHRhaWwgIT09IDAgfHwgYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBjZHh0YWlsICogYWR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgICAgICAgICBibG8gPSBhZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBjZHgpO1xuICAgICAgICAgICAgYWxvID0gY2R4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBuMSA9IC1jZHk7XG4gICAgICAgICAgICBuMCA9IC1jZHl0YWlsO1xuICAgICAgICAgICAgczEgPSBhZHh0YWlsICogbjE7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjE7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMSk7XG4gICAgICAgICAgICBibG8gPSBuMSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYWR4ICogbjA7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICAgICAgYWxvID0gYWR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjA7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMCk7XG4gICAgICAgICAgICBibG8gPSBuMCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHZbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB2WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB2WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB2WzNdID0gdTM7XG4gICAgICAgICAgICBjYXRsZW4gPSBzdW0oNCwgdSwgNCwgdiwgY2F0KTtcbiAgICAgICAgICAgIHMxID0gY2R4dGFpbCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gY2R4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBjZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYWR4dGFpbCAqIGNkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gY2R5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgLSB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICAgICAgICAgIGNhdHRbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wIC0gdDE7XG4gICAgICAgICAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgICAgICAgICBjYXR0WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICBjYXR0WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBjYXR0WzNdID0gdTM7XG4gICAgICAgICAgICBjYXR0bGVuID0gNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhdFswXSA9IDA7XG4gICAgICAgICAgICBjYXRsZW4gPSAxO1xuICAgICAgICAgICAgY2F0dFswXSA9IDA7XG4gICAgICAgICAgICBjYXR0bGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmR4dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gc2NhbGUoY2F0bGVuLCBjYXQsIGJkeHRhaWwsIF8xNmMpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKGJ4dGNhbGVuLCBieHRjYSwgYmR4dGFpbCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgMiAqIGJkeCwgXzMyKSwgXzMyLCBfNDgpLCBfNDgpO1xuXG4gICAgICAgICAgICBjb25zdCBsZW4yID0gc2NhbGUoY2F0dGxlbiwgY2F0dCwgYmR4dGFpbCwgXzgpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCAyICogYmR4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIGJkeHRhaWwsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgYmR4dGFpbCwgXzMyKSwgXzMyLCBfMzJiLCBfNjQpLCBfNjQpO1xuXG4gICAgICAgICAgICBpZiAoY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHh0YWlsLCBfOCksIF84LCBjZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBjYywgLWJkeHRhaWwsIF84KSwgXzgsIGFkeXRhaWwsIF8xNiksIF8xNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGNhdGxlbiwgY2F0LCBiZHl0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShieXRjYWxlbiwgYnl0Y2EsIGJkeXRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBiZHksIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGNhdHRsZW4sIGNhdHQsIGJkeXRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGJkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBiZHl0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGJkeXRhaWwsIF8zMiksIF8zMiwgIF8zMmIsIF82NCksIF82NCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoYWR4dGFpbCAhPT0gMCB8fCBhZHl0YWlsICE9PSAwIHx8IGJkeHRhaWwgIT09IDAgfHwgYmR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBhZHh0YWlsICogYmR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGFkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYWR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgICAgICAgICBibG8gPSBiZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGFkeCAqIGJkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICAgICAgYWxvID0gYWR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYmR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBuMSA9IC1hZHk7XG4gICAgICAgICAgICBuMCA9IC1hZHl0YWlsO1xuICAgICAgICAgICAgczEgPSBiZHh0YWlsICogbjE7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBiZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjE7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMSk7XG4gICAgICAgICAgICBibG8gPSBuMSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYmR4ICogbjA7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBiZHgpO1xuICAgICAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjA7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMCk7XG4gICAgICAgICAgICBibG8gPSBuMCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHZbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB2WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB2WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB2WzNdID0gdTM7XG4gICAgICAgICAgICBhYnRsZW4gPSBzdW0oNCwgdSwgNCwgdiwgYWJ0KTtcbiAgICAgICAgICAgIHMxID0gYWR4dGFpbCAqIGJkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYmR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYmR4dGFpbCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBiZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgLSB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICAgICAgICAgIGFidHRbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wIC0gdDE7XG4gICAgICAgICAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgICAgICAgICBhYnR0WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICBhYnR0WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBhYnR0WzNdID0gdTM7XG4gICAgICAgICAgICBhYnR0bGVuID0gNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFidFswXSA9IDA7XG4gICAgICAgICAgICBhYnRsZW4gPSAxO1xuICAgICAgICAgICAgYWJ0dFswXSA9IDA7XG4gICAgICAgICAgICBhYnR0bGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2R4dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gc2NhbGUoYWJ0bGVuLCBhYnQsIGNkeHRhaWwsIF8xNmMpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKGN4dGFibGVuLCBjeHRhYiwgY2R4dGFpbCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgMiAqIGNkeCwgXzMyKSwgXzMyLCBfNDgpLCBfNDgpO1xuXG4gICAgICAgICAgICBjb25zdCBsZW4yID0gc2NhbGUoYWJ0dGxlbiwgYWJ0dCwgY2R4dGFpbCwgXzgpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCAyICogY2R4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIGNkeHRhaWwsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgY2R4dGFpbCwgXzMyKSwgXzMyLCBfMzJiLCBfNjQpLCBfNjQpO1xuXG4gICAgICAgICAgICBpZiAoYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKHNjYWxlKDQsIGJiLCBjZHh0YWlsLCBfOCksIF84LCBhZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBhYSwgLWNkeHRhaWwsIF84KSwgXzgsIGJkeXRhaWwsIF8xNiksIF8xNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGFidGxlbiwgYWJ0LCBjZHl0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShjeXRhYmxlbiwgY3l0YWIsIGNkeXRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBjZHksIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGFidHRsZW4sIGFidHQsIGNkeXRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGNkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBjZHl0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGNkeXRhaWwsIF8zMiksIF8zMiwgXzMyYiwgXzY0KSwgXzY0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaW5bZmlubGVuIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNpcmNsZShheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBkeCwgZHkpIHtcbiAgICBjb25zdCBhZHggPSBheCAtIGR4O1xuICAgIGNvbnN0IGJkeCA9IGJ4IC0gZHg7XG4gICAgY29uc3QgY2R4ID0gY3ggLSBkeDtcbiAgICBjb25zdCBhZHkgPSBheSAtIGR5O1xuICAgIGNvbnN0IGJkeSA9IGJ5IC0gZHk7XG4gICAgY29uc3QgY2R5ID0gY3kgLSBkeTtcblxuICAgIGNvbnN0IGJkeGNkeSA9IGJkeCAqIGNkeTtcbiAgICBjb25zdCBjZHhiZHkgPSBjZHggKiBiZHk7XG4gICAgY29uc3QgYWxpZnQgPSBhZHggKiBhZHggKyBhZHkgKiBhZHk7XG5cbiAgICBjb25zdCBjZHhhZHkgPSBjZHggKiBhZHk7XG4gICAgY29uc3QgYWR4Y2R5ID0gYWR4ICogY2R5O1xuICAgIGNvbnN0IGJsaWZ0ID0gYmR4ICogYmR4ICsgYmR5ICogYmR5O1xuXG4gICAgY29uc3QgYWR4YmR5ID0gYWR4ICogYmR5O1xuICAgIGNvbnN0IGJkeGFkeSA9IGJkeCAqIGFkeTtcbiAgICBjb25zdCBjbGlmdCA9IGNkeCAqIGNkeCArIGNkeSAqIGNkeTtcblxuICAgIGNvbnN0IGRldCA9XG4gICAgICAgIGFsaWZ0ICogKGJkeGNkeSAtIGNkeGJkeSkgK1xuICAgICAgICBibGlmdCAqIChjZHhhZHkgLSBhZHhjZHkpICtcbiAgICAgICAgY2xpZnQgKiAoYWR4YmR5IC0gYmR4YWR5KTtcblxuICAgIGNvbnN0IHBlcm1hbmVudCA9XG4gICAgICAgIChNYXRoLmFicyhiZHhjZHkpICsgTWF0aC5hYnMoY2R4YmR5KSkgKiBhbGlmdCArXG4gICAgICAgIChNYXRoLmFicyhjZHhhZHkpICsgTWF0aC5hYnMoYWR4Y2R5KSkgKiBibGlmdCArXG4gICAgICAgIChNYXRoLmFicyhhZHhiZHkpICsgTWF0aC5hYnMoYmR4YWR5KSkgKiBjbGlmdDtcblxuICAgIGNvbnN0IGVycmJvdW5kID0gaWNjZXJyYm91bmRBICogcGVybWFuZW50O1xuXG4gICAgaWYgKGRldCA+IGVycmJvdW5kIHx8IC1kZXQgPiBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cbiAgICByZXR1cm4gaW5jaXJjbGVhZGFwdChheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBkeCwgZHksIHBlcm1hbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNpcmNsZWZhc3QoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZHgsIGR5KSB7XG4gICAgY29uc3QgYWR4ID0gYXggLSBkeDtcbiAgICBjb25zdCBhZHkgPSBheSAtIGR5O1xuICAgIGNvbnN0IGJkeCA9IGJ4IC0gZHg7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGNkeSA9IGN5IC0gZHk7XG5cbiAgICBjb25zdCBhYmRldCA9IGFkeCAqIGJkeSAtIGJkeCAqIGFkeTtcbiAgICBjb25zdCBiY2RldCA9IGJkeCAqIGNkeSAtIGNkeCAqIGJkeTtcbiAgICBjb25zdCBjYWRldCA9IGNkeCAqIGFkeSAtIGFkeCAqIGNkeTtcbiAgICBjb25zdCBhbGlmdCA9IGFkeCAqIGFkeCArIGFkeSAqIGFkeTtcbiAgICBjb25zdCBibGlmdCA9IGJkeCAqIGJkeCArIGJkeSAqIGJkeTtcbiAgICBjb25zdCBjbGlmdCA9IGNkeCAqIGNkeCArIGNkeSAqIGNkeTtcblxuICAgIHJldHVybiBhbGlmdCAqIGJjZGV0ICsgYmxpZnQgKiBjYWRldCArIGNsaWZ0ICogYWJkZXQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/incircle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/insphere.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/insphere.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"insphere\": () => (/* binding */ insphere),\n/* harmony export */ \"inspherefast\": () => (/* binding */ inspherefast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst isperrboundA = (16 + 224 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst isperrboundB = (5 + 72 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst isperrboundC = (71 + 1408 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst cd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst de = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ea = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ac = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ce = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst da = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst eb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst abc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst bcd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst cde = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst dea = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst eab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst abd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst bce = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst cda = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst deb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst eac = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\n\nconst adet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst bdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst cdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst ddet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst edet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst abdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(2304);\nconst cddet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(2304);\nconst cdedet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(3456);\nconst deter = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(5760);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _24 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst _48 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _48b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _96 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst _192 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\nconst _384x = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _384y = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _384z = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _768 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, a, az, _8), _8,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, b, bz, _8b), _8b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(alen, a, blen, b, _48), _48,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, x, _192), _192, x, _384x), _384x,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, y, _192), _192, y, _384y), _384y,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n s1 = ax * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n\n const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n const deterlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n return deter[deterlen - 1];\n}\n\nconst xdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst ydet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst zdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, x, _48), _48, x, xdet), xdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, y, _48), _48, y, ydet), ydet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n let ab3, bc3, cd3, da3, ac3, bd3;\n\n let aextail, bextail, cextail, dextail;\n let aeytail, beytail, ceytail, deytail;\n let aeztail, beztail, ceztail, deztail;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n s1 = aex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n\n const finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n bextail === 0 && beytail === 0 && beztail === 0 &&\n cextail === 0 && ceytail === 0 && ceztail === 0 &&\n dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n\n errbound = isperrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n\n const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n det +=\n (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n 2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nfunction insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n const aexbey = aex * bey;\n const bexaey = bex * aey;\n const ab = aexbey - bexaey;\n const bexcey = bex * cey;\n const cexbey = cex * bey;\n const bc = bexcey - cexbey;\n const cexdey = cex * dey;\n const dexcey = dex * cey;\n const cd = cexdey - dexcey;\n const dexaey = dex * aey;\n const aexdey = aex * dey;\n const da = dexaey - aexdey;\n const aexcey = aex * cey;\n const cexaey = cex * aey;\n const ac = aexcey - cexaey;\n const bexdey = bex * dey;\n const dexbey = dex * bey;\n const bd = bexdey - dexbey;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n const det =\n (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n const aezplus = Math.abs(aez);\n const bezplus = Math.abs(bez);\n const cezplus = Math.abs(cez);\n const dezplus = Math.abs(dez);\n const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n const permanent =\n (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n const errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nfunction inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n const aex = pax - pex;\n const bex = pbx - pex;\n const cex = pcx - pex;\n const dex = pdx - pex;\n const aey = pay - pey;\n const bey = pby - pey;\n const cey = pcy - pey;\n const dey = pdy - pey;\n const aez = paz - pez;\n const bez = pbz - pez;\n const cez = pcz - pez;\n const dez = pdz - pez;\n\n const ab = aex * bey - bex * aey;\n const bc = bex * cey - cex * bey;\n const cd = cex * dey - dex * cey;\n const da = dex * aey - aex * dey;\n const ac = aex * cey - cex * aey;\n const bd = bex * dey - dex * bey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbnNwaGVyZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEc7O0FBRTFHLGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPO0FBQ25ELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGtDQUFrQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTlELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7O0FBRWQsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRzs7QUFFZixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGVBQWUsNkNBQUc7QUFDbEIsY0FBYyw2Q0FBRzs7QUFFakIsV0FBVyw2Q0FBRztBQUNkLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsY0FBYyw2Q0FBRztBQUNqQixhQUFhLDZDQUFHOztBQUVoQjtBQUNBLFdBQVcsbURBQVM7QUFDcEIsUUFBUSwrQ0FBSztBQUNiLFFBQVEsK0NBQUs7QUFDYixRQUFRLCtDQUFLO0FBQ2I7O0FBRUE7QUFDQSxnQkFBZ0IsNkNBQUc7QUFDbkIsUUFBUSw2Q0FBRztBQUNYLFFBQVEsZ0RBQU0sQ0FBQyw2Q0FBRzs7QUFFbEIsV0FBVyxtREFBUztBQUNwQixRQUFRLCtDQUFLLENBQUMsK0NBQUs7QUFDbkIsUUFBUSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ25CLFFBQVEsK0NBQUssQ0FBQywrQ0FBSztBQUNuQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLG1EQUFTO0FBQzlCO0FBQ0E7QUFDQSxRQUFRLG1EQUFTO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7O0FBRWY7QUFDQTtBQUNBLFdBQVcsbURBQVM7QUFDcEIsUUFBUSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ25CLFFBQVEsK0NBQUssQ0FBQywrQ0FBSztBQUNuQixRQUFRLCtDQUFLLENBQUMsK0NBQUs7QUFDbkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsNkNBQUc7QUFDdEIsUUFBUSw2Q0FBRztBQUNYLFlBQVksZ0RBQU07QUFDbEI7QUFDQSxRQUFRLDZDQUFHO0FBQ1gsWUFBWSxnREFBTTtBQUNsQjs7QUFFQSxjQUFjLGtEQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEMsb0RBQWM7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vaW5zcGhlcmUuanM/NWYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtLCBzdW1fdGhyZWUsIHNjYWxlLCBuZWdhdGV9IGZyb20gJy4vdXRpbC5qcyc7XG5cbmNvbnN0IGlzcGVycmJvdW5kQSA9ICgxNiArIDIyNCAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGlzcGVycmJvdW5kQiA9ICg1ICsgNzIgKiBlcHNpbG9uKSAqIGVwc2lsb247XG5jb25zdCBpc3BlcnJib3VuZEMgPSAoNzEgKyAxNDA4ICogZXBzaWxvbikgKiBlcHNpbG9uICogZXBzaWxvbjtcblxuY29uc3QgYWIgPSB2ZWMoNCk7XG5jb25zdCBiYyA9IHZlYyg0KTtcbmNvbnN0IGNkID0gdmVjKDQpO1xuY29uc3QgZGUgPSB2ZWMoNCk7XG5jb25zdCBlYSA9IHZlYyg0KTtcbmNvbnN0IGFjID0gdmVjKDQpO1xuY29uc3QgYmQgPSB2ZWMoNCk7XG5jb25zdCBjZSA9IHZlYyg0KTtcbmNvbnN0IGRhID0gdmVjKDQpO1xuY29uc3QgZWIgPSB2ZWMoNCk7XG5cbmNvbnN0IGFiYyA9IHZlYygyNCk7XG5jb25zdCBiY2QgPSB2ZWMoMjQpO1xuY29uc3QgY2RlID0gdmVjKDI0KTtcbmNvbnN0IGRlYSA9IHZlYygyNCk7XG5jb25zdCBlYWIgPSB2ZWMoMjQpO1xuY29uc3QgYWJkID0gdmVjKDI0KTtcbmNvbnN0IGJjZSA9IHZlYygyNCk7XG5jb25zdCBjZGEgPSB2ZWMoMjQpO1xuY29uc3QgZGViID0gdmVjKDI0KTtcbmNvbnN0IGVhYyA9IHZlYygyNCk7XG5cbmNvbnN0IGFkZXQgPSB2ZWMoMTE1Mik7XG5jb25zdCBiZGV0ID0gdmVjKDExNTIpO1xuY29uc3QgY2RldCA9IHZlYygxMTUyKTtcbmNvbnN0IGRkZXQgPSB2ZWMoMTE1Mik7XG5jb25zdCBlZGV0ID0gdmVjKDExNTIpO1xuY29uc3QgYWJkZXQgPSB2ZWMoMjMwNCk7XG5jb25zdCBjZGRldCA9IHZlYygyMzA0KTtcbmNvbnN0IGNkZWRldCA9IHZlYygzNDU2KTtcbmNvbnN0IGRldGVyID0gdmVjKDU3NjApO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF84YiA9IHZlYyg4KTtcbmNvbnN0IF84YyA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYygxNik7XG5jb25zdCBfMjQgPSB2ZWMoMjQpO1xuY29uc3QgXzQ4ID0gdmVjKDQ4KTtcbmNvbnN0IF80OGIgPSB2ZWMoNDgpO1xuY29uc3QgXzk2ID0gdmVjKDk2KTtcbmNvbnN0IF8xOTIgPSB2ZWMoMTkyKTtcbmNvbnN0IF8zODR4ID0gdmVjKDM4NCk7XG5jb25zdCBfMzg0eSA9IHZlYygzODQpO1xuY29uc3QgXzM4NHogPSB2ZWMoMzg0KTtcbmNvbnN0IF83NjggPSB2ZWMoNzY4KTtcblxuZnVuY3Rpb24gc3VtX3RocmVlX3NjYWxlKGEsIGIsIGMsIGF6LCBieiwgY3osIG91dCkge1xuICAgIHJldHVybiBzdW1fdGhyZWUoXG4gICAgICAgIHNjYWxlKDQsIGEsIGF6LCBfOCksIF84LFxuICAgICAgICBzY2FsZSg0LCBiLCBieiwgXzhiKSwgXzhiLFxuICAgICAgICBzY2FsZSg0LCBjLCBjeiwgXzhjKSwgXzhjLCBfMTYsIG91dCk7XG59XG5cbmZ1bmN0aW9uIGxpZnRleGFjdChhbGVuLCBhLCBibGVuLCBiLCBjbGVuLCBjLCBkbGVuLCBkLCB4LCB5LCB6LCBvdXQpIHtcbiAgICBjb25zdCBsZW4gPSBzdW0oXG4gICAgICAgIHN1bShhbGVuLCBhLCBibGVuLCBiLCBfNDgpLCBfNDgsXG4gICAgICAgIG5lZ2F0ZShzdW0oY2xlbiwgYywgZGxlbiwgZCwgXzQ4YiksIF80OGIpLCBfNDhiLCBfOTYpO1xuXG4gICAgcmV0dXJuIHN1bV90aHJlZShcbiAgICAgICAgc2NhbGUoc2NhbGUobGVuLCBfOTYsIHgsIF8xOTIpLCBfMTkyLCB4LCBfMzg0eCksIF8zODR4LFxuICAgICAgICBzY2FsZShzY2FsZShsZW4sIF85NiwgeSwgXzE5MiksIF8xOTIsIHksIF8zODR5KSwgXzM4NHksXG4gICAgICAgIHNjYWxlKHNjYWxlKGxlbiwgXzk2LCB6LCBfMTkyKSwgXzE5MiwgeiwgXzM4NHopLCBfMzg0eiwgXzc2OCwgb3V0KTtcbn1cblxuZnVuY3Rpb24gaW5zcGhlcmVleGFjdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6KSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIHMxID0gYXggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICBhaGkgPSBjIC0gKGMgLSBheCk7XG4gICAgYWxvID0gYXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJ4ICogYXk7XG4gICAgYyA9IHNwbGl0dGVyICogYng7XG4gICAgYWhpID0gYyAtIChjIC0gYngpO1xuICAgIGFsbyA9IGJ4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGF5KTtcbiAgICBibG8gPSBheSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBhYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGFiWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGFiWzNdID0gdTM7XG4gICAgczEgPSBieCAqIGN5O1xuICAgIGMgPSBzcGxpdHRlciAqIGJ4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICBhbG8gPSBieCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjeSk7XG4gICAgYmxvID0gY3kgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gY3ggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBjeCk7XG4gICAgYWxvID0gY3ggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGJjWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSB1MztcbiAgICBzMSA9IGN4ICogZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY3g7XG4gICAgYWhpID0gYyAtIChjIC0gY3gpO1xuICAgIGFsbyA9IGN4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGR5KTtcbiAgICBibG8gPSBkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkeCAqIGN5O1xuICAgIGMgPSBzcGxpdHRlciAqIGR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGR4KTtcbiAgICBhbG8gPSBkeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjeSk7XG4gICAgYmxvID0gY3kgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgY2RbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBjZFsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgY2RbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBjZFszXSA9IHUzO1xuICAgIHMxID0gZHggKiBleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBkeCk7XG4gICAgYWxvID0gZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZXkpO1xuICAgIGJsbyA9IGV5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGV4ICogZHk7XG4gICAgYyA9IHNwbGl0dGVyICogZXg7XG4gICAgYWhpID0gYyAtIChjIC0gZXgpO1xuICAgIGFsbyA9IGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGR5KTtcbiAgICBibG8gPSBkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBkZVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGRlWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBkZVsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGRlWzNdID0gdTM7XG4gICAgczEgPSBleCAqIGF5O1xuICAgIGMgPSBzcGxpdHRlciAqIGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGV4KTtcbiAgICBhbG8gPSBleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheTtcbiAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgYmxvID0gYXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYXggKiBleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICBhaGkgPSBjIC0gKGMgLSBheCk7XG4gICAgYWxvID0gYXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZXkpO1xuICAgIGJsbyA9IGV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGVhWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgZWFbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGVhWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgZWFbM10gPSB1MztcbiAgICBzMSA9IGF4ICogY3k7XG4gICAgYyA9IHNwbGl0dGVyICogYXg7XG4gICAgYWhpID0gYyAtIChjIC0gYXgpO1xuICAgIGFsbyA9IGF4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGN5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGN5KTtcbiAgICBibG8gPSBjeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBjeCAqIGF5O1xuICAgIGMgPSBzcGxpdHRlciAqIGN4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGN4KTtcbiAgICBhbG8gPSBjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheTtcbiAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgYmxvID0gYXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgYWNbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBhY1sxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgYWNbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBhY1szXSA9IHUzO1xuICAgIHMxID0gYnggKiBkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICBhaGkgPSBjIC0gKGMgLSBieCk7XG4gICAgYWxvID0gYnggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZHk7XG4gICAgYmhpID0gYyAtIChjIC0gZHkpO1xuICAgIGJsbyA9IGR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGR4ICogYnk7XG4gICAgYyA9IHNwbGl0dGVyICogZHg7XG4gICAgYWhpID0gYyAtIChjIC0gZHgpO1xuICAgIGFsbyA9IGR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJ5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJ5KTtcbiAgICBibG8gPSBieSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBiZFsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJkWzNdID0gdTM7XG4gICAgczEgPSBjeCAqIGV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGN4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGN4KTtcbiAgICBhbG8gPSBjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBleSk7XG4gICAgYmxvID0gZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gZXggKiBjeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBleCk7XG4gICAgYWxvID0gZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY3k7XG4gICAgYmhpID0gYyAtIChjIC0gY3kpO1xuICAgIGJsbyA9IGN5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGNlWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgY2VbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGNlWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgY2VbM10gPSB1MztcbiAgICBzMSA9IGR4ICogYXk7XG4gICAgYyA9IHNwbGl0dGVyICogZHg7XG4gICAgYWhpID0gYyAtIChjIC0gZHgpO1xuICAgIGFsbyA9IGR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGF5KTtcbiAgICBibG8gPSBheSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBheCAqIGR5O1xuICAgIGMgPSBzcGxpdHRlciAqIGF4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGF4KTtcbiAgICBhbG8gPSBheCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkeSk7XG4gICAgYmxvID0gZHkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgZGFbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBkYVsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgZGFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBkYVszXSA9IHUzO1xuICAgIHMxID0gZXggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBleCk7XG4gICAgYWxvID0gZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJ4ICogZXk7XG4gICAgYyA9IHNwbGl0dGVyICogYng7XG4gICAgYWhpID0gYyAtIChjIC0gYngpO1xuICAgIGFsbyA9IGJ4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGV5KTtcbiAgICBibG8gPSBleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBlYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGViWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBlYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGViWzNdID0gdTM7XG5cbiAgICBjb25zdCBhYmNsZW4gPSBzdW1fdGhyZWVfc2NhbGUoYWIsIGJjLCBhYywgY3osIGF6LCAtYnosIGFiYyk7XG4gICAgY29uc3QgYmNkbGVuID0gc3VtX3RocmVlX3NjYWxlKGJjLCBjZCwgYmQsIGR6LCBieiwgLWN6LCBiY2QpO1xuICAgIGNvbnN0IGNkZWxlbiA9IHN1bV90aHJlZV9zY2FsZShjZCwgZGUsIGNlLCBleiwgY3osIC1keiwgY2RlKTtcbiAgICBjb25zdCBkZWFsZW4gPSBzdW1fdGhyZWVfc2NhbGUoZGUsIGVhLCBkYSwgYXosIGR6LCAtZXosIGRlYSk7XG4gICAgY29uc3QgZWFibGVuID0gc3VtX3RocmVlX3NjYWxlKGVhLCBhYiwgZWIsIGJ6LCBleiwgLWF6LCBlYWIpO1xuICAgIGNvbnN0IGFiZGxlbiA9IHN1bV90aHJlZV9zY2FsZShhYiwgYmQsIGRhLCBkeiwgYXosIGJ6LCBhYmQpO1xuICAgIGNvbnN0IGJjZWxlbiA9IHN1bV90aHJlZV9zY2FsZShiYywgY2UsIGViLCBleiwgYnosIGN6LCBiY2UpO1xuICAgIGNvbnN0IGNkYWxlbiA9IHN1bV90aHJlZV9zY2FsZShjZCwgZGEsIGFjLCBheiwgY3osIGR6LCBjZGEpO1xuICAgIGNvbnN0IGRlYmxlbiA9IHN1bV90aHJlZV9zY2FsZShkZSwgZWIsIGJkLCBieiwgZHosIGV6LCBkZWIpO1xuICAgIGNvbnN0IGVhY2xlbiA9IHN1bV90aHJlZV9zY2FsZShlYSwgYWMsIGNlLCBjeiwgZXosIGF6LCBlYWMpO1xuXG4gICAgY29uc3QgZGV0ZXJsZW4gPSBzdW1fdGhyZWUoXG4gICAgICAgIGxpZnRleGFjdChjZGVsZW4sIGNkZSwgYmNlbGVuLCBiY2UsIGRlYmxlbiwgZGViLCBiY2RsZW4sIGJjZCwgYXgsIGF5LCBheiwgYWRldCksIGFkZXQsXG4gICAgICAgIGxpZnRleGFjdChkZWFsZW4sIGRlYSwgY2RhbGVuLCBjZGEsIGVhY2xlbiwgZWFjLCBjZGVsZW4sIGNkZSwgYngsIGJ5LCBieiwgYmRldCksIGJkZXQsXG4gICAgICAgIHN1bV90aHJlZShcbiAgICAgICAgICAgIGxpZnRleGFjdChlYWJsZW4sIGVhYiwgZGVibGVuLCBkZWIsIGFiZGxlbiwgYWJkLCBkZWFsZW4sIGRlYSwgY3gsIGN5LCBjeiwgY2RldCksIGNkZXQsXG4gICAgICAgICAgICBsaWZ0ZXhhY3QoYWJjbGVuLCBhYmMsIGVhY2xlbiwgZWFjLCBiY2VsZW4sIGJjZSwgZWFibGVuLCBlYWIsIGR4LCBkeSwgZHosIGRkZXQpLCBkZGV0LFxuICAgICAgICAgICAgbGlmdGV4YWN0KGJjZGxlbiwgYmNkLCBhYmRsZW4sIGFiZCwgY2RhbGVuLCBjZGEsIGFiY2xlbiwgYWJjLCBleCwgZXksIGV6LCBlZGV0KSwgZWRldCwgY2RkZXQsIGNkZWRldCksIGNkZWRldCwgYWJkZXQsIGRldGVyKTtcblxuICAgIHJldHVybiBkZXRlcltkZXRlcmxlbiAtIDFdO1xufVxuXG5jb25zdCB4ZGV0ID0gdmVjKDk2KTtcbmNvbnN0IHlkZXQgPSB2ZWMoOTYpO1xuY29uc3QgemRldCA9IHZlYyg5Nik7XG5jb25zdCBmaW4gPSB2ZWMoMTE1Mik7XG5cbmZ1bmN0aW9uIGxpZnRhZGFwdChhLCBiLCBjLCBheiwgYnosIGN6LCB4LCB5LCB6LCBvdXQpIHtcbiAgICBjb25zdCBsZW4gPSBzdW1fdGhyZWVfc2NhbGUoYSwgYiwgYywgYXosIGJ6LCBjeiwgXzI0KTtcbiAgICByZXR1cm4gc3VtX3RocmVlKFxuICAgICAgICBzY2FsZShzY2FsZShsZW4sIF8yNCwgeCwgXzQ4KSwgXzQ4LCB4LCB4ZGV0KSwgeGRldCxcbiAgICAgICAgc2NhbGUoc2NhbGUobGVuLCBfMjQsIHksIF80OCksIF80OCwgeSwgeWRldCksIHlkZXQsXG4gICAgICAgIHNjYWxlKHNjYWxlKGxlbiwgXzI0LCB6LCBfNDgpLCBfNDgsIHosIHpkZXQpLCB6ZGV0LCBfMTkyLCBvdXQpO1xufVxuXG5mdW5jdGlvbiBpbnNwaGVyZWFkYXB0KGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIGV4LCBleSwgZXosIHBlcm1hbmVudCkge1xuICAgIGxldCBhYjMsIGJjMywgY2QzLCBkYTMsIGFjMywgYmQzO1xuXG4gICAgbGV0IGFleHRhaWwsIGJleHRhaWwsIGNleHRhaWwsIGRleHRhaWw7XG4gICAgbGV0IGFleXRhaWwsIGJleXRhaWwsIGNleXRhaWwsIGRleXRhaWw7XG4gICAgbGV0IGFlenRhaWwsIGJlenRhaWwsIGNlenRhaWwsIGRlenRhaWw7XG5cbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfMCwgczEsIHMwLCB0MSwgdDA7XG5cbiAgICBjb25zdCBhZXggPSBheCAtIGV4O1xuICAgIGNvbnN0IGJleCA9IGJ4IC0gZXg7XG4gICAgY29uc3QgY2V4ID0gY3ggLSBleDtcbiAgICBjb25zdCBkZXggPSBkeCAtIGV4O1xuICAgIGNvbnN0IGFleSA9IGF5IC0gZXk7XG4gICAgY29uc3QgYmV5ID0gYnkgLSBleTtcbiAgICBjb25zdCBjZXkgPSBjeSAtIGV5O1xuICAgIGNvbnN0IGRleSA9IGR5IC0gZXk7XG4gICAgY29uc3QgYWV6ID0gYXogLSBlejtcbiAgICBjb25zdCBiZXogPSBieiAtIGV6O1xuICAgIGNvbnN0IGNleiA9IGN6IC0gZXo7XG4gICAgY29uc3QgZGV6ID0gZHogLSBlejtcblxuICAgIHMxID0gYWV4ICogYmV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGFleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhZXgpO1xuICAgIGFsbyA9IGFleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYmV5KTtcbiAgICBibG8gPSBiZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYmV4ICogYWV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGJleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBiZXgpO1xuICAgIGFsbyA9IGJleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYWV5KTtcbiAgICBibG8gPSBhZXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgYWJbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBhYlsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIGFiMyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSBhYjMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKGFiMyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBhYlszXSA9IGFiMztcbiAgICBzMSA9IGJleCAqIGNleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZXg7XG4gICAgYWhpID0gYyAtIChjIC0gYmV4KTtcbiAgICBhbG8gPSBiZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNleSk7XG4gICAgYmxvID0gY2V5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNleCAqIGJleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZXg7XG4gICAgYWhpID0gYyAtIChjIC0gY2V4KTtcbiAgICBhbG8gPSBjZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJleSk7XG4gICAgYmxvID0gYmV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICBiYzMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gYmMzIC0gX2o7XG4gICAgYmNbMl0gPSBfaiAtIChiYzMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSBiYzM7XG4gICAgczEgPSBjZXggKiBkZXk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNleCk7XG4gICAgYWxvID0gY2V4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGRleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkZXkpO1xuICAgIGJsbyA9IGRleSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkZXggKiBjZXk7XG4gICAgYyA9IHNwbGl0dGVyICogZGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGRleCk7XG4gICAgYWxvID0gZGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZXkpO1xuICAgIGJsbyA9IGNleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBjZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGNkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgY2QzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IGNkMyAtIF9qO1xuICAgIGNkWzJdID0gX2ogLSAoY2QzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGNkWzNdID0gY2QzO1xuICAgIHMxID0gZGV4ICogYWV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGRleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBkZXgpO1xuICAgIGFsbyA9IGRleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYWV5KTtcbiAgICBibG8gPSBhZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYWV4ICogZGV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGFleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhZXgpO1xuICAgIGFsbyA9IGFleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZGV5KTtcbiAgICBibG8gPSBkZXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgZGFbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBkYVsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIGRhMyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSBkYTMgLSBfajtcbiAgICBkYVsyXSA9IF9qIC0gKGRhMyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBkYVszXSA9IGRhMztcbiAgICBzMSA9IGFleCAqIGNleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXg7XG4gICAgYWhpID0gYyAtIChjIC0gYWV4KTtcbiAgICBhbG8gPSBhZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNleSk7XG4gICAgYmxvID0gY2V5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNleCAqIGFleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZXg7XG4gICAgYWhpID0gYyAtIChjIC0gY2V4KTtcbiAgICBhbG8gPSBjZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFleSk7XG4gICAgYmxvID0gYWV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGFjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYWNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICBhYzMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gYWMzIC0gX2o7XG4gICAgYWNbMl0gPSBfaiAtIChhYzMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYWNbM10gPSBhYzM7XG4gICAgczEgPSBiZXggKiBkZXk7XG4gICAgYyA9IHNwbGl0dGVyICogYmV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJleCk7XG4gICAgYWxvID0gYmV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGRleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkZXkpO1xuICAgIGJsbyA9IGRleSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkZXggKiBiZXk7XG4gICAgYyA9IHNwbGl0dGVyICogZGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGRleCk7XG4gICAgYWxvID0gZGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZXkpO1xuICAgIGJsbyA9IGJleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgYmQzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IGJkMyAtIF9qO1xuICAgIGJkWzJdID0gX2ogLSAoYmQzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJkWzNdID0gYmQzO1xuXG4gICAgY29uc3QgZmlubGVuID0gc3VtKFxuICAgICAgICBzdW0oXG4gICAgICAgICAgICBuZWdhdGUobGlmdGFkYXB0KGJjLCBjZCwgYmQsIGRleiwgYmV6LCAtY2V6LCBhZXgsIGFleSwgYWV6LCBhZGV0KSwgYWRldCksIGFkZXQsXG4gICAgICAgICAgICBsaWZ0YWRhcHQoY2QsIGRhLCBhYywgYWV6LCBjZXosIGRleiwgYmV4LCBiZXksIGJleiwgYmRldCksIGJkZXQsIGFiZGV0KSwgYWJkZXQsXG4gICAgICAgIHN1bShcbiAgICAgICAgICAgIG5lZ2F0ZShsaWZ0YWRhcHQoZGEsIGFiLCBiZCwgYmV6LCBkZXosIGFleiwgY2V4LCBjZXksIGNleiwgY2RldCksIGNkZXQpLCBjZGV0LFxuICAgICAgICAgICAgbGlmdGFkYXB0KGFiLCBiYywgYWMsIGNleiwgYWV6LCAtYmV6LCBkZXgsIGRleSwgZGV6LCBkZGV0KSwgZGRldCwgY2RkZXQpLCBjZGRldCwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gaXNwZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZXg7XG4gICAgYWV4dGFpbCA9IGF4IC0gKGFleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGF5IC0gYWV5O1xuICAgIGFleXRhaWwgPSBheSAtIChhZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBheiAtIGFlejtcbiAgICBhZXp0YWlsID0gYXogLSAoYWV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gYnggLSBiZXg7XG4gICAgYmV4dGFpbCA9IGJ4IC0gKGJleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGJ5IC0gYmV5O1xuICAgIGJleXRhaWwgPSBieSAtIChiZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBieiAtIGJlejtcbiAgICBiZXp0YWlsID0gYnogLSAoYmV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gY3ggLSBjZXg7XG4gICAgY2V4dGFpbCA9IGN4IC0gKGNleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGN5IC0gY2V5O1xuICAgIGNleXRhaWwgPSBjeSAtIChjZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBjeiAtIGNlejtcbiAgICBjZXp0YWlsID0gY3ogLSAoY2V6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gZHggLSBkZXg7XG4gICAgZGV4dGFpbCA9IGR4IC0gKGRleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGR5IC0gZGV5O1xuICAgIGRleXRhaWwgPSBkeSAtIChkZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBkeiAtIGRlejtcbiAgICBkZXp0YWlsID0gZHogLSAoZGV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGlmIChhZXh0YWlsID09PSAwICYmIGFleXRhaWwgPT09IDAgJiYgYWV6dGFpbCA9PT0gMCAmJlxuICAgICAgICBiZXh0YWlsID09PSAwICYmIGJleXRhaWwgPT09IDAgJiYgYmV6dGFpbCA9PT0gMCAmJlxuICAgICAgICBjZXh0YWlsID09PSAwICYmIGNleXRhaWwgPT09IDAgJiYgY2V6dGFpbCA9PT0gMCAmJlxuICAgICAgICBkZXh0YWlsID09PSAwICYmIGRleXRhaWwgPT09IDAgJiYgZGV6dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gaXNwZXJyYm91bmRDICogcGVybWFuZW50ICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuXG4gICAgY29uc3QgYWJlcHMgPSAoYWV4ICogYmV5dGFpbCArIGJleSAqIGFleHRhaWwpIC0gKGFleSAqIGJleHRhaWwgKyBiZXggKiBhZXl0YWlsKTtcbiAgICBjb25zdCBiY2VwcyA9IChiZXggKiBjZXl0YWlsICsgY2V5ICogYmV4dGFpbCkgLSAoYmV5ICogY2V4dGFpbCArIGNleCAqIGJleXRhaWwpO1xuICAgIGNvbnN0IGNkZXBzID0gKGNleCAqIGRleXRhaWwgKyBkZXkgKiBjZXh0YWlsKSAtIChjZXkgKiBkZXh0YWlsICsgZGV4ICogY2V5dGFpbCk7XG4gICAgY29uc3QgZGFlcHMgPSAoZGV4ICogYWV5dGFpbCArIGFleSAqIGRleHRhaWwpIC0gKGRleSAqIGFleHRhaWwgKyBhZXggKiBkZXl0YWlsKTtcbiAgICBjb25zdCBhY2VwcyA9IChhZXggKiBjZXl0YWlsICsgY2V5ICogYWV4dGFpbCkgLSAoYWV5ICogY2V4dGFpbCArIGNleCAqIGFleXRhaWwpO1xuICAgIGNvbnN0IGJkZXBzID0gKGJleCAqIGRleXRhaWwgKyBkZXkgKiBiZXh0YWlsKSAtIChiZXkgKiBkZXh0YWlsICsgZGV4ICogYmV5dGFpbCk7XG4gICAgZGV0ICs9XG4gICAgICAgICgoKGJleCAqIGJleCArIGJleSAqIGJleSArIGJleiAqIGJleikgKiAoKGNleiAqIGRhZXBzICsgZGV6ICogYWNlcHMgKyBhZXogKiBjZGVwcykgK1xuICAgICAgICAoY2V6dGFpbCAqIGRhMyArIGRlenRhaWwgKiBhYzMgKyBhZXp0YWlsICogY2QzKSkgKyAoZGV4ICogZGV4ICsgZGV5ICogZGV5ICsgZGV6ICogZGV6KSAqXG4gICAgICAgICgoYWV6ICogYmNlcHMgLSBiZXogKiBhY2VwcyArIGNleiAqIGFiZXBzKSArIChhZXp0YWlsICogYmMzIC0gYmV6dGFpbCAqIGFjMyArIGNlenRhaWwgKiBhYjMpKSkgLVxuICAgICAgICAoKGFleCAqIGFleCArIGFleSAqIGFleSArIGFleiAqIGFleikgKiAoKGJleiAqIGNkZXBzIC0gY2V6ICogYmRlcHMgKyBkZXogKiBiY2VwcykgK1xuICAgICAgICAoYmV6dGFpbCAqIGNkMyAtIGNlenRhaWwgKiBiZDMgKyBkZXp0YWlsICogYmMzKSkgKyAoY2V4ICogY2V4ICsgY2V5ICogY2V5ICsgY2V6ICogY2V6KSAqXG4gICAgICAgICgoZGV6ICogYWJlcHMgKyBhZXogKiBiZGVwcyArIGJleiAqIGRhZXBzKSArIChkZXp0YWlsICogYWIzICsgYWV6dGFpbCAqIGJkMyArIGJlenRhaWwgKiBkYTMpKSkpICtcbiAgICAgICAgMiAqICgoKGJleCAqIGJleHRhaWwgKyBiZXkgKiBiZXl0YWlsICsgYmV6ICogYmV6dGFpbCkgKiAoY2V6ICogZGEzICsgZGV6ICogYWMzICsgYWV6ICogY2QzKSArXG4gICAgICAgIChkZXggKiBkZXh0YWlsICsgZGV5ICogZGV5dGFpbCArIGRleiAqIGRlenRhaWwpICogKGFleiAqIGJjMyAtIGJleiAqIGFjMyArIGNleiAqIGFiMykpIC1cbiAgICAgICAgKChhZXggKiBhZXh0YWlsICsgYWV5ICogYWV5dGFpbCArIGFleiAqIGFlenRhaWwpICogKGJleiAqIGNkMyAtIGNleiAqIGJkMyArIGRleiAqIGJjMykgK1xuICAgICAgICAoY2V4ICogY2V4dGFpbCArIGNleSAqIGNleXRhaWwgKyBjZXogKiBjZXp0YWlsKSAqIChkZXogKiBhYjMgKyBhZXogKiBiZDMgKyBiZXogKiBkYTMpKSk7XG5cbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zcGhlcmVleGFjdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BoZXJlKGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIGV4LCBleSwgZXopIHtcbiAgICBjb25zdCBhZXggPSBheCAtIGV4O1xuICAgIGNvbnN0IGJleCA9IGJ4IC0gZXg7XG4gICAgY29uc3QgY2V4ID0gY3ggLSBleDtcbiAgICBjb25zdCBkZXggPSBkeCAtIGV4O1xuICAgIGNvbnN0IGFleSA9IGF5IC0gZXk7XG4gICAgY29uc3QgYmV5ID0gYnkgLSBleTtcbiAgICBjb25zdCBjZXkgPSBjeSAtIGV5O1xuICAgIGNvbnN0IGRleSA9IGR5IC0gZXk7XG4gICAgY29uc3QgYWV6ID0gYXogLSBlejtcbiAgICBjb25zdCBiZXogPSBieiAtIGV6O1xuICAgIGNvbnN0IGNleiA9IGN6IC0gZXo7XG4gICAgY29uc3QgZGV6ID0gZHogLSBlejtcblxuICAgIGNvbnN0IGFleGJleSA9IGFleCAqIGJleTtcbiAgICBjb25zdCBiZXhhZXkgPSBiZXggKiBhZXk7XG4gICAgY29uc3QgYWIgPSBhZXhiZXkgLSBiZXhhZXk7XG4gICAgY29uc3QgYmV4Y2V5ID0gYmV4ICogY2V5O1xuICAgIGNvbnN0IGNleGJleSA9IGNleCAqIGJleTtcbiAgICBjb25zdCBiYyA9IGJleGNleSAtIGNleGJleTtcbiAgICBjb25zdCBjZXhkZXkgPSBjZXggKiBkZXk7XG4gICAgY29uc3QgZGV4Y2V5ID0gZGV4ICogY2V5O1xuICAgIGNvbnN0IGNkID0gY2V4ZGV5IC0gZGV4Y2V5O1xuICAgIGNvbnN0IGRleGFleSA9IGRleCAqIGFleTtcbiAgICBjb25zdCBhZXhkZXkgPSBhZXggKiBkZXk7XG4gICAgY29uc3QgZGEgPSBkZXhhZXkgLSBhZXhkZXk7XG4gICAgY29uc3QgYWV4Y2V5ID0gYWV4ICogY2V5O1xuICAgIGNvbnN0IGNleGFleSA9IGNleCAqIGFleTtcbiAgICBjb25zdCBhYyA9IGFleGNleSAtIGNleGFleTtcbiAgICBjb25zdCBiZXhkZXkgPSBiZXggKiBkZXk7XG4gICAgY29uc3QgZGV4YmV5ID0gZGV4ICogYmV5O1xuICAgIGNvbnN0IGJkID0gYmV4ZGV5IC0gZGV4YmV5O1xuXG4gICAgY29uc3QgYWxpZnQgPSBhZXggKiBhZXggKyBhZXkgKiBhZXkgKyBhZXogKiBhZXo7XG4gICAgY29uc3QgYmxpZnQgPSBiZXggKiBiZXggKyBiZXkgKiBiZXkgKyBiZXogKiBiZXo7XG4gICAgY29uc3QgY2xpZnQgPSBjZXggKiBjZXggKyBjZXkgKiBjZXkgKyBjZXogKiBjZXo7XG4gICAgY29uc3QgZGxpZnQgPSBkZXggKiBkZXggKyBkZXkgKiBkZXkgKyBkZXogKiBkZXo7XG5cbiAgICBjb25zdCBkZXQgPVxuICAgICAgICAoY2xpZnQgKiAoZGV6ICogYWIgKyBhZXogKiBiZCArIGJleiAqIGRhKSAtIGRsaWZ0ICogKGFleiAqIGJjIC0gYmV6ICogYWMgKyBjZXogKiBhYikpICtcbiAgICAgICAgKGFsaWZ0ICogKGJleiAqIGNkIC0gY2V6ICogYmQgKyBkZXogKiBiYykgLSBibGlmdCAqIChjZXogKiBkYSArIGRleiAqIGFjICsgYWV6ICogY2QpKTtcblxuICAgIGNvbnN0IGFlenBsdXMgPSBNYXRoLmFicyhhZXopO1xuICAgIGNvbnN0IGJlenBsdXMgPSBNYXRoLmFicyhiZXopO1xuICAgIGNvbnN0IGNlenBsdXMgPSBNYXRoLmFicyhjZXopO1xuICAgIGNvbnN0IGRlenBsdXMgPSBNYXRoLmFicyhkZXopO1xuICAgIGNvbnN0IGFleGJleXBsdXMgPSBNYXRoLmFicyhhZXhiZXkpICsgTWF0aC5hYnMoYmV4YWV5KTtcbiAgICBjb25zdCBiZXhjZXlwbHVzID0gTWF0aC5hYnMoYmV4Y2V5KSArIE1hdGguYWJzKGNleGJleSk7XG4gICAgY29uc3QgY2V4ZGV5cGx1cyA9IE1hdGguYWJzKGNleGRleSkgKyBNYXRoLmFicyhkZXhjZXkpO1xuICAgIGNvbnN0IGRleGFleXBsdXMgPSBNYXRoLmFicyhkZXhhZXkpICsgTWF0aC5hYnMoYWV4ZGV5KTtcbiAgICBjb25zdCBhZXhjZXlwbHVzID0gTWF0aC5hYnMoYWV4Y2V5KSArIE1hdGguYWJzKGNleGFleSk7XG4gICAgY29uc3QgYmV4ZGV5cGx1cyA9IE1hdGguYWJzKGJleGRleSkgKyBNYXRoLmFicyhkZXhiZXkpO1xuICAgIGNvbnN0IHBlcm1hbmVudCA9XG4gICAgICAgIChjZXhkZXlwbHVzICogYmV6cGx1cyArIGJleGRleXBsdXMgKiBjZXpwbHVzICsgYmV4Y2V5cGx1cyAqIGRlenBsdXMpICogYWxpZnQgK1xuICAgICAgICAoZGV4YWV5cGx1cyAqIGNlenBsdXMgKyBhZXhjZXlwbHVzICogZGV6cGx1cyArIGNleGRleXBsdXMgKiBhZXpwbHVzKSAqIGJsaWZ0ICtcbiAgICAgICAgKGFleGJleXBsdXMgKiBkZXpwbHVzICsgYmV4ZGV5cGx1cyAqIGFlenBsdXMgKyBkZXhhZXlwbHVzICogYmV6cGx1cykgKiBjbGlmdCArXG4gICAgICAgIChiZXhjZXlwbHVzICogYWV6cGx1cyArIGFleGNleXBsdXMgKiBiZXpwbHVzICsgYWV4YmV5cGx1cyAqIGNlenBsdXMpICogZGxpZnQ7XG5cbiAgICBjb25zdCBlcnJib3VuZCA9IGlzcGVycmJvdW5kQSAqIHBlcm1hbmVudDtcbiAgICBpZiAoZGV0ID4gZXJyYm91bmQgfHwgLWRldCA+IGVycmJvdW5kKSB7XG4gICAgICAgIHJldHVybiBkZXQ7XG4gICAgfVxuICAgIHJldHVybiAtaW5zcGhlcmVhZGFwdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6LCBwZXJtYW5lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGhlcmVmYXN0KHBheCwgcGF5LCBwYXosIHBieCwgcGJ5LCBwYnosIHBjeCwgcGN5LCBwY3osIHBkeCwgcGR5LCBwZHosIHBleCwgcGV5LCBwZXopIHtcbiAgICBjb25zdCBhZXggPSBwYXggLSBwZXg7XG4gICAgY29uc3QgYmV4ID0gcGJ4IC0gcGV4O1xuICAgIGNvbnN0IGNleCA9IHBjeCAtIHBleDtcbiAgICBjb25zdCBkZXggPSBwZHggLSBwZXg7XG4gICAgY29uc3QgYWV5ID0gcGF5IC0gcGV5O1xuICAgIGNvbnN0IGJleSA9IHBieSAtIHBleTtcbiAgICBjb25zdCBjZXkgPSBwY3kgLSBwZXk7XG4gICAgY29uc3QgZGV5ID0gcGR5IC0gcGV5O1xuICAgIGNvbnN0IGFleiA9IHBheiAtIHBlejtcbiAgICBjb25zdCBiZXogPSBwYnogLSBwZXo7XG4gICAgY29uc3QgY2V6ID0gcGN6IC0gcGV6O1xuICAgIGNvbnN0IGRleiA9IHBkeiAtIHBlejtcblxuICAgIGNvbnN0IGFiID0gYWV4ICogYmV5IC0gYmV4ICogYWV5O1xuICAgIGNvbnN0IGJjID0gYmV4ICogY2V5IC0gY2V4ICogYmV5O1xuICAgIGNvbnN0IGNkID0gY2V4ICogZGV5IC0gZGV4ICogY2V5O1xuICAgIGNvbnN0IGRhID0gZGV4ICogYWV5IC0gYWV4ICogZGV5O1xuICAgIGNvbnN0IGFjID0gYWV4ICogY2V5IC0gY2V4ICogYWV5O1xuICAgIGNvbnN0IGJkID0gYmV4ICogZGV5IC0gZGV4ICogYmV5O1xuXG4gICAgY29uc3QgYWJjID0gYWV6ICogYmMgLSBiZXogKiBhYyArIGNleiAqIGFiO1xuICAgIGNvbnN0IGJjZCA9IGJleiAqIGNkIC0gY2V6ICogYmQgKyBkZXogKiBiYztcbiAgICBjb25zdCBjZGEgPSBjZXogKiBkYSArIGRleiAqIGFjICsgYWV6ICogY2Q7XG4gICAgY29uc3QgZGFiID0gZGV6ICogYWIgKyBhZXogKiBiZCArIGJleiAqIGRhO1xuXG4gICAgY29uc3QgYWxpZnQgPSBhZXggKiBhZXggKyBhZXkgKiBhZXkgKyBhZXogKiBhZXo7XG4gICAgY29uc3QgYmxpZnQgPSBiZXggKiBiZXggKyBiZXkgKiBiZXkgKyBiZXogKiBiZXo7XG4gICAgY29uc3QgY2xpZnQgPSBjZXggKiBjZXggKyBjZXkgKiBjZXkgKyBjZXogKiBjZXo7XG4gICAgY29uc3QgZGxpZnQgPSBkZXggKiBkZXggKyBkZXkgKiBkZXkgKyBkZXogKiBkZXo7XG5cbiAgICByZXR1cm4gKGNsaWZ0ICogZGFiIC0gZGxpZnQgKiBhYmMpICsgKGFsaWZ0ICogYmNkIC0gYmxpZnQgKiBjZGEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/insphere.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/orient2d.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/orient2d.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"orient2d\": () => (/* binding */ orient2d),\n/* harmony export */ \"orient2dfast\": () => (/* binding */ orient2dfast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst ccwerrboundA = (3 + 16 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst ccwerrboundB = (2 + 12 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst ccwerrboundC = (9 + 64 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst B = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst C1 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst C2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(12);\nconst D = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nfunction orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nfunction orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9vcmllbnQyZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0Y7O0FBRWhGLCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTNELFVBQVUsNkNBQUc7QUFDYixXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFVBQVUsNkNBQUc7QUFDYixVQUFVLDZDQUFHOztBQUViO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsa0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDLG9EQUFjO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBRzs7QUFFckI7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBRzs7QUFFckI7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2Q0FBRzs7QUFFcEI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vb3JpZW50MmQuanM/OGM1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtfSBmcm9tICcuL3V0aWwuanMnO1xuXG5jb25zdCBjY3dlcnJib3VuZEEgPSAoMyArIDE2ICogZXBzaWxvbikgKiBlcHNpbG9uO1xuY29uc3QgY2N3ZXJyYm91bmRCID0gKDIgKyAxMiAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGNjd2VycmJvdW5kQyA9ICg5ICsgNjQgKiBlcHNpbG9uKSAqIGVwc2lsb24gKiBlcHNpbG9uO1xuXG5jb25zdCBCID0gdmVjKDQpO1xuY29uc3QgQzEgPSB2ZWMoOCk7XG5jb25zdCBDMiA9IHZlYygxMik7XG5jb25zdCBEID0gdmVjKDE2KTtcbmNvbnN0IHUgPSB2ZWMoNCk7XG5cbmZ1bmN0aW9uIG9yaWVudDJkYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZGV0c3VtKSB7XG4gICAgbGV0IGFjeHRhaWwsIGFjeXRhaWwsIGJjeHRhaWwsIGJjeXRhaWw7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIGNvbnN0IGFjeCA9IGF4IC0gY3g7XG4gICAgY29uc3QgYmN4ID0gYnggLSBjeDtcbiAgICBjb25zdCBhY3kgPSBheSAtIGN5O1xuICAgIGNvbnN0IGJjeSA9IGJ5IC0gY3k7XG5cbiAgICBzMSA9IGFjeCAqIGJjeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3g7XG4gICAgYWhpID0gYyAtIChjIC0gYWN4KTtcbiAgICBhbG8gPSBhY3ggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeSk7XG4gICAgYmxvID0gYmN5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFjeSAqIGJjeDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3k7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5KTtcbiAgICBhbG8gPSBhY3kgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN4O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeCk7XG4gICAgYmxvID0gYmN4IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIEJbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBCWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBCWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgQlszXSA9IHUzO1xuXG4gICAgbGV0IGRldCA9IGVzdGltYXRlKDQsIEIpO1xuICAgIGxldCBlcnJib3VuZCA9IGNjd2VycmJvdW5kQiAqIGRldHN1bTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBidmlydCA9IGF4IC0gYWN4O1xuICAgIGFjeHRhaWwgPSBheCAtIChhY3ggKyBidmlydCkgKyAoYnZpcnQgLSBjeCk7XG4gICAgYnZpcnQgPSBieCAtIGJjeDtcbiAgICBiY3h0YWlsID0gYnggLSAoYmN4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gY3gpO1xuICAgIGJ2aXJ0ID0gYXkgLSBhY3k7XG4gICAgYWN5dGFpbCA9IGF5IC0gKGFjeSArIGJ2aXJ0KSArIChidmlydCAtIGN5KTtcbiAgICBidmlydCA9IGJ5IC0gYmN5O1xuICAgIGJjeXRhaWwgPSBieSAtIChiY3kgKyBidmlydCkgKyAoYnZpcnQgLSBjeSk7XG5cbiAgICBpZiAoYWN4dGFpbCA9PT0gMCAmJiBhY3l0YWlsID09PSAwICYmIGJjeHRhaWwgPT09IDAgJiYgYmN5dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gY2N3ZXJyYm91bmRDICogZGV0c3VtICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuICAgIGRldCArPSAoYWN4ICogYmN5dGFpbCArIGJjeSAqIGFjeHRhaWwpIC0gKGFjeSAqIGJjeHRhaWwgKyBiY3ggKiBhY3l0YWlsKTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHJldHVybiBkZXQ7XG5cbiAgICBzMSA9IGFjeHRhaWwgKiBiY3k7XG4gICAgYyA9IHNwbGl0dGVyICogYWN4dGFpbDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhY3h0YWlsKTtcbiAgICBhbG8gPSBhY3h0YWlsIC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3kpO1xuICAgIGJsbyA9IGJjeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBhY3l0YWlsICogYmN4O1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeXRhaWw7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5dGFpbCk7XG4gICAgYWxvID0gYWN5dGFpbCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3g7XG4gICAgYmhpID0gYyAtIChjIC0gYmN4KTtcbiAgICBibG8gPSBiY3ggLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgdVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIHVbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIHVbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICB1WzNdID0gdTM7XG4gICAgY29uc3QgQzFsZW4gPSBzdW0oNCwgQiwgNCwgdSwgQzEpO1xuXG4gICAgczEgPSBhY3ggKiBiY3l0YWlsO1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhY3gpO1xuICAgIGFsbyA9IGFjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3l0YWlsO1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeXRhaWwpO1xuICAgIGJsbyA9IGJjeXRhaWwgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYWN5ICogYmN4dGFpbDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3k7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5KTtcbiAgICBhbG8gPSBhY3kgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN4dGFpbDtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3h0YWlsKTtcbiAgICBibG8gPSBiY3h0YWlsIC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIHVbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICB1WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgdVszXSA9IHUzO1xuICAgIGNvbnN0IEMybGVuID0gc3VtKEMxbGVuLCBDMSwgNCwgdSwgQzIpO1xuXG4gICAgczEgPSBhY3h0YWlsICogYmN5dGFpbDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3h0YWlsO1xuICAgIGFoaSA9IGMgLSAoYyAtIGFjeHRhaWwpO1xuICAgIGFsbyA9IGFjeHRhaWwgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN5dGFpbDtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3l0YWlsKTtcbiAgICBibG8gPSBiY3l0YWlsIC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFjeXRhaWwgKiBiY3h0YWlsO1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeXRhaWw7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5dGFpbCk7XG4gICAgYWxvID0gYWN5dGFpbCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3h0YWlsO1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeHRhaWwpO1xuICAgIGJsbyA9IGJjeHRhaWwgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgdVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIHVbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIHVbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICB1WzNdID0gdTM7XG4gICAgY29uc3QgRGxlbiA9IHN1bShDMmxlbiwgQzIsIDQsIHUsIEQpO1xuXG4gICAgcmV0dXJuIERbRGxlbiAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JpZW50MmQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSkge1xuICAgIGNvbnN0IGRldGxlZnQgPSAoYXkgLSBjeSkgKiAoYnggLSBjeCk7XG4gICAgY29uc3QgZGV0cmlnaHQgPSAoYXggLSBjeCkgKiAoYnkgLSBjeSk7XG4gICAgY29uc3QgZGV0ID0gZGV0bGVmdCAtIGRldHJpZ2h0O1xuXG4gICAgY29uc3QgZGV0c3VtID0gTWF0aC5hYnMoZGV0bGVmdCArIGRldHJpZ2h0KTtcbiAgICBpZiAoTWF0aC5hYnMoZGV0KSA+PSBjY3dlcnJib3VuZEEgKiBkZXRzdW0pIHJldHVybiBkZXQ7XG5cbiAgICByZXR1cm4gLW9yaWVudDJkYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZGV0c3VtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9yaWVudDJkZmFzdChheCwgYXksIGJ4LCBieSwgY3gsIGN5KSB7XG4gICAgcmV0dXJuIChheSAtIGN5KSAqIChieCAtIGN4KSAtIChheCAtIGN4KSAqIChieSAtIGN5KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/orient2d.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/orient3d.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/orient3d.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"orient3d\": () => (/* binding */ orient3d),\n/* harmony export */ \"orient3dfast\": () => (/* binding */ orient3dfast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst o3derrboundA = (7 + 56 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst o3derrboundB = (3 + 28 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst o3derrboundC = (26 + 288 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst at_b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst at_c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bt_c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bt_a = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ct_a = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ct_b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bct = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cat = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _12 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(12);\n\nlet fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\nlet fin2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\n\nfunction finadd(finlen, alen, a) {\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(finlen, fin, alen, a, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail;\n let adytail, bdytail, cdytail;\n let adztail, bdztail, cdztail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n s1 = bdx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adz, _8), _8,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdz, _8b), _8b, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdz, _8), _8, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n adytail === 0 && bdytail === 0 && cdytail === 0 &&\n adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n\n errbound = o3derrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det +=\n adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n const bctlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adz, _16), _16);\n\n const catlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdz, _16), _16);\n\n const abtlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdz, _16), _16);\n\n if (adztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdztail, _16), _16);\n }\n\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n\n return fin[finlen - 1];\n}\n\nfunction orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n\n const det =\n adz * (bdxcdy - cdxbdy) +\n bdz * (cdxady - adxcdy) +\n cdz * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n const errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nfunction orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n return adx * (bdy * cdz - bdz * cdy) +\n bdx * (cdy * adz - cdz * ady) +\n cdx * (ady * bdz - adz * bdy);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9vcmllbnQzZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBdUY7O0FBRXZGLCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTdELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFVBQVUsNkNBQUc7O0FBRWIsV0FBVyw2Q0FBRztBQUNkLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRzs7QUFFZixVQUFVLDZDQUFHO0FBQ2IsV0FBVyw2Q0FBRzs7QUFFZDtBQUNBLGFBQWEsNkNBQUc7QUFDaEIscUJBQXFCLFlBQVk7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hC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O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQztBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQztBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vb3JpZW50M2QuanM/NGZmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtLCBzY2FsZX0gZnJvbSAnLi91dGlsLmpzJztcblxuY29uc3QgbzNkZXJyYm91bmRBID0gKDcgKyA1NiAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IG8zZGVycmJvdW5kQiA9ICgzICsgMjggKiBlcHNpbG9uKSAqIGVwc2lsb247XG5jb25zdCBvM2RlcnJib3VuZEMgPSAoMjYgKyAyODggKiBlcHNpbG9uKSAqIGVwc2lsb24gKiBlcHNpbG9uO1xuXG5jb25zdCBiYyA9IHZlYyg0KTtcbmNvbnN0IGNhID0gdmVjKDQpO1xuY29uc3QgYWIgPSB2ZWMoNCk7XG5jb25zdCBhdF9iID0gdmVjKDQpO1xuY29uc3QgYXRfYyA9IHZlYyg0KTtcbmNvbnN0IGJ0X2MgPSB2ZWMoNCk7XG5jb25zdCBidF9hID0gdmVjKDQpO1xuY29uc3QgY3RfYSA9IHZlYyg0KTtcbmNvbnN0IGN0X2IgPSB2ZWMoNCk7XG5jb25zdCBiY3QgPSB2ZWMoOCk7XG5jb25zdCBjYXQgPSB2ZWMoOCk7XG5jb25zdCBhYnQgPSB2ZWMoOCk7XG5jb25zdCB1ID0gdmVjKDQpO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF84YiA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYyg4KTtcbmNvbnN0IF8xMiA9IHZlYygxMik7XG5cbmxldCBmaW4gPSB2ZWMoMTkyKTtcbmxldCBmaW4yID0gdmVjKDE5Mik7XG5cbmZ1bmN0aW9uIGZpbmFkZChmaW5sZW4sIGFsZW4sIGEpIHtcbiAgICBmaW5sZW4gPSBzdW0oZmlubGVuLCBmaW4sIGFsZW4sIGEsIGZpbjIpO1xuICAgIGNvbnN0IHRtcCA9IGZpbjsgZmluID0gZmluMjsgZmluMiA9IHRtcDtcbiAgICByZXR1cm4gZmlubGVuO1xufVxuXG5mdW5jdGlvbiB0YWlsaW5pdCh4dGFpbCwgeXRhaWwsIGF4LCBheSwgYngsIGJ5LCBhLCBiKSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgX2ssIF8wLCBzMSwgczAsIHQxLCB0MCwgdTMsIG5lZ2F0ZTtcbiAgICBpZiAoeHRhaWwgPT09IDApIHtcbiAgICAgICAgaWYgKHl0YWlsID09PSAwKSB7XG4gICAgICAgICAgICBhWzBdID0gMDtcbiAgICAgICAgICAgIGJbMF0gPSAwO1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZWdhdGUgPSAteXRhaWw7XG4gICAgICAgICAgICBzMSA9IG5lZ2F0ZSAqIGF4O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbmVnYXRlO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gbmVnYXRlKTtcbiAgICAgICAgICAgIGFsbyA9IG5lZ2F0ZSAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGF4O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYXgpO1xuICAgICAgICAgICAgYmxvID0gYXggLSBiaGk7XG4gICAgICAgICAgICBhWzBdID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIGFbMV0gPSBzMTtcbiAgICAgICAgICAgIHMxID0geXRhaWwgKiBieDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICAgICAgICAgIGJsbyA9IGJ4IC0gYmhpO1xuICAgICAgICAgICAgYlswXSA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBiWzFdID0gczE7XG4gICAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh5dGFpbCA9PT0gMCkge1xuICAgICAgICAgICAgczEgPSB4dGFpbCAqIGF5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogeHRhaWw7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSB4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSB4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYXkpO1xuICAgICAgICAgICAgYmxvID0gYXkgLSBiaGk7XG4gICAgICAgICAgICBhWzBdID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIGFbMV0gPSBzMTtcbiAgICAgICAgICAgIG5lZ2F0ZSA9IC14dGFpbDtcbiAgICAgICAgICAgIHMxID0gbmVnYXRlICogYnk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBuZWdhdGU7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBuZWdhdGUpO1xuICAgICAgICAgICAgYWxvID0gbmVnYXRlIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBieSk7XG4gICAgICAgICAgICBibG8gPSBieSAtIGJoaTtcbiAgICAgICAgICAgIGJbMF0gPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgYlsxXSA9IHMxO1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHh0YWlsICogYXk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiB4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIHh0YWlsKTtcbiAgICAgICAgICAgIGFsbyA9IHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYXk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgICAgICAgICBibG8gPSBheSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0geXRhaWwgKiBheDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGF4KTtcbiAgICAgICAgICAgIGJsbyA9IGF4IC0gYmhpO1xuICAgICAgICAgICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgX2kgPSBzMCAtIHQwO1xuICAgICAgICAgICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgICAgICAgICAgYVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgICAgICAgICAgX2ogPSBzMSArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgICAgICAgICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9pID0gXzAgLSB0MTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICAgICAgICAgIGFbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICAgICAgICAgIHUzID0gX2ogKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICAgICAgICAgIGFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIGFbM10gPSB1MztcbiAgICAgICAgICAgIHMxID0geXRhaWwgKiBieDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICAgICAgICAgIGJsbyA9IGJ4IC0gYmhpO1xuICAgICAgICAgICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgdDEgPSB4dGFpbCAqIGJ5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogeHRhaWw7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSB4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSB4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJ5O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgICAgICAgICAgYmxvID0gYnkgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwIC0gdDA7XG4gICAgICAgICAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgICAgICAgICBiWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCAtIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgICAgICAgICAgYlsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgYlszXSA9IHUzO1xuICAgICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRhaWxhZGQoZmlubGVuLCBhLCBiLCBrLCB6KSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgX2ssIF8wLCBzMSwgczAsIHUzO1xuICAgIHMxID0gYSAqIGI7XG4gICAgYyA9IHNwbGl0dGVyICogYTtcbiAgICBhaGkgPSBjIC0gKGMgLSBhKTtcbiAgICBhbG8gPSBhIC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGI7XG4gICAgYmhpID0gYyAtIChjIC0gYik7XG4gICAgYmxvID0gYiAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgYyA9IHNwbGl0dGVyICogaztcbiAgICBiaGkgPSBjIC0gKGMgLSBrKTtcbiAgICBibG8gPSBrIC0gYmhpO1xuICAgIF9pID0gczAgKiBrO1xuICAgIGMgPSBzcGxpdHRlciAqIHMwO1xuICAgIGFoaSA9IGMgLSAoYyAtIHMwKTtcbiAgICBhbG8gPSBzMCAtIGFoaTtcbiAgICB1WzBdID0gYWxvICogYmxvIC0gKF9pIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaiA9IHMxICogaztcbiAgICBjID0gc3BsaXR0ZXIgKiBzMTtcbiAgICBhaGkgPSBjIC0gKGMgLSBzMSk7XG4gICAgYWxvID0gczEgLSBhaGk7XG4gICAgXzAgPSBhbG8gKiBibG8gLSAoX2ogLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9rID0gX2kgKyBfMDtcbiAgICBidmlydCA9IF9rIC0gX2k7XG4gICAgdVsxXSA9IF9pIC0gKF9rIC0gYnZpcnQpICsgKF8wIC0gYnZpcnQpO1xuICAgIHUzID0gX2ogKyBfaztcbiAgICB1WzJdID0gX2sgLSAodTMgLSBfaik7XG4gICAgdVszXSA9IHUzO1xuICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIDQsIHUpO1xuICAgIGlmICh6ICE9PSAwKSB7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIHo7XG4gICAgICAgIGJoaSA9IGMgLSAoYyAtIHopO1xuICAgICAgICBibG8gPSB6IC0gYmhpO1xuICAgICAgICBfaSA9IHMwICogejtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogczA7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIHMwKTtcbiAgICAgICAgYWxvID0gczAgLSBhaGk7XG4gICAgICAgIHVbMF0gPSBhbG8gKiBibG8gLSAoX2kgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICBfaiA9IHMxICogejtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogczE7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIHMxKTtcbiAgICAgICAgYWxvID0gczEgLSBhaGk7XG4gICAgICAgIF8wID0gYWxvICogYmxvIC0gKF9qIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgX2sgPSBfaSArIF8wO1xuICAgICAgICBidmlydCA9IF9rIC0gX2k7XG4gICAgICAgIHVbMV0gPSBfaSAtIChfayAtIGJ2aXJ0KSArIChfMCAtIGJ2aXJ0KTtcbiAgICAgICAgdTMgPSBfaiArIF9rO1xuICAgICAgICB1WzJdID0gX2sgLSAodTMgLSBfaik7XG4gICAgICAgIHVbM10gPSB1MztcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgNCwgdSk7XG4gICAgfVxuICAgIHJldHVybiBmaW5sZW47XG59XG5cbmZ1bmN0aW9uIG9yaWVudDNkYWRhcHQoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeiwgcGVybWFuZW50KSB7XG4gICAgbGV0IGZpbmxlbjtcbiAgICBsZXQgYWR4dGFpbCwgYmR4dGFpbCwgY2R4dGFpbDtcbiAgICBsZXQgYWR5dGFpbCwgYmR5dGFpbCwgY2R5dGFpbDtcbiAgICBsZXQgYWR6dGFpbCwgYmR6dGFpbCwgY2R6dGFpbDtcbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfaywgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgczEgPSBiZHggKiBjZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJkeCk7XG4gICAgYWxvID0gYmR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZHkpO1xuICAgIGJsbyA9IGNkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBjZHggKiBiZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgYWxvID0gY2R4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZHkpO1xuICAgIGJsbyA9IGJkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiY1swXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJjWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBiY1syXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJjWzNdID0gdTM7XG4gICAgczEgPSBjZHggKiBhZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgYWxvID0gY2R4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgIGJsbyA9IGFkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBhZHggKiBjZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGFkeCk7XG4gICAgYWxvID0gYWR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZHkpO1xuICAgIGJsbyA9IGNkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBjYVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGNhWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBjYVsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGNhWzNdID0gdTM7XG4gICAgczEgPSBhZHggKiBiZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGFkeCk7XG4gICAgYWxvID0gYWR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZHkpO1xuICAgIGJsbyA9IGJkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBiZHggKiBhZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJkeCk7XG4gICAgYWxvID0gYmR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgIGJsbyA9IGFkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBhYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGFiWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGFiWzNdID0gdTM7XG5cbiAgICBmaW5sZW4gPSBzdW0oXG4gICAgICAgIHN1bShcbiAgICAgICAgICAgIHNjYWxlKDQsIGJjLCBhZHosIF84KSwgXzgsXG4gICAgICAgICAgICBzY2FsZSg0LCBjYSwgYmR6LCBfOGIpLCBfOGIsIF8xNiksIF8xNixcbiAgICAgICAgc2NhbGUoNCwgYWIsIGNkeiwgXzgpLCBfOCwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gbzNkZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZHg7XG4gICAgYWR4dGFpbCA9IGF4IC0gKGFkeCArIGJ2aXJ0KSArIChidmlydCAtIGR4KTtcbiAgICBidmlydCA9IGJ4IC0gYmR4O1xuICAgIGJkeHRhaWwgPSBieCAtIChiZHggKyBidmlydCkgKyAoYnZpcnQgLSBkeCk7XG4gICAgYnZpcnQgPSBjeCAtIGNkeDtcbiAgICBjZHh0YWlsID0gY3ggLSAoY2R4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHgpO1xuICAgIGJ2aXJ0ID0gYXkgLSBhZHk7XG4gICAgYWR5dGFpbCA9IGF5IC0gKGFkeSArIGJ2aXJ0KSArIChidmlydCAtIGR5KTtcbiAgICBidmlydCA9IGJ5IC0gYmR5O1xuICAgIGJkeXRhaWwgPSBieSAtIChiZHkgKyBidmlydCkgKyAoYnZpcnQgLSBkeSk7XG4gICAgYnZpcnQgPSBjeSAtIGNkeTtcbiAgICBjZHl0YWlsID0gY3kgLSAoY2R5ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHkpO1xuICAgIGJ2aXJ0ID0gYXogLSBhZHo7XG4gICAgYWR6dGFpbCA9IGF6IC0gKGFkeiArIGJ2aXJ0KSArIChidmlydCAtIGR6KTtcbiAgICBidmlydCA9IGJ6IC0gYmR6O1xuICAgIGJkenRhaWwgPSBieiAtIChiZHogKyBidmlydCkgKyAoYnZpcnQgLSBkeik7XG4gICAgYnZpcnQgPSBjeiAtIGNkejtcbiAgICBjZHp0YWlsID0gY3ogLSAoY2R6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHopO1xuXG4gICAgaWYgKGFkeHRhaWwgPT09IDAgJiYgYmR4dGFpbCA9PT0gMCAmJiBjZHh0YWlsID09PSAwICYmXG4gICAgICAgIGFkeXRhaWwgPT09IDAgJiYgYmR5dGFpbCA9PT0gMCAmJiBjZHl0YWlsID09PSAwICYmXG4gICAgICAgIGFkenRhaWwgPT09IDAgJiYgYmR6dGFpbCA9PT0gMCAmJiBjZHp0YWlsID09PSAwKSB7XG4gICAgICAgIHJldHVybiBkZXQ7XG4gICAgfVxuXG4gICAgZXJyYm91bmQgPSBvM2RlcnJib3VuZEMgKiBwZXJtYW5lbnQgKyByZXN1bHRlcnJib3VuZCAqIE1hdGguYWJzKGRldCk7XG4gICAgZGV0ICs9XG4gICAgICAgIGFkeiAqIChiZHggKiBjZHl0YWlsICsgY2R5ICogYmR4dGFpbCAtIChiZHkgKiBjZHh0YWlsICsgY2R4ICogYmR5dGFpbCkpICsgYWR6dGFpbCAqIChiZHggKiBjZHkgLSBiZHkgKiBjZHgpICtcbiAgICAgICAgYmR6ICogKGNkeCAqIGFkeXRhaWwgKyBhZHkgKiBjZHh0YWlsIC0gKGNkeSAqIGFkeHRhaWwgKyBhZHggKiBjZHl0YWlsKSkgKyBiZHp0YWlsICogKGNkeCAqIGFkeSAtIGNkeSAqIGFkeCkgK1xuICAgICAgICBjZHogKiAoYWR4ICogYmR5dGFpbCArIGJkeSAqIGFkeHRhaWwgLSAoYWR5ICogYmR4dGFpbCArIGJkeCAqIGFkeXRhaWwpKSArIGNkenRhaWwgKiAoYWR4ICogYmR5IC0gYWR5ICogYmR4KTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBjb25zdCBhdF9sZW4gPSB0YWlsaW5pdChhZHh0YWlsLCBhZHl0YWlsLCBiZHgsIGJkeSwgY2R4LCBjZHksIGF0X2IsIGF0X2MpO1xuICAgIGNvbnN0IGJ0X2xlbiA9IHRhaWxpbml0KGJkeHRhaWwsIGJkeXRhaWwsIGNkeCwgY2R5LCBhZHgsIGFkeSwgYnRfYywgYnRfYSk7XG4gICAgY29uc3QgY3RfbGVuID0gdGFpbGluaXQoY2R4dGFpbCwgY2R5dGFpbCwgYWR4LCBhZHksIGJkeCwgYmR5LCBjdF9hLCBjdF9iKTtcblxuICAgIGNvbnN0IGJjdGxlbiA9IHN1bShidF9sZW4sIGJ0X2MsIGN0X2xlbiwgY3RfYiwgYmN0KTtcbiAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShiY3RsZW4sIGJjdCwgYWR6LCBfMTYpLCBfMTYpO1xuXG4gICAgY29uc3QgY2F0bGVuID0gc3VtKGN0X2xlbiwgY3RfYSwgYXRfbGVuLCBhdF9jLCBjYXQpO1xuICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKGNhdGxlbiwgY2F0LCBiZHosIF8xNiksIF8xNik7XG5cbiAgICBjb25zdCBhYnRsZW4gPSBzdW0oYXRfbGVuLCBhdF9iLCBidF9sZW4sIGJ0X2EsIGFidCk7XG4gICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoYWJ0bGVuLCBhYnQsIGNkeiwgXzE2KSwgXzE2KTtcblxuICAgIGlmIChhZHp0YWlsICE9PSAwKSB7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKDQsIGJjLCBhZHp0YWlsLCBfMTIpLCBfMTIpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShiY3RsZW4sIGJjdCwgYWR6dGFpbCwgXzE2KSwgXzE2KTtcbiAgICB9XG4gICAgaWYgKGJkenRhaWwgIT09IDApIHtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoNCwgY2EsIGJkenRhaWwsIF8xMiksIF8xMik7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKGNhdGxlbiwgY2F0LCBiZHp0YWlsLCBfMTYpLCBfMTYpO1xuICAgIH1cbiAgICBpZiAoY2R6dGFpbCAhPT0gMCkge1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZSg0LCBhYiwgY2R6dGFpbCwgXzEyKSwgXzEyKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoYWJ0bGVuLCBhYnQsIGNkenRhaWwsIF8xNiksIF8xNik7XG4gICAgfVxuXG4gICAgaWYgKGFkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBhZHh0YWlsLCBiZHl0YWlsLCBjZHosIGNkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWFkeHRhaWwsIGNkeXRhaWwsIGJkeiwgYmR6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBiZHh0YWlsLCBjZHl0YWlsLCBhZHosIGFkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWJkeHRhaWwsIGFkeXRhaWwsIGNkeiwgY2R6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBjZHh0YWlsLCBhZHl0YWlsLCBiZHosIGJkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWNkeHRhaWwsIGJkeXRhaWwsIGFkeiwgYWR6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluW2ZpbmxlbiAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JpZW50M2QoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeikge1xuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgY29uc3QgYmR4Y2R5ID0gYmR4ICogY2R5O1xuICAgIGNvbnN0IGNkeGJkeSA9IGNkeCAqIGJkeTtcblxuICAgIGNvbnN0IGNkeGFkeSA9IGNkeCAqIGFkeTtcbiAgICBjb25zdCBhZHhjZHkgPSBhZHggKiBjZHk7XG5cbiAgICBjb25zdCBhZHhiZHkgPSBhZHggKiBiZHk7XG4gICAgY29uc3QgYmR4YWR5ID0gYmR4ICogYWR5O1xuXG4gICAgY29uc3QgZGV0ID1cbiAgICAgICAgYWR6ICogKGJkeGNkeSAtIGNkeGJkeSkgK1xuICAgICAgICBiZHogKiAoY2R4YWR5IC0gYWR4Y2R5KSArXG4gICAgICAgIGNkeiAqIChhZHhiZHkgLSBiZHhhZHkpO1xuXG4gICAgY29uc3QgcGVybWFuZW50ID1cbiAgICAgICAgKE1hdGguYWJzKGJkeGNkeSkgKyBNYXRoLmFicyhjZHhiZHkpKSAqIE1hdGguYWJzKGFkeikgK1xuICAgICAgICAoTWF0aC5hYnMoY2R4YWR5KSArIE1hdGguYWJzKGFkeGNkeSkpICogTWF0aC5hYnMoYmR6KSArXG4gICAgICAgIChNYXRoLmFicyhhZHhiZHkpICsgTWF0aC5hYnMoYmR4YWR5KSkgKiBNYXRoLmFicyhjZHopO1xuXG4gICAgY29uc3QgZXJyYm91bmQgPSBvM2RlcnJib3VuZEEgKiBwZXJtYW5lbnQ7XG4gICAgaWYgKGRldCA+IGVycmJvdW5kIHx8IC1kZXQgPiBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIHJldHVybiBvcmllbnQzZGFkYXB0KGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIHBlcm1hbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmllbnQzZGZhc3QoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeikge1xuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgcmV0dXJuIGFkeCAqIChiZHkgKiBjZHogLSBiZHogKiBjZHkpICtcbiAgICAgICAgYmR4ICogKGNkeSAqIGFkeiAtIGNkeiAqIGFkeSkgK1xuICAgICAgICBjZHggKiAoYWR5ICogYmR6IC0gYWR6ICogYmR5KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/orient3d.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/util.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/util.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"epsilon\": () => (/* binding */ epsilon),\n/* harmony export */ \"estimate\": () => (/* binding */ estimate),\n/* harmony export */ \"negate\": () => (/* binding */ negate),\n/* harmony export */ \"resulterrbound\": () => (/* binding */ resulterrbound),\n/* harmony export */ \"scale\": () => (/* binding */ scale),\n/* harmony export */ \"splitter\": () => (/* binding */ splitter),\n/* harmony export */ \"sum\": () => (/* binding */ sum),\n/* harmony export */ \"sum_three\": () => (/* binding */ sum_three),\n/* harmony export */ \"vec\": () => (/* binding */ vec)\n/* harmony export */ });\nconst epsilon = 1.1102230246251565e-16;\nconst splitter = 134217729;\nconst resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nfunction sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nfunction sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nfunction scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nfunction negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nfunction estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nfunction vec(n) {\n return new Float64Array(n);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS91dGlsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFPO0FBQ0E7QUFDQTs7QUFFUDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7O0FBRU87QUFDUDtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vdXRpbC5qcz9iMTA2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlcHNpbG9uID0gMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNjtcbmV4cG9ydCBjb25zdCBzcGxpdHRlciA9IDEzNDIxNzcyOTtcbmV4cG9ydCBjb25zdCByZXN1bHRlcnJib3VuZCA9ICgzICsgOCAqIGVwc2lsb24pICogZXBzaWxvbjtcblxuLy8gZmFzdF9leHBhbnNpb25fc3VtX3plcm9lbGltIHJvdXRpbmUgZnJvbSBvcml0aW5hbCBjb2RlXG5leHBvcnQgZnVuY3Rpb24gc3VtKGVsZW4sIGUsIGZsZW4sIGYsIGgpIHtcbiAgICBsZXQgUSwgUW5ldywgaGgsIGJ2aXJ0O1xuICAgIGxldCBlbm93ID0gZVswXTtcbiAgICBsZXQgZm5vdyA9IGZbMF07XG4gICAgbGV0IGVpbmRleCA9IDA7XG4gICAgbGV0IGZpbmRleCA9IDA7XG4gICAgaWYgKChmbm93ID4gZW5vdykgPT09IChmbm93ID4gLWVub3cpKSB7XG4gICAgICAgIFEgPSBlbm93O1xuICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUSA9IGZub3c7XG4gICAgICAgIGZub3cgPSBmWysrZmluZGV4XTtcbiAgICB9XG4gICAgbGV0IGhpbmRleCA9IDA7XG4gICAgaWYgKGVpbmRleCA8IGVsZW4gJiYgZmluZGV4IDwgZmxlbikge1xuICAgICAgICBpZiAoKGZub3cgPiBlbm93KSA9PT0gKGZub3cgPiAtZW5vdykpIHtcbiAgICAgICAgICAgIFFuZXcgPSBlbm93ICsgUTtcbiAgICAgICAgICAgIGhoID0gUSAtIChRbmV3IC0gZW5vdyk7XG4gICAgICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBRbmV3ID0gZm5vdyArIFE7XG4gICAgICAgICAgICBoaCA9IFEgLSAoUW5ldyAtIGZub3cpO1xuICAgICAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIFEgPSBRbmV3O1xuICAgICAgICBpZiAoaGggIT09IDApIHtcbiAgICAgICAgICAgIGhbaGluZGV4KytdID0gaGg7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGVpbmRleCA8IGVsZW4gJiYgZmluZGV4IDwgZmxlbikge1xuICAgICAgICAgICAgaWYgKChmbm93ID4gZW5vdykgPT09IChmbm93ID4gLWVub3cpKSB7XG4gICAgICAgICAgICAgICAgUW5ldyA9IFEgKyBlbm93O1xuICAgICAgICAgICAgICAgIGJ2aXJ0ID0gUW5ldyAtIFE7XG4gICAgICAgICAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZW5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFFuZXcgPSBRICsgZm5vdztcbiAgICAgICAgICAgICAgICBidmlydCA9IFFuZXcgLSBRO1xuICAgICAgICAgICAgICAgIGhoID0gUSAtIChRbmV3IC0gYnZpcnQpICsgKGZub3cgLSBidmlydCk7XG4gICAgICAgICAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUSA9IFFuZXc7XG4gICAgICAgICAgICBpZiAoaGggIT09IDApIHtcbiAgICAgICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChlaW5kZXggPCBlbGVuKSB7XG4gICAgICAgIFFuZXcgPSBRICsgZW5vdztcbiAgICAgICAgYnZpcnQgPSBRbmV3IC0gUTtcbiAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZW5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgZW5vdyA9IGVbKytlaW5kZXhdO1xuICAgICAgICBRID0gUW5ldztcbiAgICAgICAgaWYgKGhoICE9PSAwKSB7XG4gICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChmaW5kZXggPCBmbGVuKSB7XG4gICAgICAgIFFuZXcgPSBRICsgZm5vdztcbiAgICAgICAgYnZpcnQgPSBRbmV3IC0gUTtcbiAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZm5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICBRID0gUW5ldztcbiAgICAgICAgaWYgKGhoICE9PSAwKSB7XG4gICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChRICE9PSAwIHx8IGhpbmRleCA9PT0gMCkge1xuICAgICAgICBoW2hpbmRleCsrXSA9IFE7XG4gICAgfVxuICAgIHJldHVybiBoaW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1fdGhyZWUoYWxlbiwgYSwgYmxlbiwgYiwgY2xlbiwgYywgdG1wLCBvdXQpIHtcbiAgICByZXR1cm4gc3VtKHN1bShhbGVuLCBhLCBibGVuLCBiLCB0bXApLCB0bXAsIGNsZW4sIGMsIG91dCk7XG59XG5cbi8vIHNjYWxlX2V4cGFuc2lvbl96ZXJvZWxpbSByb3V0aW5lIGZyb20gb3JpdGluYWwgY29kZVxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlKGVsZW4sIGUsIGIsIGgpIHtcbiAgICBsZXQgUSwgc3VtLCBoaCwgcHJvZHVjdDEsIHByb2R1Y3QwO1xuICAgIGxldCBidmlydCwgYywgYWhpLCBhbG8sIGJoaSwgYmxvO1xuXG4gICAgYyA9IHNwbGl0dGVyICogYjtcbiAgICBiaGkgPSBjIC0gKGMgLSBiKTtcbiAgICBibG8gPSBiIC0gYmhpO1xuICAgIGxldCBlbm93ID0gZVswXTtcbiAgICBRID0gZW5vdyAqIGI7XG4gICAgYyA9IHNwbGl0dGVyICogZW5vdztcbiAgICBhaGkgPSBjIC0gKGMgLSBlbm93KTtcbiAgICBhbG8gPSBlbm93IC0gYWhpO1xuICAgIGhoID0gYWxvICogYmxvIC0gKFEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIGxldCBoaW5kZXggPSAwO1xuICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW47IGkrKykge1xuICAgICAgICBlbm93ID0gZVtpXTtcbiAgICAgICAgcHJvZHVjdDEgPSBlbm93ICogYjtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogZW5vdztcbiAgICAgICAgYWhpID0gYyAtIChjIC0gZW5vdyk7XG4gICAgICAgIGFsbyA9IGVub3cgLSBhaGk7XG4gICAgICAgIHByb2R1Y3QwID0gYWxvICogYmxvIC0gKHByb2R1Y3QxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgc3VtID0gUSArIHByb2R1Y3QwO1xuICAgICAgICBidmlydCA9IHN1bSAtIFE7XG4gICAgICAgIGhoID0gUSAtIChzdW0gLSBidmlydCkgKyAocHJvZHVjdDAgLSBidmlydCk7XG4gICAgICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICAgICAgaFtoaW5kZXgrK10gPSBoaDtcbiAgICAgICAgfVxuICAgICAgICBRID0gcHJvZHVjdDEgKyBzdW07XG4gICAgICAgIGhoID0gc3VtIC0gKFEgLSBwcm9kdWN0MSk7XG4gICAgICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICAgICAgaFtoaW5kZXgrK10gPSBoaDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoUSAhPT0gMCB8fCBoaW5kZXggPT09IDApIHtcbiAgICAgICAgaFtoaW5kZXgrK10gPSBRO1xuICAgIH1cbiAgICByZXR1cm4gaGluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlKGVsZW4sIGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW47IGkrKykgZVtpXSA9IC1lW2ldO1xuICAgIHJldHVybiBlbGVuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGUoZWxlbiwgZSkge1xuICAgIGxldCBRID0gZVswXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW47IGkrKykgUSArPSBlW2ldO1xuICAgIHJldHVybiBRO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVjKG4pIHtcbiAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShuKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/util.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/robust-predicates/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"incircle\": () => (/* reexport safe */ _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__.incircle),\n/* harmony export */ \"incirclefast\": () => (/* reexport safe */ _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__.incirclefast),\n/* harmony export */ \"insphere\": () => (/* reexport safe */ _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__.insphere),\n/* harmony export */ \"inspherefast\": () => (/* reexport safe */ _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__.inspherefast),\n/* harmony export */ \"orient2d\": () => (/* reexport safe */ _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__.orient2d),\n/* harmony export */ \"orient2dfast\": () => (/* reexport safe */ _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__.orient2dfast),\n/* harmony export */ \"orient3d\": () => (/* reexport safe */ _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__.orient3d),\n/* harmony export */ \"orient3dfast\": () => (/* reexport safe */ _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__.orient3dfast)\n/* harmony export */ });\n/* harmony import */ var _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./esm/orient2d.js */ \"../../../node_modules/robust-predicates/esm/orient2d.js\");\n/* harmony import */ var _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./esm/orient3d.js */ \"../../../node_modules/robust-predicates/esm/orient3d.js\");\n/* harmony import */ var _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./esm/incircle.js */ \"../../../node_modules/robust-predicates/esm/incircle.js\");\n/* harmony import */ var _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./esm/insphere.js */ \"../../../node_modules/robust-predicates/esm/insphere.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDeUQ7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2luZGV4LmpzP2FjNTAiXSwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQge29yaWVudDJkLCBvcmllbnQyZGZhc3R9IGZyb20gJy4vZXNtL29yaWVudDJkLmpzJztcbmV4cG9ydCB7b3JpZW50M2QsIG9yaWVudDNkZmFzdH0gZnJvbSAnLi9lc20vb3JpZW50M2QuanMnO1xuZXhwb3J0IHtpbmNpcmNsZSwgaW5jaXJjbGVmYXN0fSBmcm9tICcuL2VzbS9pbmNpcmNsZS5qcyc7XG5leHBvcnQge2luc3BoZXJlLCBpbnNwaGVyZWZhc3R9IGZyb20gJy4vZXNtL2luc3BoZXJlLmpzJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Enum.js": +/*!************************************************!*\ + !*** ../../../node_modules/stylis/src/Enum.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CHARSET\": () => (/* binding */ CHARSET),\n/* harmony export */ \"COMMENT\": () => (/* binding */ COMMENT),\n/* harmony export */ \"COUNTER_STYLE\": () => (/* binding */ COUNTER_STYLE),\n/* harmony export */ \"DECLARATION\": () => (/* binding */ DECLARATION),\n/* harmony export */ \"DOCUMENT\": () => (/* binding */ DOCUMENT),\n/* harmony export */ \"FONT_FACE\": () => (/* binding */ FONT_FACE),\n/* harmony export */ \"FONT_FEATURE_VALUES\": () => (/* binding */ FONT_FEATURE_VALUES),\n/* harmony export */ \"IMPORT\": () => (/* binding */ IMPORT),\n/* harmony export */ \"KEYFRAMES\": () => (/* binding */ KEYFRAMES),\n/* harmony export */ \"LAYER\": () => (/* binding */ LAYER),\n/* harmony export */ \"MEDIA\": () => (/* binding */ MEDIA),\n/* harmony export */ \"MOZ\": () => (/* binding */ MOZ),\n/* harmony export */ \"MS\": () => (/* binding */ MS),\n/* harmony export */ \"NAMESPACE\": () => (/* binding */ NAMESPACE),\n/* harmony export */ \"PAGE\": () => (/* binding */ PAGE),\n/* harmony export */ \"RULESET\": () => (/* binding */ RULESET),\n/* harmony export */ \"SUPPORTS\": () => (/* binding */ SUPPORTS),\n/* harmony export */ \"VIEWPORT\": () => (/* binding */ VIEWPORT),\n/* harmony export */ \"WEBKIT\": () => (/* binding */ WEBKIT)\n/* harmony export */ });\nvar MS = '-ms-'\nvar MOZ = '-moz-'\nvar WEBKIT = '-webkit-'\n\nvar COMMENT = 'comm'\nvar RULESET = 'rule'\nvar DECLARATION = 'decl'\n\nvar PAGE = '@page'\nvar MEDIA = '@media'\nvar IMPORT = '@import'\nvar CHARSET = '@charset'\nvar VIEWPORT = '@viewport'\nvar SUPPORTS = '@supports'\nvar DOCUMENT = '@document'\nvar NAMESPACE = '@namespace'\nvar KEYFRAMES = '@keyframes'\nvar FONT_FACE = '@font-face'\nvar COUNTER_STYLE = '@counter-style'\nvar FONT_FEATURE_VALUES = '@font-feature-values'\nvar LAYER = '@layer'\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvRW51bS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU87QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9FbnVtLmpzPzQ1MzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Enum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Parser.js": +/*!**************************************************!*\ + !*** ../../../node_modules/stylis/src/Parser.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"comment\": () => (/* binding */ comment),\n/* harmony export */ \"compile\": () => (/* binding */ compile),\n/* harmony export */ \"declaration\": () => (/* binding */ declaration),\n/* harmony export */ \"parse\": () => (/* binding */ parse),\n/* harmony export */ \"ruleset\": () => (/* binding */ ruleset)\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enum.js */ \"../../../node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n/* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tokenizer.js */ \"../../../node_modules/stylis/src/Tokenizer.js\");\n\n\n\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nfunction compile (value) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.dealloc)(parse('', null, null, null, [''], value = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.alloc)(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nfunction parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, length - 1) == 58) {\n\t\t\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.indexof)(characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.whitespace)(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.escaping)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(comment((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.commenter)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)(), (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - length))\n\t\t\t\t\t\t\t(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.prev)() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)() === 45)\n\t\t\t\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)())\n\n\t\t\t\t\t\tatrule = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)(), offset = length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(type = characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.identifier)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nfunction ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.sizeof)(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, post + 1, post = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.abs)(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.trim)(j > 0 ? rule[x] + ' ' + y : (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, offset === 0 ? _Enum_js__WEBPACK_IMPORTED_MODULE_2__.RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nfunction comment (value, root, parent, siblings) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.COMMENT, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.char)()), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nfunction declaration (value, root, parent, length, siblings) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.DECLARATION, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 0, length), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, length + 1, -1), length, siblings)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXVEO0FBQytDO0FBQ2tDOztBQUV4STtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQLFFBQVEsc0RBQU8sMkNBQTJDLG9EQUFLO0FBQy9EOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsbURBQUk7QUFDaEQ7QUFDQTtBQUNBLDJCQUEyQixtREFBTTtBQUNqQyxTQUFTLG9EQUFPLGVBQWUsb0RBQU8sQ0FBQyxzREFBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix5REFBVTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdURBQVEsQ0FBQyxvREFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFJO0FBQ2hCO0FBQ0EsTUFBTSxvREFBTSxTQUFTLHdEQUFTLENBQUMsbURBQUksSUFBSSxvREFBSztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtREFBTTtBQUM1QixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxvREFBTztBQUNoRSwyQkFBMkIsbURBQU07QUFDakMsT0FBTyxtREFBTSw0Q0FBNEMseURBQXlELG9EQUFPLDBCQUEwQjtBQUNuSjtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLFVBQVU7QUFDVjtBQUNBLE1BQU0sb0RBQU07O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsbURBQU07QUFDdkM7QUFDQTtBQUNBLHFEQUFxRCxtREFBTTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELG1EQUFJO0FBQ3pEOztBQUVBLDBCQUEwQixpREFBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbURBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLG1EQUFJO0FBQ2QscUJBQXFCLHNEQUFPLENBQUMsbURBQUk7O0FBRWpDLGVBQWUsbURBQUksc0JBQXNCLG1EQUFNLHNCQUFzQix5REFBVSxDQUFDLG9EQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixtREFBTTtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBLFlBQVksbURBQU07O0FBRWxCLCtCQUErQixXQUFXO0FBQzFDLHNCQUFzQixtREFBTSx5QkFBeUIsZ0RBQUcsNkJBQTZCLFVBQVU7QUFDL0YsV0FBVyxpREFBSSw2QkFBNkIsb0RBQU87QUFDbkQ7O0FBRUEsUUFBUSxtREFBSSxxQ0FBcUMsNkNBQU87QUFDeEQ7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFJLHNCQUFzQiw2Q0FBTyxFQUFFLGlEQUFJLENBQUMsbURBQUksS0FBSyxtREFBTTtBQUMvRDs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFJLHNCQUFzQixpREFBVyxFQUFFLG1EQUFNLG9CQUFvQixtREFBTTtBQUMvRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QYXJzZXIuanM/ZGRmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2FicywgY2hhcmF0LCB0cmltLCBmcm9tLCBzaXplb2YsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIHJlcGxhY2UsIGluZGV4b2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7bm9kZSwgY2hhciwgcHJldiwgbmV4dCwgcGVlaywgY2FyZXQsIGFsbG9jLCBkZWFsbG9jLCBkZWxpbWl0LCB3aGl0ZXNwYWNlLCBlc2NhcGluZywgaWRlbnRpZmllciwgY29tbWVudGVyfSBmcm9tICcuL1Rva2VuaXplci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2MocGFyc2UoJycsIG51bGwsIG51bGwsIG51bGwsIFsnJ10sIHZhbHVlID0gYWxsb2ModmFsdWUpLCAwLCBbMF0sIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzZXRzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwc2V1ZG9cbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmdbXX0gZGVjbGFyYXRpb25zXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgcnVsZSwgcnVsZXMsIHJ1bGVzZXRzLCBwc2V1ZG8sIHBvaW50cywgZGVjbGFyYXRpb25zKSB7XG5cdHZhciBpbmRleCA9IDBcblx0dmFyIG9mZnNldCA9IDBcblx0dmFyIGxlbmd0aCA9IHBzZXVkb1xuXHR2YXIgYXRydWxlID0gMFxuXHR2YXIgcHJvcGVydHkgPSAwXG5cdHZhciBwcmV2aW91cyA9IDBcblx0dmFyIHZhcmlhYmxlID0gMVxuXHR2YXIgc2Nhbm5pbmcgPSAxXG5cdHZhciBhbXBlcnNhbmQgPSAxXG5cdHZhciBjaGFyYWN0ZXIgPSAwXG5cdHZhciB0eXBlID0gJydcblx0dmFyIHByb3BzID0gcnVsZXNcblx0dmFyIGNoaWxkcmVuID0gcnVsZXNldHNcblx0dmFyIHJlZmVyZW5jZSA9IHJ1bGVcblx0dmFyIGNoYXJhY3RlcnMgPSB0eXBlXG5cblx0d2hpbGUgKHNjYW5uaW5nKVxuXHRcdHN3aXRjaCAocHJldmlvdXMgPSBjaGFyYWN0ZXIsIGNoYXJhY3RlciA9IG5leHQoKSkge1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHByZXZpb3VzICE9IDEwOCAmJiBjaGFyYXQoY2hhcmFjdGVycywgbGVuZ3RoIC0gMSkgPT0gNTgpIHtcblx0XHRcdFx0XHRpZiAoaW5kZXhvZihjaGFyYWN0ZXJzICs9IHJlcGxhY2UoZGVsaW1pdChjaGFyYWN0ZXIpLCAnJicsICcmXFxmJyksICcmXFxmJykgIT0gLTEpXG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSAtMVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdC8vIFwiICcgW1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA5MTpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcdCBcXG4gXFxyIFxcc1xuXHRcdFx0Y2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IHdoaXRlc3BhY2UocHJldmlvdXMpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBlc2NhcGluZyhjYXJldCgpIC0gMSwgNylcblx0XHRcdFx0Y29udGludWVcblx0XHRcdC8vIC9cblx0XHRcdGNhc2UgNDc6XG5cdFx0XHRcdHN3aXRjaCAocGVlaygpKSB7XG5cdFx0XHRcdFx0Y2FzZSA0MjogY2FzZSA0Nzpcblx0XHRcdFx0XHRcdGFwcGVuZChjb21tZW50KGNvbW1lbnRlcihuZXh0KCksIGNhcmV0KCkpLCByb290LCBwYXJlbnQsIGRlY2xhcmF0aW9ucyksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gJy8nXG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIHtcblx0XHRcdGNhc2UgMTIzICogdmFyaWFibGU6XG5cdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IHN0cmxlbihjaGFyYWN0ZXJzKSAqIGFtcGVyc2FuZFxuXHRcdFx0Ly8gfSA7IFxcMFxuXHRcdFx0Y2FzZSAxMjUgKiB2YXJpYWJsZTogY2FzZSA1OTogY2FzZSAwOlxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0XHRcdC8vIFxcMCB9XG5cdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDEyNTogc2Nhbm5pbmcgPSAwXG5cdFx0XHRcdFx0Ly8gO1xuXHRcdFx0XHRcdGNhc2UgNTkgKyBvZmZzZXQ6IGlmIChhbXBlcnNhbmQgPT0gLTEpIGNoYXJhY3RlcnMgPSByZXBsYWNlKGNoYXJhY3RlcnMsIC9cXGYvZywgJycpXG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHkgPiAwICYmIChzdHJsZW4oY2hhcmFjdGVycykgLSBsZW5ndGgpKVxuXHRcdFx0XHRcdFx0XHRhcHBlbmQocHJvcGVydHkgPiAzMiA/IGRlY2xhcmF0aW9uKGNoYXJhY3RlcnMgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMSwgZGVjbGFyYXRpb25zKSA6IGRlY2xhcmF0aW9uKHJlcGxhY2UoY2hhcmFjdGVycywgJyAnLCAnJykgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMiwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAIDtcblx0XHRcdFx0XHRjYXNlIDU5OiBjaGFyYWN0ZXJzICs9ICc7J1xuXHRcdFx0XHRcdC8vIHsgcnVsZS9hdC1ydWxlXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGFwcGVuZChyZWZlcmVuY2UgPSBydWxlc2V0KGNoYXJhY3RlcnMsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMgPSBbXSwgY2hpbGRyZW4gPSBbXSwgbGVuZ3RoLCBydWxlc2V0cyksIHJ1bGVzZXRzKVxuXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSAxMjMpXG5cdFx0XHRcdFx0XHRcdGlmIChvZmZzZXQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcm9vdCwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHByb3BzLCBydWxlc2V0cywgbGVuZ3RoLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChhdHJ1bGUgPT09IDk5ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCAzKSA9PT0gMTEwID8gMTAwIDogYXRydWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBkIGwgbSBzXG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwMDogY2FzZSAxMDg6IGNhc2UgMTA5OiBjYXNlIDExNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBydWxlICYmIGFwcGVuZChydWxlc2V0KHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgMCwgMCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcnVsZXMsIHByb3BzID0gW10sIGxlbmd0aCwgY2hpbGRyZW4pLCBjaGlsZHJlbiksIHJ1bGVzLCBjaGlsZHJlbiwgbGVuZ3RoLCBwb2ludHMsIHJ1bGUgPyBwcm9wcyA6IGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgWycnXSwgY2hpbGRyZW4sIDAsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5kZXggPSBvZmZzZXQgPSBwcm9wZXJ0eSA9IDAsIHZhcmlhYmxlID0gYW1wZXJzYW5kID0gMSwgdHlwZSA9IGNoYXJhY3RlcnMgPSAnJywgbGVuZ3RoID0gcHNldWRvXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyA6XG5cdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRsZW5ndGggPSAxICsgc3RybGVuKGNoYXJhY3RlcnMpLCBwcm9wZXJ0eSA9IHByZXZpb3VzXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZiAodmFyaWFibGUgPCAxKVxuXHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT0gMTIzKVxuXHRcdFx0XHRcdFx0LS12YXJpYWJsZVxuXHRcdFx0XHRcdGVsc2UgaWYgKGNoYXJhY3RlciA9PSAxMjUgJiYgdmFyaWFibGUrKyA9PSAwICYmIHByZXYoKSA9PSAxMjUpXG5cdFx0XHRcdFx0XHRjb250aW51ZVxuXG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVycyArPSBmcm9tKGNoYXJhY3RlciksIGNoYXJhY3RlciAqIHZhcmlhYmxlKSB7XG5cdFx0XHRcdFx0Ly8gJlxuXHRcdFx0XHRcdGNhc2UgMzg6XG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSBvZmZzZXQgPiAwID8gMSA6IChjaGFyYWN0ZXJzICs9ICdcXGYnLCAtMSlcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLFxuXHRcdFx0XHRcdGNhc2UgNDQ6XG5cdFx0XHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSAoc3RybGVuKGNoYXJhY3RlcnMpIC0gMSkgKiBhbXBlcnNhbmQsIGFtcGVyc2FuZCA9IDFcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQFxuXHRcdFx0XHRcdGNhc2UgNjQ6XG5cdFx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0XHRpZiAocGVlaygpID09PSA0NSlcblx0XHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KG5leHQoKSlcblxuXHRcdFx0XHRcdFx0YXRydWxlID0gcGVlaygpLCBvZmZzZXQgPSBsZW5ndGggPSBzdHJsZW4odHlwZSA9IGNoYXJhY3RlcnMgKz0gaWRlbnRpZmllcihjYXJldCgpKSksIGNoYXJhY3RlcisrXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRjYXNlIDQ1OlxuXHRcdFx0XHRcdFx0aWYgKHByZXZpb3VzID09PSA0NSAmJiBzdHJsZW4oY2hhcmFjdGVycykgPT0gMilcblx0XHRcdFx0XHRcdFx0dmFyaWFibGUgPSAwXG5cdFx0XHRcdH1cblx0XHR9XG5cblx0cmV0dXJuIHJ1bGVzZXRzXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzZXQgKHZhbHVlLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncykge1xuXHR2YXIgcG9zdCA9IG9mZnNldCAtIDFcblx0dmFyIHJ1bGUgPSBvZmZzZXQgPT09IDAgPyBydWxlcyA6IFsnJ11cblx0dmFyIHNpemUgPSBzaXplb2YocnVsZSlcblxuXHRmb3IgKHZhciBpID0gMCwgaiA9IDAsIGsgPSAwOyBpIDwgaW5kZXg7ICsraSlcblx0XHRmb3IgKHZhciB4ID0gMCwgeSA9IHN1YnN0cih2YWx1ZSwgcG9zdCArIDEsIHBvc3QgPSBhYnMoaiA9IHBvaW50c1tpXSkpLCB6ID0gdmFsdWU7IHggPCBzaXplOyArK3gpXG5cdFx0XHRpZiAoeiA9IHRyaW0oaiA+IDAgPyBydWxlW3hdICsgJyAnICsgeSA6IHJlcGxhY2UoeSwgLyZcXGYvZywgcnVsZVt4XSkpKVxuXHRcdFx0XHRwcm9wc1trKytdID0gelxuXG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIG9mZnNldCA9PT0gMCA/IFJVTEVTRVQgOiB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBzaWJsaW5ncykge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBDT01NRU5ULCBmcm9tKGNoYXIoKSksIHN1YnN0cih2YWx1ZSwgMiwgLTIpLCAwLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIERFQ0xBUkFUSU9OLCBzdWJzdHIodmFsdWUsIDAsIGxlbmd0aCksIHN1YnN0cih2YWx1ZSwgbGVuZ3RoICsgMSwgLTEpLCBsZW5ndGgsIHNpYmxpbmdzKVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Parser.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Serializer.js": +/*!******************************************************!*\ + !*** ../../../node_modules/stylis/src/Serializer.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"serialize\": () => (/* binding */ serialize),\n/* harmony export */ \"stringify\": () => (/* binding */ stringify)\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enum.js */ \"../../../node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n\n\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.LAYER: if (element.children.length) break\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT: case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.DECLARATION: return element.return = element.return || element.value\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.COMMENT: return ''\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.RULESET: if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWlGO0FBQzlDOztBQUVuQztBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDs7QUFFQSxpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBLE9BQU8sMkNBQUs7QUFDWixPQUFPLDRDQUFNLE9BQU8saURBQVc7QUFDL0IsT0FBTyw2Q0FBTztBQUNkLE9BQU8sK0NBQVMsNENBQTRDLDhDQUE4QztBQUMxRyxPQUFPLDZDQUFPLE9BQU8sbURBQU07QUFDM0I7O0FBRUEsUUFBUSxtREFBTSx3RkFBd0YsaUJBQWlCO0FBQ3ZIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1NlcmlhbGl6ZXIuanM/OGFiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Serializer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Tokenizer.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/stylis/src/Tokenizer.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"alloc\": () => (/* binding */ alloc),\n/* harmony export */ \"caret\": () => (/* binding */ caret),\n/* harmony export */ \"char\": () => (/* binding */ char),\n/* harmony export */ \"character\": () => (/* binding */ character),\n/* harmony export */ \"characters\": () => (/* binding */ characters),\n/* harmony export */ \"column\": () => (/* binding */ column),\n/* harmony export */ \"commenter\": () => (/* binding */ commenter),\n/* harmony export */ \"copy\": () => (/* binding */ copy),\n/* harmony export */ \"dealloc\": () => (/* binding */ dealloc),\n/* harmony export */ \"delimit\": () => (/* binding */ delimit),\n/* harmony export */ \"delimiter\": () => (/* binding */ delimiter),\n/* harmony export */ \"escaping\": () => (/* binding */ escaping),\n/* harmony export */ \"identifier\": () => (/* binding */ identifier),\n/* harmony export */ \"length\": () => (/* binding */ length),\n/* harmony export */ \"lift\": () => (/* binding */ lift),\n/* harmony export */ \"line\": () => (/* binding */ line),\n/* harmony export */ \"next\": () => (/* binding */ next),\n/* harmony export */ \"node\": () => (/* binding */ node),\n/* harmony export */ \"peek\": () => (/* binding */ peek),\n/* harmony export */ \"position\": () => (/* binding */ position),\n/* harmony export */ \"prev\": () => (/* binding */ prev),\n/* harmony export */ \"slice\": () => (/* binding */ slice),\n/* harmony export */ \"token\": () => (/* binding */ token),\n/* harmony export */ \"tokenize\": () => (/* binding */ tokenize),\n/* harmony export */ \"tokenizer\": () => (/* binding */ tokenizer),\n/* harmony export */ \"whitespace\": () => (/* binding */ whitespace)\n/* harmony export */ });\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n\n\nvar line = 1\nvar column = 1\nvar length = 0\nvar position = 0\nvar character = 0\nvar characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nfunction node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nfunction copy (root, props) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nfunction lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nfunction char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction prev () {\n\tcharacter = position > 0 ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction next () {\n\tcharacter = position < length ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction peek () {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position)\n}\n\n/**\n * @return {number}\n */\nfunction caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction slice (begin, end) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nfunction alloc (value) {\n\treturn line = column = 1, length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nfunction dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction delimit (type) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.trim)(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nfunction tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nfunction tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nfunction escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nfunction commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nfunction identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErRTs7QUFFeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsZUFBZTtBQUMxQixXQUFXLGVBQWU7QUFDMUIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsbUJBQW1CO0FBQzlCLFdBQVcsbUJBQW1CO0FBQzlCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQLFNBQVM7QUFDVDs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFNLGdFQUFnRSxxQkFBcUI7QUFDbkc7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQO0FBQ0EsMEJBQTBCLGlCQUFpQjs7QUFFM0MsQ0FBQyxvREFBTTtBQUNQOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUCw0QkFBNEIsbURBQU07O0FBRWxDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1AsaUNBQWlDLG1EQUFNOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDTztBQUNQLFFBQVEsbURBQU07QUFDZDs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFNO0FBQ2Q7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxvQ0FBb0MsbURBQU07QUFDMUM7O0FBRUE7QUFDQSxXQUFXLEtBQUs7QUFDaEIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1AsUUFBUSxpREFBSTtBQUNaOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQSxXQUFXLG1EQUFNO0FBQ2pCO0FBQ0EsV0FBVyxvREFBTTtBQUNqQjtBQUNBLFlBQVksb0RBQU0sQ0FBQyxpREFBSTtBQUN2Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELGlEQUFJO0FBQ3REOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1Rva2VuaXplci5qcz9kMDBjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Tokenizer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Utility.js": +/*!***************************************************!*\ + !*** ../../../node_modules/stylis/src/Utility.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"abs\": () => (/* binding */ abs),\n/* harmony export */ \"append\": () => (/* binding */ append),\n/* harmony export */ \"assign\": () => (/* binding */ assign),\n/* harmony export */ \"charat\": () => (/* binding */ charat),\n/* harmony export */ \"combine\": () => (/* binding */ combine),\n/* harmony export */ \"filter\": () => (/* binding */ filter),\n/* harmony export */ \"from\": () => (/* binding */ from),\n/* harmony export */ \"hash\": () => (/* binding */ hash),\n/* harmony export */ \"indexof\": () => (/* binding */ indexof),\n/* harmony export */ \"match\": () => (/* binding */ match),\n/* harmony export */ \"replace\": () => (/* binding */ replace),\n/* harmony export */ \"sizeof\": () => (/* binding */ sizeof),\n/* harmony export */ \"strlen\": () => (/* binding */ strlen),\n/* harmony export */ \"substr\": () => (/* binding */ substr),\n/* harmony export */ \"trim\": () => (/* binding */ trim)\n/* harmony export */ });\n/**\n * @param {number}\n * @return {number}\n */\nvar abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nvar from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nvar assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nfunction hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nfunction trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nfunction match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nfunction replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nfunction indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nfunction charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nfunction strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nfunction sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nfunction append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nfunction combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nfunction filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsaUJBQWlCO0FBQzVCLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQLHdDQUF3QywrQkFBK0I7QUFDdkUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcz84MTc3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhvZiAodmFsdWUsIHNlYXJjaCkge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXJhdCAodmFsdWUsIGluZGV4KSB7XG5cdHJldHVybiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSB8IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyICh2YWx1ZSwgYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gdmFsdWUuc2xpY2UoYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaXplb2YgKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQgKHZhbHVlLCBhcnJheSkge1xuXHRyZXR1cm4gYXJyYXkucHVzaCh2YWx1ZSksIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lIChhcnJheSwgY2FsbGJhY2spIHtcblx0cmV0dXJuIGFycmF5Lm1hcChjYWxsYmFjaykuam9pbignJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyIChhcnJheSwgcGF0dGVybikge1xuXHRyZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gIW1hdGNoKHZhbHVlLCBwYXR0ZXJuKSB9KVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Utility.js\n"); + +/***/ }), + +/***/ "../../../node_modules/unist-util-stringify-position/lib/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/unist-util-stringify-position/lib/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"stringifyPosition\": () => (/* binding */ stringifyPosition)\n/* harmony export */ });\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nfunction stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uL2xpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxhQUFhLHNCQUFzQjtBQUNuQyxhQUFhLHVCQUF1QjtBQUNwQyxhQUFhLDBCQUEwQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsaUNBQWlDO0FBQy9DO0FBQ0E7QUFDQSxjQUFjLDhCQUE4QjtBQUM1QyxjQUFjLDhCQUE4QjtBQUM1QztBQUNBO0FBQ0EsY0FBYywyQkFBMkI7QUFDekMsY0FBYywyQkFBMkI7QUFDekMsY0FBYywyQkFBMkI7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtGQUFrRjtBQUM3RjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNDQUFzQztBQUNqRCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDRDQUE0QztBQUN2RCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDJCQUEyQjtBQUN0QyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uL2xpYi9pbmRleC5qcz81YzA3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb3NpdGlvbn0gUG9zaXRpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIE5vZGVMaWtlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICogQHByb3BlcnR5IHtQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbcG9zaXRpb25dXG4gKlxuICogQHR5cGVkZWYgUG9zaXRpb25MaWtlXG4gKiBAcHJvcGVydHkge1BvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFtzdGFydF1cbiAqIEBwcm9wZXJ0eSB7UG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZF1cbiAqXG4gKiBAdHlwZWRlZiBQb2ludExpa2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2xpbmVdXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtjb2x1bW5dXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtvZmZzZXRdXG4gKi9cblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIHBvc2l0aW9uYWwgaW5mbyBvZiBhIHBvaW50LCBwb3NpdGlvbiAoc3RhcnQgYW5kIGVuZCBwb2ludHMpLFxuICogb3Igbm9kZS5cbiAqXG4gKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9zaXRpb25MaWtlIHwgUG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbdmFsdWVdXG4gKiAgIE5vZGUsIHBvc2l0aW9uLCBvciBwb2ludC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFByZXR0eSBwcmludGVkIHBvc2l0aW9uYWwgaW5mbyBvZiBhIG5vZGUgKGBzdHJpbmdgKS5cbiAqXG4gKiAgIEluIHRoZSBmb3JtYXQgb2YgYSByYW5nZSBgbHM6Y3MtbGU6Y2VgICh3aGVuIGdpdmVuIGBub2RlYCBvciBgcG9zaXRpb25gKVxuICogICBvciBhIHBvaW50IGBsOmNgICh3aGVuIGdpdmVuIGBwb2ludGApLCB3aGVyZSBgbGAgc3RhbmRzIGZvciBsaW5lLCBgY2AgZm9yXG4gKiAgIGNvbHVtbiwgYHNgIGZvciBgc3RhcnRgLCBhbmQgYGVgIGZvciBlbmQuXG4gKiAgIEFuIGVtcHR5IHN0cmluZyAoYCcnYCkgaXMgcmV0dXJuZWQgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIG5laXRoZXIgYG5vZGVgLFxuICogICBgcG9zaXRpb25gLCBub3IgYHBvaW50YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVBvc2l0aW9uKHZhbHVlKSB7XG4gIC8vIE5vdGhpbmcuXG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gTm9kZS5cbiAgaWYgKCdwb3NpdGlvbicgaW4gdmFsdWUgfHwgJ3R5cGUnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmICgnc3RhcnQnIGluIHZhbHVlIHx8ICdlbmQnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlKVxuICB9XG5cbiAgLy8gUG9pbnQuXG4gIGlmICgnbGluZScgaW4gdmFsdWUgfHwgJ2NvbHVtbicgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gcG9pbnQodmFsdWUpXG4gIH1cblxuICAvLyA/XG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb2ludFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcG9pbnQocG9pbnQpIHtcbiAgcmV0dXJuIGluZGV4KHBvaW50ICYmIHBvaW50LmxpbmUpICsgJzonICsgaW5kZXgocG9pbnQgJiYgcG9pbnQuY29sdW1uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9zaXRpb24gfCBQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb3NcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvc2l0aW9uKHBvcykge1xuICByZXR1cm4gcG9pbnQocG9zICYmIHBvcy5zdGFydCkgKyAnLScgKyBwb2ludChwb3MgJiYgcG9zLmVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBpbmRleCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogMVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/unist-util-stringify-position/lib/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uvu/assert/index.mjs": +/*!**************************************************!*\ + !*** ../../../node_modules/uvu/assert/index.mjs ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Assertion\": () => (/* binding */ Assertion),\n/* harmony export */ \"equal\": () => (/* binding */ equal),\n/* harmony export */ \"fixture\": () => (/* binding */ fixture),\n/* harmony export */ \"instance\": () => (/* binding */ instance),\n/* harmony export */ \"is\": () => (/* binding */ is),\n/* harmony export */ \"match\": () => (/* binding */ match),\n/* harmony export */ \"not\": () => (/* binding */ not),\n/* harmony export */ \"ok\": () => (/* binding */ ok),\n/* harmony export */ \"snapshot\": () => (/* binding */ snapshot),\n/* harmony export */ \"throws\": () => (/* binding */ throws),\n/* harmony export */ \"type\": () => (/* binding */ type),\n/* harmony export */ \"unreachable\": () => (/* binding */ unreachable)\n/* harmony export */ });\n/* harmony import */ var dequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dequal */ \"../../../node_modules/dequal/dist/index.mjs\");\n/* harmony import */ var uvu_diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/diff */ \"../../../node_modules/uvu/diff/index.mjs\");\n\n\n\nfunction dedent(str) {\n\tstr = str.replace(/\\r?\\n/g, '\\n');\n let arr = str.match(/^[ \\t]*(?=\\S)/gm);\n let i = 0, min = 1/0, len = (arr||[]).length;\n for (; i < len; i++) min = Math.min(min, arr[i].length);\n return len && min ? str.replace(new RegExp(`^[ \\\\t]{${min}}`, 'gm'), '') : str;\n}\n\nclass Assertion extends Error {\n\tconstructor(opts={}) {\n\t\tsuper(opts.message);\n\t\tthis.name = 'Assertion';\n\t\tthis.code = 'ERR_ASSERTION';\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t\tthis.details = opts.details || false;\n\t\tthis.generated = !!opts.generated;\n\t\tthis.operator = opts.operator;\n\t\tthis.expects = opts.expects;\n\t\tthis.actual = opts.actual;\n\t}\n}\n\nfunction assert(bool, actual, expects, operator, detailer, backup, msg) {\n\tif (bool) return;\n\tlet message = msg || backup;\n\tif (msg instanceof Error) throw msg;\n\tlet details = detailer && detailer(actual, expects);\n\tthrow new Assertion({ actual, expects, operator, message, details, generated: !msg });\n}\n\nfunction ok(val, msg) {\n\tassert(!!val, false, true, 'ok', false, 'Expected value to be truthy', msg);\n}\n\nfunction is(val, exp, msg) {\n\tassert(val === exp, val, exp, 'is', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be strictly equal:', msg);\n}\n\nfunction equal(val, exp, msg) {\n\tassert((0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'equal', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be deeply equal:', msg);\n}\n\nfunction unreachable(msg) {\n\tassert(false, true, false, 'unreachable', false, 'Expected not to be reached!', msg);\n}\n\nfunction type(val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp === exp, tmp, exp, 'type', false, `Expected \"${tmp}\" to be \"${exp}\"`, msg);\n}\n\nfunction instance(val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(val instanceof exp, val, exp, 'instance', false, `Expected value to be an instance of ${name}`, msg);\n}\n\nfunction match(val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(val.includes(exp), val, exp, 'match', false, `Expected value to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(exp.test(val), val, exp, 'match', false, `Expected value to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nfunction snapshot(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'snapshot', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines, 'Expected value to match snapshot:', msg);\n}\n\nconst lineNums = (x, y) => (0,uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines)(x, y, 1);\nfunction fixture(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'fixture', lineNums, 'Expected value to match fixture:', msg);\n}\n\nfunction throws(blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t\tassert(false, false, true, 'throws', false, 'Expected function to throw', msg);\n\t} catch (err) {\n\t\tif (err instanceof Assertion) throw err;\n\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(exp(err), false, true, 'throws', false, 'Expected function to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(exp.test(err.message), false, true, 'throws', false, `Expected function to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t}\n\t}\n}\n\n// ---\n\nfunction not(val, msg) {\n\tassert(!val, true, false, 'not', false, 'Expected value to be falsey', msg);\n}\n\nnot.ok = not;\n\nis.not = function (val, exp, msg) {\n\tassert(val !== exp, val, exp, 'is.not', false, 'Expected values not to be strictly equal', msg);\n}\n\nnot.equal = function (val, exp, msg) {\n\tassert(!(0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'not.equal', false, 'Expected values not to be deeply equal', msg);\n}\n\nnot.type = function (val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp !== exp, tmp, exp, 'not.type', false, `Expected \"${tmp}\" not to be \"${exp}\"`, msg);\n}\n\nnot.instance = function (val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(!(val instanceof exp), val, exp, 'not.instance', false, `Expected value not to be an instance of ${name}`, msg);\n}\n\nnot.snapshot = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.snapshot', false, 'Expected value not to match snapshot', msg);\n}\n\nnot.fixture = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.fixture', false, 'Expected value not to match fixture', msg);\n}\n\nnot.match = function (val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(!val.includes(exp), val, exp, 'not.match', false, `Expected value not to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(!exp.test(val), val, exp, 'not.match', false, `Expected value not to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nnot.throws = function (blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t} catch (err) {\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(!exp(err), true, false, 'not.throws', false, 'Expected function not to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(!exp.test(err.message), true, false, 'not.throws', false, `Expected function not to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t} else if (!exp) {\n\t\t\tassert(false, true, false, 'not.throws', false, 'Expected function not to throw', msg);\n\t\t}\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V2dS9hc3NlcnQvaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ1U7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCLHNEQUFzRCxFQUFFLEtBQUs7QUFDN0Q7O0FBRU87QUFDUCxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw4REFBOEQ7QUFDckY7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1AscUNBQXFDLDZDQUFPO0FBQzVDOztBQUVPO0FBQ1AsUUFBUSw4Q0FBTSwrQkFBK0IsNkNBQU87QUFDcEQ7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSwyREFBMkQsSUFBSSxXQUFXLElBQUk7QUFDOUU7O0FBRU87QUFDUDtBQUNBLGdHQUFnRyxLQUFLO0FBQ3JHOztBQUVPO0FBQ1A7QUFDQSxvRkFBb0YsSUFBSTtBQUN4RixHQUFHO0FBQ0gsK0VBQStFLFlBQVk7QUFDM0Y7QUFDQTs7QUFFTztBQUNQLGtCQUFrQjtBQUNsQiwyQ0FBMkMsMkNBQUs7QUFDaEQ7O0FBRUEsMkJBQTJCLCtDQUFLO0FBQ3pCO0FBQ1Asa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixrSEFBa0gsWUFBWTtBQUM5SDtBQUNBO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsOENBQU07QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0RBQStELElBQUksZUFBZSxJQUFJO0FBQ3RGOztBQUVBO0FBQ0E7QUFDQSwyR0FBMkcsS0FBSztBQUNoSDs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2RixJQUFJO0FBQ2pHLEdBQUc7QUFDSCx3RkFBd0YsWUFBWTtBQUNwRztBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsSUFBSTtBQUNKLDJIQUEySCxZQUFZO0FBQ3ZJLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXZ1L2Fzc2VydC9pbmRleC5tanM/NWVmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXF1YWzCoH0gZnJvbSAnZGVxdWFsJztcbmltcG9ydCB7IGNvbXBhcmUsIGxpbmVzIH0gZnJvbSAndXZ1L2RpZmYnO1xuXG5mdW5jdGlvbiBkZWRlbnQoc3RyKSB7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC9cXHI/XFxuL2csICdcXG4nKTtcbiAgbGV0IGFyciA9IHN0ci5tYXRjaCgvXlsgXFx0XSooPz1cXFMpL2dtKTtcbiAgbGV0IGkgPSAwLCBtaW4gPSAxLzAsIGxlbiA9IChhcnJ8fFtdKS5sZW5ndGg7XG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIG1pbiA9IE1hdGgubWluKG1pbiwgYXJyW2ldLmxlbmd0aCk7XG4gIHJldHVybiBsZW4gJiYgbWluID8gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChgXlsgXFxcXHRdeyR7bWlufX1gLCAnZ20nKSwgJycpIDogc3RyO1xufVxuXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uIGV4dGVuZHMgRXJyb3Ige1xuXHRjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG5cdFx0c3VwZXIob3B0cy5tZXNzYWdlKTtcblx0XHR0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uJztcblx0XHR0aGlzLmNvZGUgPSAnRVJSX0FTU0VSVElPTic7XG5cdFx0aWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG5cdFx0XHRFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcblx0XHR9XG5cdFx0dGhpcy5kZXRhaWxzID0gb3B0cy5kZXRhaWxzIHx8IGZhbHNlO1xuXHRcdHRoaXMuZ2VuZXJhdGVkID0gISFvcHRzLmdlbmVyYXRlZDtcblx0XHR0aGlzLm9wZXJhdG9yID0gb3B0cy5vcGVyYXRvcjtcblx0XHR0aGlzLmV4cGVjdHMgPSBvcHRzLmV4cGVjdHM7XG5cdFx0dGhpcy5hY3R1YWwgPSBvcHRzLmFjdHVhbDtcblx0fVxufVxuXG5mdW5jdGlvbiBhc3NlcnQoYm9vbCwgYWN0dWFsLCBleHBlY3RzLCBvcGVyYXRvciwgZGV0YWlsZXIsIGJhY2t1cCwgbXNnKSB7XG5cdGlmIChib29sKSByZXR1cm47XG5cdGxldCBtZXNzYWdlID0gbXNnIHx8IGJhY2t1cDtcblx0aWYgKG1zZyBpbnN0YW5jZW9mIEVycm9yKSB0aHJvdyBtc2c7XG5cdGxldCBkZXRhaWxzID0gZGV0YWlsZXIgJiYgZGV0YWlsZXIoYWN0dWFsLCBleHBlY3RzKTtcblx0dGhyb3cgbmV3IEFzc2VydGlvbih7IGFjdHVhbCwgZXhwZWN0cywgb3BlcmF0b3IsIG1lc3NhZ2UsIGRldGFpbHMsIGdlbmVyYXRlZDogIW1zZyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9rKHZhbCwgbXNnKSB7XG5cdGFzc2VydCghIXZhbCwgZmFsc2UsIHRydWUsICdvaycsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWUgdG8gYmUgdHJ1dGh5JywgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzKHZhbCwgZXhwLCBtc2cpIHtcblx0YXNzZXJ0KHZhbCA9PT0gZXhwLCB2YWwsIGV4cCwgJ2lzJywgY29tcGFyZSwgJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBlcXVhbDonLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWwodmFsLCBleHAsIG1zZykge1xuXHRhc3NlcnQoZGVxdWFsKHZhbCwgZXhwKSwgdmFsLCBleHAsICdlcXVhbCcsIGNvbXBhcmUsICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgZGVlcGx5IGVxdWFsOicsIG1zZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZShtc2cpIHtcblx0YXNzZXJ0KGZhbHNlLCB0cnVlLCBmYWxzZSwgJ3VucmVhY2hhYmxlJywgZmFsc2UsICdFeHBlY3RlZCBub3QgdG8gYmUgcmVhY2hlZCEnLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZSh2YWwsIGV4cCwgbXNnKSB7XG5cdGxldCB0bXAgPSB0eXBlb2YgdmFsO1xuXHRhc3NlcnQodG1wID09PSBleHAsIHRtcCwgZXhwLCAndHlwZScsIGZhbHNlLCBgRXhwZWN0ZWQgXCIke3RtcH1cIiB0byBiZSBcIiR7ZXhwfVwiYCwgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlKHZhbCwgZXhwLCBtc2cpIHtcblx0bGV0IG5hbWUgPSAnYCcgKyAoZXhwLm5hbWUgfHwgZXhwLmNvbnN0cnVjdG9yLm5hbWUpICsgJ2AnO1xuXHRhc3NlcnQodmFsIGluc3RhbmNlb2YgZXhwLCB2YWwsIGV4cCwgJ2luc3RhbmNlJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBhbiBpbnN0YW5jZSBvZiAke25hbWV9YCwgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKHZhbCwgZXhwLCBtc2cpIHtcblx0aWYgKHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0YXNzZXJ0KHZhbC5pbmNsdWRlcyhleHApLCB2YWwsIGV4cCwgJ21hdGNoJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSB0byBpbmNsdWRlIFwiJHtleHB9XCIgc3Vic3RyaW5nYCwgbXNnKTtcblx0fSBlbHNlIHtcblx0XHRhc3NlcnQoZXhwLnRlc3QodmFsKSwgdmFsLCBleHAsICdtYXRjaCcsIGZhbHNlLCBgRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNuYXBzaG90KHZhbCwgZXhwLCBtc2cpIHtcblx0dmFsPWRlZGVudCh2YWwpOyBleHA9ZGVkZW50KGV4cCk7XG5cdGFzc2VydCh2YWwgPT09IGV4cCwgdmFsLCBleHAsICdzbmFwc2hvdCcsIGxpbmVzLCAnRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggc25hcHNob3Q6JywgbXNnKTtcbn1cblxuY29uc3QgbGluZU51bXMgPSAoeCwgeSkgPT4gbGluZXMoeCwgeSwgMSk7XG5leHBvcnQgZnVuY3Rpb24gZml4dHVyZSh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsID09PSBleHAsIHZhbCwgZXhwLCAnZml4dHVyZScsIGxpbmVOdW1zLCAnRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggZml4dHVyZTonLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dzKGJsaywgZXhwLCBtc2cpIHtcblx0aWYgKCFtc2cgJiYgdHlwZW9mIGV4cCA9PT0gJ3N0cmluZycpIHtcblx0XHRtc2cgPSBleHA7IGV4cCA9IG51bGw7XG5cdH1cblxuXHR0cnkge1xuXHRcdGJsaygpO1xuXHRcdGFzc2VydChmYWxzZSwgZmFsc2UsIHRydWUsICd0aHJvd3MnLCBmYWxzZSwgJ0V4cGVjdGVkIGZ1bmN0aW9uIHRvIHRocm93JywgbXNnKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEFzc2VydGlvbikgdGhyb3cgZXJyO1xuXG5cdFx0aWYgKHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGFzc2VydChleHAoZXJyKSwgZmFsc2UsIHRydWUsICd0aHJvd3MnLCBmYWxzZSwgJ0V4cGVjdGVkIGZ1bmN0aW9uIHRvIHRocm93IG1hdGNoaW5nIGV4Y2VwdGlvbicsIG1zZyk7XG5cdFx0fSBlbHNlIGlmIChleHAgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdGFzc2VydChleHAudGVzdChlcnIubWVzc2FnZSksIGZhbHNlLCB0cnVlLCAndGhyb3dzJywgZmFsc2UsIGBFeHBlY3RlZCBmdW5jdGlvbiB0byB0aHJvdyBleGNlcHRpb24gbWF0Y2hpbmcgXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdFx0fVxuXHR9XG59XG5cbi8vIC0tLVxuXG5leHBvcnQgZnVuY3Rpb24gbm90KHZhbCwgbXNnKSB7XG5cdGFzc2VydCghdmFsLCB0cnVlLCBmYWxzZSwgJ25vdCcsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWUgdG8gYmUgZmFsc2V5JywgbXNnKTtcbn1cblxubm90Lm9rID0gbm90O1xuXG5pcy5ub3QgPSBmdW5jdGlvbiAodmFsLCBleHAsIG1zZykge1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnaXMubm90JywgZmFsc2UsICdFeHBlY3RlZCB2YWx1ZXMgbm90IHRvIGJlIHN0cmljdGx5IGVxdWFsJywgbXNnKTtcbn1cblxubm90LmVxdWFsID0gZnVuY3Rpb24gKHZhbCwgZXhwLCBtc2cpIHtcblx0YXNzZXJ0KCFkZXF1YWwodmFsLCBleHApLCB2YWwsIGV4cCwgJ25vdC5lcXVhbCcsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWVzIG5vdCB0byBiZSBkZWVwbHkgZXF1YWwnLCBtc2cpO1xufVxuXG5ub3QudHlwZSA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdGxldCB0bXAgPSB0eXBlb2YgdmFsO1xuXHRhc3NlcnQodG1wICE9PSBleHAsIHRtcCwgZXhwLCAnbm90LnR5cGUnLCBmYWxzZSwgYEV4cGVjdGVkIFwiJHt0bXB9XCIgbm90IHRvIGJlIFwiJHtleHB9XCJgLCBtc2cpO1xufVxuXG5ub3QuaW5zdGFuY2UgPSBmdW5jdGlvbiAodmFsLCBleHAsIG1zZykge1xuXHRsZXQgbmFtZSA9ICdgJyArIChleHAubmFtZSB8fCBleHAuY29uc3RydWN0b3IubmFtZSkgKyAnYCc7XG5cdGFzc2VydCghKHZhbCBpbnN0YW5jZW9mIGV4cCksIHZhbCwgZXhwLCAnbm90Lmluc3RhbmNlJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSBub3QgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgJHtuYW1lfWAsIG1zZyk7XG59XG5cbm5vdC5zbmFwc2hvdCA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnbm90LnNuYXBzaG90JywgZmFsc2UsICdFeHBlY3RlZCB2YWx1ZSBub3QgdG8gbWF0Y2ggc25hcHNob3QnLCBtc2cpO1xufVxuXG5ub3QuZml4dHVyZSA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnbm90LmZpeHR1cmUnLCBmYWxzZSwgJ0V4cGVjdGVkIHZhbHVlIG5vdCB0byBtYXRjaCBmaXh0dXJlJywgbXNnKTtcbn1cblxubm90Lm1hdGNoID0gZnVuY3Rpb24gKHZhbCwgZXhwLCBtc2cpIHtcblx0aWYgKHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0YXNzZXJ0KCF2YWwuaW5jbHVkZXMoZXhwKSwgdmFsLCBleHAsICdub3QubWF0Y2gnLCBmYWxzZSwgYEV4cGVjdGVkIHZhbHVlIG5vdCB0byBpbmNsdWRlIFwiJHtleHB9XCIgc3Vic3RyaW5nYCwgbXNnKTtcblx0fSBlbHNlIHtcblx0XHRhc3NlcnQoIWV4cC50ZXN0KHZhbCksIHZhbCwgZXhwLCAnbm90Lm1hdGNoJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSBub3QgdG8gbWF0Y2ggXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdH1cbn1cblxubm90LnRocm93cyA9IGZ1bmN0aW9uIChibGssIGV4cCwgbXNnKSB7XG5cdGlmICghbXNnICYmIHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0bXNnID0gZXhwOyBleHAgPSBudWxsO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRibGsoKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGFzc2VydCghZXhwKGVyciksIHRydWUsIGZhbHNlLCAnbm90LnRocm93cycsIGZhbHNlLCAnRXhwZWN0ZWQgZnVuY3Rpb24gbm90IHRvIHRocm93IG1hdGNoaW5nIGV4Y2VwdGlvbicsIG1zZyk7XG5cdFx0fSBlbHNlIGlmIChleHAgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdGFzc2VydCghZXhwLnRlc3QoZXJyLm1lc3NhZ2UpLCB0cnVlLCBmYWxzZSwgJ25vdC50aHJvd3MnLCBmYWxzZSwgYEV4cGVjdGVkIGZ1bmN0aW9uIG5vdCB0byB0aHJvdyBleGNlcHRpb24gbWF0Y2hpbmcgXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdFx0fSBlbHNlIGlmICghZXhwKSB7XG5cdFx0XHRhc3NlcnQoZmFsc2UsIHRydWUsIGZhbHNlLCAnbm90LnRocm93cycsIGZhbHNlLCAnRXhwZWN0ZWQgZnVuY3Rpb24gbm90IHRvIHRocm93JywgbXNnKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uvu/assert/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/uvu/diff/index.mjs": +/*!************************************************!*\ + !*** ../../../node_modules/uvu/diff/index.mjs ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"arrays\": () => (/* binding */ arrays),\n/* harmony export */ \"chars\": () => (/* binding */ chars),\n/* harmony export */ \"circular\": () => (/* binding */ circular),\n/* harmony export */ \"compare\": () => (/* binding */ compare),\n/* harmony export */ \"direct\": () => (/* binding */ direct),\n/* harmony export */ \"lines\": () => (/* binding */ lines),\n/* harmony export */ \"sort\": () => (/* binding */ sort),\n/* harmony export */ \"stringify\": () => (/* binding */ stringify)\n/* harmony export */ });\n/* harmony import */ var kleur__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! kleur */ \"../../../node_modules/kleur/index.mjs\");\n/* harmony import */ var diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! diff */ \"../../../node_modules/diff/lib/index.mjs\");\n\n\n\nconst colors = {\n\t'--': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red,\n\t'··': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].grey,\n\t'++': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].green,\n};\n\nconst TITLE = kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim().italic;\nconst TAB=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('→'), SPACE=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('·'), NL=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('↵');\nconst LOG = (sym, str) => colors[sym](sym + PRETTY(str)) + '\\n';\nconst LINE = (num, x) => kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('L' + String(num).padStart(x, '0') + ' ');\nconst PRETTY = str => str.replace(/[ ]/g, SPACE).replace(/\\t/g, TAB).replace(/(\\r?\\n)/g, NL);\n\nfunction line(obj, prev, pad) {\n\tlet char = obj.removed ? '--' : obj.added ? '++' : '··';\n\tlet arr = obj.value.replace(/\\r?\\n$/, '').split('\\n');\n\tlet i=0, tmp, out='';\n\n\tif (obj.added) out += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\telse if (obj.removed) out += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tif (tmp != null) {\n\t\t\tif (prev) out += LINE(prev + i, pad);\n\t\t\tout += LOG(char, tmp || '\\n');\n\t\t}\n\t}\n\n\treturn out;\n}\n\n// TODO: want better diffing\n//~> complex items bail outright\nfunction arrays(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffArrays(input, expect);\n\tlet i=0, j=0, k=0, tmp, val, char, isObj, str;\n\tlet out = LOG('··', '[');\n\n\tfor (; i < arr.length; i++) {\n\t\tchar = (tmp = arr[i]).removed ? '--' : tmp.added ? '++' : '··';\n\n\t\tif (tmp.added) {\n\t\t\tout += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\t\t} else if (tmp.removed) {\n\t\t\tout += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\t\t}\n\n\t\tfor (j=0; j < tmp.value.length; j++) {\n\t\t\tisObj = (tmp.value[j] && typeof tmp.value[j] === 'object');\n\t\t\tval = stringify(tmp.value[j]).split(/\\r?\\n/g);\n\t\t\tfor (k=0; k < val.length;) {\n\t\t\t\tstr = ' ' + val[k++] + (isObj ? '' : ',');\n\t\t\t\tif (isObj && k === val.length && (j + 1) < tmp.value.length) str += ',';\n\t\t\t\tout += LOG(char, str);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out + LOG('··', ']');\n}\n\nfunction lines(input, expect, linenum = 0) {\n\tlet i=0, tmp, output='';\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffLines(input, expect);\n\tlet pad = String(expect.split(/\\r?\\n/g).length - linenum).length;\n\n\tfor (; i < arr.length; i++) {\n\t\toutput += line(tmp = arr[i], linenum, pad);\n\t\tif (linenum && !tmp.removed) linenum += tmp.count;\n\t}\n\n\treturn output;\n}\n\nfunction chars(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffChars(input, expect);\n\tlet i=0, output='', tmp;\n\n\tlet l1 = input.length;\n\tlet l2 = expect.length;\n\n\tlet p1 = PRETTY(input);\n\tlet p2 = PRETTY(expect);\n\n\ttmp = arr[i];\n\n\tif (l1 === l2) {\n\t\t// no length offsets\n\t} else if (tmp.removed && arr[i + 1]) {\n\t\tlet del = tmp.count - arr[i + 1].count;\n\t\tif (del == 0) {\n\t\t\t// wash~\n\t\t} else if (del > 0) {\n\t\t\texpect = ' '.repeat(del) + expect;\n\t\t\tp2 = ' '.repeat(del) + p2;\n\t\t\tl2 += del;\n\t\t} else if (del < 0) {\n\t\t\tinput = ' '.repeat(-del) + input;\n\t\t\tp1 = ' '.repeat(-del) + p1;\n\t\t\tl1 += -del;\n\t\t}\n\t}\n\n\toutput += direct(p1, p2, l1, l2);\n\n\tif (l1 === l2) {\n\t\tfor (tmp=' '; i < l1; i++) {\n\t\t\ttmp += input[i] === expect[i] ? ' ' : '^';\n\t\t}\n\t} else {\n\t\tfor (tmp=' '; i < arr.length; i++) {\n\t\t\ttmp += ((arr[i].added || arr[i].removed) ? '^' : ' ').repeat(Math.max(arr[i].count, 0));\n\t\t\tif (i + 1 < arr.length && ((arr[i].added && arr[i+1].removed) || (arr[i].removed && arr[i+1].added))) {\n\t\t\t\tarr[i + 1].count -= arr[i].count;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red(tmp);\n}\n\nfunction direct(input, expect, lenA = String(input).length, lenB = String(expect).length) {\n\tlet gutter = 4;\n\tlet lenC = Math.max(lenA, lenB);\n\tlet typeA=typeof input, typeB=typeof expect;\n\n\tif (typeA !== typeB) {\n\t\tgutter = 2;\n\n\t\tlet delA = gutter + lenC - lenA;\n\t\tlet delB = gutter + lenC - lenB;\n\n\t\tinput += ' '.repeat(delA) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeA}]`);\n\t\texpect += ' '.repeat(delB) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeB}]`);\n\n\t\tlenA += delA + typeA.length + 2;\n\t\tlenB += delB + typeB.length + 2;\n\t\tlenC = Math.max(lenA, lenB);\n\t}\n\n\tlet output = colors['++']('++' + expect + ' '.repeat(gutter + lenC - lenB) + TITLE('(Expected)')) + '\\n';\n\treturn output + colors['--']('--' + input + ' '.repeat(gutter + lenC - lenA) + TITLE('(Actual)')) + '\\n';\n}\n\nfunction sort(input, expect) {\n\tvar k, i=0, tmp, isArr = Array.isArray(input);\n\tvar keys=[], out=isArr ? Array(input.length) : {};\n\n\tif (isArr) {\n\t\tfor (i=0; i < out.length; i++) {\n\t\t\ttmp = input[i];\n\t\t\tif (!tmp || typeof tmp !== 'object') out[i] = tmp;\n\t\t\telse out[i] = sort(tmp, expect[i]); // might not be right\n\t\t}\n\t} else {\n\t\tfor (k in expect)\n\t\t\tkeys.push(k);\n\n\t\tfor (; i < keys.length; i++) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(input, k = keys[i])) {\n\t\t\t\tif (!(tmp = input[k]) || typeof tmp !== 'object') out[k] = tmp;\n\t\t\t\telse out[k] = sort(tmp, expect[k]);\n\t\t\t}\n\t\t}\n\n\t\tfor (k in input) {\n\t\t\tif (!out.hasOwnProperty(k)) {\n\t\t\t\tout[k] = input[k]; // expect didnt have\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n\nfunction circular() {\n\tvar cache = new Set;\n\treturn function print(key, val) {\n\t\tif (val === void 0) return '[__VOID__]';\n\t\tif (typeof val === 'number' && val !== val) return '[__NAN__]';\n\t\tif (typeof val === 'bigint') return val.toString();\n\t\tif (!val || typeof val !== 'object') return val;\n\t\tif (cache.has(val)) return '[Circular]';\n\t\tcache.add(val); return val;\n\t}\n}\n\nfunction stringify(input) {\n\treturn JSON.stringify(input, circular(), 2).replace(/\"\\[__NAN__\\]\"/g, 'NaN').replace(/\"\\[__VOID__\\]\"/g, 'undefined');\n}\n\nfunction compare(input, expect) {\n\tif (Array.isArray(expect) && Array.isArray(input)) return arrays(input, expect);\n\tif (expect instanceof RegExp) return chars(''+input, ''+expect);\n\n\tlet isA = input && typeof input == 'object';\n\tlet isB = expect && typeof expect == 'object';\n\n\tif (isA && isB) input = sort(input, expect);\n\tif (isB) expect = stringify(expect);\n\tif (isA) input = stringify(input);\n\n\tif (expect && typeof expect == 'object') {\n\t\tinput = stringify(sort(input, expect));\n\t\texpect = stringify(expect);\n\t}\n\n\tisA = typeof input == 'string';\n\tisB = typeof expect == 'string';\n\n\tif (isA && /\\r?\\n/.test(input)) return lines(input, ''+expect);\n\tif (isB && /\\r?\\n/.test(expect)) return lines(''+input, expect);\n\tif (isA && isB) return chars(input, expect);\n\n\treturn direct(input, expect);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V2dS9kaWZmL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ0c7O0FBRTdCO0FBQ0EsT0FBTyxpREFBUztBQUNoQixPQUFPLGtEQUFVO0FBQ2pCLE9BQU8sbURBQVc7QUFDbEI7O0FBRUEsY0FBYyxpREFBUztBQUN2QixVQUFVLGlEQUFTLGFBQWEsaURBQVMsVUFBVSxpREFBUztBQUM1RDtBQUNBLHlCQUF5QixpREFBUztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsZ0JBQWdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQLFdBQVcsNENBQWU7QUFDMUI7QUFDQTs7QUFFQSxRQUFRLGdCQUFnQjtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUEsWUFBWSxzQkFBc0I7QUFDbEM7QUFDQTtBQUNBLGFBQWEsZUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0EsV0FBVywyQ0FBYztBQUN6Qjs7QUFFQSxRQUFRLGdCQUFnQjtBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQLFdBQVcsMkNBQWM7QUFDekI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7QUFDQTtBQUNBLEdBQUc7QUFDSCxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsaURBQVM7QUFDMUI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhCQUE4QixpREFBUyxLQUFLLE1BQU07QUFDbEQsK0JBQStCLGlEQUFTLEtBQUssTUFBTTs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxTQUFTLGlCQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXZ1L2RpZmYvaW5kZXgubWpzPzQwYTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGtsZXVyIGZyb20gJ2tsZXVyJztcbmltcG9ydCAqIGFzIGRpZmYgZnJvbSAnZGlmZic7XG5cbmNvbnN0IGNvbG9ycyA9IHtcblx0Jy0tJzoga2xldXIucmVkLFxuXHQnwrfCtyc6IGtsZXVyLmdyZXksXG5cdCcrKyc6IGtsZXVyLmdyZWVuLFxufTtcblxuY29uc3QgVElUTEUgPSBrbGV1ci5kaW0oKS5pdGFsaWM7XG5jb25zdCBUQUI9a2xldXIuZGltKCfihpInKSwgU1BBQ0U9a2xldXIuZGltKCfCtycpLCBOTD1rbGV1ci5kaW0oJ+KGtScpO1xuY29uc3QgTE9HID0gKHN5bSwgc3RyKSA9PiBjb2xvcnNbc3ltXShzeW0gKyBQUkVUVFkoc3RyKSkgKyAnXFxuJztcbmNvbnN0IExJTkUgPSAobnVtLCB4KSA9PiBrbGV1ci5kaW0oJ0wnICsgU3RyaW5nKG51bSkucGFkU3RhcnQoeCwgJzAnKSArICcgJyk7XG5jb25zdCBQUkVUVFkgPSBzdHIgPT4gc3RyLnJlcGxhY2UoL1sgXS9nLCBTUEFDRSkucmVwbGFjZSgvXFx0L2csIFRBQikucmVwbGFjZSgvKFxccj9cXG4pL2csIE5MKTtcblxuZnVuY3Rpb24gbGluZShvYmosIHByZXYsIHBhZCkge1xuXHRsZXQgY2hhciA9IG9iai5yZW1vdmVkID8gJy0tJyA6IG9iai5hZGRlZCA/ICcrKycgOiAnwrfCtyc7XG5cdGxldCBhcnIgPSBvYmoudmFsdWUucmVwbGFjZSgvXFxyP1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuXHRsZXQgaT0wLCB0bXAsIG91dD0nJztcblxuXHRpZiAob2JqLmFkZGVkKSBvdXQgKz0gY29sb3JzW2NoYXJdKCkudW5kZXJsaW5lKFRJVExFKCdFeHBlY3RlZDonKSkgKyAnXFxuJztcblx0ZWxzZSBpZiAob2JqLnJlbW92ZWQpIG91dCArPSBjb2xvcnNbY2hhcl0oKS51bmRlcmxpbmUoVElUTEUoJ0FjdHVhbDonKSkgKyAnXFxuJztcblxuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdHRtcCA9IGFycltpXTtcblx0XHRpZiAodG1wICE9IG51bGwpIHtcblx0XHRcdGlmIChwcmV2KSBvdXQgKz0gTElORShwcmV2ICsgaSwgcGFkKTtcblx0XHRcdG91dCArPSBMT0coY2hhciwgdG1wIHx8ICdcXG4nKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0O1xufVxuXG4vLyBUT0RPOiB3YW50IGJldHRlciBkaWZmaW5nXG4vL34+IGNvbXBsZXggaXRlbXMgYmFpbCBvdXRyaWdodFxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5cyhpbnB1dCwgZXhwZWN0KSB7XG5cdGxldCBhcnIgPSBkaWZmLmRpZmZBcnJheXMoaW5wdXQsIGV4cGVjdCk7XG5cdGxldCBpPTAsIGo9MCwgaz0wLCB0bXAsIHZhbCwgY2hhciwgaXNPYmosIHN0cjtcblx0bGV0IG91dCA9IExPRygnwrfCtycsICdbJyk7XG5cblx0Zm9yICg7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRjaGFyID0gKHRtcCA9IGFycltpXSkucmVtb3ZlZCA/ICctLScgOiB0bXAuYWRkZWQgPyAnKysnIDogJ8K3wrcnO1xuXG5cdFx0aWYgKHRtcC5hZGRlZCkge1xuXHRcdFx0b3V0ICs9IGNvbG9yc1tjaGFyXSgpLnVuZGVybGluZShUSVRMRSgnRXhwZWN0ZWQ6JykpICsgJ1xcbic7XG5cdFx0fSBlbHNlIGlmICh0bXAucmVtb3ZlZCkge1xuXHRcdFx0b3V0ICs9IGNvbG9yc1tjaGFyXSgpLnVuZGVybGluZShUSVRMRSgnQWN0dWFsOicpKSArICdcXG4nO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgdG1wLnZhbHVlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpc09iaiA9ICh0bXAudmFsdWVbal0gJiYgdHlwZW9mIHRtcC52YWx1ZVtqXSA9PT0gJ29iamVjdCcpO1xuXHRcdFx0dmFsID0gc3RyaW5naWZ5KHRtcC52YWx1ZVtqXSkuc3BsaXQoL1xccj9cXG4vZyk7XG5cdFx0XHRmb3IgKGs9MDsgayA8IHZhbC5sZW5ndGg7KSB7XG5cdFx0XHRcdHN0ciA9ICcgICcgKyB2YWxbaysrXSArIChpc09iaiA/ICcnIDogJywnKTtcblx0XHRcdFx0aWYgKGlzT2JqICYmIGsgPT09IHZhbC5sZW5ndGggJiYgKGogKyAxKSA8IHRtcC52YWx1ZS5sZW5ndGgpIHN0ciArPSAnLCc7XG5cdFx0XHRcdG91dCArPSBMT0coY2hhciwgc3RyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0ICsgTE9HKCfCt8K3JywgJ10nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVzKGlucHV0LCBleHBlY3QsIGxpbmVudW0gPSAwKSB7XG5cdGxldCBpPTAsIHRtcCwgb3V0cHV0PScnO1xuXHRsZXQgYXJyID0gZGlmZi5kaWZmTGluZXMoaW5wdXQsIGV4cGVjdCk7XG5cdGxldCBwYWQgPSBTdHJpbmcoZXhwZWN0LnNwbGl0KC9cXHI/XFxuL2cpLmxlbmd0aCAtIGxpbmVudW0pLmxlbmd0aDtcblxuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdG91dHB1dCArPSBsaW5lKHRtcCA9IGFycltpXSwgbGluZW51bSwgcGFkKTtcblx0XHRpZiAobGluZW51bSAmJiAhdG1wLnJlbW92ZWQpIGxpbmVudW0gKz0gdG1wLmNvdW50O1xuXHR9XG5cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXJzKGlucHV0LCBleHBlY3QpIHtcblx0bGV0IGFyciA9IGRpZmYuZGlmZkNoYXJzKGlucHV0LCBleHBlY3QpO1xuXHRsZXQgaT0wLCBvdXRwdXQ9JycsIHRtcDtcblxuXHRsZXQgbDEgPSBpbnB1dC5sZW5ndGg7XG5cdGxldCBsMiA9IGV4cGVjdC5sZW5ndGg7XG5cblx0bGV0IHAxID0gUFJFVFRZKGlucHV0KTtcblx0bGV0IHAyID0gUFJFVFRZKGV4cGVjdCk7XG5cblx0dG1wID0gYXJyW2ldO1xuXG5cdGlmIChsMSA9PT0gbDIpIHtcblx0XHQvLyBubyBsZW5ndGggb2Zmc2V0c1xuXHR9IGVsc2UgaWYgKHRtcC5yZW1vdmVkICYmIGFycltpICsgMV0pIHtcblx0XHRsZXQgZGVsID0gdG1wLmNvdW50IC0gYXJyW2kgKyAxXS5jb3VudDtcblx0XHRpZiAoZGVsID09IDApIHtcblx0XHRcdC8vIHdhc2h+XG5cdFx0fSBlbHNlIGlmIChkZWwgPiAwKSB7XG5cdFx0XHRleHBlY3QgPSAnICcucmVwZWF0KGRlbCkgKyBleHBlY3Q7XG5cdFx0XHRwMiA9ICcgJy5yZXBlYXQoZGVsKSArIHAyO1xuXHRcdFx0bDIgKz0gZGVsO1xuXHRcdH0gZWxzZSBpZiAoZGVsIDwgMCkge1xuXHRcdFx0aW5wdXQgPSAnICcucmVwZWF0KC1kZWwpICsgaW5wdXQ7XG5cdFx0XHRwMSA9ICcgJy5yZXBlYXQoLWRlbCkgKyBwMTtcblx0XHRcdGwxICs9IC1kZWw7XG5cdFx0fVxuXHR9XG5cblx0b3V0cHV0ICs9IGRpcmVjdChwMSwgcDIsIGwxLCBsMik7XG5cblx0aWYgKGwxID09PSBsMikge1xuXHRcdGZvciAodG1wPScgICc7IGkgPCBsMTsgaSsrKSB7XG5cdFx0XHR0bXAgKz0gaW5wdXRbaV0gPT09IGV4cGVjdFtpXSA/ICcgJyA6ICdeJztcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Zm9yICh0bXA9JyAgJzsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdFx0dG1wICs9ICgoYXJyW2ldLmFkZGVkIHx8IGFycltpXS5yZW1vdmVkKSA/ICdeJyA6ICcgJykucmVwZWF0KE1hdGgubWF4KGFycltpXS5jb3VudCwgMCkpO1xuXHRcdFx0aWYgKGkgKyAxIDwgYXJyLmxlbmd0aCAmJiAoKGFycltpXS5hZGRlZCAmJiBhcnJbaSsxXS5yZW1vdmVkKSB8fCAoYXJyW2ldLnJlbW92ZWQgJiYgYXJyW2krMV0uYWRkZWQpKSkge1xuXHRcdFx0XHRhcnJbaSArIDFdLmNvdW50IC09IGFycltpXS5jb3VudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0cHV0ICsga2xldXIucmVkKHRtcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3QoaW5wdXQsIGV4cGVjdCwgbGVuQSA9IFN0cmluZyhpbnB1dCkubGVuZ3RoLCBsZW5CID0gU3RyaW5nKGV4cGVjdCkubGVuZ3RoKSB7XG5cdGxldCBndXR0ZXIgPSA0O1xuXHRsZXQgbGVuQyA9IE1hdGgubWF4KGxlbkEsIGxlbkIpO1xuXHRsZXQgdHlwZUE9dHlwZW9mIGlucHV0LCB0eXBlQj10eXBlb2YgZXhwZWN0O1xuXG5cdGlmICh0eXBlQSAhPT0gdHlwZUIpIHtcblx0XHRndXR0ZXIgPSAyO1xuXG5cdFx0bGV0IGRlbEEgPSBndXR0ZXIgKyBsZW5DIC0gbGVuQTtcblx0XHRsZXQgZGVsQiA9IGd1dHRlciArIGxlbkMgLSBsZW5CO1xuXG5cdFx0aW5wdXQgKz0gJyAnLnJlcGVhdChkZWxBKSArIGtsZXVyLmRpbShgWyR7dHlwZUF9XWApO1xuXHRcdGV4cGVjdCArPSAnICcucmVwZWF0KGRlbEIpICsga2xldXIuZGltKGBbJHt0eXBlQn1dYCk7XG5cblx0XHRsZW5BICs9IGRlbEEgKyB0eXBlQS5sZW5ndGggKyAyO1xuXHRcdGxlbkIgKz0gZGVsQiArIHR5cGVCLmxlbmd0aCArIDI7XG5cdFx0bGVuQyA9IE1hdGgubWF4KGxlbkEsIGxlbkIpO1xuXHR9XG5cblx0bGV0IG91dHB1dCA9IGNvbG9yc1snKysnXSgnKysnICsgZXhwZWN0ICsgJyAnLnJlcGVhdChndXR0ZXIgKyBsZW5DIC0gbGVuQikgKyBUSVRMRSgnKEV4cGVjdGVkKScpKSArICdcXG4nO1xuXHRyZXR1cm4gb3V0cHV0ICsgY29sb3JzWyctLSddKCctLScgKyBpbnB1dCArICcgJy5yZXBlYXQoZ3V0dGVyICsgbGVuQyAtIGxlbkEpICsgVElUTEUoJyhBY3R1YWwpJykpICsgJ1xcbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0KGlucHV0LCBleHBlY3QpIHtcblx0dmFyIGssIGk9MCwgdG1wLCBpc0FyciA9IEFycmF5LmlzQXJyYXkoaW5wdXQpO1xuXHR2YXIga2V5cz1bXSwgb3V0PWlzQXJyID8gQXJyYXkoaW5wdXQubGVuZ3RoKSA6IHt9O1xuXG5cdGlmIChpc0Fycikge1xuXHRcdGZvciAoaT0wOyBpIDwgb3V0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR0bXAgPSBpbnB1dFtpXTtcblx0XHRcdGlmICghdG1wIHx8IHR5cGVvZiB0bXAgIT09ICdvYmplY3QnKSBvdXRbaV0gPSB0bXA7XG5cdFx0XHRlbHNlIG91dFtpXSA9IHNvcnQodG1wLCBleHBlY3RbaV0pOyAvLyBtaWdodCBub3QgYmUgcmlnaHRcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Zm9yIChrIGluIGV4cGVjdClcblx0XHRcdGtleXMucHVzaChrKTtcblxuXHRcdGZvciAoOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpbnB1dCwgayA9IGtleXNbaV0pKSB7XG5cdFx0XHRcdGlmICghKHRtcCA9IGlucHV0W2tdKSB8fCB0eXBlb2YgdG1wICE9PSAnb2JqZWN0Jykgb3V0W2tdID0gdG1wO1xuXHRcdFx0XHRlbHNlIG91dFtrXSA9IHNvcnQodG1wLCBleHBlY3Rba10pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoayBpbiBpbnB1dCkge1xuXHRcdFx0aWYgKCFvdXQuaGFzT3duUHJvcGVydHkoaykpIHtcblx0XHRcdFx0b3V0W2tdID0gaW5wdXRba107IC8vIGV4cGVjdCBkaWRudCBoYXZlXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNpcmN1bGFyKCkge1xuXHR2YXIgY2FjaGUgPSBuZXcgU2V0O1xuXHRyZXR1cm4gZnVuY3Rpb24gcHJpbnQoa2V5LCB2YWwpIHtcblx0XHRpZiAodmFsID09PSB2b2lkIDApIHJldHVybiAnW19fVk9JRF9fXSc7XG5cdFx0aWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmIHZhbCAhPT0gdmFsKSByZXR1cm4gJ1tfX05BTl9fXSc7XG5cdFx0aWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSByZXR1cm4gdmFsLnRvU3RyaW5nKCk7XG5cdFx0aWYgKCF2YWwgfHwgdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpIHJldHVybiB2YWw7XG5cdFx0aWYgKGNhY2hlLmhhcyh2YWwpKSByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuXHRcdGNhY2hlLmFkZCh2YWwpOyByZXR1cm4gdmFsO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkoaW5wdXQpIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0LCBjaXJjdWxhcigpLCAyKS5yZXBsYWNlKC9cIlxcW19fTkFOX19cXF1cIi9nLCAnTmFOJykucmVwbGFjZSgvXCJcXFtfX1ZPSURfX1xcXVwiL2csICd1bmRlZmluZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmUoaW5wdXQsIGV4cGVjdCkge1xuXHRpZiAoQXJyYXkuaXNBcnJheShleHBlY3QpICYmIEFycmF5LmlzQXJyYXkoaW5wdXQpKSByZXR1cm4gYXJyYXlzKGlucHV0LCBleHBlY3QpO1xuXHRpZiAoZXhwZWN0IGluc3RhbmNlb2YgUmVnRXhwKSByZXR1cm4gY2hhcnMoJycraW5wdXQsICcnK2V4cGVjdCk7XG5cblx0bGV0IGlzQSA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PSAnb2JqZWN0Jztcblx0bGV0IGlzQiA9IGV4cGVjdCAmJiB0eXBlb2YgZXhwZWN0ID09ICdvYmplY3QnO1xuXG5cdGlmIChpc0EgJiYgaXNCKSBpbnB1dCA9IHNvcnQoaW5wdXQsIGV4cGVjdCk7XG5cdGlmIChpc0IpIGV4cGVjdCA9IHN0cmluZ2lmeShleHBlY3QpO1xuXHRpZiAoaXNBKSBpbnB1dCA9IHN0cmluZ2lmeShpbnB1dCk7XG5cblx0aWYgKGV4cGVjdCAmJiB0eXBlb2YgZXhwZWN0ID09ICdvYmplY3QnKSB7XG5cdFx0aW5wdXQgPSBzdHJpbmdpZnkoc29ydChpbnB1dCwgZXhwZWN0KSk7XG5cdFx0ZXhwZWN0ID0gc3RyaW5naWZ5KGV4cGVjdCk7XG5cdH1cblxuXHRpc0EgPSB0eXBlb2YgaW5wdXQgPT0gJ3N0cmluZyc7XG5cdGlzQiA9IHR5cGVvZiBleHBlY3QgPT0gJ3N0cmluZyc7XG5cblx0aWYgKGlzQSAmJiAvXFxyP1xcbi8udGVzdChpbnB1dCkpIHJldHVybiBsaW5lcyhpbnB1dCwgJycrZXhwZWN0KTtcblx0aWYgKGlzQiAmJiAvXFxyP1xcbi8udGVzdChleHBlY3QpKSByZXR1cm4gbGluZXMoJycraW5wdXQsIGV4cGVjdCk7XG5cdGlmIChpc0EgJiYgaXNCKSByZXR1cm4gY2hhcnMoaW5wdXQsIGV4cGVjdCk7XG5cblx0cmV0dXJuIGRpcmVjdChpbnB1dCwgZXhwZWN0KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uvu/diff/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/directory-open-01563666.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/directory-open-01563666.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n return Array.isArray(e) || (e = [e]), e[0].recursive = e[0].recursive || !1, new Promise((t, r) => {\n const i = document.createElement(\"input\");\n i.type = \"file\", i.webkitdirectory = !0;\n\n const c = e => {\n \"function\" == typeof a && a(), t(e);\n },\n a = e[0].legacySetup && e[0].legacySetup(c, () => a(r), i);\n\n i.addEventListener(\"change\", () => {\n let t = Array.from(i.files);\n e[0].recursive ? e[0].recursive && e[0].skipDirectory && (t = t.filter(t => t.webkitRelativePath.split(\"/\").every(t => !e[0].skipDirectory({\n name: t,\n kind: \"directory\"\n })))) : t = t.filter(e => 2 === e.webkitRelativePath.split(\"/\").length), c(t);\n }), i.click();\n });\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZGlyZWN0b3J5LW9wZW4tMDE1NjM2NjYuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9kaXJlY3Rvcnktb3Blbi0wMTU2MzY2Ni5qcz85YmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbnZhciBlID0gKGUgPSBbe31dKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgfHwgKGUgPSBbZV0pLCBlWzBdLnJlY3Vyc2l2ZSA9IGVbMF0ucmVjdXJzaXZlIHx8ICExLCBuZXcgUHJvbWlzZSgodCwgcikgPT4ge1xuICAgIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgaS50eXBlID0gXCJmaWxlXCIsIGkud2Via2l0ZGlyZWN0b3J5ID0gITA7XG5cbiAgICBjb25zdCBjID0gZSA9PiB7XG4gICAgICBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGEgJiYgYSgpLCB0KGUpO1xuICAgIH0sXG4gICAgICAgICAgYSA9IGVbMF0ubGVnYWN5U2V0dXAgJiYgZVswXS5sZWdhY3lTZXR1cChjLCAoKSA9PiBhKHIpLCBpKTtcblxuICAgIGkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBsZXQgdCA9IEFycmF5LmZyb20oaS5maWxlcyk7XG4gICAgICBlWzBdLnJlY3Vyc2l2ZSA/IGVbMF0ucmVjdXJzaXZlICYmIGVbMF0uc2tpcERpcmVjdG9yeSAmJiAodCA9IHQuZmlsdGVyKHQgPT4gdC53ZWJraXRSZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpLmV2ZXJ5KHQgPT4gIWVbMF0uc2tpcERpcmVjdG9yeSh7XG4gICAgICAgIG5hbWU6IHQsXG4gICAgICAgIGtpbmQ6IFwiZGlyZWN0b3J5XCJcbiAgICAgIH0pKSkpIDogdCA9IHQuZmlsdGVyKGUgPT4gMiA9PT0gZS53ZWJraXRSZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpLmxlbmd0aCksIGModCk7XG4gICAgfSksIGkuY2xpY2soKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/directory-open-01563666.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ t)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nfunction e(r) {\n function t(e) {\n if (Object(e) !== e) return Promise.reject(new TypeError(e + \" is not an object.\"));\n var r = e.done;\n return Promise.resolve(e.value).then(function (e) {\n return {\n value: e,\n done: r\n };\n });\n }\n\n return e = function (e) {\n this.s = e, this.n = e.next;\n }, e.prototype = {\n s: null,\n n: null,\n next: function () {\n return t(this.n.apply(this.s, arguments));\n },\n return: function (e) {\n var r = this.s.return;\n return void 0 === r ? Promise.resolve({\n value: e,\n done: !0\n }) : t(r.apply(this.s, arguments));\n },\n throw: function (e) {\n var r = this.s.return;\n return void 0 === r ? Promise.reject(e) : t(r.apply(this.s, arguments));\n }\n }, new e(r);\n}\n\nconst r = (t, n, i = t.name, a) => __awaiter(void 0, void 0, void 0, function* () {\n const o = [],\n l = [];\n var s,\n u = !1,\n c = !1;\n\n try {\n for (var y, f = function (r) {\n var t,\n n,\n i,\n a = 2;\n\n for (\"undefined\" != typeof Symbol && (n = Symbol.asyncIterator, i = Symbol.iterator); a--;) {\n if (n && null != (t = r[n])) return t.call(r);\n if (i && null != (t = r[i])) return new e(t.call(r));\n n = \"@@asyncIterator\", i = \"@@iterator\";\n }\n\n throw new TypeError(\"Object is not async iterable\");\n }(t.values()); u = !(y = yield f.next()).done; u = !1) {\n const e = y.value,\n s = `${i}/${e.name}`;\n \"file\" === e.kind ? l.push(e.getFile().then(r => (r.directoryHandle = t, r.handle = e, Object.defineProperty(r, \"webkitRelativePath\", {\n configurable: !0,\n enumerable: !0,\n get: () => s\n })))) : \"directory\" !== e.kind || !n || a && a(e) || o.push(r(e, n, s, a));\n }\n } catch (e) {\n c = !0, s = e;\n } finally {\n try {\n u && null != f.return && (yield f.return());\n } finally {\n if (c) throw s;\n }\n }\n\n return [...(yield Promise.all(o)).flat(), ...(yield Promise.all(l))];\n});\n\nvar t = (e = {}) => __awaiter(void 0, void 0, void 0, function* () {\n e.recursive = e.recursive || !1;\n const t = yield window.showDirectoryPicker({\n id: e.id,\n startIn: e.startIn\n });\n return r(t, e.recursive, void 0, e.skipDirectory);\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZGlyZWN0b3J5LW9wZW4tNGVkMTE4ZDAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEZBQTRGLElBQUk7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLGNBQWMsZ0NBQWdDO0FBQ25EO0FBQ0EsbUJBQW1CLEVBQUUsR0FBRyxPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icm93c2VyLWZzLWFjY2Vzcy9kaXN0L2RpcmVjdG9yeS1vcGVuLTRlZDExOGQwLmpzPzNlYzIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZShyKSB7XG4gIGZ1bmN0aW9uIHQoZSkge1xuICAgIGlmIChPYmplY3QoZSkgIT09IGUpIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKGUgKyBcIiBpcyBub3QgYW4gb2JqZWN0LlwiKSk7XG4gICAgdmFyIHIgPSBlLmRvbmU7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlLnZhbHVlKS50aGVuKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogZSxcbiAgICAgICAgZG9uZTogclxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB0aGlzLnMgPSBlLCB0aGlzLm4gPSBlLm5leHQ7XG4gIH0sIGUucHJvdG90eXBlID0ge1xuICAgIHM6IG51bGwsXG4gICAgbjogbnVsbCxcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdCh0aGlzLm4uYXBwbHkodGhpcy5zLCBhcmd1bWVudHMpKTtcbiAgICB9LFxuICAgIHJldHVybjogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciByID0gdGhpcy5zLnJldHVybjtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IHIgPyBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICB2YWx1ZTogZSxcbiAgICAgICAgZG9uZTogITBcbiAgICAgIH0pIDogdChyLmFwcGx5KHRoaXMucywgYXJndW1lbnRzKSk7XG4gICAgfSxcbiAgICB0aHJvdzogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciByID0gdGhpcy5zLnJldHVybjtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IHIgPyBQcm9taXNlLnJlamVjdChlKSA6IHQoci5hcHBseSh0aGlzLnMsIGFyZ3VtZW50cykpO1xuICAgIH1cbiAgfSwgbmV3IGUocik7XG59XG5cbmNvbnN0IHIgPSAodCwgbiwgaSA9IHQubmFtZSwgYSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIGNvbnN0IG8gPSBbXSxcbiAgICAgICAgbCA9IFtdO1xuICB2YXIgcyxcbiAgICAgIHUgPSAhMSxcbiAgICAgIGMgPSAhMTtcblxuICB0cnkge1xuICAgIGZvciAodmFyIHksIGYgPSBmdW5jdGlvbiAocikge1xuICAgICAgdmFyIHQsXG4gICAgICAgICAgbixcbiAgICAgICAgICBpLFxuICAgICAgICAgIGEgPSAyO1xuXG4gICAgICBmb3IgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiAobiA9IFN5bWJvbC5hc3luY0l0ZXJhdG9yLCBpID0gU3ltYm9sLml0ZXJhdG9yKTsgYS0tOykge1xuICAgICAgICBpZiAobiAmJiBudWxsICE9ICh0ID0gcltuXSkpIHJldHVybiB0LmNhbGwocik7XG4gICAgICAgIGlmIChpICYmIG51bGwgIT0gKHQgPSByW2ldKSkgcmV0dXJuIG5ldyBlKHQuY2FsbChyKSk7XG4gICAgICAgIG4gPSBcIkBAYXN5bmNJdGVyYXRvclwiLCBpID0gXCJAQGl0ZXJhdG9yXCI7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgaXMgbm90IGFzeW5jIGl0ZXJhYmxlXCIpO1xuICAgIH0odC52YWx1ZXMoKSk7IHUgPSAhKHkgPSB5aWVsZCBmLm5leHQoKSkuZG9uZTsgdSA9ICExKSB7XG4gICAgICBjb25zdCBlID0geS52YWx1ZSxcbiAgICAgICAgICAgIHMgPSBgJHtpfS8ke2UubmFtZX1gO1xuICAgICAgXCJmaWxlXCIgPT09IGUua2luZCA/IGwucHVzaChlLmdldEZpbGUoKS50aGVuKHIgPT4gKHIuZGlyZWN0b3J5SGFuZGxlID0gdCwgci5oYW5kbGUgPSBlLCBPYmplY3QuZGVmaW5lUHJvcGVydHkociwgXCJ3ZWJraXRSZWxhdGl2ZVBhdGhcIiwge1xuICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgICAgZ2V0OiAoKSA9PiBzXG4gICAgICB9KSkpKSA6IFwiZGlyZWN0b3J5XCIgIT09IGUua2luZCB8fCAhbiB8fCBhICYmIGEoZSkgfHwgby5wdXNoKHIoZSwgbiwgcywgYSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGMgPSAhMCwgcyA9IGU7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIHUgJiYgbnVsbCAhPSBmLnJldHVybiAmJiAoeWllbGQgZi5yZXR1cm4oKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChjKSB0aHJvdyBzO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbLi4uKHlpZWxkIFByb21pc2UuYWxsKG8pKS5mbGF0KCksIC4uLih5aWVsZCBQcm9taXNlLmFsbChsKSldO1xufSk7XG5cbnZhciB0ID0gKGUgPSB7fSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIGUucmVjdXJzaXZlID0gZS5yZWN1cnNpdmUgfHwgITE7XG4gIGNvbnN0IHQgPSB5aWVsZCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcih7XG4gICAgaWQ6IGUuaWQsXG4gICAgc3RhcnRJbjogZS5zdGFydEluXG4gIH0pO1xuICByZXR1cm4gcih0LCBlLnJlY3Vyc2l2ZSwgdm9pZCAwLCBlLnNraXBEaXJlY3RvcnkpO1xufSk7XG5cbmV4cG9ydCB7IHQgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-open-002ab408.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-open-002ab408.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ t)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nconst e = e => __awaiter(void 0, void 0, void 0, function* () {\n const t = yield e.getFile();\n return t.handle = e, t;\n});\n\nvar t = (t = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) || (t = [t]);\n const i = [];\n t.forEach((e, t) => {\n i[t] = {\n description: e.description || \"\",\n accept: {}\n }, e.mimeTypes ? e.mimeTypes.map(a => {\n i[t].accept[a] = e.extensions || [];\n }) : i[t].accept[\"*/*\"] = e.extensions || [];\n });\n const a = yield window.showOpenFilePicker({\n id: t[0].id,\n startIn: t[0].startIn,\n types: i,\n multiple: t[0].multiple || !1,\n excludeAcceptAllOption: t[0].excludeAcceptAllOption || !1\n }),\n c = yield Promise.all(a.map(e));\n return t[0].multiple ? c : c[0];\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTAwMmFiNDA4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9maWxlLW9wZW4tMDAyYWI0MDguanM/M2JjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBlID0gZSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgY29uc3QgdCA9IHlpZWxkIGUuZ2V0RmlsZSgpO1xuICByZXR1cm4gdC5oYW5kbGUgPSBlLCB0O1xufSk7XG5cbnZhciB0ID0gKHQgPSBbe31dKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSk7XG4gIGNvbnN0IGkgPSBbXTtcbiAgdC5mb3JFYWNoKChlLCB0KSA9PiB7XG4gICAgaVt0XSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBhY2NlcHQ6IHt9XG4gICAgfSwgZS5taW1lVHlwZXMgPyBlLm1pbWVUeXBlcy5tYXAoYSA9PiB7XG4gICAgICBpW3RdLmFjY2VwdFthXSA9IGUuZXh0ZW5zaW9ucyB8fCBbXTtcbiAgICB9KSA6IGlbdF0uYWNjZXB0W1wiKi8qXCJdID0gZS5leHRlbnNpb25zIHx8IFtdO1xuICB9KTtcbiAgY29uc3QgYSA9IHlpZWxkIHdpbmRvdy5zaG93T3BlbkZpbGVQaWNrZXIoe1xuICAgIGlkOiB0WzBdLmlkLFxuICAgIHN0YXJ0SW46IHRbMF0uc3RhcnRJbixcbiAgICB0eXBlczogaSxcbiAgICBtdWx0aXBsZTogdFswXS5tdWx0aXBsZSB8fCAhMSxcbiAgICBleGNsdWRlQWNjZXB0QWxsT3B0aW9uOiB0WzBdLmV4Y2x1ZGVBY2NlcHRBbGxPcHRpb24gfHwgITFcbiAgfSksXG4gICAgICAgIGMgPSB5aWVsZCBQcm9taXNlLmFsbChhLm1hcChlKSk7XG4gIHJldHVybiB0WzBdLm11bHRpcGxlID8gYyA6IGNbMF07XG59KTtcblxuZXhwb3J0IHsgdCBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-open-002ab408.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-open-7c801643.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-open-7c801643.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n return Array.isArray(e) || (e = [e]), new Promise((t, n) => {\n const a = document.createElement(\"input\");\n a.type = \"file\";\n const i = [...e.map(e => e.mimeTypes || []), ...e.map(e => e.extensions || [])].join();\n a.multiple = e[0].multiple || !1, a.accept = i || \"\";\n\n const c = e => {\n \"function\" == typeof l && l(), t(e);\n },\n l = e[0].legacySetup && e[0].legacySetup(c, () => l(n), a);\n\n a.addEventListener(\"change\", () => {\n c(a.multiple ? Array.from(a.files) : a.files[0]);\n }), a.click();\n });\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTdjODAxNjQzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTdjODAxNjQzLmpzPzU3OGIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSA9IFt7fV0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKSB8fCAoZSA9IFtlXSksIG5ldyBQcm9taXNlKCh0LCBuKSA9PiB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBhLnR5cGUgPSBcImZpbGVcIjtcbiAgICBjb25zdCBpID0gWy4uLmUubWFwKGUgPT4gZS5taW1lVHlwZXMgfHwgW10pLCAuLi5lLm1hcChlID0+IGUuZXh0ZW5zaW9ucyB8fCBbXSldLmpvaW4oKTtcbiAgICBhLm11bHRpcGxlID0gZVswXS5tdWx0aXBsZSB8fCAhMSwgYS5hY2NlcHQgPSBpIHx8IFwiXCI7XG5cbiAgICBjb25zdCBjID0gZSA9PiB7XG4gICAgICBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGwgJiYgbCgpLCB0KGUpO1xuICAgIH0sXG4gICAgICAgICAgbCA9IGVbMF0ubGVnYWN5U2V0dXAgJiYgZVswXS5sZWdhY3lTZXR1cChjLCAoKSA9PiBsKG4pLCBhKTtcblxuICAgIGEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBjKGEubXVsdGlwbGUgPyBBcnJheS5mcm9tKGEuZmlsZXMpIDogYS5maWxlc1swXSk7XG4gICAgfSksIGEuY2xpY2soKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-open-7c801643.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-save-3189631c.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-save-3189631c.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e, t = {}) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) && (t = t[0]);\n const n = document.createElement(\"a\");\n let a = e;\n \"body\" in e && (a = yield function (e, t) {\n return __awaiter(this, void 0, void 0, function* () {\n const n = e.getReader(),\n a = new ReadableStream({\n start: e => function t() {\n return __awaiter(this, void 0, void 0, function* () {\n return n.read().then(({\n done: n,\n value: a\n }) => {\n if (!n) return e.enqueue(a), t();\n e.close();\n });\n });\n }()\n }),\n r = new Response(a),\n c = yield r.blob();\n return n.releaseLock(), new Blob([c], {\n type: t\n });\n });\n }(e.body, e.headers.get(\"content-type\"))), n.download = t.fileName || \"Untitled\", n.href = URL.createObjectURL(yield a);\n\n const r = () => {\n \"function\" == typeof c && c();\n },\n c = t.legacySetup && t.legacySetup(r, () => c(reject), n);\n\n return n.addEventListener(\"click\", () => {\n setTimeout(() => URL.revokeObjectURL(n.href), 3e4), r();\n }), n.click(), null;\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTMxODk2MzFjLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTMxODk2MzFjLmpzPzU0MGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSwgdCA9IHt9KSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSAmJiAodCA9IHRbMF0pO1xuICBjb25zdCBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGxldCBhID0gZTtcbiAgXCJib2R5XCIgaW4gZSAmJiAoYSA9IHlpZWxkIGZ1bmN0aW9uIChlLCB0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgIGNvbnN0IG4gPSBlLmdldFJlYWRlcigpLFxuICAgICAgICAgICAgYSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHN0YXJ0OiBlID0+IGZ1bmN0aW9uIHQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHJldHVybiBuLnJlYWQoKS50aGVuKCh7XG4gICAgICAgICAgICAgIGRvbmU6IG4sXG4gICAgICAgICAgICAgIHZhbHVlOiBhXG4gICAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbikgcmV0dXJuIGUuZW5xdWV1ZShhKSwgdCgpO1xuICAgICAgICAgICAgICBlLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSgpXG4gICAgICB9KSxcbiAgICAgICAgICAgIHIgPSBuZXcgUmVzcG9uc2UoYSksXG4gICAgICAgICAgICBjID0geWllbGQgci5ibG9iKCk7XG4gICAgICByZXR1cm4gbi5yZWxlYXNlTG9jaygpLCBuZXcgQmxvYihbY10sIHtcbiAgICAgICAgdHlwZTogdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0oZS5ib2R5LCBlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpKSksIG4uZG93bmxvYWQgPSB0LmZpbGVOYW1lIHx8IFwiVW50aXRsZWRcIiwgbi5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh5aWVsZCBhKTtcblxuICBjb25zdCByID0gKCkgPT4ge1xuICAgIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgYyAmJiBjKCk7XG4gIH0sXG4gICAgICAgIGMgPSB0LmxlZ2FjeVNldHVwICYmIHQubGVnYWN5U2V0dXAociwgKCkgPT4gYyhyZWplY3QpLCBuKTtcblxuICByZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpLCAzZTQpLCByKCk7XG4gIH0pLCBuLmNsaWNrKCksIG51bGw7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-save-3189631c.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-save-745eba88.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-save-745eba88.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e, t = [{}], a = null, i = !1, n = null) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) || (t = [t]), t[0].fileName = t[0].fileName || \"Untitled\";\n const s = [];\n let c = null;\n if (e instanceof Blob && e.type ? c = e.type : e.headers && e.headers.get(\"content-type\") && (c = e.headers.get(\"content-type\")), t.forEach((e, t) => {\n s[t] = {\n description: e.description || \"\",\n accept: {}\n }, e.mimeTypes ? (0 === t && c && e.mimeTypes.push(c), e.mimeTypes.map(a => {\n s[t].accept[a] = e.extensions || [];\n })) : c && (s[t].accept[c] = e.extensions || []);\n }), a) try {\n yield a.getFile();\n } catch (e) {\n if (a = null, i) throw e;\n }\n const r = a || (yield window.showSaveFilePicker({\n suggestedName: t[0].fileName,\n id: t[0].id,\n startIn: t[0].startIn,\n types: s,\n excludeAcceptAllOption: t[0].excludeAcceptAllOption || !1\n }));\n !a && n && n();\n const l = yield r.createWritable();\n\n if (\"stream\" in e) {\n const t = e.stream();\n return yield t.pipeTo(l), r;\n }\n\n return \"body\" in e ? (yield e.body.pipeTo(l), r) : (yield l.write(yield e), yield l.close(), r);\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTc0NWViYTg4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTc0NWViYTg4LmpzPzIzYTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSwgdCA9IFt7fV0sIGEgPSBudWxsLCBpID0gITEsIG4gPSBudWxsKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSksIHRbMF0uZmlsZU5hbWUgPSB0WzBdLmZpbGVOYW1lIHx8IFwiVW50aXRsZWRcIjtcbiAgY29uc3QgcyA9IFtdO1xuICBsZXQgYyA9IG51bGw7XG4gIGlmIChlIGluc3RhbmNlb2YgQmxvYiAmJiBlLnR5cGUgPyBjID0gZS50eXBlIDogZS5oZWFkZXJzICYmIGUuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIikgJiYgKGMgPSBlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpKSwgdC5mb3JFYWNoKChlLCB0KSA9PiB7XG4gICAgc1t0XSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBhY2NlcHQ6IHt9XG4gICAgfSwgZS5taW1lVHlwZXMgPyAoMCA9PT0gdCAmJiBjICYmIGUubWltZVR5cGVzLnB1c2goYyksIGUubWltZVR5cGVzLm1hcChhID0+IHtcbiAgICAgIHNbdF0uYWNjZXB0W2FdID0gZS5leHRlbnNpb25zIHx8IFtdO1xuICAgIH0pKSA6IGMgJiYgKHNbdF0uYWNjZXB0W2NdID0gZS5leHRlbnNpb25zIHx8IFtdKTtcbiAgfSksIGEpIHRyeSB7XG4gICAgeWllbGQgYS5nZXRGaWxlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYSA9IG51bGwsIGkpIHRocm93IGU7XG4gIH1cbiAgY29uc3QgciA9IGEgfHwgKHlpZWxkIHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIoe1xuICAgIHN1Z2dlc3RlZE5hbWU6IHRbMF0uZmlsZU5hbWUsXG4gICAgaWQ6IHRbMF0uaWQsXG4gICAgc3RhcnRJbjogdFswXS5zdGFydEluLFxuICAgIHR5cGVzOiBzLFxuICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRbMF0uZXhjbHVkZUFjY2VwdEFsbE9wdGlvbiB8fCAhMVxuICB9KSk7XG4gICFhICYmIG4gJiYgbigpO1xuICBjb25zdCBsID0geWllbGQgci5jcmVhdGVXcml0YWJsZSgpO1xuXG4gIGlmIChcInN0cmVhbVwiIGluIGUpIHtcbiAgICBjb25zdCB0ID0gZS5zdHJlYW0oKTtcbiAgICByZXR1cm4geWllbGQgdC5waXBlVG8obCksIHI7XG4gIH1cblxuICByZXR1cm4gXCJib2R5XCIgaW4gZSA/ICh5aWVsZCBlLmJvZHkucGlwZVRvKGwpLCByKSA6ICh5aWVsZCBsLndyaXRlKHlpZWxkIGUpLCB5aWVsZCBsLmNsb3NlKCksIHIpO1xufSk7XG5cbmV4cG9ydCB7IGUgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-save-745eba88.js\n"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 new file mode 100644 index 0000000..751ba1c Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 new file mode 100644 index 0000000..d5d809a Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 new file mode 100644 index 0000000..e17d6ec Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 b/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 new file mode 100644 index 0000000..d17aa74 Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Cascadia.woff2 b/public/excalidraw/excalidraw-assets/Cascadia.woff2 new file mode 100644 index 0000000..b2eae9f Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Cascadia.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Virgil.woff2 b/public/excalidraw/excalidraw-assets/Virgil.woff2 new file mode 100644 index 0000000..cb22225 Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Virgil.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js b/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js new file mode 100644 index 0000000..0d382d9 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2091],{7822:function(e){e.exports=JSON.parse('{"labels":{"paste":"لصق","pasteAsPlaintext":"اللصق كنص عادي","pasteCharts":"لصق الرسوم البيانية","selectAll":"تحديد الكل","multiSelect":"إضافة عنصر للتحديد","moveCanvas":"نقل لوح الرسم","cut":"قص","copy":"نسخ","copyAsPng":"نسخ إلى الحافظة بصيغة PNG","copyAsSvg":"نسخ إلى الحافظة بصيغة SVG","copyText":"نسخ إلى الحافظة كنص","bringForward":"جلب للأمام","sendToBack":"أرسل للخلف","bringToFront":"أحضر للأمام","sendBackward":"أرسل للخلف","delete":"حذف","copyStyles":"نسخ الأنماط","pasteStyles":"لصق الأنماط","stroke":"الخط","background":"الخلفية","fill":"التعبئة","strokeWidth":"سُمك الخط","strokeStyle":"نمط الخط","strokeStyle_solid":"متصل","strokeStyle_dashed":"متقطع","strokeStyle_dotted":"منقط","sloppiness":"الإمالة","opacity":"الشفافية","textAlign":"محاذاة النص","edges":"الحواف","sharp":"حادة","round":"دائرية","arrowheads":"رؤوس الأسهم","arrowhead_none":"لا شيء","arrowhead_arrow":"سهم","arrowhead_bar":"شريط","arrowhead_dot":"نقطة","arrowhead_triangle":"مثلث","fontSize":"حجم الخط","fontFamily":"نوع الخط","addWatermark":"إضافة \\"مصنوعة بواسطة Excalidraw\\"","handDrawn":"رسم باليد","normal":"عادي","code":"رمز","small":"صغير","medium":"متوسط","large":"كبير","veryLarge":"كبير جدا","solid":"كامل","hachure":"خطوط","zigzag":"متعرج","crossHatch":"خطوط متقطعة","thin":"نحيف","bold":"داكن","left":"الـيسار","center":"وسط","right":"يمين","extraBold":"عريض","architect":"معماري","artist":"رسام","cartoonist":"كرتوني","fileTitle":"إسم الملف","colorPicker":"منتقي اللون","canvasColors":"تستخدم على القماش","canvasBackground":"خلفية اللوحة","drawingCanvas":"لوحة الرسم","layers":"الطبقات","actions":"الإجراءات","language":"اللغة","liveCollaboration":"التعاون المباشر...","duplicateSelection":"تكرار","untitled":"غير معنون","name":"الاسم","yourName":"اسمك","madeWithExcalidraw":"مصنوعة بواسطة Excalidraw","group":"تحديد مجموعة","ungroup":"إلغاء تحديد مجموعة","collaborators":"المتعاونون","showGrid":"إظهار الشبكة","addToLibrary":"أضف إلى المكتبة","removeFromLibrary":"حذف من المكتبة","libraryLoadingMessage":"جارٍ تحميل المكتبة…","libraries":"تصفح المكتبات","loadingScene":"جاري تحميل المشهد…","align":"محاذاة","alignTop":"محاذاة إلى اﻷعلى","alignBottom":"محاذاة إلى اﻷسفل","alignLeft":"محاذاة إلى اليسار","alignRight":"محاذاة إلى اليمين","centerVertically":"توسيط عمودي","centerHorizontally":"توسيط أفقي","distributeHorizontally":"التوزيع الأفقي","distributeVertically":"التوزيع عمودياً","flipHorizontal":"قلب عامودي","flipVertical":"قلب أفقي","viewMode":"نمط العرض","share":"مشاركة","showStroke":"إظهار منتقي لون الخط","showBackground":"إظهار منتقي لون الخلفية","toggleTheme":"غير النمط","personalLib":"المكتبة الشخصية","excalidrawLib":"مكتبتنا","decreaseFontSize":"تصغير حجم الخط","increaseFontSize":"تكبير حجم الخط","unbindText":"فك ربط النص","bindText":"ربط النص بالحاوية","createContainerFromText":"نص مغلف في حاوية","link":{"edit":"تعديل الرابط","editEmbed":"تحرير الرابط وإدراجه","create":"إنشاء رابط","createEmbed":"إنشاء رابط و إدراجه","label":"رابط","labelEmbed":"رابط و إدراج","empty":"لم يتم تعيين رابط"},"lineEditor":{"edit":"تحرير السطر","exit":"الخروج من المُحرر"},"elementLock":{"lock":"قفل","unlock":"فتح","lockAll":"قفل الكل","unlockAll":"فتح الكل"},"statusPublished":"نُشر","sidebarLock":"إبقاء الشريط الجانبي مفتوح","selectAllElementsInFrame":"تحديد جميع العناصر في الإطار","removeAllElementsFromFrame":"إزالة جميع العناصر من الإطار","eyeDropper":"اختيار اللون من القماش"},"library":{"noItems":"لا توجد عناصر أضيفت بعد...","hint_emptyLibrary":"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.","hint_emptyPrivateLibrary":"حدد عنصر على القماش لإضافته هنا."},"buttons":{"clearReset":"إعادة تعيين اللوحة","exportJSON":"صدر الملف","exportImage":"تصدير الصورة...","export":"حفظ إلى...","copyToClipboard":"نسخ إلى الحافظة","save":"احفظ للملف الحالي","saveAs":"حفظ كـ","load":"فتح","getShareableLink":"احصل على رابط المشاركة","close":"غلق","selectLanguage":"اختر اللغة","scrollBackToContent":"الرجوع إلى المحتوى","zoomIn":"تكبير","zoomOut":"تصغير","resetZoom":"إعادة تعيين الشاشة","menu":"القائمة","done":"تم","edit":"تعديل","undo":"تراجع","redo":"إعادة تنفيذ","resetLibrary":"إعادة ضبط المكتبة","createNewRoom":"إنشاء غرفة جديدة","fullScreen":"شاشة كاملة","darkMode":"الوضع المظلم","lightMode":"الوضع المضيء","zenMode":"وضع التأمل","objectsSnapMode":"التقط إلى العناصر","exitZenMode":"إلغاء الوضع الليلى","cancel":"إلغاء","clear":"مسح","remove":"إزالة","embed":"تبديل الإدراج","publishLibrary":"انشر","submit":"أرسل","confirm":"تأكيد","embeddableInteractionButton":"اضغط للتفاعل"},"alerts":{"clearReset":"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟","couldNotCreateShareableLink":"تعذر إنشاء رابطة المشاركة.","couldNotCreateShareableLinkTooBig":"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا","couldNotLoadInvalidFile":"تعذر التحميل، الملف غير صالح","importBackendFailed":"فشل الاستيراد من الخادوم.","cannotExportEmptyCanvas":"لا يمكن تصدير لوحة فارغة.","couldNotCopyToClipboard":"تعذر النسخ إلى الحافظة.","decryptFailed":"تعذر فك تشفير البيانات.","uploadedSecurly":"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.","loadSceneOverridePrompt":"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟","collabStopOverridePrompt":"إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟\\n\\n(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)","errorAddingToLibrary":"تعذر إضافة العنصر للمكتبة","errorRemovingFromLibrary":"تعذر إزالة العنصر من المكتبة","confirmAddLibrary":"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟","imageDoesNotContainScene":"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟","cannotRestoreFromImage":"تعذر استعادة المشهد من ملف الصورة","invalidSceneUrl":"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.","resetLibrary":"هذا سوف يمسح مكتبتك. هل أنت متأكد؟","removeItemsFromsLibrary":"حذف {{count}} عنصر (عناصر) من المكتبة؟","invalidEncryptionKey":"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.","collabOfflineWarning":"لا يوجد اتصال بالانترنت.\\nلن يتم حفظ التغييرات التي قمت بها!"},"errors":{"unsupportedFileType":"نوع الملف غير مدعوم.","imageInsertError":"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...","fileTooBig":"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.","svgImageInsertError":"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.","failedToFetchImage":"","invalidSVGString":"SVG غير صالح.","cannotResolveCollabServer":"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.","importLibraryError":"تعذر تحميل المكتبة","collabSaveFailed":"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.","collabSaveFailed_sizeExceeded":"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.","brave_measure_text_error":{"line1":"يبدو أنك تستخدم متصفح Brave مع إعداد حظر صارم لتتبع البصمة.","line2":"قد يؤدي هذا إلى كسر عناصر النص في الرسومات الخاصة بك.","line3":"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع هذه الخطوات لفعل ذلك.","line4":"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة بلاغ على حسابنا في GitHub، أو راسلنا على Discord"},"libraryElementTypeError":{"embeddable":"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.","image":"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"}},"toolBar":{"selection":"تحديد","image":"إدراج صورة","rectangle":"مستطيل","diamond":"مضلع","ellipse":"دائرة","arrow":"سهم","line":"خط","freedraw":"رسم","text":"نص","library":"مكتبة","lock":"الحفاظ على أداة التحديد نشطة بعد الرسم","penMode":"وضع القلم - امنع اللمس","link":"إضافة/تحديث الرابط للشكل المحدد","eraser":"ممحاة","frame":"أداة الإطار","embeddable":"تضمين ويب","laser":"مؤشر ليزر","hand":"يد (أداة الإزاحة)","extraTools":"المزيد من أﻷدوات"},"headings":{"canvasActions":"إجراءات اللوحة","selectedShapeActions":"إجراءات الشكل المحدد","shapes":"الأشكال"},"hints":{"canvasPanning":"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد","linearElement":"انقر لبدء نقاط متعددة، اسحب لخط واحد","freeDraw":"انقر واسحب، افرج عند الانتهاء","text":"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار","embeddable":"اضغط مع السحب لإنشاء موقع ويب مضمّن","text_selected":"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص","text_editing":"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل","linearElementMulti":"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء","lockAngle":"يمكنك تقييد الزاوية بالضغط على SHIFT","resize":"يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،\\nاضغط على ALT لتغيير الحجم من المركز","resizeImage":"يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،\\nاضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز","rotate":"يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران","lineEditor_info":"اضغط على مفتاح (Ctrl أو Cmd) و انقر بشكل مزدوج، أو اضغط على مفتاحي (Ctrl أو Cmd) و (Enter) لتعديل النقاط","lineEditor_pointSelected":"اضغط على حذف لإزالة النقطة (النِّقَاط)، Ctrl/Cmd+D للتكرار، أو اسحب للانتقال","lineEditor_nothingSelected":"اختر نقطة لتعديلها (اضغط على SHIFT لتحديد عدة نِقَاط),\\nأو اضغط على ALT و انقر بالفأرة لإضافة نِقَاط جديدة","placeImage":"انقر لوضع الصورة، أو انقر واسحب لتعيين حجمها يدوياً","publishLibrary":"نشر مكتبتك","bindTextToElement":"اضغط على إدخال لإضافة نص","deepBoxSelect":"اضغط على Ctrl\\\\Cmd للاختيار العميق، ولمنع السحب","eraserRevert":"اضغط على Alt لاستعادة العناصر المعلَّمة للحذف","firefox_clipboard_write":"يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم \\"dom.events.asyncClipboard.clipboardItem\\" إلى \\"true\\". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة \\"about:config\\".","disableSnapping":"اضغط على Ctrl أو Cmd لتعطيل الالتقاط"},"canvasError":{"cannotShowPreview":"تعذر عرض المعاينة","canvasTooBig":"قد تكون اللوحة كبيرة جداً.","canvasTooBigTip":"نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً."},"errorSplash":{"headingMain":"حدث خطأ. حاول .","clearCanvasMessage":"إذا لم تعمل إعادة التحميل، حاول مرة أخرى ","clearCanvasCaveat":" هذا سيؤدي إلى فقدان العمل ","trackedToSentry":"تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.","openIssueMessage":"حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة نرجو المتابعة على . نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.","sceneContent":"محتوى المشهد:"},"roomDialog":{"desc_intro":"يمكنك دعوة الآخرين لمشاركتك نفس الجلسة التي تعمل عليها.","desc_privacy":"لا تقلق، الجلسة تستخدم التشفير من النهاية إلى النهاية، لذلك فإن أي شيء ترسمه سيبقى خاصاً. لن يتمكن حتى الخادوم الخاص بنا من رؤية ما توصلت إليه.","button_startSession":"بدء الجلسة","button_stopSession":"إيقاف الجلسة","desc_inProgressIntro":"تجري الآن المشاركة الحية.","desc_shareLink":"شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:","desc_exitSession":"إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد، محليا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، و سيظلون قادرين على التعاون في إصدارهم.","shareTitle":"الانضمام إلى جلسة تعاون حية على Excalidraw"},"errorDialog":{"title":"خطأ"},"exportDialog":{"disk_title":"حفظ الملف للجهاز","disk_details":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً.","disk_button":"إحفظ لملف","link_title":"رابط قابل للمشاركة","link_details":"صدر الملف للمشاهدة فقط.","link_button":"التصدير كرابط","excalidrawplus_description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.","excalidrawplus_button":"تصدير","excalidrawplus_exportError":"تعذر التصدير إلى +Excalidraw في الوقت الحالي..."},"helpDialog":{"blog":"اقرأ مدونتنا","click":"انقر","deepSelect":"تحديد عميق","deepBoxSelect":"تحديد عميق داخل المربع، ومنع السحب","curvedArrow":"سهم مائل","curvedLine":"خط مائل","documentation":"دليل الاستخدام","doubleClick":"انقر مرتين","drag":"اسحب","editor":"المحرر","editLineArrowPoints":"تحرير سطر/نقاط سهم","editText":"تعديل النص / إضافة تسمية","github":"عثرت على مشكلة؟ إرسال","howto":"اتبع التعليمات","or":"أو","preventBinding":"منع ارتبط السهم","tools":"الأدوات","shortcuts":"اختصارات لوحة المفاتيح","textFinish":"إنهاء التعديل (محرر النص)","textNewLine":"أضف سطر جديد (محرر نص)","title":"المساعدة","view":"عرض","zoomToFit":"تكبير للملائمة","zoomToSelection":"تكبير للعنصر المحدد","toggleElementLock":"إغلاق/فتح المحدد","movePageUpDown":"نقل الصفحة أعلى/أسفل","movePageLeftRight":"نقل الصفحة يسار/يمين"},"clearCanvasDialog":{"title":"مسح اللوحة"},"publishDialog":{"title":"نشر المكتبة","itemName":"إسم العنصر","authorName":"إسم المؤلف","githubUsername":"اسم المستخدم في جيت هب","twitterUsername":"اسم المستخدم في تويتر","libraryName":"اسم المكتبة","libraryDesc":"وصف المكتبة","website":"الموقع","placeholder":{"authorName":"اسمك أو اسم المستخدم","libraryName":"اسم مكتبتك","libraryDesc":"وصف مكتبتك لمساعدة الناس على فهم استخدامها","githubHandle":"معالج GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة","twitterHandle":"اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر","website":"رابط إلى موقعك الشخصي أو في مكان آخر (اختياري)"},"errors":{"required":"مطلوب","website":"أدخل عنوان URL صالح"},"noteDescription":"تقديم مكتبتك لتضمينها في مستودع المكتبة العامة لأشخاص آخرين لاستخدامها في رسومهم.","noteGuidelines":"تحتاج المكتبة إلى الموافقة أولا. يرجى قراءة المعايير قبل تقديمها. سوف تحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكن ليس مطلوبا بشكل صارم.","noteLicense":"تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت MIT ترخيص، ما يعني أن لأي أحد الحق في استخدامها دون قيود.","noteItems":"يجب أن يكون لكل عنصر مكتبة اسمه الخاص حتى يكون قابلاً للتصفية. سيتم تضمين عناصر المكتبة التالية:","atleastOneLibItem":"يرجى تحديد عنصر مكتبة واحد على الأقل للبدء","republishWarning":"ملاحظة: بعض العناصر المحددة معينة على أنه نشرها أو تقديمها من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها."},"publishSuccessDialog":{"title":"تم إرسال المكتبة","content":"شكرا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة"},"confirmDialog":{"resetLibrary":"إعادة ضبط المكتبة","removeItemsFromLib":"إزالة العناصر المحددة من المكتبة"},"imageExportDialog":{"header":"تصدير الصورة","label":{"withBackground":"الخلفية","onlySelected":"المحدد فقط","darkMode":"الوضع الداكن","embedScene":"تضمين المشهد","scale":"الحجم","padding":"الهوامش"},"tooltip":{"embedScene":"سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدّر بحيث يمكن استعادة المشهد منه.\\nسيزيد حجم الملف المصدر."},"title":{"exportToPng":"تصدير بصيغة PNG","exportToSvg":"تصدير بصيغة SVG","copyPngToClipboard":"نسخ الـ PNG إلى الحافظة"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"نسخ إلى الحافظة"}},"encrypted":{"tooltip":"رسوماتك مشفرة من النهاية إلى النهاية حتى أن خوادم Excalidraw لن تراها أبدا.","link":"مشاركة المدونة في التشفير من النهاية إلى النهاية في Excalidraw"},"stats":{"angle":"الزاوية","element":"عنصر","elements":"العناصر","height":"الارتفاع","scene":"المشهد","selected":"المحدد","storage":"التخزين","title":"إحصائيات للمهووسين","total":"المجموع","version":"الإصدار","versionCopy":"انقر للنسخ","versionNotAvailable":"الإصدار غير متوفر","width":"العرض"},"toast":{"addedToLibrary":"تمت الاضافة الى المكتبة!","copyStyles":"نسخت الانماط.","copyToClipboard":"نسخ إلى الحافظة.","copyToClipboardAsPng":"تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG\\n({{exportColorScheme}})","fileSaved":"تم حفظ الملف.","fileSavedToFilename":"حفظ باسم {filename}","canvas":"لوحة الرسم","selection":"العنصر المحدد","pasteAsSingleElement":"استخدم {{shortcut}} للصق كعنصر واحد،\\nأو لصق في محرر نص موجود","unableToEmbed":"تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغاً على GitHub لطلب عنوان Url القائمة البيضاء","unrecognizedLinkFormat":"الرابط الذي ضمنته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص \'المضمن\' المُزوَد من موقع المصدر"},"colors":{"transparent":"شفاف","black":"أسود","white":"أبيض","red":"أحمر","pink":"وردي","grape":"عنبي","violet":"بنفسجي","gray":"رمادي","blue":"أزرق","cyan":"سماوي","teal":"أزرق مخضر","green":"أخضر","yellow":"أصفر","orange":"برتقالي","bronze":"برونزي"},"welcomeScreen":{"app":{"center_heading":"جميع بياناتك محفوظة محليا في المتصفح الخاص بك.","center_heading_plus":"هل تريد الذهاب إلى Excalidraw+ بدلاً من ذلك؟","menuHint":"التصدير والتفضيلات واللغات ..."},"defaults":{"menuHint":"التصدير والتفضيلات وغيرها...","center_heading":"الرسم البياني التصويري. بشكل مبسط.","toolbarHint":"اختر أداة و ابدأ الرسم!","helpHint":"الاختصارات و المساعدة"}},"colorPicker":{"mostUsedCustomColors":"الألوان المخصصة الأكثر استخداما","colors":"الألوان","shades":"الدرجات","hexCode":"رمز Hex","noShades":"لا تتوفر درجات لهذا اللون"},"overwriteConfirm":{"action":{"exportToImage":{"title":"تصدير كصورة","button":"تصدير كصورة","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"saveToDisk":{"title":"حفظ الملف للجهاز","button":"حفظ الملف للجهاز","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"excalidrawPlus":{"title":"Excalidraw+","button":"تصدير إلى Excalidraw+","description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك."}},"modal":{"loadFromFile":{"title":"تحميل من ملف","button":"تحميل من ملف","description":"سيتم التحميل من الملف استبدال المحتوى الموجود.

يمكنك النسخ الاحتياطي لرسمك أولاً باستخدام أحد الخيارات أدناه."},"shareableLink":{"title":"تحميل من رابط","button":"استبدال محتواي","description":"سيتسبب تحميل رسمة خارجية باستبدال محتواك الموجود حالياً.

بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js b/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js new file mode 100644 index 0000000..4a6f2aa --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4568],{9753:function(e){e.exports=JSON.parse('{"labels":{"paste":"Yapışdır","pasteAsPlaintext":"Düz mətn kimi yapışdırın","pasteCharts":"Diaqramları yapışdırın","selectAll":"Hamısını seç","multiSelect":"Seçimə element əlavə edin","moveCanvas":"Kanvası köçürün","cut":"Kəs","copy":"Kopyala","copyAsPng":"PNG olaraq panoya kopyala","copyAsSvg":"SVG olaraq panoya kopyala","copyText":"Mətn olaraq panoya kopyala","bringForward":"Önə daşı","sendToBack":"Geriyə göndərin","bringToFront":"Önə gətirin","sendBackward":"Geriyə göndərin","delete":"Sil","copyStyles":"Stilləri kopyalayın","pasteStyles":"Stilləri yapışdırın","stroke":"Strok rəngi","background":"Arxa fon","fill":"Doldur","strokeWidth":"Strok eni","strokeStyle":"Strok stili","strokeStyle_solid":"Solid","strokeStyle_dashed":"Kəsik","strokeStyle_dotted":"Nöqtəli","sloppiness":"Səliqəsizlik","opacity":"Şəffaflıq","textAlign":"Mətni uyğunlaşdır","edges":"Kənarlar","sharp":"Kəskin","round":"Dəyirmi","arrowheads":"Ox ucları","arrowhead_none":"Heç biri","arrowhead_arrow":"Ox","arrowhead_bar":"Çubuq","arrowhead_dot":"Nöqtə","arrowhead_triangle":"Üçbucaq","fontSize":"Şrift ölçüsü","fontFamily":"Şrift qrupu","addWatermark":"\\"Made with Excalidraw\\" əlavə et","handDrawn":"Əllə çəkilmiş","normal":"Normal","code":"Kod","small":"Kiçik","medium":"Orta","large":"Böyük","veryLarge":"Çox böyük","solid":"Solid","hachure":"Ştrix","zigzag":"Ziqzaq","crossHatch":"Çarpaz dəlik","thin":"İncə","bold":"Qalın","left":"Sol","center":"Mərkəz","right":"Sağ","extraBold":"Ekstra qalın","architect":"Memar","artist":"Rəssam","cartoonist":"Karikaturaçı","fileTitle":"Fayl adı","colorPicker":"Rəng seçən","canvasColors":"Kanvas üzərində istifadə olunur","canvasBackground":"Kanvas arxa fonu","drawingCanvas":"Kanvas çəkmək","layers":"Qatlar","actions":"Hərəkətlər","language":"Dil","liveCollaboration":"Canlı əməkdaşlıq...","duplicateSelection":"Dublikat","untitled":"Başlıqsız","name":"Ad","yourName":"Adınız","madeWithExcalidraw":"Excalidraw ilə hazırlanmışdır","group":"Qrup şəklində seçim","ungroup":"Qrupsuz seçim","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js b/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js new file mode 100644 index 0000000..f44684c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1628],{1203:function(e){e.exports=JSON.parse('{"labels":{"paste":"Постави","pasteAsPlaintext":"Постави като обикновен текст","pasteCharts":"Постави графики","selectAll":"Маркирай всичко","multiSelect":"Добави елемент към селекция","moveCanvas":"Премести платно","cut":"Изрежи","copy":"Копирай","copyAsPng":"Копиране в клипборда","copyAsSvg":"Копирано в клипборда като SVG","copyText":"","bringForward":"Преместване напред","sendToBack":"Изнасяне назад","bringToFront":"Изнасяне отпред","sendBackward":"Изпрати отзад","delete":"Изтрий","copyStyles":"Копирайте стилове","pasteStyles":"Постави стилове","stroke":"Щрих","background":"Фон","fill":"Наситеност","strokeWidth":"Ширина на щриха","strokeStyle":"Стил на линия","strokeStyle_solid":"Плътен","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Пунктирано","sloppiness":"Небрежност","opacity":"Прозрачност","textAlign":"Подравняване на текста","edges":"Крайща","sharp":"Остър","round":"Закръглено","arrowheads":"Стрелки","arrowhead_none":"Без","arrowhead_arrow":"Стрелка","arrowhead_bar":"Връх на стрелката","arrowhead_dot":"Точка","arrowhead_triangle":"Триъгълник","fontSize":"Размер на шрифта","fontFamily":"Семейство шрифтове","addWatermark":"Добави \\"Направено с Excalidraw\\"","handDrawn":"Нарисувано на ръка","normal":"Нормален","code":"Код","small":"Малък","medium":"Среден","large":"Голям","veryLarge":"Много голям","solid":"Солиден","hachure":"Хералдика","zigzag":"Зигзаг","crossHatch":"Двойно-пресечено","thin":"Тънък","bold":"Ясно очертан","left":"Ляво","center":"Център","right":"Дясно","extraBold":"Много ясно очертан","architect":"Архитект","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Име на файл","colorPicker":"Избор на цвят","canvasColors":"Използван на платно","canvasBackground":"Фон на платно","drawingCanvas":"Платно за рисуване","layers":"Слоеве","actions":"Действия","language":"Език","liveCollaboration":"","duplicateSelection":"Дублирай","untitled":"Неозаглавено","name":"Име","yourName":"Вашето име","madeWithExcalidraw":"Направено с Excalidraw","group":"Групирай селекцията","ungroup":"Спри групирането на селекцията","collaborators":"Сътрудници","showGrid":"Показване на мрежа","addToLibrary":"Добавяне към библиотеката","removeFromLibrary":"Премахване от библиотеката","libraryLoadingMessage":"Зареждане на библиотеката…","libraries":"Разглеждане на библиотеките","loadingScene":"Зареждане на сцена…","align":"Подравняване","alignTop":"Подравняване отгоре","alignBottom":"Подравняване отдолу","alignLeft":"Подравняване отляво","alignRight":"Подравняване отдясно","centerVertically":"Центрирай вертикално","centerHorizontally":"Центрирай хоризонтално","distributeHorizontally":"Разпредели хоризонтално","distributeVertically":"Разпредели вертикално","flipHorizontal":"Хоризонтално обръщане","flipVertical":"Вертикално обръщане","viewMode":"Изглед","share":"Сподели","showStroke":"","showBackground":"","toggleTheme":"Включи тема","personalLib":"Лична Библиотека","excalidrawLib":"Excalidraw Библиотека","decreaseFontSize":"Намали размера на шрифта","increaseFontSize":"Увеличи размера на шрифта","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Редактирай линк","editEmbed":"","create":"","createEmbed":"","label":"Линк","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Заключи","unlock":"Отключи","lockAll":"Заключи всички","unlockAll":"Отключи всички"},"statusPublished":"Публикувани","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Избери цвят от платното"},"library":{"noItems":"Няма добавени неща все още...","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Нулиране на платно","exportJSON":"","exportImage":"","export":"Запази на...","copyToClipboard":"Копиране в клипборда","save":"Запази към текущ файл","saveAs":"Запиши като","load":"Отвори","getShareableLink":"Получаване на връзка за споделяне","close":"Затвори","selectLanguage":"Избор на език","scrollBackToContent":"Превъртете обратно към съдържанието","zoomIn":"Приближаване","zoomOut":"Отдалечаване","resetZoom":"Стандартен мащаб","menu":"Меню","done":"Завършено","edit":"Редактиране","undo":"Отмяна","redo":"Повтори","resetLibrary":"Нулиране на библиотеката","createNewRoom":"Създай нова стая","fullScreen":"На цял екран","darkMode":"Тъмен режим","lightMode":"Светъл режим","zenMode":"Режим Zen","objectsSnapMode":"","exitZenMode":"Спиране на Zen режим","cancel":"Отмени","clear":"Изчисти","remove":"Премахване","embed":"","publishLibrary":"Публикувай","submit":"Изпрати","confirm":"Потвърждаване","embeddableInteractionButton":""},"alerts":{"clearReset":"Това ще изчисти цялото платно. Сигурни ли сте?","couldNotCreateShareableLink":"Връзката не може да бъде създадена.","couldNotCreateShareableLinkTooBig":"Не може да се създаде връзка за споделяне: сцената е твърде голяма","couldNotLoadInvalidFile":"Невалиден файл не може да се зареди","importBackendFailed":"Импортирането от бекенд не беше успешно.","cannotExportEmptyCanvas":"Не може да се експортира празно платно.","couldNotCopyToClipboard":"Не можем да копираме в клипбоарда.","decryptFailed":"Данните не можаха да се дешифрират.","uploadedSecurly":"Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.","loadSceneOverridePrompt":"Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?","collabStopOverridePrompt":"Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?\\n\\n(Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)","errorAddingToLibrary":"Не можем да заредим от библиотеката","errorRemovingFromLibrary":"Не можем да премахнем елемент от библиотеката","confirmAddLibrary":"Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?","imageDoesNotContainScene":"","cannotRestoreFromImage":"Не може да бъде възстановена сцена от този файл","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Изтрий {{count}} елемент(а) от библиотеката?","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Този файлов формат не се поддържа.","imageInsertError":"","fileTooBig":"Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Невалиден SVG.","cannotResolveCollabServer":"","importLibraryError":"Не можем да заредим библиотеката","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"Силно препоръчваме да изключите тази настройка. Можете да следвате тези стъпки за това как да го направите.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Селекция","image":"Вмъкване на изображение","rectangle":"Правоъгълник","diamond":"Диамант","ellipse":"Елипс","arrow":"Стрелка","line":"Линия","freedraw":"Рисуване","text":"Текст","library":"Библиотека","lock":"Поддържайте избрания инструмент активен след рисуване","penMode":"","link":"","eraser":"Гума","frame":"","embeddable":"","laser":"","hand":"","extraTools":"Още инструменти"},"headings":{"canvasActions":"Действия по платното","selectedShapeActions":"Избрани действия","shapes":"Фигури"},"hints":{"canvasPanning":"","linearElement":"Кликнете, за да стартирате няколко точки, плъзнете за една линия","freeDraw":"Натиснете и влачете, пуснете като сте готови","text":"Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"Кликнете върху последната точка или натиснете Escape или Enter, за да завършите","lockAngle":"Можете да ограничите ъгъла, като задържите SHIFT","resize":"Може да ограничите при преоразмеряване като задържите SHIFT,\\nзадръжте ALT за преоразмерите през центъра","resizeImage":"","rotate":"Можете да ограничите ъглите, като държите SHIFT, докато се въртите","lineEditor_info":"","lineEditor_pointSelected":"Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Натиснете Enter, за да добавите","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Невъзможност за показване на preview","canvasTooBig":"Платното е твърде голямо.","canvasTooBigTip":"Подсказка: пробвайте да приближите далечните елементи по-близко."},"errorSplash":{"headingMain":"Среща грешка. Опитайте ","clearCanvasMessage":"Ако презареждането не работи, опитайте ","clearCanvasCaveat":" Това ще доведе до загуба на работа ","trackedToSentry":"Грешката с идентификатор {{eventId}} беше проследен в нашата система.","openIssueMessage":"Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата Моля, включете информация по-долу, като я копирате и добавите в GitHub.","sceneContent":"Съдържание на сцената:"},"roomDialog":{"desc_intro":"Можете да поканите хора на текущата си сцена да си сътрудничат с вас.","desc_privacy":"Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.","button_startSession":"Стартирайте сесията","button_stopSession":"Стоп на сесията","desc_inProgressIntro":"Сесията за сътрудничество на живо е в ход.","desc_shareLink":"Споделете тази връзка с всеки, с когото искате да си сътрудничите:","desc_exitSession":"Спирането на сесията ще ви изключи от стаята, но ще можете да продължите да работите със сцената, локално. Имайте предвид, че това няма да засегне други хора и те все още ще могат да си сътрудничат с тяхната версия.","shareTitle":""},"errorDialog":{"title":"Грешка"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Експорт","excalidrawplus_exportError":""},"helpDialog":{"blog":"Прочетете нашия блог","click":"клик","deepSelect":"","deepBoxSelect":"","curvedArrow":"Извита стрелка","curvedLine":"Извита линия","documentation":"Документация","doubleClick":"двойно-щракване","drag":"плъзнете","editor":"Редактор","editLineArrowPoints":"","editText":"","github":"Намерихте проблем? Изпратете","howto":"Следвайте нашите ръководства","or":"или","preventBinding":"Спри прилепяне на стрелките","tools":"Инструменти","shortcuts":"Клавиши за бърз достъп","textFinish":"Завърши редактиране (текстов редактор)","textNewLine":"Добави нова линия (текстов редактор)","title":"Помощ","view":"Преглед","zoomToFit":"Приближи докато се виждат всички елементи","zoomToSelection":"Приближи селекцията","toggleElementLock":"Заключи/Отключи селекция","movePageUpDown":"Премести страница нагоре/надолу","movePageLeftRight":"Премести страница наляво/надясно"},"clearCanvasDialog":{"title":"Изчисти платното"},"publishDialog":{"title":"Публикувай библиотека","itemName":"Име","authorName":"Авторско име","githubUsername":"GitHub потребителско име","twitterUsername":"Twitter потребителско име","libraryName":"Име на библиотеката","libraryDesc":"Описание на библиотеката","website":"Уебсайт","placeholder":{"authorName":"Името или потребителското Ви име","libraryName":"Име на библиотеката Ви","libraryDesc":"Описание на библиотеката ви, за да помогнете на хората да разберат приложенията ѝ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Задължително","website":"Въведете валиден URL адрес"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Нулирай библиотека","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"Фон","onlySelected":"Само избраното","darkMode":"Тъмен режим","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Изнасяне в PNG","exportToSvg":"Изнасяне в SVG","copyPngToClipboard":"Копирай PNG в клипборда"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копиране в клипборда"}},"encrypted":{"tooltip":"Вашите рисунки са криптирани от край до край, така че сървърите на Excalidraw няма да могат да ги виждат.","link":""},"stats":{"angle":"Ъгъл","element":"Елемент","elements":"Елементи","height":"Височина","scene":"Сцена","selected":"Селектирано","storage":"Съхранение на данни","title":"Статистика за хакери","total":"Общо","version":"Версия","versionCopy":"Настисни за да копираш","versionNotAvailable":"Версията не е налична","width":"Широчина"},"toast":{"addedToLibrary":"Добавена към библиотеката","copyStyles":"Копирани стилове.","copyToClipboard":"Копирано в клипборда.","copyToClipboardAsPng":"Копира {{exportSelection}} в клипборда като PNG\\n({{exportColorScheme}})","fileSaved":"Файлът е запазен.","fileSavedToFilename":"Запазен към {filename}","canvas":"платно","selection":"селекция","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачен","black":"Черен","white":"Бял","red":"Червен","pink":"Розов","grape":"Грозде","violet":"Виолетово","gray":"Сив","blue":"Син","cyan":"Синьозелено","teal":"Тъмно синьо-зелено","green":"Зелено","yellow":"Жълто","orange":"Оранжево","bronze":"Бронзово"},"welcomeScreen":{"app":{"center_heading":"Всичките Ви данни са запазени локално в браузъра Ви.","center_heading_plus":"","menuHint":"Експорт, предпочитания, езици, ..."},"defaults":{"menuHint":"Експорт, предпочитания, и още...","center_heading":"Диаграми. Направени. Просто.","toolbarHint":"Изберете инструмент & Започнете да рисувате!","helpHint":"Преки пътища & помощ"}},"colorPicker":{"mostUsedCustomColors":"Най-често използвани цветове","colors":"Цветове","shades":"Нюанси","hexCode":"Шестнадесетичен код","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Изнеси като изображение","button":"Изнеси като изображение","description":""},"saveToDisk":{"title":"Запази към диск","button":"Запази към диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортирай към Excalidraw+","description":"Запази сцената към Excalidraw+ работното място."}},"modal":{"loadFromFile":{"title":"Зареди от файл","button":"Зареди от файл","description":""},"shareableLink":{"title":"Зареди от линк","button":"Замени моето съдържание","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js b/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js new file mode 100644 index 0000000..f838bb6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7429],{8525:function(e){e.exports=JSON.parse('{"labels":{"paste":"পেস্ট করুন","pasteAsPlaintext":"প্লেইনটেক্সট হিসাবে পেস্ট করুন","pasteCharts":"চার্ট পেস্ট করুন","selectAll":"সবটা সিলেক্ট করুন","multiSelect":"একাধিক সিলেক্ট করুন","moveCanvas":"ক্যানভাস সরান","cut":"কাট করুন","copy":"কপি করুন","copyAsPng":"পীএনজী ছবির মতন কপি করুন","copyAsSvg":"এসভীজী ছবির মতন কপি করুন","copyText":"লিখিত তথ্যের মতন কপি করুন","bringForward":"অধিকতর সামনে আনুন","sendToBack":"অধিকতর পিছনে নিয়ে যান","bringToFront":"সবার সামনে আনুন","sendBackward":"সবার পিছনে নিয়ে যান","delete":"মুছা","copyStyles":"ডিজাইন কপি করুন","pasteStyles":"ডিজাইন পেস্ট করুন","stroke":"রেখাংশ","background":"পটভূমি","fill":"রং","strokeWidth":"রেখাংশের বেধ","strokeStyle":"রেখাংশের ডিজাইন","strokeStyle_solid":"পুরু","strokeStyle_dashed":"পাতলা","strokeStyle_dotted":"বিন্দুবিন্দু","sloppiness":"ভ্রান্তি","opacity":"দৃশ্যমানতা","textAlign":"লেখ অনুভূমি","edges":"কোণ","sharp":"তীক্ষ্ণ","round":"গোল","arrowheads":"তীরের শীর্ষভাগ","arrowhead_none":"কিছু না","arrowhead_arrow":"তীর","arrowhead_bar":"রেখাংশ","arrowhead_dot":"বিন্দু","arrowhead_triangle":"ত্রিভূজ","fontSize":"লেখনীর মাত্রা","fontFamily":"লেখনীর হরফ","addWatermark":"এক্সক্যালিড্র দ্বারা প্রস্তুত","handDrawn":"হাতে আঁকা","normal":"স্বাভাবিক","code":"কোড","small":"ছোট","medium":"মাঝারি","large":"বড়","veryLarge":"অনেক বড়","solid":"দৃঢ়","hachure":"ভ্রুলেখা","zigzag":"আঁকাবাঁকা","crossHatch":"ক্রস হ্যাচ","thin":"পাতলা","bold":"পুরু","left":"বাম","center":"কেন্দ্র","right":"ডান","extraBold":"অতি পুরু","architect":"স্থপতি","artist":"শিল্পী","cartoonist":"চিত্রকার","fileTitle":"ফাইলের নাম","colorPicker":"রং পছন্দ করুন","canvasColors":"ক্যানভাসের রং","canvasBackground":"ক্যানভাসের পটভূমি","drawingCanvas":"ব্যবহৃত ক্যানভাস","layers":"মাত্রা","actions":"ক্রিয়া","language":"ভাষা","liveCollaboration":"সরাসরি পারস্পরিক সহযোগিতা...","duplicateSelection":"সদৃশ সিলেক্ট","untitled":"অনামী","name":"নাম","yourName":"আপনার নাম","madeWithExcalidraw":"এক্সক্যালিড্র দ্বারা তৈরি","group":"দল গঠন করুন","ungroup":"দল বিভেদ করুন","collaborators":"সহযোগী","showGrid":"গ্রিড দেখান","addToLibrary":"সংগ্রহে যোগ করুন","removeFromLibrary":"সংগ্রহ থেকে বের করুন","libraryLoadingMessage":"সংগ্রহ তৈরি হচ্ছে","libraries":"সংগ্রহ দেখুন","loadingScene":"দৃশ্য তৈরি হচ্ছে","align":"পংক্তিবিন্যাস","alignTop":"উপর পংক্তি","alignBottom":"নিম্ন পংক্তি","alignLeft":"বাম পংক্তি","alignRight":"ডান পংক্তি","centerVertically":"উলম্ব কেন্দ্রিত","centerHorizontally":"অনুভূমিক কেন্দ্রিত","distributeHorizontally":"অনুভূমিকভাবে বিতরণ করুন","distributeVertically":"উল্লম্বভাবে বিতরণ করুন","flipHorizontal":"অনুভূমিক আবর্তন","flipVertical":"উলম্ব আবর্তন","viewMode":"দৃশ্য","share":"ভাগ করুন","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"লেখনীর মাত্রা কমান","increaseFontSize":"লেখনীর মাত্রা বাড়ান","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"লিঙ্ক সংশোধন","editEmbed":"","create":"লিঙ্ক তৈরী","createEmbed":"","label":"লিঙ্ক নামকরণ","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"আবদ্ধ করুন","unlock":"বিচ্ছিন্ন করুন","lockAll":"সব আবদ্ধ করুন","unlockAll":"সব বিচ্ছিন্ন করুন"},"statusPublished":"প্রকাশিত","sidebarLock":"লক","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"সংগ্রহে কিছু যোগ করা হয়নি","hint_emptyLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷","hint_emptyPrivateLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন"},"buttons":{"clearReset":"ক্যানভাস সাফ করুন","exportJSON":"জেসন নিবদ্ধ করুন","exportImage":"","export":"","copyToClipboard":"ক্লিপবোর্ডে কপি করুন","save":"জমা করুন","saveAs":"অন্যভাবে জমা করুন","load":"","getShareableLink":"ভাগযোগ্য লিঙ্ক পান","close":"বন্ধ করুন","selectLanguage":"ভাষা চিহ্নিত করুন","scrollBackToContent":"বিষয়বস্তুতে ফেরত যান","zoomIn":"বড় করুন","zoomOut":"ছোট করুন","resetZoom":"স্বাভাবিক করুন","menu":"তালিকা","done":"সম্পন্ন","edit":"সংশোধন করুন","undo":"ফেরত যান","redo":"পুনরায় করুন","resetLibrary":"সংগ্রহ সাফ করুন","createNewRoom":"নতুন রুম বানান","fullScreen":"পূর্ণস্ক্রীন","darkMode":"ডার্ক মোড","lightMode":"লাইট মোড","zenMode":"জেন মোড","objectsSnapMode":"","exitZenMode":"জেন মোড বন্ধ করুন","cancel":"বাতিল","clear":"সাফ","remove":"বিয়োগ","embed":"","publishLibrary":"সংগ্রহ প্রকাশ করুন","submit":"জমা করুন","confirm":"নিশ্চিত করুন","embeddableInteractionButton":""},"alerts":{"clearReset":"এটি পুরো ক্যানভাস সাফ করবে। আপনি কি নিশ্চিত?","couldNotCreateShareableLink":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি।","couldNotCreateShareableLinkTooBig":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি: দৃশ্যটি খুব বড়","couldNotLoadInvalidFile":"অবৈধ ফাইল লোড করা যায়নি","importBackendFailed":"ব্যাকেন্ড থেকে আপলোড ব্যর্থ হয়েছে।","cannotExportEmptyCanvas":"খালি ক্যানভাস নিবদ্ধ করা যাবে না।","couldNotCopyToClipboard":"ক্লিপবোর্ডে কপি করা যায়নি।","decryptFailed":"তথ্য ডিক্রিপ্ট করা যায়নি।","uploadedSecurly":"আপলোডটি এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে সুরক্ষিত করা হয়েছে, যার অর্থ হল এক্সক্যালিড্র সার্ভার এবং তৃতীয় পক্ষের দ্বারা পড়তে পারা সম্ভব নয়।","loadSceneOverridePrompt":"বাহ্যিক অঙ্কন লোড করা আপনার বিদ্যমান দৃশ্য প্রতিস্থাপন করবে। আপনি কি অবিরত করতে চান?","collabStopOverridePrompt":"অধিবেশন বন্ধ করা আপনার পূর্ববর্তী, স্থানীয়ভাবে সঞ্চিত অঙ্কন ওভাররাইট করবে। আপনি কি নিশ্চিত?\\n\\n(যদি আপনি আপনার স্থানীয় অঙ্কন রাখতে চান, তাহলে শুধু ব্রাউজার ট্যাবটি বন্ধ করুন।)","errorAddingToLibrary":"বস্তুটি সংগ্রহে যোগ করা যায়নি","errorRemovingFromLibrary":"বস্তুটি সংগ্রহ থেকে বিয়োগ করা যায়নি","confirmAddLibrary":"এটি আপনার সংগ্রহে {{numShapes}} আকার(গুলি) যোগ করবে। আপনি কি নিশ্চিত?","imageDoesNotContainScene":"এই ছবিতে কোনো দৃশ্যের তথ্য আছে বলে মনে হয় না৷ আপনি কি নিবদ্ধ করার সময় দৃশ্য এমবেডিং করতে সক্ষম?","cannotRestoreFromImage":"এই ফাইল থেকে দৃশ্য পুনরুদ্ধার করা যায়নি","invalidSceneUrl":"সরবরাহ করা লিঙ্ক থেকে দৃশ্য লোড করা যায়নি৷ এটি হয় বিকৃত, অথবা বৈধ এক্সক্যালিড্র জেসন তথ্য নেই৷","resetLibrary":"এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?","removeItemsFromsLibrary":"সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?","invalidEncryptionKey":"অবৈধ এনক্রীপশন কী।","collabOfflineWarning":""},"errors":{"unsupportedFileType":"অসমর্থিত ফাইল।","imageInsertError":"ছবি সন্নিবেশ করা যায়নি। পরে আবার চেষ্টা করুন...","fileTooBig":"ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷","svgImageInsertError":"এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","failedToFetchImage":"","invalidSVGString":"এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","cannotResolveCollabServer":"কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।","importLibraryError":"সংগ্রহ লোড করা যায়নি","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"বাছাই","image":"চিত্র সন্নিবেশ","rectangle":"আয়তক্ষেত্র","diamond":"রুহিতন","ellipse":"উপবৃত্ত","arrow":"তীর","line":"রেখা","freedraw":"কলম","text":"লেখা","library":"সংগ্রহ","lock":"আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন","penMode":"","link":"একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন","eraser":"ঝাড়ন","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ক্যানভাস কার্যকলাপ","selectedShapeActions":"বাছাই করা আকার(গুলি)র কার্যকলাপ","shapes":"আকার(গুলি)"},"hints":{"canvasPanning":"","linearElement":"একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন","freeDraw":"ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন","text":"বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন","embeddable":"","text_selected":"লেখা সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন","text_editing":"লেখা সম্পাদনা শেষ করতে এসকেপ বা কন্ট্রোল/কম্যান্ড যোগে এন্টার টিপুন","linearElementMulti":"শেষ বিন্দুতে ক্লিক করুন অথবা শেষ করতে এসকেপ বা এন্টার টিপুন","lockAngle":"ঘোরানোর সময় আপনি শিফ্ট ধরে রেখে কোণ সীমাবদ্ধ করতে পারেন","resize":"আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,\\nকেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন","resizeImage":"আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন","rotate":"আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন","lineEditor_info":"","lineEditor_pointSelected":"বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন","lineEditor_nothingSelected":"সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),\\nঅথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন","placeImage":"ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন","publishLibrary":"আপনার নিজস্ব সংগ্রহ প্রকাশ করুন","bindTextToElement":"লেখা যোগ করতে এন্টার টিপুন","deepBoxSelect":"","eraserRevert":"মুছে ফেলার জন্য চিহ্নিত উপাদানগুলিকে ফিরিয়ে আনতে অল্ট ধরে রাখুন","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"প্রিভিউ দেখাতে অপারগ","canvasTooBig":"ক্যানভাস অনেক বড়।","canvasTooBigTip":"বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।"},"errorSplash":{"headingMain":"একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন ","clearCanvasMessage":"যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন ","clearCanvasCaveat":" এর ফলে কাজের ক্ষতি হবে ","trackedToSentry":"ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।","openIssueMessage":"আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।","sceneContent":"দৃশ্য বিষয়বস্তু:"},"roomDialog":{"desc_intro":"আপনি আপনার সাথে সহযোগিতা করার জন্য আপনার বর্তমান দৃশ্যে লোকেদের আমন্ত্রণ জানাতে পারেন৷","desc_privacy":"চিন্তা করবেন না, সেশনটি এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করে, তাই আপনি যা আঁকবেন তা গোপন থাকবে। এমনকি আমাদের সার্ভার আপনি যা নিয়ে এসেছেন তা দেখতে সক্ষম হবে না।","button_startSession":"সেশন শুরু করুন","button_stopSession":"সেশন বন্ধ করুন","desc_inProgressIntro":"লাইভ-সহযোগীতার সেশন এখন চলছে।","desc_shareLink":"আপনি যার সাথে সহযোগিতা করতে চান তাদের সাথে এই লিঙ্কটি ভাগ করুন: ","desc_exitSession":"অধিবেশন বন্ধ করা আপনাকে রুম থেকে সংযোগ বিচ্ছিন্ন করবে, কিন্তু আপনি স্থানীয়ভাবে দৃশ্যের সাথে কাজ চালিয়ে যেতে সক্ষম হবেন। মনে রাখবেন যে এটি অন্য লোকেদের প্রভাবিত করবে না এবং তারা এখনও তাদের সংস্করণে সহযোগিতা করতে সক্ষম হবে।","shareTitle":"এক্সক্যালিড্র লাইভ সহযোগিতা সেশনে যোগ দিন"},"errorDialog":{"title":"ত্রুটি"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"নিবদ্ধ","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"ক্লিক","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"অথবা","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"কোণ","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"প্রস্থ"},"toast":{"addedToLibrary":"সংগ্রহশালায় যুক্ত হয়েছে","copyStyles":"","copyToClipboard":"ক্লিপবোর্ডে কপি করা হয়েছে।","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"বাছাই","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js b/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js new file mode 100644 index 0000000..4b2c0d2 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5130],{510:function(e){e.exports=JSON.parse('{"labels":{"paste":"Enganxa","pasteAsPlaintext":"Enganxar com a text pla","pasteCharts":"Enganxa els diagrames","selectAll":"Selecciona-ho tot","multiSelect":"Afegeix un element a la selecció","moveCanvas":"Mou el llenç","cut":"Retalla","copy":"Copia","copyAsPng":"Copia al porta-retalls com a PNG","copyAsSvg":"Copia al porta-retalls com a SVG","copyText":"Copia al porta-retalls com a text","bringForward":"Porta endavant","sendToBack":"Envia enrere","bringToFront":"Porta al davant","sendBackward":"Envia al fons","delete":"Elimina","copyStyles":"Copia els estils","pasteStyles":"Enganxa els estils","stroke":"Color del traç","background":"Color del fons","fill":"Estil del fons","strokeWidth":"Amplada del traç","strokeStyle":"Estil del traç","strokeStyle_solid":"Sòlid","strokeStyle_dashed":"Guions","strokeStyle_dotted":"Punts","sloppiness":"Estil del traç","opacity":"Opacitat","textAlign":"Alineació del text","edges":"Vores","sharp":"Agut","round":"Arrodonit","arrowheads":"Puntes de fletxa","arrowhead_none":"Cap","arrowhead_arrow":"Fletxa","arrowhead_bar":"Barra","arrowhead_dot":"Punt","arrowhead_triangle":"Triangle","fontSize":"Mida de lletra","fontFamily":"Tipus de lletra","addWatermark":"Afegeix-hi «Fet amb Excalidraw»","handDrawn":"Dibuixat a mà","normal":"Normal","code":"Codi","small":"Petit","medium":"Mitjà","large":"Gran","veryLarge":"Molt gran","solid":"Sòlid","hachure":"Ratlletes","zigzag":"","crossHatch":"Ratlletes creuades","thin":"Fi","bold":"Negreta","left":"Esquerra","center":"Centre","right":"Dreta","extraBold":"Extra negreta","architect":"Arquitecte","artist":"Artista","cartoonist":"Dibuixant","fileTitle":"Nom del fitxer","colorPicker":"Selector de colors","canvasColors":"Usat al llenç","canvasBackground":"Fons del llenç","drawingCanvas":"Llenç de dibuix","layers":"Capes","actions":"Accions","language":"Llengua","liveCollaboration":"Col·laboració en directe...","duplicateSelection":"Duplica","untitled":"Sense títol","name":"Nom","yourName":"El vostre nom","madeWithExcalidraw":"Fet amb Excalidraw","group":"Agrupa la selecció","ungroup":"Desagrupa la selecció","collaborators":"Col·laboradors","showGrid":"Mostra la graella","addToLibrary":"Afegir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"S\'està carregant la biblioteca…","libraries":"Explora les biblioteques","loadingScene":"S\'està carregant l\'escena…","align":"Alinea","alignTop":"Alinea a la part superior","alignBottom":"Alinea a la part inferior","alignLeft":"Alinea a l’esquerra","alignRight":"Alinea a la dreta","centerVertically":"Centra verticalment","centerHorizontally":"Centra horitzontalment","distributeHorizontally":"Distribueix horitzontalment","distributeVertically":"Distribueix verticalment","flipHorizontal":"Capgira horitzontalment","flipVertical":"Capgira verticalment","viewMode":"Mode de visualització","share":"Comparteix","showStroke":"Mostra el selector de color del traç","showBackground":"Mostra el selector de color de fons","toggleTheme":"Activa o desactiva el tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca d\'Excalidraw","decreaseFontSize":"Redueix la mida de la lletra","increaseFontSize":"Augmenta la mida de la lletra","unbindText":"Desvincular el text","bindText":"Ajusta el text al contenidor","createContainerFromText":"","link":{"edit":"Edita l\'enllaç","editEmbed":"","create":"Crea un enllaç","createEmbed":"","label":"Enllaç","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar línia","exit":"Sortir de l\'editor de línia"},"elementLock":{"lock":"Bloca","unlock":"Desbloca","lockAll":"Bloca-ho tot","unlockAll":"Desbloca-ho tot"},"statusPublished":"Publicat","sidebarLock":"Manté la barra lateral oberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Encara no s\'hi han afegit elements...","hint_emptyLibrary":"Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.","hint_emptyPrivateLibrary":"Trieu un element o un llenç per a afegir-lo aquí."},"buttons":{"clearReset":"Neteja el llenç","exportJSON":"Exporta a un fitxer","exportImage":"Exporta la imatge...","export":"Guardar a...","copyToClipboard":"Copia al porta-retalls","save":"Desa al fitxer actual","saveAs":"Anomena i desa","load":"Obrir","getShareableLink":"Obté l\'enllaç per a compartir","close":"Tanca","selectLanguage":"Trieu la llengua","scrollBackToContent":"Torna al contingut","zoomIn":"Apropa\'t","zoomOut":"Allunya\'t","resetZoom":"Restableix el zoom","menu":"Menú","done":"Fet","edit":"Edita","undo":"Desfés","redo":"Refés","resetLibrary":"Restableix la biblioteca","createNewRoom":"Crea una sala nova","fullScreen":"Pantalla completa","darkMode":"Mode fosc","lightMode":"Mode clar","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Surt de mode zen","cancel":"Cancel·la","clear":"Neteja","remove":"Suprimeix","embed":"","publishLibrary":"Publica","submit":"Envia","confirm":"Confirma","embeddableInteractionButton":""},"alerts":{"clearReset":"S\'esborrarà tot el llenç. N\'esteu segur?","couldNotCreateShareableLink":"No s\'ha pogut crear un enllaç per a compartir.","couldNotCreateShareableLinkTooBig":"No s’ha pogut crear un enllaç per a compartir: l’escena és massa gran","couldNotLoadInvalidFile":"No s\'ha pogut carregar un fitxer no vàlid","importBackendFailed":"Importació fallida.","cannotExportEmptyCanvas":"No es pot exportar un llenç buit.","couldNotCopyToClipboard":"No s\'ha pogut copiar al porta-retalls.","decryptFailed":"No s\'ha pogut desencriptar.","uploadedSecurly":"La càrrega s\'ha assegurat amb xifratge punta a punta, cosa que significa que el servidor Excalidraw i tercers no poden llegir el contingut.","loadSceneOverridePrompt":"Si carregas aquest dibuix extern, substituirá el que tens. Vols continuar?","collabStopOverridePrompt":"Aturar la sessió provocarà la sobreescriptura del dibuix previ, que hi ha desat en l\'emmagatzematge local. N\'esteu segur?\\n\\n(Si voleu conservar el dibuix local, tanqueu la pentanya del navegador en comptes d\'aturar la sessió).","errorAddingToLibrary":"No s\'ha pogut afegir l\'element a la biblioteca","errorRemovingFromLibrary":"No s\'ha pogut eliminar l\'element de la biblioteca","confirmAddLibrary":"Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?","imageDoesNotContainScene":"Aquesta imatge no sembla contenir cap dada d\'escena. Heu activat l\'incrustació de l\'escena durant l\'exportació?","cannotRestoreFromImage":"L’escena no s’ha pogut restaurar des d’aquest fitxer d’imatge","invalidSceneUrl":"No s\'ha pogut importar l\'escena des de l\'adreça URL proporcionada. Està malformada o no conté dades Excalidraw JSON vàlides.","resetLibrary":"Això buidarà la biblioteca. N\'esteu segur?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la biblioteca?","invalidEncryptionKey":"La clau d\'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.","collabOfflineWarning":"Sense connexió a internet disponible.\\nEls vostres canvis no seran guardats!"},"errors":{"unsupportedFileType":"Tipus de fitxer no suportat.","imageInsertError":"No s\'ha pogut insertar la imatge, torneu-ho a provar més tard...","fileTooBig":"El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.","svgImageInsertError":"No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.","failedToFetchImage":"","invalidSVGString":"SVG no vàlid.","cannotResolveCollabServer":"No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.","importLibraryError":"No s\'ha pogut carregar la biblioteca","collabSaveFailed":"No s\'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","collabSaveFailed_sizeExceeded":"No s\'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selecció","image":"Insereix imatge","rectangle":"Rectangle","diamond":"Rombe","ellipse":"El·lipse","arrow":"Fletxa","line":"Línia","freedraw":"Dibuix","text":"Text","library":"Biblioteca","lock":"Mantenir activa l\'eina seleccionada desprès de dibuixar","penMode":"Mode de llapis - evita tocar","link":"Afegeix / actualitza l\'enllaç per a la forma seleccionada","eraser":"Esborrador","frame":"","embeddable":"","laser":"","hand":"Mà (eina de desplaçament)","extraTools":""},"headings":{"canvasActions":"Accions del llenç","selectedShapeActions":"Accions per a les formes seleccionades","shapes":"Formes"},"hints":{"canvasPanning":"Per moure el llenç, manteniu premuda la roda del ratolí o la barra espaiadora mentre arrossegueu o utilitzeu l\'eina manual","linearElement":"Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia","freeDraw":"Feu clic i arrossegueu, deixeu anar per a finalitzar","text":"Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l\'eina de selecció","embeddable":"","text_selected":"Feu doble clic o premeu Retorn per a editar el text","text_editing":"Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l\'edició","linearElementMulti":"Feu clic a l\'ultim punt, o pitgeu Esc o Retorn per a finalitzar","lockAngle":"Per restringir els angles, mantenir premut el majúscul (SHIFT)","resize":"Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT","resizeImage":"Podeu redimensionar lliurement prement MAJÚSCULA;\\nper a redimensionar des del centre, premeu ALT","rotate":"Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)","lineEditor_info":"Mantingueu premut Ctrl o Cmd i feu doble clic o premeu Ctrl o Cmd + Retorn per editar els punts","lineEditor_pointSelected":"Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure\'l","lineEditor_nothingSelected":"Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu\\nselecció múltiple), o manteniu Alt i feu clic per a afegir més punts","placeImage":"Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment","publishLibrary":"Publiqueu la vostra pròpia llibreria","bindTextToElement":"Premeu enter per a afegir-hi text","deepBoxSelect":"Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l\'arrossegament","eraserRevert":"Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar","firefox_clipboard_write":"És probable que aquesta funció es pugui activar posant la marca \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Per canviar les marques del navegador al Firefox, visiteu la pàgina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"No es pot mostrar la previsualització","canvasTooBig":"Pot ser que el llenç sigui massa gran.","canvasTooBigTip":"Consell: proveu d’acostar una mica els elements més allunyats."},"errorSplash":{"headingMain":"S\'ha produït un error. Proveu ","clearCanvasMessage":"Si la recàrrega no funciona, proveu ","clearCanvasCaveat":" Això resultarà en la pèrdua de feina ","trackedToSentry":"L\'error amb l\'identificador {{eventId}} s\'ha rastrejat en el nostre sistema.","openIssueMessage":"Anàvem amb molta cura de no incloure la informació de la vostra escena en l\'error. Si l\'escena no és privada, podeu fer-ne el seguiment al nostre Incloeu la informació a continuació copiant i enganxant a GitHub Issues.","sceneContent":"Contingut de l\'escena:"},"roomDialog":{"desc_intro":"Podeu convidar persones a la vostra escena actual a col·laborar amb vós.","desc_privacy":"No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.","button_startSession":"Inicia la sessió","button_stopSession":"Atura la sessió","desc_inProgressIntro":"La sessió de col·laboració en directe està en marxa.","desc_shareLink":"Comparteix aquest enllaç amb qualsevol persona amb qui vulgueu col·laborar:","desc_exitSession":"Si atureu la sessió, us desconectareu de la sala, però podreu continuar treballant amb el dibuix localment. Tingues en compte que això no afectarà a altres persones, i encara podran col·laborar en la seva versió.","shareTitle":"Uniu-vos a una sessió de col·laboració en directe a Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Desa al disc","disk_details":"Exporta les dades de l\'escena a un fitxer que després podreu importar.","disk_button":"Desa en un fitxer","link_title":"Enllaç per a compartir","link_details":"Exporta com a un enllaç de només lectura.","link_button":"Exporta a un enllaç","excalidrawplus_description":"Desa l\'escena en el vostre espai de treball Excalidraw+.","excalidrawplus_button":"Exporta","excalidrawplus_exportError":"No és possible exportar a Excalidraw+ ara mateix..."},"helpDialog":{"blog":"Llegiu el nostre blog","click":"clic","deepSelect":"Selecció profunda","deepBoxSelect":"Seleccioneu profundament dins del quadre i eviteu arrossegar","curvedArrow":"Fletxa corba","curvedLine":"Línia corba","documentation":"Documentació","doubleClick":"doble clic","drag":"arrossega","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Hi heu trobat un problema? Informeu-ne","howto":"Seguiu les nostres guies","or":"o","preventBinding":"Prevenir vinculació de la fletxa","tools":"Eines","shortcuts":"Dreceres de teclat","textFinish":"Finalitza l\'edició (editor de text)","textNewLine":"Afegeix una línia nova (editor de text)","title":"Ajuda","view":"Visualització","zoomToFit":"Zoom per veure tots els elements","zoomToSelection":"Zoom per veure la selecció","toggleElementLock":"Blocar/desblocar la selecció","movePageUpDown":"Mou la pàgina cap amunt/a baix","movePageLeftRight":"Mou la pàgina cap a l\'esquerra/dreta"},"clearCanvasDialog":{"title":"Neteja el llenç"},"publishDialog":{"title":"Publica la biblioteca","itemName":"Nom de l\'element","authorName":"Nom de l\'autor/a","githubUsername":"Nom d\'usuari de GitHub","twitterUsername":"Nom d\'usuari de Twitter","libraryName":"Nom de la biblioteca","libraryDesc":"Descripció de la biblioteca","website":"Lloc web","placeholder":{"authorName":"Nom o usuari","libraryName":"Nom de la vostra biblioteca","libraryDesc":"Descripció de la biblioteca per a ajudar a la gent a entendre\'n el funcionament","githubHandle":"Identificador de GitHub (opcional), per tal que pugueu editar la biblioteca una vegada enviada per a ser revisada","twitterHandle":"Usuari de twitter (opcional), per tal que puguem donar-vos crèdit quan fem la promoció a Twitter","website":"Enllaç al vostre lloc web personal o a qualsevol altre (opcional)"},"errors":{"required":"Requerit","website":"Introduïu una URL vàlida"},"noteDescription":"Envieu la vostra biblioteca perquè sigui inclosa al repositori públicper tal que altres persones puguin fer-ne ús en els seus dibuixos.","noteGuidelines":"La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les directrius abans d\'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible.","noteLicense":"Quan l\'envieu, accepteu que la biblioteca sigui publicada sota la llicència MIT, que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions.","noteItems":"Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S\'hi inclouran els elements següents:","atleastOneLibItem":"Si us plau, seleccioneu si més no un element de la biblioteca per a començar","republishWarning":"Nota: alguns dels elements seleccionats s\'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l\'estataquí"},"confirmDialog":{"resetLibrary":"Restableix la biblioteca","removeItemsFromLib":"Suprimeix els elements seleccionats de la llibreria"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Els vostres dibuixos estan xifrats de punta a punta de manera que els servidors d’Excalidraw no els veuran mai.","link":"Article del blog sobre encriptació d\'extrem a extrem a Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Altura","scene":"Escena","selected":"Seleccionat","storage":"Emmagatzematge","title":"Estadístiques per nerds","total":"Total","version":"Versió","versionCopy":"Feu clic per a copiar","versionNotAvailable":"Versió no disponible","width":"Amplada"},"toast":{"addedToLibrary":"Afegit a la biblioteca","copyStyles":"S\'han copiat els estils.","copyToClipboard":"S\'ha copiat al porta-retalls.","copyToClipboardAsPng":"S\'ha copiat {{exportSelection}} al porta-retalls en format PNG\\n({{exportColorScheme}})","fileSaved":"S\'ha desat el fitxer.","fileSavedToFilename":"S\'ha desat a {filename}","canvas":"el llenç","selection":"la selecció","pasteAsSingleElement":"Fer servir {{shortcut}} per enganxar com un sol element,\\no enganxeu-lo en un editor de text existent","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparent","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totes les vostres dades es guarden localment al vostre navegador.","center_heading_plus":"Vols anar a Excalidraw+ en comptes?","menuHint":"Exportar, preferències, llenguatges..."},"defaults":{"menuHint":"Exportar, preferències i més...","center_heading":"Diagrames. Fer. Simple.","toolbarHint":"Selecciona una eina i comença a dibuixar!","helpHint":"Dreceres i ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js b/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js new file mode 100644 index 0000000..b34efc0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6265],{7605:function(e){e.exports=JSON.parse('{"labels":{"paste":"Vložit","pasteAsPlaintext":"Vložit jako prostý text","pasteCharts":"Vložit grafy","selectAll":"Vybrat vše","multiSelect":"Přidat prvek do výběru","moveCanvas":"Posunout plátno","cut":"Vyjmout","copy":"Kopírovat","copyAsPng":"Zkopírovat do schránky jako PNG","copyAsSvg":"Zkopírovat do schránky jako SVG","copyText":"Zkopírovat do schránky jako text","bringForward":"Přenést blíž","sendToBack":"Přenést do pozadí","bringToFront":"Přenést do popředí","sendBackward":"Přenést dál","delete":"Smazat","copyStyles":"Kopírovat styly","pasteStyles":"Vložit styly","stroke":"Obrys","background":"Pozadí","fill":"Výplň","strokeWidth":"Tloušťka tahu","strokeStyle":"Styl tahu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čárkovaný","strokeStyle_dotted":"Tečkovaný","sloppiness":"Stylizace","opacity":"Průhlednost","textAlign":"Zarovnání textu","edges":"Hrany","sharp":"Ostré","round":"Zaoblené","arrowheads":"Styl šipky","arrowhead_none":"Žádný","arrowhead_arrow":"Šipka","arrowhead_bar":"Kóta","arrowhead_dot":"Tečka","arrowhead_triangle":"Trojúhelník","fontSize":"Velikost písma","fontFamily":"Písmo","addWatermark":"Přidat \\"Vyrobeno s Excalidraw\\"","handDrawn":"Od ruky","normal":"Normální","code":"Kód","small":"Malé","medium":"Střední","large":"Velké","veryLarge":"Velmi velké","solid":"Plný","hachure":"Hachure","zigzag":"Klikatě","crossHatch":"Křížový šrafování","thin":"Tenký","bold":"Tlustý","left":"Vlevo","center":"Na střed","right":"Vpravo","extraBold":"Extra tlustý","architect":"Architekt","artist":"Umělec","cartoonist":"Kartoonista","fileTitle":"Název souboru","colorPicker":"Výběr barvy","canvasColors":"Použito na plátně","canvasBackground":"Pozadí plátna","drawingCanvas":"Kreslicí plátno","layers":"Vrstvy","actions":"Akce","language":"Jazyk","liveCollaboration":"Živá spolupráce...","duplicateSelection":"Duplikovat","untitled":"Bez názvu","name":"Název","yourName":"Vaše jméno","madeWithExcalidraw":"Vytvořeno v Excalidraw","group":"Sloučit výběr do skupiny","ungroup":"Zrušit sloučení skupiny","collaborators":"Spolupracovníci","showGrid":"Zobrazit mřížku","addToLibrary":"Přidat do knihovny","removeFromLibrary":"Odebrat z knihovny","libraryLoadingMessage":"Načítání knihovny…","libraries":"Procházet knihovny","loadingScene":"Načítání scény…","align":"Zarovnání","alignTop":"Zarovnat nahoru","alignBottom":"Zarovnat dolů","alignLeft":"Zarovnat vlevo","alignRight":"Zarovnejte vpravo","centerVertically":"Vycentrovat svisle","centerHorizontally":"Vycentrovat vodorovně","distributeHorizontally":"Rozložit horizontálně","distributeVertically":"Rozložit svisle","flipHorizontal":"Převrátit vodorovně","flipVertical":"Převrátit svisle","viewMode":"Náhled","share":"Sdílet","showStroke":"Zobrazit výběr barvy","showBackground":"Zobrazit výběr barev pozadí","toggleTheme":"Přepnout tmavý řežim","personalLib":"Osobní knihovna","excalidrawLib":"Exkalidraw knihovna","decreaseFontSize":"Zmenšit písmo","increaseFontSize":"Zvětšit písmo","unbindText":"Zrušit vazbu textu","bindText":"Vázat text s kontejnerem","createContainerFromText":"Zabalit text do kontejneru","link":{"edit":"Upravit odkaz","editEmbed":"","create":"Vytvořit odkaz","createEmbed":"","label":"Odkaz","labelEmbed":"","empty":""},"lineEditor":{"edit":"Upravit čáru","exit":"Ukončit editor řádků"},"elementLock":{"lock":"Uzamknout","unlock":"Odemknout","lockAll":"Uzamknout vše","unlockAll":"Odemknout vše"},"statusPublished":"Zveřejněno","sidebarLock":"Ponechat postranní panel otevřený","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Vyberte barvu z plátna"},"library":{"noItems":"Dosud neexistují žádné položky...","hint_emptyLibrary":"Vyberte položku na plátně a přidejte ji sem nebo nainstalujte knihovnu z veřejného úložiště níže.","hint_emptyPrivateLibrary":"Vyberte položku na plátně a přidejte ji sem."},"buttons":{"clearReset":"Resetovat plátno","exportJSON":"Exportovat do souboru","exportImage":"Exportovat obrázek...","export":"Uložit jako...","copyToClipboard":"Kopírovat do schránky","save":"Uložit do aktuálního souboru","saveAs":"Uložit jako","load":"Otevřít","getShareableLink":"Získat odkaz pro sdílení","close":"Zavřít","selectLanguage":"Zvolit jazyk","scrollBackToContent":"Přejít zpět na obsah","zoomIn":"Přiblížit","zoomOut":"Oddálit","resetZoom":"Resetovat přiblížení","menu":"Menu","done":"Hotovo","edit":"Upravit","undo":"Zpět","redo":"Znovu","resetLibrary":"Obnovit knihovnu","createNewRoom":"Vytvořit novou místnost","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Světlý režim","zenMode":"Zen mód","objectsSnapMode":"","exitZenMode":"Opustit zen mód","cancel":"Zrušit","clear":"Vyčistit","remove":"Odstranit","embed":"","publishLibrary":"Zveřejnit","submit":"Odeslat","confirm":"Potvrdit","embeddableInteractionButton":""},"alerts":{"clearReset":"Toto vymaže celé plátno. Jste si jisti?","couldNotCreateShareableLink":"Nepodařilo se vytvořit sdílitelný odkaz.","couldNotCreateShareableLinkTooBig":"Nepodařilo se vytvořit sdílený odkaz: scéna je příliš velká","couldNotLoadInvalidFile":"Nepodařilo se načíst neplatný soubor","importBackendFailed":"Import z backendu se nezdařil.","cannotExportEmptyCanvas":"Nelze exportovat prázdné plátno.","couldNotCopyToClipboard":"Nelze zkopírovat do schránky.","decryptFailed":"Nelze dešifrovat data.","uploadedSecurly":"Nahrávání je zabezpečeno koncovým šifrováním, což znamená, že server Excalidraw ani třetí strany nemohou obsah přečíst.","loadSceneOverridePrompt":"Načítání externího výkresu nahradí váš existující obsah. Přejete si pokračovat?","collabStopOverridePrompt":"Zastavení relace přepíše vaše předchozí, lokálně uložené kresby. Jste si jisti?\\n\\n(Pokud chcete zachovat místní kresbu, jednoduše zavřete kartu prohlížeče)","errorAddingToLibrary":"Položku nelze přidat do knihovny","errorRemovingFromLibrary":"Položku nelze odstranit z knihovny","confirmAddLibrary":"Tímto přidáte {{numShapes}} tvarů do tvé knihovny. Jste si jisti?","imageDoesNotContainScene":"Zdá se, že tento obrázek neobsahuje žádná data o scéně. Zapnuli jste při exportu vkládání scény?","cannotRestoreFromImage":"Scénu nelze obnovit z tohoto souboru obrázku","invalidSceneUrl":"Nelze importovat scénu z zadané URL. Je buď poškozená, nebo neobsahuje platná JSON data Excalidraw.","resetLibrary":"Tímto vymažete vaši knihovnu. Jste si jisti?","removeItemsFromsLibrary":"Smazat {{count}} položek z knihovny?","invalidEncryptionKey":"Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.","collabOfflineWarning":"Není k dispozici žádné internetové připojení.\\nVaše změny nebudou uloženy!"},"errors":{"unsupportedFileType":"Nepodporovaný typ souboru.","imageInsertError":"Nelze vložit obrázek. Zkuste to později...","fileTooBig":"Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.","svgImageInsertError":"Nelze vložit SVG obrázek. Značení SVG je neplatné.","failedToFetchImage":"","invalidSVGString":"Neplatný SVG.","cannotResolveCollabServer":"Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.","importLibraryError":"Nelze načíst knihovnu","collabSaveFailed":"Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","collabSaveFailed_sizeExceeded":"Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","brave_measure_text_error":{"line1":"Vypadá to, že používáte Brave prohlížeč s povoleným nastavením Aggressively Block Fingerprinting.","line2":"To by mohlo vést k narušení Textových elementů ve vašich výkresech.","line3":"Důrazně doporučujeme zakázat toto nastavení. Můžete sledovat tyto kroky jak to udělat.","line4":"Pokud vypnutí tohoto nastavení neopravuje zobrazení textových prvků, prosím, otevřete problém na našem GitHubu, nebo nám napište na Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Výběr","image":"Vložit obrázek","rectangle":"Obdélník","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šipka","line":"Čára","freedraw":"Kreslení","text":"Text","library":"Knihovna","lock":"Po kreslení ponechat vybraný nástroj aktivní","penMode":"Režim Pera - zabránit dotyku","link":"Přidat/aktualizovat odkaz pro vybraný tvar","eraser":"Guma","frame":"","embeddable":"","laser":"","hand":"Ruka (nástroj pro posouvání)","extraTools":""},"headings":{"canvasActions":"Akce plátna","selectedShapeActions":"Akce vybraného tvaru","shapes":"Tvary"},"hints":{"canvasPanning":"Chcete-li přesunout plátno, podržte kolečko nebo mezerník při tažení nebo použijte nástroj Ruka","linearElement":"Kliknutím pro více bodů, táhnutím pro jednu čáru","freeDraw":"Klikněte a táhněte, pro ukončení pusťte","text":"Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr","embeddable":"","text_selected":"Dvojklikem nebo stisknutím klávesy ENTER upravíte text","text_editing":"Stiskněte Escape nebo Ctrl/Cmd+ENTER pro dokončení úprav","linearElementMulti":"Klikněte na poslední bod nebo stiskněte Escape anebo Enter pro dokončení","lockAngle":"Úhel můžete omezit podržením SHIFT","resize":"Můžete omezit proporce podržením SHIFT při změně velikosti,\\npodržte ALT pro změnu velikosti od středu","resizeImage":"Můžete volně změnit velikost podržením SHIFT,\\npodržením klávesy ALT změníte velikosti od středu","rotate":"Úhly můžete omezit podržením SHIFT při otáčení","lineEditor_info":"Podržte Ctrl/Cmd a dvakrát klikněte nebo stiskněte Ctrl/Cmd + Enter pro úpravu bodů","lineEditor_pointSelected":"Stisknutím tlačítka Delete odstraňte bod(y),\\nCtrl/Cmd+D pro duplicitu nebo táhnutím pro přesun","lineEditor_nothingSelected":"Vyberte bod, který chcete upravit (podržením klávesy SHIFT vyberete více položek),\\nnebo podržením klávesy Alt a kliknutím přidáte nové body","placeImage":"Kliknutím umístěte obrázek, nebo klepnutím a přetažením ručně nastavíte jeho velikost","publishLibrary":"Publikovat vlastní knihovnu","bindTextToElement":"Stiskněte Enter pro přidání textu","deepBoxSelect":"Podržte Ctrl/Cmd pro hluboký výběr a pro zabránění táhnutí","eraserRevert":"Podržením klávesy Alt vrátíte prvky označené pro smazání","firefox_clipboard_write":"Tato funkce může být povolena nastavením vlajky \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Náhled nelze zobrazit","canvasTooBig":"Plátno je možná příliš velké.","canvasTooBigTip":"Tip: zkus posunout nejvzdálenější prvky trochu blíže k sobě."},"errorSplash":{"headingMain":"Chyba. Zkuste .","clearCanvasMessage":"Pokud opětovné načtení nefunguje, zkuste .","clearCanvasCaveat":" To povede ke ztrátě dat ","trackedToSentry":"Chyba identifikátoru {{eventId}} byl zaznamenán v našem systému.","openIssueMessage":"Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem . Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Můžete pozvat lidi na vaši aktuální scénu ke spolupráci s vámi.","desc_privacy":"Nebojte se, relace používá end-to-end šifrování, takže cokoliv nakreslíte zůstane soukromé. Ani náš server nebude schopen vidět, s čím budete pracovat.","button_startSession":"Zahájit relaci","button_stopSession":"Ukončit relaci","desc_inProgressIntro":"Živá spolupráce právě probíhá.","desc_shareLink":"Sdílejte tento odkaz s každým, s kým chcete spolupracovat:","desc_exitSession":"Zastavením relace se odpojíte od místnosti, ale budete moci pokračovat v práci s touto scénou lokálně. Všimněte si, že to nebude mít vliv na ostatní lidi a budou stále moci spolupracovat na jejich verzi.","shareTitle":"Připojte se k aktivní spolupráci na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložit na disk","disk_details":"Exportovat data scény do souboru, ze kterého můžete importovat později.","disk_button":"Uložit do souboru","link_title":"Odkaz pro sdílení","link_details":"Exportovat jako odkaz pouze pro čtení.","link_button":"Exportovat do odkazu","excalidrawplus_description":"Uložit scénu do vašeho pracovního prostoru Excalidraw+.","excalidrawplus_button":"Exportovat","excalidrawplus_exportError":"Export do Excalidraw+ se v tuto chvíli nezdařil..."},"helpDialog":{"blog":"Přečtěte si náš blog","click":"kliknutí","deepSelect":"Hluboký výběr","deepBoxSelect":"Hluboký výběr uvnitř boxu a zabránění táhnnutí","curvedArrow":"Zakřivená šipka","curvedLine":"Zakřivená čára","documentation":"Dokumentace","doubleClick":"dvojklik","drag":"tažení","editor":"Editor","editLineArrowPoints":"Upravit body linií/šipek","editText":"Upravit text / přidat popis","github":"Našel jsi problém? Nahlaš ho","howto":"Sledujte naše návody","or":"nebo","preventBinding":"Zabránit vázání šipky","tools":"Nástroje","shortcuts":"Klávesové zkratky","textFinish":"Dokončit úpravy (textový editor)","textNewLine":"Přidat nový řádek (textový editor)","title":"Nápověda","view":"Zobrazení","zoomToFit":"Přiblížit na zobrazení všech prvků","zoomToSelection":"Přiblížit na výběr","toggleElementLock":"Zamknout/odemknout výběr","movePageUpDown":"Posunout stránku nahoru/dolů","movePageLeftRight":"Přesunout stránku doleva/doprava"},"clearCanvasDialog":{"title":"Vymazat plátno"},"publishDialog":{"title":"Publikovat knihovnu","itemName":"Název položky","authorName":"Jméno autora","githubUsername":"GitHub uživatelské jméno","twitterUsername":"Twitter uživatelské jméno","libraryName":"Název knihovny","libraryDesc":"Popis knihovny","website":"Webová stránka","placeholder":{"authorName":"Jméno nebo uživatelské jméno","libraryName":"Název vaší knihovny","libraryDesc":"Popis Vaší knihovny, který pomůže lidem pochopit její využití","githubHandle":"Github uživatelské jméno (nepovinné), abyste mohli upravovat knihovnu poté co je odeslána ke kontrole","twitterHandle":"Twitter uživatelské jméno (nepovinné), abychom věděli koho označit při propagaci na Twitteru","website":"Odkaz na Vaši osobní webovou stránku nebo jinam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadejte platnou URL adresu"},"noteDescription":"Odešlete svou knihovnu, pro zařazení do veřejného úložiště knihoven, odkud ji budou moci při kreslení využít i ostatní uživatelé.","noteGuidelines":"Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím pokyny","noteLicense":"Odesláním souhlasíte s tím, že knihovna bude zveřejněna pod MIT licencí, stručně řečeno, kdokoli ji může používat bez omezení.","noteItems":"Každá položka knihovny musí mít svůj vlastní název, aby byla filtrovatelná. Následující položky knihovny budou zahrnuty:","atleastOneLibItem":"Vyberte alespoň jednu položku knihovny, kterou chcete začít","republishWarning":"Poznámka: některé z vybraných položek jsou označeny jako již zveřejněné/odeslané. Položky byste měli znovu odeslat pouze při aktualizaci existující knihovny nebo podání."},"publishSuccessDialog":{"title":"Knihovna byla odeslána","content":"Děkujeme vám {{authorName}}. Vaše knihovna byla odeslána k posouzení. Stav můžete sledovat zde"},"confirmDialog":{"resetLibrary":"Resetovat knihovnu","removeItemsFromLib":"Odstranit vybrané položky z knihovny"},"imageExportDialog":{"header":"Exportovat obrázek","label":{"withBackground":"Pozadí","onlySelected":"Pouze vybrané","darkMode":"Tmavý režim","embedScene":"Vložit scénu","scale":"Měřítko","padding":"Odsazení"},"tooltip":{"embedScene":"Data scény budou uložena do exportovaného souboru PNG/SVG tak, aby z něj mohla být scéna obnovena.\\nZvýší se velikost exportovaného souboru."},"title":{"exportToPng":"Exportovat do PNG","exportToSvg":"Exportovat do SVG","copyPngToClipboard":"Kopírovat PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovat do schránky"}},"encrypted":{"tooltip":"Vaše kresby jsou end-to-end šifrované, takže servery Excalidraw je nikdy neuvidí.","link":"Blog příspěvek na end-to-end šifrování v Excalidraw"},"stats":{"angle":"Úhel","element":"Prvek","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybráno","storage":"Úložiště","title":"Statistika pro nerdy","total":"Celkem","version":"Verze","versionCopy":"Kliknutím zkopírujete","versionNotAvailable":"Verze není k dispozici","width":"Šířka"},"toast":{"addedToLibrary":"Přidáno do knihovny","copyStyles":"Styly byly zkopírovány.","copyToClipboard":"Zkopírováno do schránky.","copyToClipboardAsPng":"{{exportSelection}} zkopírován do schránky jako PNG\\n({{exportColorScheme}})","fileSaved":"Soubor byl uložen.","fileSavedToFilename":"Uloženo do {filename}","canvas":"plátno","selection":"výběr","pasteAsSingleElement":"Pomocí {{shortcut}} vložte jako jeden prvek,\\nnebo vložte do existujícího textového editoru","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Průhledná","black":"Černá","white":"Bílá","red":"Červená","pink":"Růžová","grape":"Vínová","violet":"Fialová","gray":"Šedá","blue":"Modrá","cyan":"Azurová","teal":"Modrozelená","green":"Zelená","yellow":"Žlutá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všechna vaše data jsou uložena lokálně ve vašem prohlížeči.","center_heading_plus":"Chcete místo toho přejít na Excalidraw+?","menuHint":"Export, nastavení, jazyky, ..."},"defaults":{"menuHint":"Export, nastavení a další...","center_heading":"Diagramy. Vytvořeny. Jednoduše.","toolbarHint":"Vyberte nástroj a začněte kreslit!","helpHint":"Zkratky a pomoc"}},"colorPicker":{"mostUsedCustomColors":"Nejpoužívanější vlastní barvy","colors":"Barvy","shades":"Stíny","hexCode":"Hex kód","noShades":"Pro tuto barvu nejsou k dispozici žádné odstíny"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js b/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js new file mode 100644 index 0000000..3eeba35 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1790],{2392:function(e){e.exports=JSON.parse('{"labels":{"paste":"Indsæt","pasteAsPlaintext":"Indsæt som klartekst","pasteCharts":"Indsæt diagrammer","selectAll":"Marker alle","multiSelect":"Tilføj element til markering","moveCanvas":"Flyt lærred","cut":"Klip","copy":"Kopier","copyAsPng":"Kopier til klippebord som PNG","copyAsSvg":"Kopier til klippebord som SVG","copyText":"Kopiér til udklipsholder som tekst","bringForward":"Flyt fremad","sendToBack":"Placer bagest","bringToFront":"Placer forrest","sendBackward":"Send bagud","delete":"Fjern","copyStyles":"Kopier stil","pasteStyles":"Indsæt stil","stroke":"Linje","background":"Baggrund","fill":"Udfyld","strokeWidth":"Linjebredde","strokeStyle":"Linjeform","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Sjuskethed","opacity":"Gennemsigtighed","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilehoveder","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Bjælke","arrowhead_dot":"Prik","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Skrifttypefamilie","addWatermark":"Tilføj \\"Lavet med Excalidraw\\"","handDrawn":"Hånd-tegnet","normal":"Normal","code":"Kode","small":"Lille","medium":"Mellem","large":"Stor","veryLarge":"Meget stor","solid":"Solid","hachure":"Skravering","zigzag":"Zigzag","crossHatch":"Krydsskravering","thin":"Tynd","bold":"Fed","left":"Venstre","center":"Centrere","right":"Højre","extraBold":"Extra fed","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegneserietegner","fileTitle":"Filnavn","colorPicker":"Farvevælger","canvasColors":"Brugt på lærred","canvasBackground":"Lærredsbaggrund","drawingCanvas":"Tegnelærred","layers":"Lag","actions":"Handlinger","language":"Sprog","liveCollaboration":"Live samarbejde...","duplicateSelection":"Duplikér","untitled":"Unavngivet","name":"Navn","yourName":"Dit navn","madeWithExcalidraw":"Fremstillet med Excalidraw","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"Del","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"Kopier til klippebord","save":"","saveAs":"Gem som","load":"","getShareableLink":"Lav et delbart link","close":"Luk","selectLanguage":"Vælg sprog","scrollBackToContent":"Scroll tilbage til indhold","zoomIn":"Zoom ind","zoomOut":"Zoom ud","resetZoom":"Nulstil zoom","menu":"Menu","done":"Færdig","edit":"Rediger","undo":"Fortryd","redo":"Gendan","resetLibrary":"Nulstil bibliotek","createNewRoom":"Opret nyt rum","fullScreen":"Fuld skærm","darkMode":"Mørk tilstand","lightMode":"Lys baggrund","zenMode":"Zentilstand","objectsSnapMode":"","exitZenMode":"Stop zentilstand","cancel":"Annuller","clear":"Ryd","remove":"Fjern","embed":"","publishLibrary":"Publicér","submit":"Gem","confirm":"Bekræft","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil rydde hele lærredet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke oprette delbart link.","couldNotCreateShareableLinkTooBig":"Kunne ikke oprette delbart link: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke indlæse ugyldig fil","importBackendFailed":"Import fra backend mislykkedes.","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"Klik og træk, slip når du er færdig","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":" Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.","sceneContent":"Scene indhold:"},"roomDialog":{"desc_intro":"Du kan invitere folk til din nuværende scene, så de kan samarbejde med dig.","desc_privacy":"Bare rolig, sessionen bruger end-to-end kryptering, så uanset hvad du tegner vil det forblive privat. Ikke engang vores server vil kunne se, hvad du kommer op med.","button_startSession":"Start session","button_stopSession":"Stop session","desc_inProgressIntro":"Live-samarbejde session er nu begyndt.","desc_shareLink":"Del dette link med enhver, du ønsker at samarbejde med:","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Fejl"},"exportDialog":{"disk_title":"Gem til disk","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"Læs vores blog","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"Statistik for nørder","total":"","version":"","versionCopy":"Klik for at kopiere","versionNotAvailable":"","width":"Bredde"},"toast":{"addedToLibrary":"","copyStyles":"Kopieret stilarter.","copyToClipboard":"Kopieret til klippebord.","copyToClipboardAsPng":"Kopieret {{exportSelection}} til klippebord som PNG\\n({{exportColorScheme}})","fileSaved":"Fil gemt.","fileSavedToFilename":"Gemt som {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js b/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js new file mode 100644 index 0000000..5f02009 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3082],{2853:function(e){e.exports=JSON.parse('{"labels":{"paste":"Einfügen","pasteAsPlaintext":"Als reinen Text einfügen","pasteCharts":"Diagramme einfügen","selectAll":"Alle auswählen","multiSelect":"Element zur Auswahl hinzufügen","moveCanvas":"Leinwand verschieben","cut":"Ausschneiden","copy":"Kopieren","copyAsPng":"In Zwischenablage kopieren (PNG)","copyAsSvg":"In Zwischenablage kopieren (SVG)","copyText":"In die Zwischenablage als Text kopieren","bringForward":"Nach vorne","sendToBack":"In den Hintergrund","bringToFront":"In den Vordergrund","sendBackward":"Nach hinten","delete":"Löschen","copyStyles":"Formatierung kopieren","pasteStyles":"Formatierung übernehmen","stroke":"Strich","background":"Hintergrund","fill":"Füllung","strokeWidth":"Strichstärke","strokeStyle":"Konturstil","strokeStyle_solid":"Durchgezogen","strokeStyle_dashed":"Gestrichelt","strokeStyle_dotted":"Gepunktet","sloppiness":"Sauberkeit","opacity":"Deckkraft","textAlign":"Textausrichtung","edges":"Kanten","sharp":"Scharf","round":"Rund","arrowheads":"Pfeilspitzen","arrowhead_none":"Keine","arrowhead_arrow":"Pfeil","arrowhead_bar":"Balken","arrowhead_dot":"Punkt","arrowhead_triangle":"Dreieck","fontSize":"Schriftgröße","fontFamily":"Schriftfamilie","addWatermark":"\\"Made with Excalidraw\\" hinzufügen","handDrawn":"Handgezeichnet","normal":"Normal","code":"Code","small":"Klein","medium":"Mittel","large":"Groß","veryLarge":"Sehr groß","solid":"Deckend","hachure":"Schraffiert","zigzag":"Zickzack","crossHatch":"Kreuzschraffiert","thin":"Dünn","bold":"Fett","left":"Links","center":"Zentriert","right":"Rechts","extraBold":"Extra Fett","architect":"Architekt","artist":"Künstler","cartoonist":"Karikaturist","fileTitle":"Dateiname","colorPicker":"Farbauswähler","canvasColors":"Auf Leinwand verwendet","canvasBackground":"Zeichenflächenhintergrund","drawingCanvas":"Leinwand","layers":"Ebenen","actions":"Aktionen","language":"Sprache","liveCollaboration":"Live-Zusammenarbeit...","duplicateSelection":"Duplizieren","untitled":"Unbenannt","name":"Name","yourName":"Dein Name","madeWithExcalidraw":"Made with Excalidraw","group":"Auswahl gruppieren","ungroup":"Gruppierung aufheben","collaborators":"Mitarbeitende","showGrid":"Raster anzeigen","addToLibrary":"Zur Bibliothek hinzufügen","removeFromLibrary":"Aus Bibliothek entfernen","libraryLoadingMessage":"Lade Bibliothek…","libraries":"Bibliotheken durchsuchen","loadingScene":"Lade Zeichnung…","align":"Ausrichten","alignTop":"Obere Kanten","alignBottom":"Untere Kanten","alignLeft":"Linke Kanten","alignRight":"Rechte Kanten","centerVertically":"Vertikal zentrieren","centerHorizontally":"Horizontal zentrieren","distributeHorizontally":"Horizontal verteilen","distributeVertically":"Vertikal verteilen","flipHorizontal":"Horizontal spiegeln","flipVertical":"Vertikal spiegeln","viewMode":"Ansichtsmodus","share":"Teilen","showStroke":"Auswahl für Strichfarbe anzeigen","showBackground":"Hintergrundfarbe auswählen","toggleTheme":"Design umschalten","personalLib":"Persönliche Bibliothek","excalidrawLib":"Excalidraw Bibliothek","decreaseFontSize":"Schriftgröße verkleinern","increaseFontSize":"Schrift vergrößern","unbindText":"Text lösen","bindText":"Text an Container binden","createContainerFromText":"Text in Container einbetten","link":{"edit":"Link bearbeiten","editEmbed":"Link bearbeiten & einbetten","create":"Link erstellen","createEmbed":"Link erstellen & einbetten","label":"Link","labelEmbed":"Verlinken & einbetten","empty":"Kein Link festgelegt"},"lineEditor":{"edit":"Linie bearbeiten","exit":"Linieneditor verlassen"},"elementLock":{"lock":"Sperren","unlock":"Entsperren","lockAll":"Alle sperren","unlockAll":"Alle entsperren"},"statusPublished":"Veröffentlicht","sidebarLock":"Seitenleiste offen lassen","selectAllElementsInFrame":"Alle Elemente im Rahmen auswählen","removeAllElementsFromFrame":"Alle Elemente aus dem Rahmen entfernen","eyeDropper":"Farbe von der Zeichenfläche auswählen"},"library":{"noItems":"Noch keine Elemente hinzugefügt...","hint_emptyLibrary":"Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.","hint_emptyPrivateLibrary":"Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen."},"buttons":{"clearReset":"Zeichenfläche löschen & Hintergrundfarbe zurücksetzen","exportJSON":"In Datei exportieren","exportImage":"Exportiere Bild...","export":"Speichern als...","copyToClipboard":"In Zwischenablage kopieren","save":"In aktueller Datei speichern","saveAs":"Speichern unter","load":"Öffnen","getShareableLink":"Teilbaren Link erhalten","close":"Schließen","selectLanguage":"Sprache auswählen","scrollBackToContent":"Zurück zum Inhalt","zoomIn":"Vergrößern","zoomOut":"Verkleinern","resetZoom":"Zoom zurücksetzen","menu":"Menü","done":"Fertig","edit":"Bearbeiten","undo":"Rückgängig machen","redo":"Wiederholen","resetLibrary":"Bibliothek zurücksetzen","createNewRoom":"Neuen Raum erstellen","fullScreen":"Vollbildanzeige","darkMode":"Dunkles Design","lightMode":"Helles Design","zenMode":"Zen-Modus","objectsSnapMode":"Einrasten an Objekten","exitZenMode":"Zen-Modus verlassen","cancel":"Abbrechen","clear":"Löschen","remove":"Entfernen","embed":"Einbettung umschalten","publishLibrary":"Veröffentlichen","submit":"Absenden","confirm":"Bestätigen","embeddableInteractionButton":"Klicken, um zu interagieren"},"alerts":{"clearReset":"Dies wird die ganze Zeichenfläche löschen. Bist du dir sicher?","couldNotCreateShareableLink":"Konnte keinen teilbaren Link erstellen.","couldNotCreateShareableLinkTooBig":"Konnte keinen teilbaren Link erstellen: Die Zeichnung ist zu groß","couldNotLoadInvalidFile":"Ungültige Datei konnte nicht geladen werden","importBackendFailed":"Import vom Server ist fehlgeschlagen.","cannotExportEmptyCanvas":"Leere Zeichenfläche kann nicht exportiert werden.","couldNotCopyToClipboard":"Kopieren in die Zwischenablage fehlgeschlagen.","decryptFailed":"Daten konnten nicht entschlüsselt werden.","uploadedSecurly":"Der Upload wurde mit Ende-zu-Ende-Verschlüsselung gespeichert. Weder Excalidraw noch Dritte können den Inhalt einsehen.","loadSceneOverridePrompt":"Das Laden einer externen Zeichnung ersetzt den vorhandenen Inhalt. Möchtest du fortfahren?","collabStopOverridePrompt":"Das Stoppen der Sitzung wird deine vorherige, lokal gespeicherte Zeichnung überschreiben. Bist du dir sicher?\\n\\n(Wenn du deine lokale Zeichnung behalten möchtest, schließe stattdessen den Browser-Tab.)","errorAddingToLibrary":"Das Element konnte nicht zur Bibliothek hinzugefügt werden","errorRemovingFromLibrary":"Das Element konnte nicht aus der Bibliothek entfernt werden","confirmAddLibrary":"Dies fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du dir sicher?","imageDoesNotContainScene":"Dieses Bild scheint keine Szenendaten zu enthalten. Hast Du das Einbetten der Szene während des Exports aktiviert?","cannotRestoreFromImage":"Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden","invalidSceneUrl":"Die Szene konnte nicht von der angegebenen URL importiert werden. Sie ist entweder fehlerhaft oder enthält keine gültigen Excalidraw JSON-Daten.","resetLibrary":"Dieses löscht deine Bibliothek. Bist du sicher?","removeItemsFromsLibrary":"{{count}} Element(e) aus der Bibliothek löschen?","invalidEncryptionKey":"Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.","collabOfflineWarning":"Keine Internetverbindung verfügbar.\\nDeine Änderungen werden nicht gespeichert!"},"errors":{"unsupportedFileType":"Nicht unterstützter Dateityp.","imageInsertError":"Das Bild konnte nicht eingefügt werden. Versuche es später erneut...","fileTooBig":"Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.","svgImageInsertError":"SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.","failedToFetchImage":"Bild konnte nicht abgerufen werden.","invalidSVGString":"Ungültige SVG.","cannotResolveCollabServer":"Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.","importLibraryError":"Bibliothek konnte nicht geladen werden","collabSaveFailed":"Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","collabSaveFailed_sizeExceeded":"Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","brave_measure_text_error":{"line1":"Sieht so aus, als ob Du den Brave-Browser verwendest und die aggressive Blockierung von Fingerabdrücken aktiviert hast.","line2":"Dies könnte dazu führen, dass die Textelemente in Ihren Zeichnungen zerstört werden.","line3":"Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du diesen Schritten folgen.","line4":"Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein Ticket auf unserem GitHub oder schreibe uns auf Discord"},"libraryElementTypeError":{"embeddable":"Einbettbare Elemente können der Bibliothek nicht hinzugefügt werden.","image":"Unterstützung für das Hinzufügen von Bildern in die Bibliothek kommt bald!"}},"toolBar":{"selection":"Auswahl","image":"Bild einfügen","rectangle":"Rechteck","diamond":"Raute","ellipse":"Ellipse","arrow":"Pfeil","line":"Linie","freedraw":"Zeichnen","text":"Text","library":"Bibliothek","lock":"Ausgewähltes Werkzeug nach Zeichnen aktiv lassen","penMode":"Stift-Modus - Berührung verhindern","link":"Link für ausgewählte Form hinzufügen / aktualisieren","eraser":"Radierer","frame":"Rahmenwerkzeug","embeddable":"Web-Einbettung","laser":"Laserpointer","hand":"Hand (Schwenkwerkzeug)","extraTools":"Weitere Werkzeuge"},"headings":{"canvasActions":"Aktionen für Zeichenfläche","selectedShapeActions":"Aktionen für Auswahl","shapes":"Formen"},"hints":{"canvasPanning":"Um die Zeichenfläche zu verschieben, halte das Mausrad oder die Leertaste während des Ziehens, oder verwende das Hand-Werkzeug","linearElement":"Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie","freeDraw":"Klicke und ziehe. Lass los, wenn du fertig bist","text":"Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst","embeddable":"Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen","text_selected":"Doppelklicken oder Eingabetaste drücken, um Text zu bearbeiten","text_editing":"Drücke Escape oder CtrlOrCmd+Eingabetaste, um die Bearbeitung abzuschließen","linearElementMulti":"Zum Beenden auf den letzten Punkt klicken oder Escape oder Eingabe drücken","lockAngle":"Du kannst Winkel einschränken, indem du SHIFT gedrückt hältst","resize":"Du kannst die Proportionen einschränken, indem du SHIFT während der Größenänderung gedrückt hältst. Halte ALT gedrückt, um die Größe vom Zentrum aus zu ändern","resizeImage":"Du kannst die Größe frei ändern, indem du SHIFT gedrückt hältst; halte ALT, um die Größe vom Zentrum aus zu ändern","rotate":"Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst","lineEditor_info":"CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten","lineEditor_pointSelected":"Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben","lineEditor_nothingSelected":"Wähle einen zu bearbeitenden Punkt (halte SHIFT gedrückt um mehrere Punkte auszuwählen),\\noder halte Alt gedrückt und klicke um neue Punkte hinzuzufügen","placeImage":"Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen","publishLibrary":"Veröffentliche deine eigene Bibliothek","bindTextToElement":"Zum Hinzufügen Eingabetaste drücken","deepBoxSelect":"Halte CtrlOrCmd gedrückt, um innerhalb der Gruppe auszuwählen, und um Ziehen zu vermeiden","eraserRevert":"Halte Alt gedrückt, um die zum Löschen markierten Elemente zurückzusetzen","firefox_clipboard_write":"Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \\"dom.events.asyncClipboard.clipboardItem\\" auf \\"true\\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \\"about:config\\".","disableSnapping":"Halte CtrlOrCmd gedrückt, um das Einrasten zu deaktivieren"},"canvasError":{"cannotShowPreview":"Vorschau kann nicht angezeigt werden","canvasTooBig":"Die Leinwand ist möglicherweise zu groß.","canvasTooBigTip":"Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen."},"errorSplash":{"headingMain":"Es ist ein Fehler aufgetreten. Versuche ","clearCanvasMessage":"Wenn das Neuladen nicht funktioniert, versuche ","clearCanvasCaveat":" Dies wird zum Verlust von Daten führen ","trackedToSentry":"Der Fehler mit der Kennung {{eventId}} wurde in unserem System registriert.","openIssueMessage":"Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren . Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).","sceneContent":"Zeichnungsinhalt:"},"roomDialog":{"desc_intro":"Du kannst Leute zu deiner aktuellen Zeichnung einladen um mit ihnen zusammenzuarbeiten.","desc_privacy":"Keine Sorge, die Sitzung nutzt eine Ende-zu-Ende-Verschlüsselung. Alles was du zeichnest, bleibt privat. Auch unser Server sieht nicht, was du dir einfallen lässt.","button_startSession":"Sitzung starten","button_stopSession":"Sitzung beenden","desc_inProgressIntro":"Die Live-Sitzung wird nun ausgeführt.","desc_shareLink":"Teile diesen Link mit allen, mit denen du zusammenarbeiten möchtest:","desc_exitSession":"Wenn du die Sitzung beendest, wird deine Verbindung zum Raum getrennt. Du kannst jedoch lokal weiter an der Zeichnung arbeiten. Beachte, dass dies keine Auswirkungen auf andere hat und diese weiterhin gemeinsam an ihrer Version arbeiten können.","shareTitle":"An einer Live-Kollaborationssitzung auf Excalidraw teilnehmen"},"errorDialog":{"title":"Fehler"},"exportDialog":{"disk_title":"Auf Festplatte speichern","disk_details":"Exportiere die Zeichnungsdaten in eine Datei, die Du später importieren kannst.","disk_button":"Als Datei speichern","link_title":"Teilbarer Link","link_details":"Als schreibgeschützten Link exportieren.","link_button":"Als Link exportieren","excalidrawplus_description":"Speichere die Szene in deinem Excalidraw+ Arbeitsbereich.","excalidrawplus_button":"Exportieren","excalidrawplus_exportError":"Konnte nicht nach Excalidraw+ exportieren..."},"helpDialog":{"blog":"Lies unseren Blog","click":"klicken","deepSelect":"Auswahl innerhalb der Gruppe","deepBoxSelect":"Auswahl innerhalb der Gruppe, und Ziehen vermeiden","curvedArrow":"Gebogener Pfeil","curvedLine":"Gebogene Linie","documentation":"Dokumentation","doubleClick":"doppelklicken","drag":"ziehen","editor":"Editor","editLineArrowPoints":"Linien-/Pfeil-Punkte bearbeiten","editText":"Text bearbeiten / Label hinzufügen","github":"Ein Problem gefunden? Informiere uns","howto":"Folge unseren Anleitungen","or":"oder","preventBinding":"Pfeil-Bindung verhindern","tools":"Werkzeuge","shortcuts":"Tastaturkürzel","textFinish":"Bearbeitung beenden (Texteditor)","textNewLine":"Neue Zeile hinzufügen (Texteditor)","title":"Hilfe","view":"Ansicht","zoomToFit":"Zoomen um alle Elemente einzupassen","zoomToSelection":"Auf Auswahl zoomen","toggleElementLock":"Auswahl sperren/entsperren","movePageUpDown":"Seite nach oben/unten verschieben","movePageLeftRight":"Seite nach links/rechts verschieben"},"clearCanvasDialog":{"title":"Zeichenfläche löschen"},"publishDialog":{"title":"Bibliothek veröffentlichen","itemName":"Elementname","authorName":"Name des Autors","githubUsername":"GitHub-Benutzername","twitterUsername":"Twitter-Benutzername","libraryName":"Name der Bibliothek","libraryDesc":"Beschreibung der Bibliothek","website":"Webseite","placeholder":{"authorName":"Dein Name oder Benutzername","libraryName":"Name deiner Bibliothek","libraryDesc":"Beschreibung deiner Bibliothek, um anderen Nutzern bei der Verwendung zu helfen","githubHandle":"GitHub-Handle (optional), damit du die Bibliothek bearbeiten kannst, wenn sie zur Überprüfung eingereicht wurde","twitterHandle":"Twitter-Benutzername (optional), damit wir wissen, wen wir bei Werbung über Twitter nennen können","website":"Link zu deiner persönlichen Webseite oder zu anderer Seite (optional)"},"errors":{"required":"Erforderlich","website":"Gültige URL eingeben"},"noteDescription":"Sende deine Bibliothek ein, um in die öffentliche Bibliotheks-Repository aufgenommen zu werdendamit andere Nutzer sie in ihren Zeichnungen verwenden können.","noteGuidelines":"Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die Richtlinien vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich.","noteLicense":"Mit dem Absenden stimmst du zu, dass die Bibliothek unter der MIT-Lizenz, die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann.","noteItems":"Jedes Bibliothekselement muss einen eigenen Namen haben, damit es gefiltert werden kann. Die folgenden Bibliothekselemente werden hinzugefügt:","atleastOneLibItem":"Bitte wähle mindestens ein Bibliothekselement aus, um zu beginnen","republishWarning":"Hinweis: Einige der ausgewählten Elemente sind bereits als veröffentlicht/eingereicht markiert. Du solltest Elemente nur erneut einreichen, wenn Du eine existierende Bibliothek oder Einreichung aktualisierst."},"publishSuccessDialog":{"title":"Bibliothek übermittelt","content":"Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgenhier"},"confirmDialog":{"resetLibrary":"Bibliothek zurücksetzen","removeItemsFromLib":"Ausgewählte Elemente aus der Bibliothek entfernen"},"imageExportDialog":{"header":"Bild exportieren","label":{"withBackground":"Hintergrund","onlySelected":"Nur ausgewählte","darkMode":"Dunkler Modus","embedScene":"Szene einbetten","scale":"Skalierung","padding":"Abstand"},"tooltip":{"embedScene":"Die Zeichnungsdaten werden in der exportierten PNG/SVG-Datei gespeichert, sodass das Dokument später weiter bearbeitet werden kann. \\nDieses wird die exportierte Datei vergrößern."},"title":{"exportToPng":"Als PNG exportieren","exportToSvg":"Als SVG exportieren","copyPngToClipboard":"PNG in die Zwischenablage kopieren"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"In Zwischenablage kopieren"}},"encrypted":{"tooltip":"Da deine Zeichnungen Ende-zu-Ende verschlüsselt werden, sehen auch unsere Excalidraw-Server sie niemals.","link":"Blogbeitrag über Ende-zu-Ende-Verschlüsselung in Excalidraw"},"stats":{"angle":"Winkel","element":"Element","elements":"Elemente","height":"Höhe","scene":"Zeichnung","selected":"Ausgewählt","storage":"Speicher","title":"Statistiken für Nerds","total":"Gesamt","version":"Version","versionCopy":"Zum Kopieren klicken","versionNotAvailable":"Version nicht verfügbar","width":"Breite"},"toast":{"addedToLibrary":"Zur Bibliothek hinzugefügt","copyStyles":"Formatierungen kopiert.","copyToClipboard":"In die Zwischenablage kopiert.","copyToClipboardAsPng":"{{exportSelection}} als PNG in die Zwischenablage kopiert\\n({{exportColorScheme}})","fileSaved":"Datei gespeichert.","fileSavedToFilename":"Als {filename} gespeichert","canvas":"Zeichenfläche","selection":"Auswahl","pasteAsSingleElement":"Verwende {{shortcut}} , um als einzelnes Element\\neinzufügen oder in einen existierenden Texteditor einzufügen","unableToEmbed":"Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen","unrecognizedLinkFormat":"Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den \'embed\' String einzufügen, der von der Quellseite zur Verfügung gestellt wird"},"colors":{"transparent":"Transparent","black":"Schwarz","white":"Weiß","red":"Rot","pink":"Pink","grape":"Traube","violet":"Violett","gray":"Grau","blue":"Blau","cyan":"Cyan","teal":"Blaugrün","green":"Grün","yellow":"Gelb","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Alle Daten werden lokal in Deinem Browser gespeichert.","center_heading_plus":"Möchtest du stattdessen zu Excalidraw+ gehen?","menuHint":"Exportieren, Einstellungen, Sprachen, ..."},"defaults":{"menuHint":"Exportieren, Einstellungen und mehr...","center_heading":"Diagramme. Einfach. Gemacht.","toolbarHint":"Wähle ein Werkzeug & beginne zu zeichnen!","helpHint":"Kurzbefehle & Hilfe"}},"colorPicker":{"mostUsedCustomColors":"Beliebteste benutzerdefinierte Farben","colors":"Farben","shades":"Schattierungen","hexCode":"Hex-Code","noShades":"Keine Schattierungen für diese Farbe verfügbar"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Als Bild exportieren","button":"Als Bild exportieren","description":"Exportiere die Zeichnungsdaten als ein Bild, von dem Du später importieren kannst."},"saveToDisk":{"title":"Auf Festplatte speichern","button":"Auf Festplatte speichern","description":"Exportiere die Zeichnungsdaten in eine Datei, von der Du später importieren kannst."},"excalidrawPlus":{"title":"Excalidraw+","button":"Export nach Excalidraw+","description":"Speichere die Szene in deinem Excalidraw+-Arbeitsbereich."}},"modal":{"loadFromFile":{"title":"Aus Datei laden","button":"Aus Datei laden","description":"Das Laden aus einer Datei wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."},"shareableLink":{"title":"Aus Link laden","button":"Meinen Inhalt ersetzen","description":"Das Laden einer externen Zeichnung wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js b/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js new file mode 100644 index 0000000..bbdd42b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1513],{9876:function(e){e.exports=JSON.parse('{"labels":{"paste":"Επικόλληση","pasteAsPlaintext":"Επικόλληση ως απλό κείμενο","pasteCharts":"Επικόλληση γραφημάτων","selectAll":"Επιλογή όλων","multiSelect":"Προσθέστε το στοιχείο στην επιλογή","moveCanvas":"Μετακίνηση καμβά","cut":"Αποκοπή","copy":"Αντιγραφή","copyAsPng":"Αντιγραφή στο πρόχειρο ως PNG","copyAsSvg":"Αντιγραφή στο πρόχειρο ως SVG","copyText":"Αντιγραφή στο πρόχειρο ως κείμενο","bringForward":"Στο προσκήνιο","sendToBack":"Ένα επίπεδο πίσω","bringToFront":"Ένα επίπεδο μπροστά","sendBackward":"Στο παρασκήνιο","delete":"Διαγραφή","copyStyles":"Αντιγραφή εμφάνισης","pasteStyles":"Επικόλληση εμφάνισης","stroke":"Μολυβιά","background":"Φόντο","fill":"Γέμισμα","strokeWidth":"Πάχος μολυβιάς","strokeStyle":"Στυλ περιγράμματος","strokeStyle_solid":"Συμπαγής","strokeStyle_dashed":"Διακεκομμένη με παύλες","strokeStyle_dotted":"Διακεκομμένη με τελείες","sloppiness":"Ακαταστασία","opacity":"Διαφάνεια","textAlign":"Στοίχιση κειμένου","edges":"Άκρες","sharp":"Οξύ","round":"Στρογγυλό","arrowheads":"Σύμβολα βελών","arrowhead_none":"Κανένα","arrowhead_arrow":"Βέλος","arrowhead_bar":"Μπάρα","arrowhead_dot":"Τελεία","arrowhead_triangle":"Τρίγωνο","fontSize":"Μέγεθος γραμματοσειράς","fontFamily":"Γραμματοσειρά","addWatermark":"Προσθήκη \\"Φτιαγμένο με Excalidraw\\"","handDrawn":"Σχεδιασμένο στο χέρι","normal":"Κανονική","code":"Κώδικας","small":"Μικρό","medium":"Μεσαίο","large":"Μεγάλο","veryLarge":"Πολύ μεγάλο","solid":"Συμπαγής","hachure":"Εκκόλαψη","zigzag":"","crossHatch":"Διασταυρούμενη εκκόλαψη","thin":"Λεπτή","bold":"Έντονη","left":"Αριστερά","center":"Κέντρο","right":"Δεξιά","extraBold":"Πολύ έντονη","architect":"Αρχιτέκτονας","artist":"Καλλιτέχνης","cartoonist":"Σκιτσογράφος","fileTitle":"Όνομα αρχείου","colorPicker":"Επιλογή Χρώματος","canvasColors":"Χρησιμοποείται στον καμβά","canvasBackground":"Φόντο καμβά","drawingCanvas":"Σχεδίαση καμβά","layers":"Στρώματα","actions":"Ενέργειες","language":"Γλώσσα","liveCollaboration":"Live συνεργασία...","duplicateSelection":"Δημιουργία αντιγράφου","untitled":"Χωρίς τίτλο","name":"Όνομα","yourName":"Το όνομά σου","madeWithExcalidraw":"Φτιαγμένο με Excalidraw","group":"Δημιουργία ομάδας από επιλογή","ungroup":"Κατάργηση ομάδας από επιλογή","collaborators":"Συνεργάτες","showGrid":"Προβολή πλέγματος","addToLibrary":"Προσθήκη στη βιβλιοθήκη","removeFromLibrary":"Αφαίρεση από τη βιβλιοθήκη","libraryLoadingMessage":"Φόρτωση βιβλιοθήκης…","libraries":"Άλλες βιβλιοθήκες","loadingScene":"Φόρτωση σκηνής…","align":"Στοίχιση","alignTop":"Στοίχιση πάνω","alignBottom":"Στοίχιση κάτω","alignLeft":"Στοίχιση αριστερά","alignRight":"Στοίχιση δεξιά","centerVertically":"Κέντρο κάθετα","centerHorizontally":"Κέντρο οριζόντια","distributeHorizontally":"Οριζόντια κατανομή","distributeVertically":"Κατακόρυφη κατανομή","flipHorizontal":"Οριζόντια αναστροφή","flipVertical":"Κατακόρυφη αναστροφή","viewMode":"Λειτουργία προβολής","share":"Κοινοποίηση","showStroke":"Εμφάνιση επιλογέα χρωμάτων πινελιάς","showBackground":"Εμφάνιση επιλογέα χρώματος φόντου","toggleTheme":"Εναλλαγή θέματος","personalLib":"Προσωπική Βιβλιοθήκη","excalidrawLib":"Βιβλιοθήκη Excalidraw","decreaseFontSize":"Μείωση μεγέθους γραμματοσειράς","increaseFontSize":"Αύξηση μεγέθους γραμματοσειράς","unbindText":"Αποσύνδεση κειμένου","bindText":"Δέσμευση κειμένου στο δοχείο","createContainerFromText":"","link":{"edit":"Επεξεργασία συνδέσμου","editEmbed":"","create":"Δημιουργία συνδέσμου","createEmbed":"","label":"Σύνδεσμος","labelEmbed":"","empty":""},"lineEditor":{"edit":"Επεξεργασία γραμμής","exit":"Έξοδος επεξεργαστή κειμένου"},"elementLock":{"lock":"Κλείδωμα","unlock":"Ξεκλείδωμα","lockAll":"Κλείδωμα όλων","unlockAll":"Ξεκλείδωμα όλων"},"statusPublished":"Δημοσιευμένο","sidebarLock":"Κρατήστε την πλαϊνή μπάρα ανοιχτή","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Δεν έχουν προστεθεί αντικείμενα ακόμη...","hint_emptyLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.","hint_emptyPrivateLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ."},"buttons":{"clearReset":"Επαναφορά του καμβά","exportJSON":"Εξαγωγή σε αρχείο","exportImage":"Εξαγωγή εικόνας...","export":"Αποθήκευση ως...","copyToClipboard":"Αντιγραφή στο πρόχειρο","save":"Αποθήκευση στο τρέχον αρχείο","saveAs":"Αποθήκευση ως","load":"Άνοιγμα","getShareableLink":"Δημόσιος σύνδεσμος","close":"Κλείσιμο","selectLanguage":"Επιλογή γλώσσας","scrollBackToContent":"Μετακινηθείτε πίσω στο περιεχόμενο","zoomIn":"Μεγέθυνση","zoomOut":"Σμίκρυνση","resetZoom":"Επαναφορά μεγέθυνσης","menu":"Μενού","done":"Τέλος","edit":"Επεξεργασία","undo":"Αναίρεση","redo":"Επαναφορά","resetLibrary":"Καθαρισμός βιβλιοθήκης","createNewRoom":"Δημιουργία νέου χώρου","fullScreen":"Πλήρης οθόνη","darkMode":"Σκοτεινή λειτουργία","lightMode":"Φωτεινή λειτουργία","zenMode":"Λειτουργία Zεν","objectsSnapMode":"","exitZenMode":"Έξοδος από την λειτουργία Zen","cancel":"Ακύρωση","clear":"Καθαρισμός","remove":"Κατάργηση","embed":"","publishLibrary":"Δημοσίευση","submit":"Υποβολή","confirm":"Επιβεβαίωση","embeddableInteractionButton":""},"alerts":{"clearReset":"Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;","couldNotCreateShareableLink":"Δεν ήταν δυνατή η δημιουργία συνδέσμου κοινής χρήσης.","couldNotCreateShareableLinkTooBig":"Δεν ήταν δυνατή η δημιουργία κοινόχρηστου συνδέσμου: η σκηνή είναι πολύ μεγάλη","couldNotLoadInvalidFile":"Δεν μπόρεσε να ανοίξει εσφαλμένο αρχείο","importBackendFailed":"Η εισαγωγή από το backend απέτυχε.","cannotExportEmptyCanvas":"Δεν είναι δυνατή η εξαγωγή κενού καμβά.","couldNotCopyToClipboard":"Αδυναμία αντιγραφής στο πρόχειρο.","decryptFailed":"Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.","uploadedSecurly":"Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.","loadSceneOverridePrompt":"Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;","collabStopOverridePrompt":"Η διακοπή της συνεδρίας θα αντικαταστήσει το προηγούμενο, τοπικά αποθηκευμένο σχέδιο. Είστε σίγουροι?\\n\\n(Αν θέλετε να διατηρήσετε το τοπικό σας σχέδιο, απλά κλείστε την καρτέλα του προγράμματος περιήγησης.)","errorAddingToLibrary":"Αδυναμία προσθήκης αντικειμένου στη βιβλιοθήκη","errorRemovingFromLibrary":"Αδυναμία αφαίρεσης αντικειμένου από τη βιβλιοθήκη","confirmAddLibrary":"Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβλιοθήκη σας. Είστε σίγουροι;","imageDoesNotContainScene":"Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει την ενσωμάτωση σκηνής κατά την εξαγωγή;","cannotRestoreFromImage":"Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας","invalidSceneUrl":"Δεν ήταν δυνατή η εισαγωγή σκηνής από το URL που δώσατε. Είτε έχει λάθος μορφή, είτε δεν περιέχει έγκυρα δεδομένα JSON Excalidraw.","resetLibrary":"Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;","removeItemsFromsLibrary":"Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;","invalidEncryptionKey":"Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.","collabOfflineWarning":"Δεν υπάρχει διαθέσιμη σύνδεση στο internet.\\nΟι αλλαγές σας δεν θα αποθηκευτούν!"},"errors":{"unsupportedFileType":"Μη υποστηριζόμενος τύπος αρχείου.","imageInsertError":"Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...","fileTooBig":"Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.","svgImageInsertError":"Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.","failedToFetchImage":"","invalidSVGString":"Μη έγκυρο SVG.","cannotResolveCollabServer":"Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.","importLibraryError":"Αδυναμία φόρτωσης βιβλιοθήκης","collabSaveFailed":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.","collabSaveFailed_sizeExceeded":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Επιλογή","image":"Εισαγωγή εικόνας","rectangle":"Ορθογώνιο","diamond":"Ρόμβος","ellipse":"Έλλειψη","arrow":"Βέλος","line":"Γραμμή","freedraw":"Σχεδίαση","text":"Κείμενο","library":"Βιβλιοθήκη","lock":"Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο","penMode":"Λειτουργία μολυβιού - αποτροπή αφής","link":"Προσθήκη/ Ενημέρωση συνδέσμου για ένα επιλεγμένο σχήμα","eraser":"Γόμα","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Ενέργειες καμβά","selectedShapeActions":"Επιλεγμένες ενέργειες σχήματος","shapes":"Σχήματα"},"hints":{"canvasPanning":"","linearElement":"Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή","freeDraw":"Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει","text":"Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών","embeddable":"","text_selected":"Κάντε διπλό κλικ ή πατήστε ENTER για να επεξεργαστείτε το κείμενο","text_editing":"Πατήστε Escape ή CtrlOrCmd+ENTER για να ολοκληρώσετε την επεξεργασία","linearElementMulti":"Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις","lockAngle":"Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT","resize":"Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,\\nκράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο","resizeImage":"Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,\\nκρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο","rotate":"Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή","lineEditor_info":"Κρατήστε πατημένο Ctrl ή Cmd και πατήστε το πλήκτρο Ctrl ή Cmd + Enter για επεξεργασία σημείων","lineEditor_pointSelected":"Πατήστε Διαγραφή για αφαίρεση σημείου(ων),\\nCtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση","lineEditor_nothingSelected":"Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),\\nή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία","placeImage":"Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα","publishLibrary":"Δημοσιεύστε τη δική σας βιβλιοθήκη","bindTextToElement":"Πατήστε Enter για προσθήκη κειμένου","deepBoxSelect":"Κρατήστε πατημένο το CtrlOrCmd για να επιλέξετε βαθιά, και να αποτρέψετε τη μεταφορά","eraserRevert":"Κρατήστε πατημένο το Alt για να επαναφέρετε τα στοιχεία που σημειώθηκαν για διαγραφή","firefox_clipboard_write":"Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση \\"dom.events.asyncClipboard.clipboardItem\\" σε \\"true\\". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Αδυναμία εμφάνισης προεπισκόπησης","canvasTooBig":"Ο καμβάς μπορεί να είναι μεγάλος.","canvasTooBigTip":"Συμβουλή: προσπαθήστε να μετακινήσετε τα πιο απομακρυσμένα στοιχεία λίγο πιο κοντά μαζί."},"errorSplash":{"headingMain":"Συνέβη κάποιο σφάλμα. Προσπάθησε ","clearCanvasMessage":"Εάν το παραπάνω δεν δουλέψει, προσπάθησε ","clearCanvasCaveat":" Αυτό θα προκαλέσει απώλεια της δουλειάς σου ","trackedToSentry":"Το σφάλμα με αναγνωριστικό {{eventId}} παρακολουθήθηκε στο σύστημά μας.","openIssueMessage":"Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.","sceneContent":"Περιεχόμενο σκηνής:"},"roomDialog":{"desc_intro":"Μπορείς να προσκαλέσεις άλλους να δουλέψουν μαζί σου.","desc_privacy":"Μην ανησυχείς, η συνεδρία χρησιμοποιεί κρυπτογράφηση από σημείο σε σημείο, άρα οτιδήποτε κάνεις θα παραμείνει ανοιχτό μόνο σε εσένα. Ούτε οι μηχανές μας μπορούν να δουν τι κάνεις.","button_startSession":"Έναρξη Συνεδρίας","button_stopSession":"Τερματισμός Συνεδρίας","desc_inProgressIntro":"Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.","desc_shareLink":"Μοιραστείτε τον σύνδεσμο με όποιον θέλετε να δουλέψετε μαζί:","desc_exitSession":"Η διακοπή θα σας αποσυνδέσει από το δωμάτιο, αλλά θα μπορείτε να συνεχίσετε να δουλεύετε στον πίνακα, τοπικά. Σημειώσατε ότι αυτό δεν θα επηρεάσει τον πίνακα άλλων, και θα μπορούν ακόμα να συνεισφέρουν στην δική τους έκδοση.","shareTitle":"Συμμετάσχετε σε μια ζωντανή συνεδρία συνεργασίας για το Excalidraw"},"errorDialog":{"title":"Σφάλμα"},"exportDialog":{"disk_title":"Αποθήκευση στο δίσκο","disk_details":"Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα.","disk_button":"Αποθήκευση σε αρχείο","link_title":"Κοινόχρηστος σύνδεσμος","link_details":"Εξαγωγή ως σύνδεσμο μόνο για ανάγνωση.","link_button":"Εξαγωγή σε Σύνδεση","excalidrawplus_description":"Αποθηκεύστε τη σκηνή στο χώρο εργασίας σας Excalidraw+.","excalidrawplus_button":"Εξαγωγή","excalidrawplus_exportError":"Δεν ήταν δυνατή η εξαγωγή στο Excalidraw+ αυτή τη στιγμή..."},"helpDialog":{"blog":"Διαβάστε το Blog μας","click":"κλικ","deepSelect":"Βαθιά επιλογή","deepBoxSelect":"Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος","curvedArrow":"Κυρτό βέλος","curvedLine":"Κυρτή γραμμή","documentation":"Εγχειρίδιο","doubleClick":"διπλό κλικ","drag":"σύρε","editor":"Επεξεργαστής","editLineArrowPoints":"","editText":"","github":"Βρήκατε πρόβλημα; Υποβάλετε το","howto":"Ακολουθήστε τους οδηγούς μας","or":"ή","preventBinding":"Αποτροπή δέσμευσης βέλων","tools":"Εργαλεία","shortcuts":"Συντομεύσεις πληκτρολογίου","textFinish":"Ολοκλήρωση επεξεργασίας (επεξεργαστής κειμένου)","textNewLine":"Προσθήκη νέας γραμμής (επεξεργαστής κειμένου)","title":"Βοήθεια","view":"Προβολή","zoomToFit":"Zoom ώστε να χωρέσουν όλα τα στοιχεία","zoomToSelection":"Ζουμ στην επιλογή","toggleElementLock":"Κλείδωμα/Ξεκλείδωμα επιλογής","movePageUpDown":"Μετακίνηση σελίδας πάνω/κάτω","movePageLeftRight":"Μετακίνηση σελίδας αριστερά/δεξιά"},"clearCanvasDialog":{"title":"Καθαρισμός καμβά"},"publishDialog":{"title":"Δημοσίευση βιβλιοθήκης","itemName":"Όνομα αντικειμένου","authorName":"Όνομα δημιουργού","githubUsername":"GitHub username","twitterUsername":"Twitter username","libraryName":"Όνομα βιβλιοθήκης","libraryDesc":"Περιγραφή βιβλιοθήκης","website":"Ιστοσελίδα","placeholder":{"authorName":"Όνομα ή όνομα χρήστη","libraryName":"Όνομα της βιβλιοθήκης σας","libraryDesc":"Περιγραφή της βιβλιοθήκης σας ώστε να βοηθήσει το κοινό να κατανοήσει τη χρήση της","githubHandle":"Όνομα χρήστη στο GitHub (προαιρετικό), ώστε να μπορείτε να επεξεργαστείτε τη βιβλιοθήκη αφού υποβληθεί για αξιολόγηση","twitterHandle":"Όνομα χρήστη Twitter (προαιρετικό), ώστε να γνωρίζουμε σε ποιον/η να δώσουμε εύσημα κατά την προώθηση μέσω Twitter","website":"Σύνδεσμος για την προσωπική σας ιστοσελίδα ή αλλού (προαιρετικό)"},"errors":{"required":"Απαιτείται","website":"Εισάγετε μια έγκυρη διεύθυνση URL"},"noteDescription":"Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο δημόσιο αποθετήριο βιβλιοθήκηςώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους.","noteGuidelines":"Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους οδηγίες πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ\' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση.","noteLicense":"Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την Άδεια MIT, που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς.","noteItems":"Κάθε αντικείμενο της βιβλιοθήκης πρέπει να έχει το δικό του όνομα ώστε να μπορεί να φιλτραριστεί. Θα συμπεριληφθούν τα ακόλουθα αντικείμενα βιβλιοθήκης:","atleastOneLibItem":"Παρακαλώ επιλέξτε τουλάχιστον ένα αντικείμενο βιβλιοθήκης για να ξεκινήσετε","republishWarning":"Σημείωση: μερικά από τα επιλεγμένα αντικέιμενα έχουν ήδη επισημανθεί ως δημοσιευμένα/υποβεβλημένα. Θα πρέπει να υποβάλετε αντικείμενα εκ νέου μόνο για να ενημερώσετε μία ήδη υπάρχουσα βιβλιοθήκη ή υποβολή."},"publishSuccessDialog":{"title":"Η βιβλιοθήκη υποβλήθηκε","content":"Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασίαεδώ"},"confirmDialog":{"resetLibrary":"Καθαρισμός βιβλιοθήκης","removeItemsFromLib":"Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα είναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw.","link":"Blog post στην κρυπτογράφηση end-to-end στο Excalidraw"},"stats":{"angle":"Γωνία","element":"Στοιχείο","elements":"Στοιχεία","height":"Ύψος","scene":"Σκηνή","selected":"Επιλεγμένα","storage":"Χώρος","title":"Στατιστικά για σπασίκλες","total":"Σύνολο ","version":"Έκδοση","versionCopy":"Κάνε κλικ για αντιγραφή","versionNotAvailable":"Έκδοση μη διαθέσιμη","width":"Πλάτος"},"toast":{"addedToLibrary":"Προστέθηκε στη βιβλιοθήκη","copyStyles":"Αντιγράφηκαν στυλ.","copyToClipboard":"Αντιγράφηκε στο πρόχειρο.","copyToClipboardAsPng":"Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG\\n({{exportColorScheme}})","fileSaved":"Το αρχείο αποθηκεύτηκε.","fileSavedToFilename":"Αποθηκεύτηκε στο {filename}","canvas":"καμβάς","selection":"επιλογή","pasteAsSingleElement":"Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,\\nή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Διαφανές","black":"Μαύρο","white":"Λευκό","red":"Κόκκινο","pink":"Ροζ","grape":"Σταφυλί","violet":"Βιολετί","gray":"Γκρι","blue":"Μπλε","cyan":"Κυανό","teal":"Τιρκουάζ","green":"Πράσινο","yellow":"Κίτρινο","orange":"Πορτοκαλί","bronze":"Χαλκινο"},"welcomeScreen":{"app":{"center_heading":"Όλα τα δεδομένα σας αποθηκεύονται τοπικά στο πρόγραμμα περιήγησης.","center_heading_plus":"Μήπως θέλατε να πάτε στο Excalidraw+;","menuHint":"Εξαγωγή, προτιμήσεις, γλώσσες, ..."},"defaults":{"menuHint":"Εξαγωγή, προτιμήσεις και άλλες επιλογές...","center_heading":"Διαγράμματα. Εύκολα. Γρήγορα.","toolbarHint":"Επιλέξτε ένα εργαλείο και ξεκινήστε να σχεδιάζεται!","helpHint":"Συντομεύσεις και βοήθεια"}},"colorPicker":{"mostUsedCustomColors":"Πιο χρησιμοποιούμενα χρώματα","colors":"Χρώματα","shades":"Αποχρώσεις","hexCode":"Κωδικός Hex","noShades":"Δεν υπάρχουν διαθέσιμες αποχρώσεις για αυτό το χρώμα"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js b/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js new file mode 100644 index 0000000..2536f69 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8759],{2264:function(e){e.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar como texto sin formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Añadir elemento a la selección","moveCanvas":"Mover el lienzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar al portapapeles como PNG","copyAsSvg":"Copiar al portapapeles como SVG","copyText":"Copiar al portapapeles como texto","bringForward":"Traer hacia delante","sendToBack":"Enviar al fondo","bringToFront":"Traer al frente","sendBackward":"Enviar atrás","delete":"Borrar","copyStyles":"Copiar estilos","pasteStyles":"Pegar estilos","stroke":"Trazo","background":"Fondo","fill":"Rellenar","strokeWidth":"Grosor del trazo","strokeStyle":"Estilo del trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Discontinua","strokeStyle_dotted":"Punteado","sloppiness":"Estilo de trazo","opacity":"Opacidad","textAlign":"Alineado de texto","edges":"Bordes","sharp":"Afilado","round":"Redondo","arrowheads":"Puntas de flecha","arrowhead_none":"Ninguna","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño de la fuente","fontFamily":"Tipo de fuente","addWatermark":"Agregar \\"Hecho con Excalidraw\\"","handDrawn":"Dibujado a mano","normal":"Normal","code":"Código","small":"Pequeña","medium":"Mediana","large":"Grande","veryLarge":"Muy grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Rayado transversal","thin":"Fino","bold":"Grueso","left":"Izquierda","center":"Centrado","right":"Derecha","extraBold":"Extra negrita","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nombre del archivo","colorPicker":"Selector de color","canvasColors":"Usado en lienzo","canvasBackground":"Fondo del lienzo","drawingCanvas":"Lienzo de dibujo","layers":"Capas","actions":"Acciones","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sin título","name":"Nombre","yourName":"Tu nombre","madeWithExcalidraw":"Hecho con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Añadir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Alinear","alignTop":"Alineación superior","alignBottom":"Alineación inferior","alignLeft":"Alinear a la izquierda","alignRight":"Alinear a la derecha","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Girar horizontalmente","flipVertical":"Girar verticalmente","viewMode":"Modo presentación","share":"Compartir","showStroke":"Mostrar selector de color de trazo","showBackground":"Mostrar el selector de color de fondo","toggleTheme":"Cambiar tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Disminuir tamaño de letra","increaseFontSize":"Aumentar el tamaño de letra","unbindText":"Desvincular texto","bindText":"Vincular texto al contenedor","createContainerFromText":"Envolver el texto en un contenedor","link":{"edit":"Editar enlace","editEmbed":"Editar enlace e incrustar","create":"Crear enlace","createEmbed":"Crear enlace e incrustar","label":"Enlace","labelEmbed":"Enlazar e incrustar","empty":"No se ha establecido un enlace"},"lineEditor":{"edit":"Editar línea","exit":"Salir del editor en línea"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Mantener barra lateral abierta","selectAllElementsInFrame":"Seleccionar todos los elementos en el marco","removeAllElementsFromFrame":"Eliminar todos los elementos del marco","eyeDropper":"Seleccionar un color del lienzo"},"library":{"noItems":"No hay elementos añadidos todavía...","hint_emptyLibrary":"Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento del lienzo para añadirlo aquí."},"buttons":{"clearReset":"Limpiar lienzo y reiniciar el color de fondo","exportJSON":"Exportar a archivo","exportImage":"Exportar imagen...","export":"Guardar en...","copyToClipboard":"Copiar al portapapeles","save":"Guardar en archivo actual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obtener enlace para compartir","close":"Cerrar","selectLanguage":"Elegir idioma","scrollBackToContent":"Volver al contenido","zoomIn":"Acercarse","zoomOut":"Alejarse","resetZoom":"Restablecer zoom","menu":"Menú","done":"Hecho","edit":"Editar","undo":"Deshacer","redo":"Rehacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nueva sala","fullScreen":"Pantalla completa","darkMode":"Modo oscuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"Ajustar a los objetos","exitZenMode":"Salir del modo Zen","cancel":"Cancelar","clear":"Borrar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Pulsa para interactuar"},"alerts":{"clearReset":"Esto limpiará todo el lienzo. Estás seguro?","couldNotCreateShareableLink":"No se pudo crear un enlace para compartir.","couldNotCreateShareableLinkTooBig":"No se pudo crear el enlace para compartir: la escena es demasiado grande","couldNotLoadInvalidFile":"No se pudo cargar el archivo no válido","importBackendFailed":"La importación falló.","cannotExportEmptyCanvas":"No se puede exportar un lienzo vació","couldNotCopyToClipboard":"No se pudo copiar al portapapeles.","decryptFailed":"No se pudieron descifrar los datos.","uploadedSecurly":"La carga ha sido asegurada con cifrado de principio a fin, lo que significa que el servidor de Excalidraw y terceros no pueden leer el contenido.","loadSceneOverridePrompt":"Si carga este dibujo externo, reemplazará el que tiene. ¿Desea continuar?","collabStopOverridePrompt":"Detener la sesión sobrescribirá su dibujo anterior almacenado localmente. ¿Está seguro?\\n\\n(Si desea mantener su dibujo local, simplemente cierre la pestaña del navegador.)","errorAddingToLibrary":"No se pudo agregar el elemento a la biblioteca","errorRemovingFromLibrary":"No se pudo quitar el elemento de la biblioteca","confirmAddLibrary":"Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?","imageDoesNotContainScene":"Esta imagen no parece contener datos de escena. ¿Ha habilitado la inserción de la escena durante la exportación?","cannotRestoreFromImage":"No se pudo restaurar la escena desde este archivo de imagen","invalidSceneUrl":"No se ha podido importar la escena desde la URL proporcionada. Está mal formada, o no contiene datos de Excalidraw JSON válidos.","resetLibrary":"Esto borrará tu biblioteca. ¿Estás seguro?","removeItemsFromsLibrary":"¿Eliminar {{count}} elemento(s) de la biblioteca?","invalidEncryptionKey":"La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.","collabOfflineWarning":"No hay conexión a internet disponible.\\n¡No se guardarán los cambios!"},"errors":{"unsupportedFileType":"Tipo de archivo no admitido.","imageInsertError":"No se pudo insertar la imagen. Inténtelo de nuevo más tarde...","fileTooBig":"Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.","svgImageInsertError":"No se pudo insertar la imagen SVG. El código SVG parece inválido.","failedToFetchImage":"","invalidSVGString":"SVG no válido.","cannotResolveCollabServer":"No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.","importLibraryError":"No se pudo cargar la librería","collabSaveFailed":"No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.","collabSaveFailed_sizeExceeded":"No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.","brave_measure_text_error":{"line1":"Parece que estás usando el navegador Brave con el ajuste Forzar el bloqueo de huellas digitales habilitado.","line2":"Esto podría resultar en errores en los Elementos de Texto en tus dibujos.","line3":"Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir estos pasos sobre cómo hacerlo.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Insertar imagen","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Flecha","line":"Línea","freedraw":"Dibujar","text":"Texto","library":"Biblioteca","lock":"Mantener la herramienta seleccionada activa después de dibujar","penMode":"Modo Lápiz - previene toque","link":"Añadir/Actualizar enlace para una forma seleccionada","eraser":"Borrar","frame":"","embeddable":"Incrustar Web","laser":"Puntero láser","hand":"Mano (herramienta de panoramización)","extraTools":"Más herramientas"},"headings":{"canvasActions":"Acciones del lienzo","selectedShapeActions":"Acciones de la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover el lienzo, mantenga la rueda del ratón o la barra espaciadora mientras arrastra o utilice la herramienta de mano","linearElement":"Haz clic para dibujar múltiples puntos, arrastrar para solo una línea","freeDraw":"Haz clic y arrastra, suelta al terminar","text":"Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección","embeddable":"Haga clic y arrastre para crear un sitio web incrustado","text_selected":"Doble clic o pulse ENTER para editar el texto","text_editing":"Pulse Escape o Ctrl/Cmd + ENTER para terminar de editar","linearElementMulti":"Haz clic en el último punto o presiona Escape o Enter para finalizar","lockAngle":"Puedes restringir el ángulo manteniendo presionado el botón SHIFT","resize":"Para mantener las proporciones mantén SHIFT presionado mientras modificas el tamaño, \\nmantén presionado ALT para modificar el tamaño desde el centro","resizeImage":"Puede redimensionar libremente pulsando SHIFT,\\npulse ALT para redimensionar desde el centro","rotate":"Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras","lineEditor_info":"Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo","lineEditor_nothingSelected":"Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),\\no mantenga pulsado Alt y haga click para añadir nuevos puntos","placeImage":"Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente","publishLibrary":"Publica tu propia biblioteca","bindTextToElement":"Presione Entrar para agregar","deepBoxSelect":"Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar","eraserRevert":"Mantenga pulsado Alt para revertir los elementos marcados para su eliminación","firefox_clipboard_write":"Esta característica puede ser habilitada estableciendo la bandera \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar las banderas del navegador en Firefox, visite la página \\"about:config\\".","disableSnapping":"Mantén pulsado CtrlOrCmd para desactivar el ajuste"},"canvasError":{"cannotShowPreview":"No se puede mostrar la vista previa","canvasTooBig":"El lienzo podría ser demasiado grande.","canvasTooBigTip":"Sugerencia: intenta acercar un poco más los elementos más lejanos."},"errorSplash":{"headingMain":"Se encontró un error. Intente ","clearCanvasMessage":"Si la recarga no funciona, intente ","clearCanvasCaveat":" Esto provocará la pérdida de su trabajo ","trackedToSentry":"El error con el identificador {{eventId}} fue rastreado en nuestro sistema.","openIssueMessage":"Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.","sceneContent":"Contenido de la escena:"},"roomDialog":{"desc_intro":"Puede invitar a otras personas a tu actual escena para que colaboren contigo.","desc_privacy":"No te preocupes, la sesión usa encriptación de punta a punta, por lo que todo lo que se dibuje se mantendrá privadamente. Ni siquiera nuestro servidor podrá ver lo que haces.","button_startSession":"Iniciar sesión","button_stopSession":"Detener sesión","desc_inProgressIntro":"La sesión de colaboración en vivo está ahora en progreso.","desc_shareLink":"Comparte este enlace con cualquier persona con quien quieras colaborar:","desc_exitSession":"Detener la sesión te desconectará de la sala, pero podrás seguir trabajando con la escena en su computadora, esto es de modo local. Ten en cuenta que esto no afectará a otras personas, y que las mismas seguirán siendo capaces de colaborar en tu escena.","shareTitle":"Únase a una sesión colaborativa en vivo en Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Guardar en disco","disk_details":"Exportar los datos de la escena a un archivo desde el cual pueda importar más tarde.","disk_button":"Guardar en archivo","link_title":"Enlace para compartir","link_details":"Exportar como enlace de sólo lectura.","link_button":"Exportar a Link","excalidrawplus_description":"Guarde la escena en su espacio de trabajo de Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"No se pudo exportar a Excalidraw+ en este momento..."},"helpDialog":{"blog":"Lea nuestro blog","click":"click","deepSelect":"Selección profunda","deepBoxSelect":"Seleccione en profundidad dentro de la caja, y evite arrastrar","curvedArrow":"Flecha curva","curvedLine":"Línea curva","documentation":"Documentación","doubleClick":"doble clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"Editar puntos de línea/flecha","editText":"Editar texto / añadir etiqueta","github":"¿Ha encontrado un problema? Envíelo","howto":"Siga nuestras guías","or":"o","preventBinding":"Evitar enlace de flechas","tools":"Herramientas","shortcuts":"Atajos del teclado","textFinish":"Finalizar edición (editor de texto)","textNewLine":"Añadir nueva linea (editor de texto)","title":"Ayuda","view":"Vista","zoomToFit":"Ajustar la vista para mostrar todos los elementos","zoomToSelection":"Ampliar selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover página hacia arriba/abajo","movePageLeftRight":"Mover página hacia la izquierda/derecha"},"clearCanvasDialog":{"title":"Borrar lienzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nombre del artículo","authorName":"Nombre del autor","githubUsername":"Nombre de usuario de GitHub","twitterUsername":"Nombre de usuario de Twitter","libraryName":"Nombre de la biblioteca","libraryDesc":"Descripción de la biblioteca","website":"Sitio Web","placeholder":{"authorName":"Nombre o nombre de usuario","libraryName":"Nombre de tu biblioteca","libraryDesc":"Descripción de su biblioteca para ayudar a la gente a entender su uso","githubHandle":"Nombre de usuario de GitHub (opcional), así podrá editar la biblioteca una vez enviada para su revisión","twitterHandle":"Nombre de usuario de Twitter (opcional), así sabemos a quién acreditar cuando se promociona en Twitter","website":"Enlace a su sitio web personal o en cualquier otro lugar (opcional)"},"errors":{"required":"Requerido","website":"Introduce una URL válida"},"noteDescription":"Envía tu biblioteca para ser incluida en el repositorio de librería públicapara que otras personas utilicen en sus dibujos.","noteGuidelines":"La biblioteca debe ser aprobada manualmente primero. Por favor, lea la pautas antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario.","noteLicense":"Al enviar, usted acepta que la biblioteca se publicará bajo el Licencia MIT que en breve significa que cualquiera puede utilizarlos sin restricciones.","noteItems":"Cada elemento de la biblioteca debe tener su propio nombre para que sea filtrable. Los siguientes elementos de la biblioteca serán incluidos:","atleastOneLibItem":"Por favor, seleccione al menos un elemento de la biblioteca para empezar","republishWarning":"Nota: algunos de los elementos seleccionados están marcados como ya publicados/enviados. Sólo debería volver a enviar elementos cuando se actualice una biblioteca o envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estadoaquí"},"confirmDialog":{"resetLibrary":"Reiniciar biblioteca","removeItemsFromLib":"Eliminar elementos seleccionados de la biblioteca"},"imageExportDialog":{"header":"Exportar imagen","label":{"withBackground":"Fondo","onlySelected":"Sólo seleccionados","darkMode":"Modo oscuro","embedScene":"Incrustar escena","scale":"Escalar","padding":"Espaciado"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG al portapapeles"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar al portapapeles"}},"encrypted":{"tooltip":"Tus dibujos están cifrados de punto a punto, por lo que los servidores de Excalidraw nunca los verán.","link":"Entrada en el blog sobre cifrado de extremo a extremo"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamiento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Click para copiar","versionNotAvailable":"Versión no disponible","width":"Ancho"},"toast":{"addedToLibrary":"Añadido a la biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado en el portapapeles.","copyToClipboardAsPng":"Copiado {{exportSelection}} al portapapeles como PNG\\n({{exportColorScheme}})","fileSaved":"Archivo guardado.","fileSavedToFilename":"Guardado en {filename}","canvas":"lienzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un solo elemento,\\no pegar en un editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Blanco","red":"Rojo","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"Cian","teal":"Turquesa","green":"Verde","yellow":"Amarillo","orange":"Naranja","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda su información es guardada localmente en su navegador.","center_heading_plus":"¿Quieres ir a Excalidraw+?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias y más...","center_heading":"Diagramas. Hecho. Simplemente.","toolbarHint":"¡Elige una herramienta y empieza a dibujar!","helpHint":"Atajos y ayuda"}},"colorPicker":{"mostUsedCustomColors":"Colores personalizados más utilizados","colors":"Colores","shades":"","hexCode":"Código Hexadecimal","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagen","button":"Exportar como imagen","description":""},"saveToDisk":{"title":"Guardar en el disco","button":"Guardar en el disco","description":"Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde."},"excalidrawPlus":{"title":"","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar desde un archivo","button":"Cargar desde un archivo","description":""},"shareableLink":{"title":"Cargar desde un enlace","button":"Reemplazar mi contenido","description":"Cargar un dibujo externo reemplazará tu contenido existente.

Puedes primero hacer una copia de seguridad de tu dibujo usando una de las opciones de abajo."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js b/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js new file mode 100644 index 0000000..06af677 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8081],{5658:function(a){a.exports=JSON.parse('{"labels":{"paste":"Itsatsi","pasteAsPlaintext":"Itsatsi testu arrunt gisa","pasteCharts":"Itsatsi grafikoak","selectAll":"Hautatu dena","multiSelect":"Gehitu elementua hautapenera","moveCanvas":"Mugitu oihala","cut":"Ebaki","copy":"Kopiatu","copyAsPng":"Kopiatu arbelera PNG gisa","copyAsSvg":"Kopiatu arbelera SVG gisa","copyText":"Kopiatu arbelera testu gisa","bringForward":"Ekarri aurrerago","sendToBack":"Eraman atzera","bringToFront":"Ekarri aurrera","sendBackward":"Eraman atzerago","delete":"Ezabatu","copyStyles":"Kopiatu estiloak","pasteStyles":"Itsatsi estiloak","stroke":"Marra","background":"Atzeko planoa","fill":"Bete","strokeWidth":"Marraren zabalera","strokeStyle":"Marraren estiloa","strokeStyle_solid":"Solidoa","strokeStyle_dashed":"Marratua","strokeStyle_dotted":"Puntukatua","sloppiness":"Marraren trazoa","opacity":"Opakotasuna","textAlign":"Testuaren lerrokapena","edges":"Ertzak","sharp":"Ertz bizia","round":"Borobildua","arrowheads":"Gezi-puntak","arrowhead_none":"Bat ere ez","arrowhead_arrow":"Gezia","arrowhead_bar":"Barra","arrowhead_dot":"Puntua","arrowhead_triangle":"Hirukia","fontSize":"Letra-tamaina","fontFamily":"Letra-tipoa","addWatermark":"Gehitu \\"Excalidraw bidez egina\\"","handDrawn":"Eskuz marraztua","normal":"Normala","code":"Kodea","small":"Txikia","medium":"Ertaina","large":"Handia","veryLarge":"Oso handia","solid":"Solidoa","hachure":"Itzalduna","zigzag":"Sigi-saga","crossHatch":"Marraduna","thin":"Mehea","bold":"Lodia","left":"Ezkerrean","center":"Erdian","right":"Eskuinean","extraBold":"Oso lodia","architect":"Arkitektoa","artist":"Artista","cartoonist":"Marrazkilaria","fileTitle":"Fitxategi izena","colorPicker":"Kolore-hautatzailea","canvasColors":"Oihalean erabilita","canvasBackground":"Oihalaren atzeko planoa","drawingCanvas":"Marrazteko oihala","layers":"Geruzak","actions":"Ekintzak","language":"Hizkuntza","liveCollaboration":"Zuzeneko elkarlana...","duplicateSelection":"Bikoiztu","untitled":"Izengabea","name":"Izena","yourName":"Zure izena","madeWithExcalidraw":"Excalidraw bidez egina","group":"Hautapena taldea bihurtu","ungroup":"Desegin hautapenaren taldea","collaborators":"Kolaboratzaileak","showGrid":"Erakutsi sareta","addToLibrary":"Gehitu liburutegira","removeFromLibrary":"Kendu liburutegitik","libraryLoadingMessage":"Liburutegia kargatzen…","libraries":"Arakatu liburutegiak","loadingScene":"Eszena kargatzen…","align":"Lerrokatu","alignTop":"Lerrokatu goian","alignBottom":"Lerrokatu behean","alignLeft":"Lerrokatu ezkerrean","alignRight":"Lerrokatu eskuinean","centerVertically":"Erdiratu bertikalki","centerHorizontally":"Erdiratu horizontalki","distributeHorizontally":"Banandu horizontalki","distributeVertically":"Banandu bertikalki","flipHorizontal":"Irauli horizontalki","flipVertical":"Irauli bertikalki","viewMode":"Ikuspegia","share":"Partekatu","showStroke":"Erakutsi marraren kolore-hautatzailea","showBackground":"Erakutsi atzeko planoaren kolore-hautatzailea","toggleTheme":"Aldatu gaia","personalLib":"Liburutegi pertsonala","excalidrawLib":"Excalidraw liburutegia","decreaseFontSize":"Txikitu letra tamaina","increaseFontSize":"Handitu letra tamaina","unbindText":"Askatu testua","bindText":"Lotu testua edukiontziari","createContainerFromText":"Bilatu testua edukiontzi batean","link":{"edit":"Editatu esteka","editEmbed":"Editatu esteka eta kapsulatu","create":"Sortu esteka","createEmbed":"Sortu esteka eta kapsulatu","label":"Esteka","labelEmbed":"Esteka eta kapsula","empty":"Ez da estekarik ezarri"},"lineEditor":{"edit":"Editatu lerroa","exit":"Irten lerro-editoretik"},"elementLock":{"lock":"Blokeatu","unlock":"Desblokeatu","lockAll":"Blokeatu guztiak","unlockAll":"Desblokeatu guztiak"},"statusPublished":"Argitaratua","sidebarLock":"Mantendu alboko barra irekita","selectAllElementsInFrame":"Hautatu markoko elementu guztiak","removeAllElementsFromFrame":"Kendu markoko elementu guztiak","eyeDropper":"Aukeratu kolorea oihaletik"},"library":{"noItems":"Oraindik ez da elementurik gehitu...","hint_emptyLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.","hint_emptyPrivateLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko."},"buttons":{"clearReset":"Garbitu oihala","exportJSON":"Esportatu fitxategira","exportImage":"Esportatu irudia...","export":"Gorde hemen...","copyToClipboard":"Kopiatu arbelera","save":"Gorde uneko fitxategian","saveAs":"Gorde honela","load":"Ireki","getShareableLink":"Lortu partekatzeko esteka","close":"Itxi","selectLanguage":"Hautatu hizkuntza","scrollBackToContent":"Joan atzera edukira","zoomIn":"Handiagotu","zoomOut":"Txikiagotu","resetZoom":"Leheneratu zooma","menu":"Menua","done":"Egina","edit":"Editatu","undo":"Desegin","redo":"Berregin","resetLibrary":"Leheneratu liburutegia","createNewRoom":"Sortu gela berria","fullScreen":"Pantaila osoa","darkMode":"Modu iluna","lightMode":"Modu argia","zenMode":"Zen modua","objectsSnapMode":"Atxiki objektuei","exitZenMode":"Irten Zen modutik","cancel":"Utzi","clear":"Garbitu","remove":"Kendu","embed":"Aldatu kapsulatzea","publishLibrary":"Argitaratu","submit":"Bidali","confirm":"Bai","embeddableInteractionButton":"Egin klik elkar eragiteko"},"alerts":{"clearReset":"Honek oihal osoa garbituko du. Ziur zaude?","couldNotCreateShareableLink":"Ezin izan da partekatzeko estekarik sortu.","couldNotCreateShareableLinkTooBig":"Ezin izan da partekatzeko estekarik sortu: eszena handiegia da","couldNotLoadInvalidFile":"Ezin izan da kargatu, fitxategiak ez du balio","importBackendFailed":"Inportazioak huts egin du.","cannotExportEmptyCanvas":"Ezin izan da oihal hutsa esportatu.","couldNotCopyToClipboard":"Ezin izan da arbelean kopiatu.","decryptFailed":"Ezin izan da deszifratu.","uploadedSecurly":"Kargatzea muturretik muturrerako zifratze bidez ziurtatu da, hau da, Excalidraw zerbitzariak eta hirugarrenek ezin dutela edukia irakurri.","loadSceneOverridePrompt":"Kanpoko marrazkia kargatzeak lehendik duzun edukia ordezkatuko du. Jarraitu nahi duzu?","collabStopOverridePrompt":"Saioa gelditzeak lokalean gordetako zure aurreko marrazkia gainidatziko du. Ziur zaude?\\n\\n(Zure marrazki lokala mantendu nahi baduzu, itxi arakatzailearen fitxa.)","errorAddingToLibrary":"Ezin izan da elementua liburutegian gehitu","errorRemovingFromLibrary":"Ezin izan da elementua liburutegitik kendu","confirmAddLibrary":"Honek {{numShapes}} forma gehituko ditu zure liburutegian. Ziur zaude?","imageDoesNotContainScene":"Irudi honek ez dirudi eszena daturik duenik. Eszena kapsulatzea gaitu al duzu esportazioan?","cannotRestoreFromImage":"Ezin izan da eszena leheneratu irudi fitxategi honetatik","invalidSceneUrl":"Ezin izan da eszena inportatu emandako URLtik. Gaizki eratuta dago edo ez du baliozko Excalidraw JSON daturik.","resetLibrary":"Honek zure liburutegia garbituko du. Ziur zaude?","removeItemsFromsLibrary":"Liburutegitik {{count}} elementu ezabatu?","invalidEncryptionKey":"Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.","collabOfflineWarning":"Ez dago Interneteko konexiorik.\\nZure aldaketak ez dira gordeko!"},"errors":{"unsupportedFileType":"Onartu gabeko fitxategi mota.","imageInsertError":"Ezin izan da irudia txertatu. Saiatu berriro geroago...","fileTooBig":"Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.","svgImageInsertError":"Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.","failedToFetchImage":"","invalidSVGString":"SVG baliogabea.","cannotResolveCollabServer":"Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.","importLibraryError":"Ezin izan da liburutegia kargatu","collabSaveFailed":"Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.","collabSaveFailed_sizeExceeded":"Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.","brave_measure_text_error":{"line1":"Brave arakatzailea erabiltzen ari zarela dirudi Blokeatu hatz-markak erasokorki ezarpena gaituta.","line2":"Honek zure marrazkietako Testu-elementuak hautsi ditzake.","line3":"Ezarpen hau desgaitzea gomendatzen dugu. urrats hauek jarrai ditzakezu hori nola egin jakiteko.","line4":"Ezarpen hau desgaituz gero, testu-elementuen bistaratzea konpontzen ez bada, ireki arazo gure GitHub-en edo idatzi iezaguzu Discord helbidera"},"libraryElementTypeError":{"embeddable":"Kapsulatutako elementuak ezin dira liburutegira gehitu.","image":"Laster egongo da irudiak liburutegian gehitzeko laguntza!"}},"toolBar":{"selection":"Hautapena","image":"Txertatu irudia","rectangle":"Laukizuzena","diamond":"Diamantea","ellipse":"Elipsea","arrow":"Gezia","line":"Lerroa","freedraw":"Marraztu","text":"Testua","library":"Liburutegia","lock":"Mantendu aktibo hautatutako tresna marraztu ondoren","penMode":"Luma modua - ukipena saihestu","link":"Gehitu / Eguneratu esteka hautatutako forma baterako","eraser":"Borragoma","frame":"Marko tresna","embeddable":"Web kapsulatzea","laser":"Laser punteroa","hand":"Eskua (panoratze tresna)","extraTools":"Tresna gehiago"},"headings":{"canvasActions":"Canvas ekintzak","selectedShapeActions":"Hautatutako formaren ekintzak","shapes":"Formak"},"hints":{"canvasPanning":"Oihala mugitzeko, eutsi saguaren gurpila edo zuriune-barra arrastatzean, edo erabili esku tresna","linearElement":"Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako","freeDraw":"Egin klik eta arrastatu, askatu amaitutakoan","text":"Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin","embeddable":"Egin klik eta arrastatu webgunea kapsulatzeko","text_selected":"Egin klik bikoitza edo sakatu SARTU testua editatzeko","text_editing":"Sakatu Esc edo Ctrl+SARTU editatzen amaitzeko","linearElementMulti":"Egin klik azken puntuan edo sakatu Esc edo Sartu amaitzeko","lockAngle":"SHIFT sakatuta angelua mantendu dezakezu","resize":"Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.\\nsakatu ALT erditik tamaina aldatzeko","resizeImage":"Tamaina libreki alda dezakezu SHIFT sakatuta,\\nsakatu ALT erditik tamaina aldatzeko","rotate":"Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean","lineEditor_info":"Eutsi sakatuta Ctrl edo Cmd eta egin klik bikoitza edo sakatu Ctrl edo Cmd + Sartu puntuak editatzeko","lineEditor_pointSelected":"Sakatu Ezabatu puntuak kentzeko,\\nKtrl+D bikoizteko, edo arrastatu mugitzeko","lineEditor_nothingSelected":"Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),\\nedo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko","placeImage":"Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko","publishLibrary":"Argitaratu zure liburutegia","bindTextToElement":"Sakatu Sartu testua gehitzeko","deepBoxSelect":"Eutsi Ctrl edo Cmd sakatuta aukeraketa sakona egiteko eta arrastatzea saihesteko","eraserRevert":"Eduki Alt sakatuta ezabatzeko markatutako elementuak leheneratzeko","firefox_clipboard_write":"Ezaugarri hau \\"dom.events.asyncClipboard.clipboardItem\\" marka \\"true\\" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu \\"about:config\\" orrialdera.","disableSnapping":"Eduki sakatuta Ctrl edo Cmd tekla atxikipena desgaitzeko"},"canvasError":{"cannotShowPreview":"Ezin da oihala aurreikusi","canvasTooBig":"Agian oihala handiegia da.","canvasTooBigTip":"Aholkua: saiatu urrunen dauden elementuak pixka bat hurbiltzen."},"errorSplash":{"headingMain":"Errore bat aurkitu da. Saiatu ","clearCanvasMessage":"Birkargatzea ez bada burutzen, saiatu ","clearCanvasCaveat":" Honen ondorioz lana galduko da ","trackedToSentry":"Identifikatzailearen errorea {{eventId}} gure sistemak behatu du.","openIssueMessage":"Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.","sceneContent":"Eszenaren edukia:"},"roomDialog":{"desc_intro":"Jendea zure uneko eszenara gonbida dezakezu zurekin elkarlanean aritzeko.","desc_privacy":"Ez kezkatu, saioak muturretik muturrerako enkriptatzea erabiltzen du, beraz, marrazten duzuna pribatua izango da. Gure zerbitzariak ere ezingo du ikusi zer egiten duzun.","button_startSession":"Hasi saioa","button_stopSession":"Itxi saioa","desc_inProgressIntro":"Zuzeneko lankidetza saioa abian da.","desc_shareLink":"Partekatu esteka hau elkarlanean aritu nahi duzun edonorekin:","desc_exitSession":"Saioa ixteak aretotik deskonektatuko zaitu, baina eszenarekin lanean jarraitu ahal izango duzu lokalean. Kontuan izan honek ez diela beste pertsonei eragingo, eta euren bertsioan elkarlanean aritu ahal izango dira.","shareTitle":"Sartu Excalidraw-en zuzeneko lankidetza-saio batean"},"errorDialog":{"title":"Errorea"},"exportDialog":{"disk_title":"Gorde diskoan","disk_details":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan.","disk_button":"Gorde fitxategian","link_title":"Partekatzeko esteka","link_details":"Esportatu irakurtzeko soilik moduko esteka.","link_button":"Esportatu esteka","excalidrawplus_description":"Gorde eszena zure Excalidraw+ laneko areara.","excalidrawplus_button":"Esportatu","excalidrawplus_exportError":"Une honetan ezin izan da esportatu Excalidraw+era..."},"helpDialog":{"blog":"Irakurri gure bloga","click":"sakatu","deepSelect":"Hautapen sakona","deepBoxSelect":"Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea","curvedArrow":"Gezi kurbatua","curvedLine":"Lerro kurbatua","documentation":"Dokumentazioa","doubleClick":"klik bikoitza","drag":"arrastatu","editor":"Editorea","editLineArrowPoints":"Editatu lerroak/gezi-puntuak","editText":"Editatu testua / gehitu etiketa","github":"Arazorik izan al duzu? Eman horren berri","howto":"Jarraitu gure gidak","or":"edo","preventBinding":"Saihestu gezien gainjartzea","tools":"Tresnak","shortcuts":"Laster-teklak","textFinish":"Bukatu edizioa (testu editorea)","textNewLine":"Gehitu lerro berri bat (testu editorea)","title":"Laguntza","view":"Bistaratu","zoomToFit":"Egin zoom elementu guztiak ikusteko","zoomToSelection":"Zooma hautapenera","toggleElementLock":"Blokeatu/desbloketatu hautapena","movePageUpDown":"Mugitu orria gora/behera","movePageLeftRight":"Mugitu orria ezker/eskuin"},"clearCanvasDialog":{"title":"Garbitu oihala"},"publishDialog":{"title":"Argitaratu liburutegia","itemName":"Elementuaren izena","authorName":"Egilearen izena","githubUsername":"GitHub-eko erabiltzaile-izena","twitterUsername":"Twitter-eko erabiltzaile-izena","libraryName":"Liburutegiaren izena","libraryDesc":"Liburutegiaren deskripzioa","website":"Webgunea","placeholder":{"authorName":"Zure izena edo erabiltzaile-izena","libraryName":"Zure liburutegiaren izena","libraryDesc":"Zure liburutegiaren deskripzioa laguntzeko jendeari ulertzen haren erabilpena","githubHandle":"GitHub heldulekua (aukerakoa), liburutegia editatu ahal izateko berrikustera bidalitakoan","twitterHandle":"Twitter-eko erabiltzaile-izena (aukerakoa), badakigu nori kreditatu behar dugun Twitter bidez sustatzeko","website":"Estekatu zure webgunera edo nahi duzun tokira (aukerakoa)"},"errors":{"required":"Beharrezkoa","website":"Sartu baliozko URL bat"},"noteDescription":"Bidali zure liburutegira sartu ahal izateko zure liburutegiko biltegianbeste jendeak bere marrazkietan erabili ahal izateko.","noteGuidelines":"Liburutegia eskuz onartu behar da. Irakurri gidalerroak bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa.","noteLicense":"Bidaltzen baduzu, onartzen duzu liburutegia MIT lizentziarekin argitaratuko dela, zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe.","noteItems":"Liburutegiko elementu bakoitzak bere izena eduki behar du iragazi ahal izateko. Liburutegiko hurrengo elementuak barne daude:","atleastOneLibItem":"Hautatu gutxienez liburutegiko elementu bat gutxienez hasi ahal izateko","republishWarning":"Oharra: hautatutako elementu batzuk dagoeneko argitaratuta/bidalita bezala markatuta daude. Elementuak berriro bidali behar dituzu lehendik dagoen liburutegi edo bidalketa eguneratzen duzunean."},"publishSuccessDialog":{"title":"Liburutegia bidali da","content":"Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoerahemen"},"confirmDialog":{"resetLibrary":"Leheneratu liburutegia","removeItemsFromLib":"Kendu hautatutako elementuak liburutegitik"},"imageExportDialog":{"header":"Esportatu irudia","label":{"withBackground":"Atzeko planoa","onlySelected":"Hautapena soilik","darkMode":"Modu iluna","embedScene":"Txertatu eszena","scale":"Eskala","padding":"Betegarria"},"tooltip":{"embedScene":"Eszenaren datuak esportatutako PNG/SVG fitxategian gordeko dira, eszena bertatik berrezartzeko.\\nEsportatutako fitxategien tamaina handituko da."},"title":{"exportToPng":"Esportatu PNG gisa","exportToSvg":"Esportatu SVG gisa","copyPngToClipboard":"Kopiatu PNG arbelera"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiatu arbelean"}},"encrypted":{"tooltip":"Zure marrazkiak muturretik muturrera enkriptatu dira, beraz Excalidraw-ren zerbitzariek ezingo dituzte ikusi.","link":"Excalidraw-ren muturretik muturrerako enkriptatzearen gaineko mezua blogean"},"stats":{"angle":"Angelua","element":"Elementua","elements":"Elementuak","height":"Altuera","scene":"Eszena","selected":"Hautatua","storage":"Biltegia","title":"Datuak","total":"Guztira","version":"Bertsioa","versionCopy":"Klikatu kopiatzeko","versionNotAvailable":"Bertsio ez eskuragarria","width":"Zabalera"},"toast":{"addedToLibrary":"Liburutegira gehitu da","copyStyles":"Estiloak kopiatu dira.","copyToClipboard":"Arbelean kopiatu da.","copyToClipboardAsPng":"{{exportSelection}} kopiatu da arbelean PNG gisa\\n({{exportColorScheme}})","fileSaved":"Fitxategia gorde da.","fileSavedToFilename":"{filename}-n gorde da","canvas":"oihala","selection":"hautapena","pasteAsSingleElement":"Erabili {{shortcut}} elementu bakar gisa itsasteko,\\nedo itsatsi lehendik dagoen testu-editore batean","unableToEmbed":"Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko","unrecognizedLinkFormat":"Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako \'kapsulatu\' katea itsasten"},"colors":{"transparent":"Gardena","black":"Beltza","white":"Zuria","red":"Gorria","pink":"Arrosa","grape":"Mahats kolorea","violet":"Bioleta","gray":"Grisa","blue":"Urdina","cyan":"Ziana","teal":"Berde urdinxka","green":"Berdea","yellow":"Horia","orange":"Laranja","bronze":"Brontzea"},"welcomeScreen":{"app":{"center_heading":"Zure datu guztiak lokalean gordetzen dira zure nabigatzailean.","center_heading_plus":"Horren ordez Excalidraw+-era joan nahi al zenuen?","menuHint":"Esportatu, hobespenak, hizkuntzak..."},"defaults":{"menuHint":"Esportatu, hobespenak eta gehiago...","center_heading":"Diagramak. Egina. Sinplea.","toolbarHint":"Aukeratu tresna bat eta hasi marrazten!","helpHint":"Lasterbideak eta laguntza"}},"colorPicker":{"mostUsedCustomColors":"Gehien erabilitako kolore pertsonalizatuak","colors":"Koloreak","shades":"Ñabardurak","hexCode":"Hez kodea","noShades":"Kolore honetarako ez dago ñabardurarik eskuragarri"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esportatu irudi gisa","button":"Esportatu irudi gisa","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun irudi gisa."},"saveToDisk":{"title":"Gorde diskoan","button":"Gorde diskoan","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esportatu Excalidraw+ra","description":"Gorde eszena zure Excalidraw+ laneko areara."}},"modal":{"loadFromFile":{"title":"Fitxategitik kargatu","button":"Fitxategitik kargatu","description":"Fitxategi batetik kargatzeak lehendik duzun edukia ordezkatuko du.

Lehenengo marrazkiaren babeskopia egin dezakezu beheko aukeretako bat erabiliz."},"shareableLink":{"title":"Estekatik kargatu","button":"Ordeztu nire edukia","description":"Kanpoko irudi bat kargatzeak lehendik duzun edukia ordezkatuko du.

. Zure marrazkiaren babeskopia egin dezakezu lehenik beheko aukeretako bat erabiliz."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js b/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js new file mode 100644 index 0000000..e989813 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5330],{3747:function(e){e.exports=JSON.parse('{"labels":{"paste":"جای گذاری","pasteAsPlaintext":"جای‌گذاری به عنوان متن ساده","pasteCharts":"قراردادن نمودارها","selectAll":"انتخاب همه","multiSelect":"یک ایتم به انتخاب شده ها اضافه کنید.","moveCanvas":"جابجایی بوم","cut":"بریدن","copy":"کپی","copyAsPng":"کپی در حافطه موقت به صورت PNG","copyAsSvg":"کپی در حافطه موقت به صورت SVG","copyText":"کپی در حافطه موقت به صورت متن","bringForward":"جلو آوردن","sendToBack":"پس فرستادن","bringToFront":"جلو آوردن","sendBackward":"پس فرستادن","delete":"حذف","copyStyles":"کپی سبک","pasteStyles":"جای گذاری سبک","stroke":"حاشیه","background":"پس زمینه","fill":"رنگ آمیزی","strokeWidth":"ضخامت حاشیه","strokeStyle":"استایل حاشیه","strokeStyle_solid":"یکدست","strokeStyle_dashed":"خط چین","strokeStyle_dotted":"نقطه چین","sloppiness":"دقت","opacity":"شفافیت","textAlign":"چیدمان متن","edges":"لبه ها","sharp":"تیز","round":"دور","arrowheads":"سر پیکان","arrowhead_none":"هیچ کدام","arrowhead_arrow":"پیکان","arrowhead_bar":"میله ای","arrowhead_dot":"نقطه","arrowhead_triangle":"مثلث","fontSize":"اندازه قلم","fontFamily":"نوع قلم","addWatermark":"\\"ساخته شده با Excalidraw\\" را اضافه کن","handDrawn":"دست نویس","normal":"عادی","code":"کد","small":"کوچک","medium":"متوسط","large":"بزرگ","veryLarge":"بسیار بزرگ","solid":"توپر","hachure":"هاشور","zigzag":"زیگزاگ","crossHatch":"هاشور متقاطع","thin":"نازک","bold":"ضخیم","left":"چپ","center":"وسط","right":"راست","extraBold":"خیلی ضخیم","architect":"معمار","artist":"هنرمند","cartoonist":"کارتونیست","fileTitle":"نام فایل","colorPicker":"انتخابگر رنگ","canvasColors":"رنگ های بوم","canvasBackground":"بوم","drawingCanvas":"بوم نقاشی","layers":"لایه ها","actions":"عملیات","language":"زبان","liveCollaboration":"همکاری آنلاین...","duplicateSelection":"تکرار","untitled":"بدون عنوان","name":"نام","yourName":"نام شما","madeWithExcalidraw":"ساخته شده با Excalidraw","group":"گروهبندی انتخابها","ungroup":"حذف گروهبندی انتخابها","collaborators":"همکاران","showGrid":"نمایش گرید","addToLibrary":"افزودن به کتابخانه","removeFromLibrary":"حذف از کتابخانه","libraryLoadingMessage":"بارگذاری کتابخانه…","libraries":"مرور کردن کتابخانه ها","loadingScene":"باگذاری صحنه…","align":"تراز","alignTop":"تراز به بالا","alignBottom":"تراز به پایین","alignLeft":"تراز به چپ","alignRight":"تراز به راست","centerVertically":"وسط قرار دادن به صورت عمودی","centerHorizontally":"وسط قرار دادن به صورت افقی","distributeHorizontally":"توزیع کردن به صورت افقی","distributeVertically":"توزیع کردن به صورت عمودی","flipHorizontal":"چرخش افقی","flipVertical":"چرخش عمودی","viewMode":"حالت نمایش","share":"اشتراک‌گذاری","showStroke":"نمایش انتخاب کننده رنگ حاشیه","showBackground":"نمایش انتخاب کننده رنگ پس زمینه","toggleTheme":"تغییر تم","personalLib":"کتابخانه شخصی","excalidrawLib":"کتابخانه","decreaseFontSize":"کاهش اندازه فونت","increaseFontSize":"افزایش دادن اندازه فونت","unbindText":"بازکردن نوشته","bindText":"بستن نوشته","createContainerFromText":"متن را در یک جایگاه بپیچید","link":{"edit":"ویرایش لینک","editEmbed":"","create":"ایجاد پیوند","createEmbed":"","label":"لینک","labelEmbed":"","empty":""},"lineEditor":{"edit":"ویرایش لینک","exit":"خروج از ویرایشگر"},"elementLock":{"lock":"قفل","unlock":"باز کردن","lockAll":"قفل همه","unlockAll":"باز کردن قفل همه"},"statusPublished":"منتشر شده","sidebarLock":"باز نگه داشتن سایدبار","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"انتخاب رنگ از کرباس"},"library":{"noItems":"آیتمی به اینجا اضافه نشده...","hint_emptyLibrary":"یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.","hint_emptyPrivateLibrary":"یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید."},"buttons":{"clearReset":"پاکسازی بوم نقاشی","exportJSON":"خروجی در فایل","exportImage":"خروجی گرفتن از تصویر...","export":"ذخیره در...","copyToClipboard":"کپی در حافظه موقت","save":"ذخیره در همین فایل","saveAs":"ذخیره با نام","load":"باز کردن","getShareableLink":"دریافت لینک قابل اشتراک","close":"بستن","selectLanguage":"انتخاب زبان","scrollBackToContent":"به محتوا بروید","zoomIn":"بزرگ نمایی","zoomOut":"کوچک نمایی","resetZoom":"اندازه اصلی","menu":"فهرست","done":"انجام شد","edit":"ویرایش","undo":"بازگرد","redo":"از سر","resetLibrary":"تنظیم مجدد کتابخانه","createNewRoom":"ایجاد یک اتاق جدید","fullScreen":"تمام‌صفحه","darkMode":"حالت تیره","lightMode":"حالت روشن","zenMode":"حالت ذن","objectsSnapMode":"","exitZenMode":"خروج از حالت تمرکز","cancel":"لغو","clear":"پاک کردن","remove":"پاک کردن","embed":"","publishLibrary":"انتشار","submit":"ارسال","confirm":"تایید","embeddableInteractionButton":""},"alerts":{"clearReset":"این کار کل صفحه را پاک میکند. آیا مطمئنید؟","couldNotCreateShareableLink":"عدم توانایی در ساخت یک لینک قابل اشتراک.","couldNotCreateShareableLinkTooBig":"لینک قابل اشتراک گذاری ایجاد نشد: محتوای صحنه بسیار بزرگ است","couldNotLoadInvalidFile":"عدم توانایی در بازگذاری فایل نامعتبر","importBackendFailed":"بارگیری از پشت صحنه با شکست مواجه شد.","cannotExportEmptyCanvas":"بوم خالی قابل تبدیل نیست.","couldNotCopyToClipboard":"به کلیپ بورد کپی نشد.","decryptFailed":"رمزگشایی داده ها امکان پذیر نیست.","uploadedSecurly":"آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.","loadSceneOverridePrompt":"بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟","collabStopOverridePrompt":"با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟\\n\\n(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)","errorAddingToLibrary":"مورد به کتابخانه اضافه نشد","errorRemovingFromLibrary":"مورد از کتابخانه حذف نشد","confirmAddLibrary":"{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟","imageDoesNotContainScene":"به نظر نمی رسد این تصویر حاوی داده های بوم نقاشی باشد. آیا جاسازی صحنه را در حین خروجی فعال کرده اید?","cannotRestoreFromImage":"صحنه را نمی توان از این فایل تصویری بازیابی کرد","invalidSceneUrl":"بوم نقاشی از آدرس ارائه شده وارد نشد. این یا نادرست است، یا حاوی داده Excalidraw JSON معتبر نیست.","resetLibrary":"ین کار کل صفحه را پاک میکند. آیا مطمئنید?","removeItemsFromsLibrary":"حذف {{count}} آیتم(ها) از کتابخانه?","invalidEncryptionKey":"کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.","collabOfflineWarning":"اتصال به اینترنت در دسترس نیست.\\nتغییرات شما ذخیره نمی شود!"},"errors":{"unsupportedFileType":"نوع فایل پشتیبانی نشده.","imageInsertError":"عکس ارسال نشد. بعداً دوباره تلاش کنید...","fileTooBig":"فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.","svgImageInsertError":"تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.","failedToFetchImage":"","invalidSVGString":"SVG نادرست.","cannotResolveCollabServer":"به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.","importLibraryError":"داده‌ها بارگذاری نشدند","collabSaveFailed":"در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","collabSaveFailed_sizeExceeded":"در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","brave_measure_text_error":{"line1":"به نظر می‌رسد از مرورگر Brave با تنظیم مسدود کردن شدید اثرانگشت استفاده می‌کنید.","line2":"این می تواند منجر به شکستن عناصر متن در نقاشی های شما شود.","line3":"اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار می‌توانید این مراحل را دنبال کنید.","line4":"اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک مشکل را در GitHub ما باز کنید یا برای ما در Discord بنویسید."},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"گزینش","image":"وارد کردن تصویر","rectangle":"مستطیل","diamond":"لوزی","ellipse":"بیضی","arrow":"پیکان","line":"خط","freedraw":"کشیدن","text":"متن","library":"کتابخانه","lock":"ابزار انتخاب شده را بعد از کشیدن نگه دار","penMode":"حالت قلم - جلوگیری از تماس","link":"افزودن/به‌روزرسانی پیوند برای شکل انتخابی","eraser":"پاک کن","frame":"","embeddable":"","laser":"","hand":"دست (ابزار پانینگ)","extraTools":"ابزارهای بیشتر"},"headings":{"canvasActions":"عملیات روی بوم","selectedShapeActions":"عملیات روی شکل انتخاب شده","shapes":"شکل‌ها"},"hints":{"canvasPanning":"برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید","linearElement":"برای چند نقطه کلیک و برای یک خط بکشید","freeDraw":"کلیک کنید و بکشید و وقتی کار تمام شد رها کنید","text":"نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید","embeddable":"","text_selected":"دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید","text_editing":"Escape یا CtrlOrCmd+ENTER را فشار دهید تا ویرایش تمام شود","linearElementMulti":"روی آخرین نقطه کلیک کنید یا کلید ESC را بزنید یا کلید Enter را بزنید برای اتمام کار","lockAngle":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","resize":"می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید","resizeImage":"با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\\nبرای تغییر اندازه از مرکز، ALT را نگه دارید","rotate":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","lineEditor_info":"CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.","lineEditor_pointSelected":"برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید","lineEditor_nothingSelected":"یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید","placeImage":"برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود","publishLibrary":"کتابخانه خود را منتشر کنید","bindTextToElement":"برای افزودن اینتر را بزنید","deepBoxSelect":"CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید","eraserRevert":"Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند","firefox_clipboard_write":"احتمالاً می‌توان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \\"about:config\\" دیدن کنید.","disableSnapping":""},"canvasError":{"cannotShowPreview":"پیش نمایش نشان داده نمی شود","canvasTooBig":"بوم نقاشی بسیار بزرگ است.","canvasTooBigTip":"نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید."},"errorSplash":{"headingMain":"","clearCanvasMessage":"اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ","clearCanvasCaveat":" این باعث میشود کارهای شما ذخیره نشود ","trackedToSentry":"","openIssueMessage":"","sceneContent":"محتوای صحنه:"},"roomDialog":{"desc_intro":"می توانید افرادی را به صحنه فعلی خود دعوت کنید تا با شما همکاری کنند.","desc_privacy":"نگران نباشید، این جلسه از رمزگذاری دوطرفه استفاده می کند، پس هر چیزی بکشید خصوصی خواهد ماند. حتی سرور ما نمیتواند ببیند چیزی که شما طراحی میکنید.","button_startSession":"شروع جلسه","button_stopSession":"پایان جلسه","desc_inProgressIntro":"جلسه همکاری آنلاین در حال انجام است.","desc_shareLink":"این لینک را با هر کسی که می خواهید با او همکاری کنید به اشتراک بگذارید:","desc_exitSession":"با پایان دادن جلسه، شما از اتاق حذف میکند، اما می توانید به صورت محلی کار خود را با بوم ادامه دهید. توجه داشته باشید که این مورد بر سایر افراد تأثیر نمی گذارد و همچنان می توانند در نسخه خود همکاری کنند.","shareTitle":"به یک جلسه همکاری زنده در Excalidraw بپیوندید"},"errorDialog":{"title":"خطا"},"exportDialog":{"disk_title":"ذخیره در دیسک","disk_details":"داده های صحنه را به فایلی که بعداً می توانید از آن وارد کنید صادر کنید.","disk_button":"ذخیره در فایل","link_title":"لینک قابل اشتراک‌گذاری","link_details":"خروجی به عنوان یک پیوند فقط خواندنی.","link_button":"خروجی در فایل","excalidrawplus_description":"صحنه را در فضای کاری Excalidraw+ خود ذخیره کنید.","excalidrawplus_button":"خروجی گرفتن","excalidrawplus_exportError":"در حال حاضر نمی‌توان به Excalidraw+ صادر کرد..."},"helpDialog":{"blog":"بلاگ ما را بخوانید","click":"کلیک","deepSelect":"انتخاب عمیق","deepBoxSelect":"انتخاب عمیق در کادر، و جلوگیری از کشیدن","curvedArrow":"فلش خمیده","curvedLine":"منحنی","documentation":"مستندات","doubleClick":"دابل کلیک","drag":"کشیدن","editor":"ویرایشگر","editLineArrowPoints":"نقاط خط/پیکان را ویرایش کنید","editText":"ویرایش متن / افزودن برچسب","github":"اشکالی می بینید؟ گزارش دهید","howto":"راهنمای ما را دنبال کنید","or":"یا","preventBinding":"مانع شدن از چسبیدن فلش ها","tools":"ابزار","shortcuts":"میانبرهای صفحه کلید","textFinish":"پایان ویرایش (ویرایشگر متن)","textNewLine":"افزودن خط جدید (ویرایشگر متن)","title":"راهنما","view":"مشاهده","zoomToFit":"بزرگنمایی برای دیدن تمام آیتم ها","zoomToSelection":"بزرگنمایی قسمت انتخاب شده","toggleElementLock":"قفل/بازکردن انتخاب شده ها","movePageUpDown":"حرکت صفحه به بالا/پایین","movePageLeftRight":"حرکت صفحه به چپ/راست"},"clearCanvasDialog":{"title":"پاک کردن بوم"},"publishDialog":{"title":"انتشار کتابخانه","itemName":"نام آیتم","authorName":"نام نویسنده","githubUsername":"نام کاربری گیت هاب","twitterUsername":"نام کاربری توییتر","libraryName":"نام کتابخانه","libraryDesc":"توضیحات کتابخانه","website":"تارنما","placeholder":{"authorName":"نام یا نام کاربری شما","libraryName":"اسم کتابخانه","libraryDesc":"شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن","githubHandle":"دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید","twitterHandle":"نام کاربری توییتر (اختیاری)، بنابراین می دانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم","website":"پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)"},"errors":{"required":"لازم","website":"وارد کردن آدرس درست"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:","atleastOneLibItem":"لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید","republishWarning":"توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام به‌روزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید."},"publishSuccessDialog":{"title":"کتابخانه ارسال شد","content":"تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید"},"confirmDialog":{"resetLibrary":"تنظیم مجدد کتابخانه","removeItemsFromLib":"موارد انتخاب شده از موارد پسندیده حذف شوند"},"imageExportDialog":{"header":"","label":{"withBackground":"پس زمینه","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"شما در یک محیط رمزگزاری شده دو طرفه در حال طراحی هستید پس Excalidraw هرگز طرح های شما را نمیبند.","link":"پست وبلاگ در مورد رمزگذاری سرتاسر در Excalidraw"},"stats":{"angle":"زاویه","element":"اِلمان","elements":"اِلمان ها","height":"ارتفاع","scene":"صحنه","selected":"انتخاب شده","storage":"حافظه","title":"آمار برای نردها","total":"مجموع","version":"نسخه","versionCopy":"برای کپی کردن کلیک کنید","versionNotAvailable":"نسخه غیرقابل دسترس","width":"عرض"},"toast":{"addedToLibrary":"به مجموعه اضافه شد","copyStyles":"کپی سبک.","copyToClipboard":"در کلیپ‌بورد کپی شد.","copyToClipboardAsPng":"کپی {{exportSelection}} در کلیپبورد به عنوان PNG\\n({{exportColorScheme}})","fileSaved":"فایل ذخیره شد.","fileSavedToFilename":"ذخیره در {filename}","canvas":"بوم","selection":"انتخاب","pasteAsSingleElement":"از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\\nیا در یک ویرایشگر متن موجود جایگذاری کنید","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"شفاف","black":"سیاه","white":"سفید","red":"قرمز","pink":"صورتی","grape":"یاقوتی","violet":"بنفش","gray":"خاکستری","blue":"آبی","cyan":"فیروزه‌ای","teal":"سبزآبی","green":"سبز","yellow":"زرد","orange":"نارنجی","bronze":"برنزی"},"welcomeScreen":{"app":{"center_heading":"تمام داده های شما به صورت محلی در مرورگر شما ذخیره می شود.","center_heading_plus":"آیا می‌خواهید به جای آن به Excalidraw+ بروید؟","menuHint":"خروجی، ترجیحات، زبان ها، ..."},"defaults":{"menuHint":"خروجی، ترجیحات، وبیشتر ...","center_heading":"نمودارها .ساخته شده. ساده.","toolbarHint":"ابزاری را انتخاب کنید و نقاشی را شروع کنید!","helpHint":"میانبرها و راهنما"}},"colorPicker":{"mostUsedCustomColors":"","colors":"رنگ‌ها","shades":"جلوه‌ها","hexCode":"کدِ هگز","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"ذخیره در دیسک","button":"ذخیره در دیسک","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"بارگذاری از فایل","button":"بارگذاری از فایل","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js b/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js new file mode 100644 index 0000000..6dc0890 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3512],{9490:function(i){i.exports=JSON.parse('{"labels":{"paste":"Liitä","pasteAsPlaintext":"Liitä pelkkänä tekstinä","pasteCharts":"Liitä kaaviot","selectAll":"Valitse kaikki","multiSelect":"Lisää kohde valintaan","moveCanvas":"Siirrä piirtoaluetta","cut":"Leikkaa","copy":"Kopioi","copyAsPng":"Kopioi leikepöydälle PNG-tiedostona","copyAsSvg":"Kopioi leikepöydälle SVG-tiedostona","copyText":"Kopioi tekstinä","bringForward":"Tuo eteenpäin","sendToBack":"Vie taakse","bringToFront":"Tuo eteen","sendBackward":"Vie taaksepäin","delete":"Poista","copyStyles":"Kopioi tyyli","pasteStyles":"Liitä tyyli","stroke":"Piirto","background":"Tausta","fill":"Täyttö","strokeWidth":"Viivan leveys","strokeStyle":"Viivan tyyli","strokeStyle_solid":"Yhtenäinen","strokeStyle_dashed":"Katkoviiva","strokeStyle_dotted":"Pisteviiva","sloppiness":"Viivan tarkkuus","opacity":"Peittävyys","textAlign":"Tekstin tasaus","edges":"Reunat","sharp":"Terävä","round":"Pyöristetty","arrowheads":"Nuolenkärjet","arrowhead_none":"Ei mitään","arrowhead_arrow":"Nuoli","arrowhead_bar":"Tasapää","arrowhead_dot":"Piste","arrowhead_triangle":"Kolmio","fontSize":"Kirjasinkoko","fontFamily":"Kirjasintyyppi","addWatermark":"Lisää \\"Tehty Excalidrawilla\\"","handDrawn":"Käsinpiirretty","normal":"Tavallinen","code":"Koodi","small":"Pieni","medium":"Keskikoko","large":"Suuri","veryLarge":"Erittäin suuri","solid":"Yhtenäinen","hachure":"Vinoviivoitus","zigzag":"","crossHatch":"Ristiviivoitus","thin":"Ohut","bold":"Lihavoitu","left":"Vasen","center":"Keskitä","right":"Oikea","extraBold":"Erittäin lihavoitu","architect":"Arkkitehti","artist":"Taiteilija","cartoonist":"Sarjakuva","fileTitle":"Tiedostonimi","colorPicker":"Värin valinta","canvasColors":"Käytössä piirtoalueella","canvasBackground":"Piirtoalueen tausta","drawingCanvas":"Piirtoalue","layers":"Tasot","actions":"Toiminnot","language":"Kieli","liveCollaboration":"Live Yhteistyö...","duplicateSelection":"Monista","untitled":"Nimetön","name":"Nimi","yourName":"Nimesi","madeWithExcalidraw":"Tehty Excalidrawilla","group":"Ryhmitä valinta","ungroup":"Pura valittu ryhmä","collaborators":"Yhteistyökumppanit","showGrid":"Näytä ruudukko","addToLibrary":"Lisää kirjastoon","removeFromLibrary":"Poista kirjastosta","libraryLoadingMessage":"Ladataan kirjastoa…","libraries":"Selaa kirjastoja","loadingScene":"Ladataan työtä…","align":"Tasaa","alignTop":"Tasaa ylös","alignBottom":"Tasaa alas","alignLeft":"Tasaa vasemmalle","alignRight":"Tasaa oikealle","centerVertically":"Keskitä pystysuunnassa","centerHorizontally":"Keskitä vaakasuunnassa","distributeHorizontally":"Jaa vaakasuunnassa","distributeVertically":"Jaa pystysuunnassa","flipHorizontal":"Käännä vaakasuunnassa","flipVertical":"Käännä pystysuunnassa","viewMode":"Katselutila","share":"Jaa","showStroke":"Näytä viivan värin valitsin","showBackground":"Näytä taustavärin valitsin","toggleTheme":"Vaihda teema","personalLib":"Oma kirjasto","excalidrawLib":"Excalidraw kirjasto","decreaseFontSize":"Pienennä kirjasinkokoa","increaseFontSize":"Kasvata kirjasinkokoa","unbindText":"Irroita teksti","bindText":"Kiinnitä teksti säiliöön","createContainerFromText":"","link":{"edit":"Muokkaa linkkiä","editEmbed":"","create":"Luo linkki","createEmbed":"","label":"Linkki","labelEmbed":"","empty":""},"lineEditor":{"edit":"Muokkaa riviä","exit":"Poistu rivieditorista"},"elementLock":{"lock":"Lukitse","unlock":"Poista lukitus","lockAll":"Lukitse kaikki","unlockAll":"Poista lukitus kaikista"},"statusPublished":"Julkaistu","sidebarLock":"Pidä sivupalkki avoinna","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Kirjastossa ei ole vielä yhtään kohdetta...","hint_emptyLibrary":"Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.","hint_emptyPrivateLibrary":"Valitse lisättävä kohde piirtoalueelta."},"buttons":{"clearReset":"Tyhjennä piirtoalue","exportJSON":"Vie tiedostoon","exportImage":"Vie kuva...","export":"Tallenna nimellä...","copyToClipboard":"Kopioi leikepöydälle","save":"Tallenna nykyiseen tiedostoon","saveAs":"Tallenna nimellä","load":"Avaa","getShareableLink":"Hae jaettava linkki","close":"Sulje","selectLanguage":"Valitse kieli","scrollBackToContent":"Näytä sisältö","zoomIn":"Lähennä","zoomOut":"Loitonna","resetZoom":"Nollaa suurennuksen taso","menu":"Valikko","done":"Valmis","edit":"Muokkaa","undo":"Kumoa","redo":"Tee uudelleen","resetLibrary":"Tyhjennä kirjasto","createNewRoom":"Luo huone","fullScreen":"Koko näyttö","darkMode":"Tumma tila","lightMode":"Vaalea tila","zenMode":"Zen-tila","objectsSnapMode":"","exitZenMode":"Poistu zen-tilasta","cancel":"Peruuta","clear":"Pyyhi","remove":"Poista","embed":"","publishLibrary":"Julkaise","submit":"Lähetä","confirm":"Vahvista","embeddableInteractionButton":""},"alerts":{"clearReset":"Tämä tyhjentää koko piirtoalueen. Jatketaanko?","couldNotCreateShareableLink":"Jaettavan linkin luominen epäonnistui.","couldNotCreateShareableLinkTooBig":"Jaettavaa linkkiä ei voitu luoda: teos on liian suuri","couldNotLoadInvalidFile":"Virheellistä tiedostoa ei voitu avata","importBackendFailed":"Palvelimelta tuonti epäonnistui.","cannotExportEmptyCanvas":"Tyhjää piirtoaluetta ei voi viedä.","couldNotCopyToClipboard":"Leikepöydälle vieminen epäonnistui.","decryptFailed":"Salauksen purkaminen epäonnistui.","uploadedSecurly":"Lähetys on turvattu päästä-päähän-salauksella. Excalidrawin palvelin ja kolmannet osapuolet eivät voi lukea sisältöä.","loadSceneOverridePrompt":"Ulkopuolisen piirroksen lataaminen korvaa nykyisen sisältösi. Jatketaanko?","collabStopOverridePrompt":"Istunnon lopettaminen korvaa aiemman, paikallisesti tallennetun piirustuksen. Jatketaanko?\\n\\n(Jos haluat säilyttää paikallisesti tallennetun piirustuksen, sulje selaimen välilehti lopettamisen sijaan.)","errorAddingToLibrary":"Kohdetta ei voitu lisätä kirjastoon","errorRemovingFromLibrary":"Kohdetta ei voitu poistaa kirjastosta","confirmAddLibrary":"Tämä lisää {{numShapes}} muotoa kirjastoosi. Jatketaanko?","imageDoesNotContainScene":"Tämä kuva ei näytä sisältävän piirrostietoja. Oletko ottanut käyttöön piirroksen tallennuksen viennin aikana?","cannotRestoreFromImage":"Teosta ei voitu palauttaa tästä kuvatiedostosta","invalidSceneUrl":"Teosta ei voitu tuoda annetusta URL-osoitteesta. Tallenne on vioittunut, tai osoitteessa ei ole Excalidraw JSON-dataa.","resetLibrary":"Tämä tyhjentää kirjastosi. Jatketaanko?","removeItemsFromsLibrary":"Poista {{count}} kohdetta kirjastosta?","invalidEncryptionKey":"Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.","collabOfflineWarning":"Internet-yhteyttä ei ole saatavilla.\\nMuutoksiasi ei tallenneta!"},"errors":{"unsupportedFileType":"Tiedostotyyppiä ei tueta.","imageInsertError":"Kuvan lisääminen epäonnistui. Yritä myöhemmin uudelleen...","fileTooBig":"Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.","svgImageInsertError":"SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.","failedToFetchImage":"","invalidSVGString":"Virheellinen SVG.","cannotResolveCollabServer":"Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.","importLibraryError":"Kokoelman lataaminen epäonnistui","collabSaveFailed":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","collabSaveFailed_sizeExceeded":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Valinta","image":"Lisää kuva","rectangle":"Suorakulmio","diamond":"Vinoneliö","ellipse":"Soikio","arrow":"Nuoli","line":"Viiva","freedraw":"Piirrä","text":"Teksti","library":"Kirjasto","lock":"Pidä valittu työkalu aktiivisena piirron jälkeen","penMode":"Kynätila - estä kosketus","link":"Lisää/päivitä linkki valitulle muodolle","eraser":"Poistotyökalu","frame":"","embeddable":"","laser":"","hand":"Käsi (panning-työkalu)","extraTools":""},"headings":{"canvasActions":"Piirtoalueen toiminnot","selectedShapeActions":"Valitun muodon toiminnot","shapes":"Muodot"},"hints":{"canvasPanning":"Piirtoalueen liikuttamiseksi pidä hiiren pyörää tai välilyöntiä pohjassa tai käytä käsityökalua","linearElement":"Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva","freeDraw":"Paina ja raahaa, päästä irti kun olet valmis","text":"Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla","embeddable":"","text_selected":"Kaksoisnapsauta tai paina ENTER muokataksesi tekstiä","text_editing":"Paina Escape tai CtrlOrCmd+ENTER lopettaaksesi muokkaamisen","linearElementMulti":"Lopeta klikkaamalla viimeistä pistettä, painamalla Escape- tai Enter-näppäintä","lockAngle":"Voit rajoittaa kulmaa pitämällä SHIFT-näppäintä alaspainettuna","resize":"Voit rajoittaa mittasuhteet pitämällä SHIFT-näppäintä alaspainettuna kun muutat kokoa, pidä ALT-näppäintä alaspainettuna muuttaaksesi kokoa keskipisteen suhteen","resizeImage":"Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri","rotate":"Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi","lineEditor_info":"Pidä CtrlOrCmd pohjassa ja kaksoisnapsauta tai paina CtrlOrCmd + Enter muokataksesi pisteitä","lineEditor_pointSelected":"Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla","lineEditor_nothingSelected":"Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä","placeImage":"Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti","publishLibrary":"Julkaise oma kirjasto","bindTextToElement":"Lisää tekstiä painamalla enter","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus painamalla CtrlOrCmd","eraserRevert":"Pidä Alt alaspainettuna, kumotaksesi merkittyjen elementtien poistamisen","firefox_clipboard_write":"Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla \\"dom.events.asyncClipboard.clipboardItem\\" kohta \\"true\\":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy \\"about:config\\" sivulla.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Esikatselua ei voitu näyttää","canvasTooBig":"Piirtoalue saattaa olla liian suuri.","canvasTooBigTip":"Vinkki: yritä siirtää kaukaisimpia elementtejä hieman lähemmäs toisiaan."},"errorSplash":{"headingMain":"Tapahtui virhe. Yritä ","clearCanvasMessage":"Mikäli sivun lataaminen uudelleen ei auta, yritä ","clearCanvasCaveat":" Tämä johtaa työn menetykseen ","trackedToSentry":"Virhe tunnisteella {{eventId}} tallennettiin järjestelmäämme.","openIssueMessage":"Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.","sceneContent":"Piirroksen tiedot:"},"roomDialog":{"desc_intro":"Voit kutsua ihmisiä piirrokseesi tekemään yhteistyötä kanssasi.","desc_privacy":"Älä huoli, istunto käyttää päästä-päähän-salausta, joten mitä tahansa piirrätkin, se pysyy salassa. Edes palvelimemme eivät näe mitä keksit.","button_startSession":"Aloita istunto","button_stopSession":"Lopeta istunto","desc_inProgressIntro":"Jaettu istunto on nyt käynnissä.","desc_shareLink":"Jaa tämä linkki kenelle tahansa, jonka kanssa haluat tehdä yhteistyötä:","desc_exitSession":"Istunnon pysäyttäminen katkaisee yhteyden huoneeseen, mutta voit vielä jatkaa työskentelyä paikallisesti. Huomaa, että tämä ei vaikuta muihin käyttäjiin ja he voivat jatkaa oman versionsa parissa työskentelyä.","shareTitle":"Liity Excalidraw live-yhteistyöistuntoon"},"errorDialog":{"title":"Virhe"},"exportDialog":{"disk_title":"Tallenna levylle","disk_details":"Vie työn tiedot tiedostoon, josta sen voi tuoda myöhemmin.","disk_button":"Tallenna tiedostoon","link_title":"Jaettava linkki","link_details":"Vie vain luku -linkkinä.","link_button":"Vie linkkinä","excalidrawplus_description":"Tallenna teos Excalidraw+ tilaan.","excalidrawplus_button":"Vie","excalidrawplus_exportError":"Ei voitu viedä Excalidraw+-palveluun tällä hetkellä..."},"helpDialog":{"blog":"Lue blogiamme","click":"klikkaa","deepSelect":"Syvävalinta","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus","curvedArrow":"Kaareva nuoli","curvedLine":"Kaareva viiva","documentation":"Käyttöohjeet","doubleClick":"kaksoisnapsautus","drag":"vedä","editor":"Muokkausohjelma","editLineArrowPoints":"","editText":"","github":"Löysitkö ongelman? Kerro meille","howto":"Seuraa oppaitamme","or":"tai","preventBinding":"Estä nuolten kiinnitys","tools":"Työkalut","shortcuts":"Pikanäppäimet","textFinish":"Lopeta muokkaus (tekstieditori)","textNewLine":"Lisää uusi rivi (tekstieditori)","title":"Ohjeet","view":"Näkymä","zoomToFit":"Näytä kaikki elementit","zoomToSelection":"Näytä valinta","toggleElementLock":"Lukitse / poista lukitus valinta","movePageUpDown":"Siirrä sivua ylös/alas","movePageLeftRight":"Siirrä sivua vasemmalle/oikealle"},"clearCanvasDialog":{"title":"Pyyhi piirtoalue"},"publishDialog":{"title":"Julkaise kirjasto","itemName":"Kohteen nimi","authorName":"Tekijän nimi","githubUsername":"GitHub-käyttäjätunnus","twitterUsername":"Twitter-käyttäjätunnus","libraryName":"Kirjaston nimi","libraryDesc":"Kirjaston kuvaus","website":"Verkkosivu","placeholder":{"authorName":"Nimesi tai käyttäjänimesi","libraryName":"Kirjastosi nimi","libraryDesc":"Kirjaston kuvaus, joka auttaa ihmisiä ymmärtämään sen käyttötarkoitukset","githubHandle":"GitHub-tunnuksesi (valinnainen), jotta voit muokata kirjastoa sen jälkeen kun se on lähetetty tarkastettavaksi","twitterHandle":"Twitter-tunnus (valinnainen), jotta tiedämme ketä kiittää kun viestimme Twitterissä","website":"Linkki henkilökohtaiselle verkkosivustollesi tai muualle (valinnainen)"},"errors":{"required":"Pakollinen","website":"Syötä oikeamuotoinen URL-osoite"},"noteDescription":"Lähetä kirjastosi, jotta se voidaan sisällyttää julkisessa kirjastolistauksessamuiden käyttöön omissa piirrustuksissaan.","noteGuidelines":"Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue ohjeet ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä.","noteLicense":"Lähettämällä hyväksyt että kirjasto julkaistaan MIT-lisenssin alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia.","noteItems":"Jokaisella kirjaston kohteella on oltava oma nimensä suodatusta varten. Seuraavat kirjaston kohteet sisältyvät:","atleastOneLibItem":"Valitse vähintään yksi kirjaston kohde aloittaaksesi","republishWarning":"Huom! Osa valituista kohteista on merkitty jo julkaistu/lähetetyiksi. Lähetä kohteita uudelleen vain päivitettäessä olemassa olevaa kirjastoa tai ehdotusta."},"publishSuccessDialog":{"title":"Kirjasto lähetetty","content":"Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaatäällä"},"confirmDialog":{"resetLibrary":"Tyhjennä kirjasto","removeItemsFromLib":"Poista valitut kohteet kirjastosta"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Piirroksesi ovat päästä-päähän-salattuja, joten Excalidrawin palvelimet eivät koskaan näe niitä.","link":"Blogiartikkeli päästä päähän -salauksesta Excalidraw:ssa"},"stats":{"angle":"Kulma","element":"Elementti","elements":"Elementit","height":"Korkeus","scene":"Teos","selected":"Valitut","storage":"Tallennustila","title":"Tilastoja nörteille","total":"Yhteensä","version":"Versio","versionCopy":"Klikkaa kopioidaksesi","versionNotAvailable":"Versio ei saatavilla","width":"Leveys"},"toast":{"addedToLibrary":"Lisätty kirjastoon","copyStyles":"Tyylit kopioitiin.","copyToClipboard":"Kopioitiin leikepöydälle.","copyToClipboardAsPng":"Kopioitiin {{exportSelection}} leikepöydälle PNG:nä\\n({{exportColorScheme}})","fileSaved":"Tiedosto tallennettu.","fileSavedToFilename":"Tallennettiin kohteeseen {filename}","canvas":"piirtoalue","selection":"valinta","pasteAsSingleElement":"Käytä {{shortcut}} liittääksesi yhtenä elementtinä,\\ntai liittääksesi olemassa olevaan tekstieditoriin","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Läpinäkyvä","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Kaikki tietosi on tallennettu paikallisesti selaimellesi.","center_heading_plus":"Haluatko sen sijaan mennä Excalidraw+:aan?","menuHint":"Vie, asetukset, kielet, ..."},"defaults":{"menuHint":"Vie, asetukset ja lisää...","center_heading":"Kaaviot. Tehty. Yksinkertaiseksi.","toolbarHint":"Valitse työkalu ja aloita piirtäminen!","helpHint":"Pikanäppäimet & ohje"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js b/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js new file mode 100644 index 0000000..bb54d91 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3682],{7830:function(e){e.exports=JSON.parse('{"labels":{"paste":"Coller","pasteAsPlaintext":"Coller comme texte brut","pasteCharts":"Coller les graphiques","selectAll":"Tout sélectionner","multiSelect":"Ajouter l\'élément à la sélection","moveCanvas":"Déplacer le canevas","cut":"Couper","copy":"Copier","copyAsPng":"Copier dans le presse-papier en PNG","copyAsSvg":"Copier dans le presse-papier en SVG","copyText":"Copier dans le presse-papier en tant que texte","bringForward":"Envoyer vers l\'avant","sendToBack":"Déplacer à l\'arrière-plan","bringToFront":"Mettre au premier plan","sendBackward":"Reculer d\'un plan","delete":"Supprimer","copyStyles":"Copier les styles","pasteStyles":"Coller les styles","stroke":"Trait","background":"Arrière-plan","fill":"Remplissage","strokeWidth":"Largeur du contour","strokeStyle":"Style du trait","strokeStyle_solid":"Continu","strokeStyle_dashed":"Tirets","strokeStyle_dotted":"Pointillés","sloppiness":"Style de tracé","opacity":"Transparence","textAlign":"Alignement du texte","edges":"Angles","sharp":"Pointus","round":"Arrondis","arrowheads":"Extrémités","arrowhead_none":"Sans","arrowhead_arrow":"Flèche","arrowhead_bar":"Barre","arrowhead_dot":"Point","arrowhead_triangle":"Triangle","fontSize":"Taille de la police","fontFamily":"Police","addWatermark":"Ajouter \\"Réalisé avec Excalidraw\\"","handDrawn":"À main levée","normal":"Normale","code":"Code","small":"Petite","medium":"Moyenne","large":"Grande","veryLarge":"Très grande","solid":"Solide","hachure":"Hachures","zigzag":"Zigzag","crossHatch":"Hachures croisées","thin":"Fine","bold":"Épaisse","left":"À gauche","center":"Au centre","right":"À droite","extraBold":"Très épaisse","architect":"Architecte","artist":"Artiste","cartoonist":"Caricaturiste","fileTitle":"Nom du fichier","colorPicker":"Sélecteur de couleur","canvasColors":"Utilisé sur la zone de dessin","canvasBackground":"Arrière-plan du canevas","drawingCanvas":"Zone de dessin","layers":"Disposition","actions":"Actions","language":"Langue","liveCollaboration":"Collaboration en direct...","duplicateSelection":"Dupliquer","untitled":"Sans-titre","name":"Nom","yourName":"Votre nom","madeWithExcalidraw":"Fait avec Excalidraw","group":"Grouper la sélection","ungroup":"Dégrouper la sélection","collaborators":"Collaborateurs","showGrid":"Afficher la grille","addToLibrary":"Ajouter à la bibliothèque","removeFromLibrary":"Supprimer de la bibliothèque","libraryLoadingMessage":"Chargement de la bibliothèque…","libraries":"Parcourir les bibliothèques","loadingScene":"Chargement de la scène…","align":"Alignement","alignTop":"Aligner en haut","alignBottom":"Aligner en bas","alignLeft":"Aligner à gauche","alignRight":"Aligner à droite","centerVertically":"Centrer verticalement","centerHorizontally":"Centrer horizontalement","distributeHorizontally":"Répartir horizontalement","distributeVertically":"Répartir verticalement","flipHorizontal":"Retourner horizontalement","flipVertical":"Retourner verticalement","viewMode":"Mode présentation","share":"Partager","showStroke":"Afficher le sélecteur de couleur de trait","showBackground":"Afficher le sélecteur de couleur de fond","toggleTheme":"Changer le thème","personalLib":"Bibliothèque personnelle","excalidrawLib":"Bibliothèque Excalidraw","decreaseFontSize":"Diminuer la taille de police","increaseFontSize":"Augmenter la taille de la police","unbindText":"Dissocier le texte","bindText":"Associer le texte au conteneur","createContainerFromText":"Encadrer le texte dans un conteneur","link":{"edit":"Modifier le lien","editEmbed":"Éditer le lien & intégrer","create":"Ajouter un lien","createEmbed":"Créer un lien & intégrer","label":"Lien","labelEmbed":"","empty":"Aucun lien défini"},"lineEditor":{"edit":"Modifier la ligne","exit":"Quitter l\'éditeur de ligne"},"elementLock":{"lock":"Verrouiller","unlock":"Déverrouiller","lockAll":"Tout verrouiller","unlockAll":"Tout déverrouiller"},"statusPublished":"Publié","sidebarLock":"Maintenir la barre latérale ouverte","selectAllElementsInFrame":"Sélectionner tous les éléments du cadre","removeAllElementsFromFrame":"Supprimer tous les éléments du cadre","eyeDropper":""},"library":{"noItems":"Aucun élément n\'a encore été ajouté ...","hint_emptyLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.","hint_emptyPrivateLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici."},"buttons":{"clearReset":"Réinitialiser le canevas","exportJSON":"Exporter comme fichier","exportImage":"Exporter l\'image...","export":"Enregistrer sous...","copyToClipboard":"Copier dans le presse-papier","save":"Enregistrer dans le fichier actuel","saveAs":"Enregistrer sous","load":"Ouvrir","getShareableLink":"Obtenir un lien de partage","close":"Fermer","selectLanguage":"Choisir une langue","scrollBackToContent":"Revenir au contenu","zoomIn":"Zoomer","zoomOut":"Dézoomer","resetZoom":"Réinitialiser le zoom","menu":"Menu","done":"Terminé","edit":"Modifier","undo":"Annuler","redo":"Rétablir","resetLibrary":"Réinitialiser la bibliothèque","createNewRoom":"Créer une nouvelle salle","fullScreen":"Plein écran","darkMode":"Mode sombre","lightMode":"Mode clair","zenMode":"Mode zen","objectsSnapMode":"Aimanter aux objets","exitZenMode":"Quitter le mode zen","cancel":"Annuler","clear":"Effacer","remove":"Supprimer","embed":"Activer/Désactiver l\'intégration","publishLibrary":"Publier","submit":"Envoyer","confirm":"Confirmer","embeddableInteractionButton":"Cliquez pour interagir"},"alerts":{"clearReset":"L\'intégralité du canevas va être effacée. Êtes-vous sûr ?","couldNotCreateShareableLink":"Impossible de créer un lien de partage.","couldNotCreateShareableLinkTooBig":"Impossible de créer un lien de partage : la scène est trop volumineuse","couldNotLoadInvalidFile":"Impossible de charger un fichier invalide","importBackendFailed":"L\'importation depuis le serveur a échoué.","cannotExportEmptyCanvas":"Impossible d\'exporter un canevas vide.","couldNotCopyToClipboard":"Impossible de copier dans le presse-papiers.","decryptFailed":"Les données n\'ont pas pu être déchiffrées.","uploadedSecurly":"Le téléchargement a été sécurisé avec un chiffrement de bout en bout, ce qui signifie que ni Excalidraw ni personne d\'autre ne peut en lire le contenu.","loadSceneOverridePrompt":"Le chargement d\'un dessin externe remplacera votre contenu actuel. Souhaitez-vous continuer ?","collabStopOverridePrompt":"Arrêter la session écrasera votre précédent dessin stocké localement. Êtes-vous sûr·e ?\\n\\n(Si vous voulez garder votre dessin local, fermez simplement l\'onglet du navigateur à la place.)","errorAddingToLibrary":"Impossible d\'ajouter l\'élément à la bibliothèque","errorRemovingFromLibrary":"Impossible de retirer l\'élément de la bibliothèque","confirmAddLibrary":"Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?","imageDoesNotContainScene":"Cette image ne semble pas contenir de données de scène. Avez-vous activé l\'intégration de scène lors de l\'exportation ?","cannotRestoreFromImage":"Impossible de restaurer la scène depuis ce fichier image","invalidSceneUrl":"Impossible d\'importer la scène depuis l\'URL fournie. Elle est soit incorrecte, soit ne contient pas de données JSON Excalidraw valides.","resetLibrary":"Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?","removeItemsFromsLibrary":"Supprimer {{count}} élément(s) de la bibliothèque ?","invalidEncryptionKey":"La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.","collabOfflineWarning":"Aucune connexion internet disponible.\\nVos modifications ne seront pas enregistrées !"},"errors":{"unsupportedFileType":"Type de fichier non supporté.","imageInsertError":"Impossible d\'insérer l\'image. Réessayez plus tard...","fileTooBig":"Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.","svgImageInsertError":"Impossible d\'insérer l\'image SVG. Le balisage SVG semble invalide.","failedToFetchImage":"","invalidSVGString":"SVG invalide.","cannotResolveCollabServer":"Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.","importLibraryError":"Impossible de charger la bibliothèque","collabSaveFailed":"Impossible d\'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.","collabSaveFailed_sizeExceeded":"Impossible d\'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.","brave_measure_text_error":{"line1":"On dirait que vous utilisez le navigateur Brave avec l\'option Bloquer agressivement le fichage activée.","line2":"Cela pourrait entraîner des problèmes avec les Éléments Textuels dans vos dessins.","line3":"Nous recommandons fortement de désactiver cette option. Vous pouvez suivre ces instructions pour savoir comment faire.","line4":"Si désactiver cette option de résout pas le problème d\'affichage des éléments textuels, veuillez ouvrir un ticket sur notre GitHub, ou écrivez-nous sur notre Discord"},"libraryElementTypeError":{"embeddable":"Les éléments intégrés ne peuvent pas être ajoutés à la librairie.","image":"Le support pour l\'ajout d\'images à la librairie arrive bientôt !"}},"toolBar":{"selection":"Sélection","image":"Insérer une image","rectangle":"Rectangle","diamond":"Losange","ellipse":"Ellipse","arrow":"Flèche","line":"Ligne","freedraw":"Dessiner","text":"Texte","library":"Bibliothèque","lock":"Garder l\'outil sélectionné actif après le dessin","penMode":"Mode stylo - évite le toucher","link":"Ajouter/mettre à jour le lien pour une forme sélectionnée","eraser":"Gomme","frame":"Outil de cadre","embeddable":"Intégration Web","laser":"","hand":"Mains (outil de déplacement de la vue)","extraTools":"Plus d\'outils"},"headings":{"canvasActions":"Actions du canevas","selectedShapeActions":"Actions pour la forme sélectionnée","shapes":"Formes"},"hints":{"canvasPanning":"Pour déplacer la zone de dessin, maintenez la molette de la souris enfoncée ou la barre d\'espace tout en faisant glisser, ou utiliser l\'outil main.","linearElement":"Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne","freeDraw":"Cliquez et faites glissez, relâchez quand vous avez terminé","text":"Astuce : vous pouvez aussi ajouter du texte en double-cliquant n\'importe où avec l\'outil de sélection","embeddable":"Cliquez et glissez pour créer une intégration de site web","text_selected":"Double-cliquez ou appuyez sur ENTRÉE pour modifier le texte","text_editing":"Appuyez sur ÉCHAP ou Ctrl/Cmd+ENTRÉE pour terminer l\'édition","linearElementMulti":"Cliquez sur le dernier point ou appuyez sur Échap ou Entrée pour terminer","lockAngle":"Vous pouvez restreindre l\'angle en maintenant MAJ","resize":"Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre","resizeImage":"Vous pouvez redimensionner librement en maintenant SHIFT,\\nmaintenez ALT pour redimensionner depuis le centre","rotate":"Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation","lineEditor_info":"Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points","lineEditor_pointSelected":"Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer","lineEditor_nothingSelected":"Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),\\nou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points","placeImage":"Cliquez pour placer l\'image, ou cliquez et faites glisser pour définir sa taille manuellement","publishLibrary":"Publier votre propre bibliothèque","bindTextToElement":"Appuyer sur Entrée pour ajouter du texte","deepBoxSelect":"Maintenir Ctrl ou Cmd pour sélectionner dans les groupes et empêcher le déplacement","eraserRevert":"Maintenez Alt enfoncé pour annuler les éléments marqués pour suppression","firefox_clipboard_write":"Cette fonctionnalité devrait pouvoir être activée en définissant l\'option \\"dom.events.asyncClipboard.clipboard.clipboardItem\\" à \\"true\\". Pour modifier les paramètres du navigateur dans Firefox, visitez la page \\"about:config\\".","disableSnapping":"Maintenez CtrlOuCmd pour désactiver l\'aimantation"},"canvasError":{"cannotShowPreview":"Impossible d’afficher l’aperçu","canvasTooBig":"Le canevas est peut-être trop grand.","canvasTooBigTip":"Astuce : essayez de rapprocher un peu les éléments les plus éloignés."},"errorSplash":{"headingMain":"Une erreur est survenue. Essayez ","clearCanvasMessage":"Si le rechargement ne résout pas l\'erreur, essayez ","clearCanvasCaveat":" Cela entraînera une perte du travail ","trackedToSentry":"L\'erreur avec l\'identifiant {{eventId}} a été enregistrée dans notre système.","openIssueMessage":"Nous avons fait très attention à ne pas inclure les informations de votre scène dans l\'erreur. Si votre scène n\'est pas privée, veuillez envisager de poursuivre sur notre Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.","sceneContent":"Contenu de la scène :"},"roomDialog":{"desc_intro":"Vous pouvez inviter des personnes à collaborer avec vous sur votre scène actuelle.","desc_privacy":"Pas d\'inquiétude, la session utilise le chiffrement de bout en bout, donc tout ce que vous dessinez restera privé. Même notre serveur ne pourra voir ce que vous faites.","button_startSession":"Démarrer la session","button_stopSession":"Arrêter la session","desc_inProgressIntro":"La session de collaboration en direct est maintenant en cours.","desc_shareLink":"Partagez ce lien avec les personnes avec lesquelles vous souhaitez collaborer :","desc_exitSession":"Arrêter la session vous déconnectera de la salle, mais vous pourrez continuer à travailler avec la scène, localement. Notez que cela n\'affectera pas les autres personnes, et ils pourront toujours collaborer sur leur version.","shareTitle":"Rejoindre une session de collaboration en direct sur Excalidraw"},"errorDialog":{"title":"Erreur"},"exportDialog":{"disk_title":"Enregistrer sur le disque","disk_details":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement.","disk_button":"Enregistrer comme fichier","link_title":"Lien partageable","link_details":"Exporter comme un lien en lecture seule.","link_button":"Exporter comme lien","excalidrawplus_description":"Enregistrer la scène dans votre espace de travail Excalidraw+.","excalidrawplus_button":"Exporter","excalidrawplus_exportError":"Impossible d\'exporter vers Excalidraw+ pour le moment..."},"helpDialog":{"blog":"Lire notre blog","click":"clic","deepSelect":"Sélection dans les groupes","deepBoxSelect":"Sélectionner dans les groupes, et empêcher le déplacement","curvedArrow":"Flèche courbée","curvedLine":"Ligne courbée","documentation":"Documentation","doubleClick":"double-clic","drag":"glisser","editor":"Éditeur","editLineArrowPoints":"Modifier les points de ligne/flèche","editText":"Modifier le texte / ajouter un libellé","github":"Problème trouvé ? Soumettre","howto":"Suivez nos guides","or":"ou","preventBinding":"Empêcher la liaison de flèche","tools":"Outils","shortcuts":"Raccourcis clavier","textFinish":"Terminer l\'édition (éditeur de texte)","textNewLine":"Ajouter une nouvelle ligne (éditeur de texte)","title":"Aide","view":"Affichage","zoomToFit":"Zoomer pour voir tous les éléments","zoomToSelection":"Zoomer sur la sélection","toggleElementLock":"Verrouiller/déverrouiller la sélection","movePageUpDown":"Déplacer la page vers le haut/bas","movePageLeftRight":"Déplacer la page vers la gauche/droite"},"clearCanvasDialog":{"title":"Effacer la zone de dessin"},"publishDialog":{"title":"Publier la bibliothèque","itemName":"Nom de l’élément","authorName":"Nom de l\'auteur","githubUsername":"Nom d\'utilisateur GitHub","twitterUsername":"Nom d\'utilisateur Twitter","libraryName":"Nom de la bibliothèque","libraryDesc":"Description de la bibliothèque","website":"Site web","placeholder":{"authorName":"Votre nom ou nom d\'utilisateur","libraryName":"Nom de votre bibliothèque","libraryDesc":"Description de votre bibliothèque pour aider les gens à comprendre son usage","githubHandle":"Nom d\'utilisateur GitHub (optionnel), pour que tu puisses modifier la bibliothèque une fois soumise pour vérification","twitterHandle":"Nom d\'utilisateur Twitter (optionnel), pour savoir qui créditer lors de la promotion sur Twitter","website":"Lien vers votre site web personnel ou autre (optionnel)"},"errors":{"required":"Requis","website":"Entrer une URL valide"},"noteDescription":"Soumets ta bibliothèque pour l\'inclure au dépôt de bibliothèque publiquepour permettre son utilisation par autrui dans leurs dessins.","noteGuidelines":"La bibliothèque doit d\'abord être approuvée manuellement. Veuillez lire les lignes directrices avant de la soumettre. Vous aurez besoin d\'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n\'est pas obligatoire.","noteLicense":"En soumettant, vous acceptez que la bibliothèque soit publiée sous la Licence MIT, ce qui en gros signifie que tout le monde peut l\'utiliser sans restrictions.","noteItems":"Chaque élément de la bibliothèque doit avoir son propre nom afin qu\'il soit filtrable. Les éléments de bibliothèque suivants seront inclus :","atleastOneLibItem":"Veuillez sélectionner au moins un élément de bibliothèque pour commencer","republishWarning":"Remarque : certains des éléments sélectionnés sont marqués comme étant déjà publiés/soumis. Vous devez uniquement resoumettre des éléments lors de la mise à jour d\'une bibliothèque ou d\'une soumission existante."},"publishSuccessDialog":{"title":"Bibliothèque soumise","content":"Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statutici"},"confirmDialog":{"resetLibrary":"Réinitialiser la bibliothèque","removeItemsFromLib":"Enlever les éléments sélectionnés de la bibliothèque"},"imageExportDialog":{"header":"Exporter l\'image","label":{"withBackground":"Fond","onlySelected":"Uniquement la sélection","darkMode":"Mode sombre","embedScene":"Intégrer la scène","scale":"Échelle","padding":""},"tooltip":{"embedScene":"Les données de la scène seront sauvegardées dans le fichier PNG/SVG exporté afin que la scène puisse être restaurée depuis celui-ci.\\nCela augmentera la taille du fichier exporté."},"title":{"exportToPng":"Exporter en PNG","exportToSvg":"Exporter en SVG","copyPngToClipboard":"Copier le PNG dans le presse-papier"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copier dans le presse-papier"}},"encrypted":{"tooltip":"Vos dessins sont chiffrés de bout en bout, les serveurs d\'Excalidraw ne les verront jamais.","link":"Article de blog sur le chiffrement de bout en bout dans Excalidraw"},"stats":{"angle":"Angle","element":"Élément","elements":"Éléments","height":"Hauteur","scene":"Scène","selected":"Sélection","storage":"Stockage","title":"Stats pour les nerds","total":"Total","version":"Version","versionCopy":"Cliquer pour copier","versionNotAvailable":"Version non disponible","width":"Largeur"},"toast":{"addedToLibrary":"Ajouté à la bibliothèque","copyStyles":"Styles copiés.","copyToClipboard":"Copié dans le presse-papier.","copyToClipboardAsPng":"{{exportSelection}} copié dans le presse-papier en PNG\\n({{exportColorScheme}})","fileSaved":"Fichier enregistré.","fileSavedToFilename":"Enregistré sous {filename}","canvas":"canevas","selection":"sélection","pasteAsSingleElement":"Utiliser {{shortcut}} pour coller comme un seul élément,\\nou coller dans un éditeur de texte existant","unableToEmbed":"Intégrer cet URL n\'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche","unrecognizedLinkFormat":"Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d\'intégration fournie par le site source"},"colors":{"transparent":"Transparent","black":"Noir","white":"Blanc","red":"Rouge","pink":"Rose","grape":"Mauve","violet":"Violet","gray":"Gris","blue":"Bleu","cyan":"Cyan","teal":"Turquoise","green":"Vert","yellow":"Jaune","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Toutes vos données sont sauvegardées en local dans votre navigateur.","center_heading_plus":"Vouliez-vous plutôt aller à Excalidraw+ à la place ?","menuHint":"Exportation, préférences, langues, ..."},"defaults":{"menuHint":"Exportation, préférences et plus...","center_heading":"Diagrammes. Rendus. Simples.","toolbarHint":"Choisissez un outil et commencez à dessiner !","helpHint":"Raccourcis et aide"}},"colorPicker":{"mostUsedCustomColors":"Couleurs personnalisées les plus fréquemment utilisées","colors":"Couleurs","shades":"Nuances","hexCode":"Code hex","noShades":"Aucune nuance disponible pour cette couleur"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exporter en image","button":"Exporter en image","description":"Exporter les données de la scène comme une image que vous pourrez importer ultérieurement."},"saveToDisk":{"title":"Sauvegarder sur le disque","button":"Sauvegarder sur le disque","description":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exporter vers Excalidraw+","description":"Enregistrer la scène dans votre espace de travail Excalidraw+."}},"modal":{"loadFromFile":{"title":"Charger depuis un fichier","button":"Charger depuis un fichier","description":"Charger depuis un fichier va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."},"shareableLink":{"title":"Charger depuis un lien","button":"Remplacer mon contenu","description":"Charger un dessin externe va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js b/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js new file mode 100644 index 0000000..6ed57c0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2943],{5199:function(e){e.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar coma texto sen formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Engadir elemento á selección","moveCanvas":"Mover o lenzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar no portapapeis como PNG","copyAsSvg":"Copiar no portapapeis como SVG","copyText":"Copia no portapapeis como texto","bringForward":"Traer cara adiante","sendToBack":"Enviar cara atrás","bringToFront":"Traer á fronte","sendBackward":"Enviar ao fondo","delete":"Borrar","copyStyles":"Copiar estilo","pasteStyles":"Pegar estilo","stroke":"Trazo","background":"Fondo","fill":"Recheo","strokeWidth":"Largo do trazo","strokeStyle":"Estilo do trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Liña de trazos","strokeStyle_dotted":"Liña de puntos","sloppiness":"Estilo de trazo","opacity":"Opacidade","textAlign":"Aliñar texto","edges":"Bordos","sharp":"Agudo","round":"Redondo","arrowheads":"Puntas de frecha","arrowhead_none":"Ningunha","arrowhead_arrow":"Frecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño da fonte","fontFamily":"Tipo de fonte","addWatermark":"Engadir \\"Feito con Excalidraw\\"","handDrawn":"Debuxado a man","normal":"Normal","code":"Código","small":"Pequeno","medium":"Mediano","large":"Grande","veryLarge":"Moi grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Raiado transversal","thin":"Estreito","bold":"Groso","left":"Esquerda","center":"Centrado","right":"Dereita","extraBold":"Moi groso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nome do arquivo","colorPicker":"Selector de cor","canvasColors":"Usado en lenzo","canvasBackground":"Fondo do lenzo","drawingCanvas":"Lenzo de debuxo","layers":"Capas","actions":"Accións","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sen título","name":"Nome","yourName":"O teu nome","madeWithExcalidraw":"Feito con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Engadir á biblioteca","removeFromLibrary":"Eliminar da biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Aliñamento","alignTop":"Aliñamento superior","alignBottom":"Aliñamento inferior","alignLeft":"Aliñar a esquerda","alignRight":"Aliñar a dereita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuír horizontalmente","distributeVertically":"Distribuír verticalmente","flipHorizontal":"Virar horizontalmente","flipVertical":"Virar verticalmente","viewMode":"Modo de visualización","share":"Compartir","showStroke":"Mostrar selector de cores do trazo","showBackground":"Mostrar selector de cores do fondo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Persoal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Diminuír tamaño da fonte","increaseFontSize":"Aumentar o tamaño da fonte","unbindText":"Desvincular texto","bindText":"Ligar o texto ao contedor","createContainerFromText":"Envolver o texto nun contedor","link":{"edit":"Editar ligazón","editEmbed":"","create":"Crear ligazón","createEmbed":"","label":"Ligazón","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar liña","exit":"Saír do editor de liñas"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Aínda non hai elementos engadidos...","hint_emptyLibrary":"Seleccione un elemento no lenzo para engadilo aquí, ou instale unha biblioteca dende o repositorio público, como se detalla a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento do lenzo para engadilo aquí."},"buttons":{"clearReset":"Limpar o lenzo","exportJSON":"Exportar a arquivo","exportImage":"Exportar imaxe...","export":"Gardar en...","copyToClipboard":"Copiar ao portapapeis","save":"Gardar no ficheiro actual","saveAs":"Gardar como","load":"Abrir","getShareableLink":"Obter unha ligazón que se poida compartir","close":"Pechar","selectLanguage":"Seleccionar idioma","scrollBackToContent":"Volver ao contido","zoomIn":"Ampliar","zoomOut":"Reducir","resetZoom":"Reiniciar zoom","menu":"Menú","done":"Feito","edit":"Editar","undo":"Desfacer","redo":"Refacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nova sala","fullScreen":"Pantalla completa","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Saír do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Faga clic para interactuar"},"alerts":{"clearReset":"Isto limpará todo o lenzo. Estás seguro?","couldNotCreateShareableLink":"Non se puido crear unha ligazón para compartir.","couldNotCreateShareableLinkTooBig":"Non se puido crear a ligazón para compartir: a escena é demasiado grande","couldNotLoadInvalidFile":"Non se puido cargar o ficheiro non válido","importBackendFailed":"A importación dende o backend fallou.","cannotExportEmptyCanvas":"Non se pode exportar un lenzo baleiro.","couldNotCopyToClipboard":"Non se puido copiar ao portapapeis.","decryptFailed":"Non se poideron descifrar os datos.","uploadedSecurly":"A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poden ler o contido.","loadSceneOverridePrompt":"A carga dun debuxo externo substituirá o contido existente. Desexa continuar?","collabStopOverridePrompt":"Deter a sesión, sobrescribirá o seu debuxo local previamente almacenado. Está seguro?\\n\\n(Se quere manter o seu debuxo local, simplemente peche a lapela do navegador.)","errorAddingToLibrary":"Non se puido engadir o elemento á biblioteca","errorRemovingFromLibrary":"Non se puido eliminar o elemento da biblioteca","confirmAddLibrary":"Isto engadirá {{numShapes}} forma(s) a túa biblioteca. Estás seguro?","imageDoesNotContainScene":"Esta imaxe non parece conter ningún dato da escena. Activou a inserción de escenas durante a exportación?","cannotRestoreFromImage":"Non se puido restaurar a escena dende este arquivo de imaxe","invalidSceneUrl":"Non se puido importar a escena dende a URL proporcionada. Ou ben está malformada ou non contén un JSON con información válida para Excalidraw.","resetLibrary":"Isto limpará a súa biblioteca. Está seguro?","removeItemsFromsLibrary":"Eliminar {{count}} elemento(s) da biblioteca?","invalidEncryptionKey":"A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.","collabOfflineWarning":"Non hai conexión a Internet dispoñible.\\nOs teus cambios non serán gardados!"},"errors":{"unsupportedFileType":"Tipo de ficheiro non soportado.","imageInsertError":"Non se puido inserir a imaxe. Probe de novo máis tarde...","fileTooBig":"O ficheiro é demasiado grande. O tamaño máximo permitido é {{maxSize}}.","svgImageInsertError":"Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.","importLibraryError":"Non se puido cargar a biblioteca","collabSaveFailed":"Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","collabSaveFailed_sizeExceeded":"Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Inserir imaxe","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Frecha","line":"Liña","freedraw":"Debuxar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta seleccionada activa despois de debuxar","penMode":"Modo lapis - evitar o contacto","link":"Engadir/ Actualizar ligazón para a forma seleccionada","eraser":"Goma de borrar","frame":"","embeddable":"Inserir na web","laser":"Punteiro láser","hand":"Man (ferramenta de desprazamento)","extraTools":"Máis ferramentas"},"headings":{"canvasActions":"Accións do lenzo","selectedShapeActions":"Accións da forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover o lenzo, manteña pulsada a roda do rato ou a barra de espazo mentres arrastra, ou utilice a ferramenta da man","linearElement":"Faga clic para iniciar varios puntos, arrastre para unha sola liña","freeDraw":"Fai clic e arrastra, solta cando acabes","text":"Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección","embeddable":"Faga clic e arrastre para crear un sitio web embebido","text_selected":"Dobre-clic ou prema ENTER para editar o texto","text_editing":"Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición","linearElementMulti":"Faga clic no último punto ou prema Escape ou Enter para rematar","lockAngle":"Pode reducir o ángulo mantendo SHIFT","resize":"Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\\nmanteña ALT para axustalo dende o centro","resizeImage":"Pode axustar o tamaño libremente mantendo SHIFT,\\nmanteña ALT para axustalo dende o centro","rotate":"Podes reducir os ángulos mantendo SHIFT mentres os rotas","lineEditor_info":"Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Prema Suprimir para eliminar o(s) punto(s)\\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos","lineEditor_nothingSelected":"Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),\\nou manteña pulsado Alt e faga clic para engadir novos puntos","placeImage":"Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente","publishLibrary":"Publica a túa propia biblioteca","bindTextToElement":"Prema a tecla enter para engadir texto","deepBoxSelect":"Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre","eraserRevert":"Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación","firefox_clipboard_write":"Esta función pódese activar establecendo a opción \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar as opcións do navegador en Firefox, visita a páxina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Non se pode mostrar a vista previa","canvasTooBig":"Pode que o lenzo sexa demasiado grande.","canvasTooBigTip":"Consello: Probe a acercar un pouco os elementos máis afastados."},"errorSplash":{"headingMain":"Atopouse un erro. Probe ","clearCanvasMessage":"Se recargar non funcionou, probe ","clearCanvasCaveat":" Isto resultará nunha perda do seu traballo ","trackedToSentry":"O erro con identificador {{eventId}} foi rastrexado no noso sistema.","openIssueMessage":"Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.","sceneContent":"Contido da escena:"},"roomDialog":{"desc_intro":"Podes invitar xente a colaborar contigo na túa escena actual.","desc_privacy":"Non te preocupes, a sesión usa cifrado de punto a punto, polo que calquera cousa que debuxes mantense privada. Nin tan sequera o noso servidor será capaz de ver o que fas.","button_startSession":"Comezar sesión","button_stopSession":"Rematar sesión","desc_inProgressIntro":"A sesión de colaboración en directo está agora en progreso.","desc_shareLink":"Comparte esta ligazón con calquera que queiras colaborar:","desc_exitSession":"Deter a sesión desconectarao da sala, pero poderá seguir traballando coa escena de maneira local. Teña en conta que isto non afectará a outras persoas, que poderán seguir colaborando na súa versión.","shareTitle":"Únase a unha sesión de colaboración en directo en Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Gardar no disco","disk_details":"Exporte os datos da escena a un ficheiro que poderás importar máis tarde.","disk_button":"Gardar nun ficheiro","link_title":"Ligazón para compartir","link_details":"Exportar como unha ligazón de só lectura.","link_button":"Exportar a unha ligazón","excalidrawplus_description":"Garde a escena no seu espazo de traballo en Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Non se puido exportar a Excalidraw+ neste momento..."},"helpDialog":{"blog":"Le o noso blog","click":"clic","deepSelect":"Selección en profundidade","deepBoxSelect":"Selección en profundidade dentro da caixa, evitando o arrastre","curvedArrow":"Frecha curva","curvedLine":"Liña curva","documentation":"Documentación","doubleClick":"dobre-clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Encontrou un problema? Envíeo","howto":"Sigue as nosas normas","or":"ou","preventBinding":"Evitar a unión de frechas","tools":"Ferramentas","shortcuts":"Atallos de teclado","textFinish":"Rematar de editar (editor de texto)","textNewLine":"Engadir unha nova liña (editor de texto)","title":"Axuda","view":"Vista","zoomToFit":"Zoom que se axuste a todos os elementos","zoomToSelection":"Zoom á selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover páxina cara enriba/abaixo","movePageLeftRight":"Mover páxina cara a esquerda/dereita"},"clearCanvasDialog":{"title":"Limpar lenzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do elemento","authorName":"Nome do autor","githubUsername":"Nome de usuario en Github","twitterUsername":"Nome de usuario en Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrición da biblioteca","website":"Páxina web","placeholder":{"authorName":"O seu nome ou nome de usuario","libraryName":"Nome da súa biblioteca","libraryDesc":"Descrición da súa biblioteca para axudar a xente a entender o seu uso","githubHandle":"Nome de usuario de GitHub (opcional), así poderás editar a biblioteca unha vez enviada para a súa revisión","twitterHandle":"Nome de usuario en Twitter(opcional), así sabemos a quen darlle crédito cando se lle de promoción a través de Twitter","website":"Ligazón ao teu sitio web persoal ou a outro sitio (opcional)"},"errors":{"required":"Obrigatorio","website":"Introduza unha URL válida"},"noteDescription":"Envíe a súa biblioteca para que sexa incluída no repositorio público de bibliotecaspara que outra xente a poida usar nos seus debuxos.","noteGuidelines":"A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as normas antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario.","noteLicense":"Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a Licenza MIT, o cal significa que, en resumo, calquera pode usalo sen restricións.","noteItems":"Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:","atleastOneLibItem":"Por favor seleccione polo menos un elemento da biblioteca para comezar","republishWarning":"Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estadoaquí"},"confirmDialog":{"resetLibrary":"Restablecer biblioteca","removeItemsFromLib":"Eliminar os elementos seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imaxe","label":{"withBackground":"Fondo","onlySelected":"","darkMode":"Modo escuro","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG ao portapapeis"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar ao portapapeis"}},"encrypted":{"tooltip":"Os teus debuxos están cifrados de punto a punto, polo que os servidores de Excalidraw nunca os verán.","link":"Entrada do blog acerca do cifrado de punto a punto en Excalidraw"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Faga clic para copiar","versionNotAvailable":"Versión non dispoñible","width":"Ancho"},"toast":{"addedToLibrary":"Engadido á biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado ao portapapeis.","copyToClipboardAsPng":"Copiar {{exportSelection}} ao portapapeis como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro gardado.","fileSavedToFilename":"Gardado en {filename}","canvas":"lenzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un único elemento\\nou pega nun editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Branco","red":"Vermello","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Marelo","orange":"Laranxa","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda a información é gardada de maneira local no seu navegador.","center_heading_plus":"Queres ir a Excalidraw+ no seu lugar?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias, e máis...","center_heading":"Diagramas. Feito. Sinxelo.","toolbarHint":"Escolle unha ferramenta & Comeza a debuxar!","helpHint":"Atallos & axuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imaxe","button":"Exportar como imaxe","description":""},"saveToDisk":{"title":"Gardar no disco","button":"Gardar no disco","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar dende arquivo","button":"Cargar dende arquivo","description":""},"shareableLink":{"title":"Cargar dende un enlace","button":"Substituír o meu contido","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js b/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js new file mode 100644 index 0000000..2732af7 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2312],{1994:function(e){e.exports=JSON.parse('{"labels":{"paste":"הדבק","pasteAsPlaintext":"הדבק ללא עיצוב","pasteCharts":"הדבק גרפים","selectAll":"בחר הכל","multiSelect":"הוסף רכיב לבחירה","moveCanvas":"הזז את הקנבס","cut":"גזור","copy":"העתק","copyAsPng":"העתק ללוח כ PNG","copyAsSvg":"העתק ללוח כ SVG","copyText":"העתק ללוח כטקסט","bringForward":"הבא שכבה קדימה","sendToBack":"שלח אחורה","bringToFront":"העבר לחזית","sendBackward":"העבר שכבה אחורה","delete":"מחק","copyStyles":"העתק סגנון","pasteStyles":"הדבק סגנון","stroke":"קו מתאר","background":"רקע","fill":"מילוי","strokeWidth":"עובי קו מתאר","strokeStyle":"סגנון קו המתאר","strokeStyle_solid":"מלא","strokeStyle_dashed":"מקווקו","strokeStyle_dotted":"מנוקד","sloppiness":"רישול","opacity":"אטימות","textAlign":"יישור טקסט","edges":"קצוות","sharp":"חד","round":"עגול","arrowheads":"ראשי חצים","arrowhead_none":"ללא","arrowhead_arrow":"חץ","arrowhead_bar":"קצה אנכי","arrowhead_dot":"נקודה","arrowhead_triangle":"משולש","fontSize":"גודל גופן","fontFamily":"גופן","addWatermark":"הוסף \\"נוצר באמצעות Excalidraw\\"","handDrawn":"ציור יד","normal":"רגיל","code":"קוד","small":"קטן","medium":"בינוני","large":"גדול","veryLarge":"גדול מאוד","solid":"מוצק","hachure":"קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה","zigzag":"זיגזג","crossHatch":"קווים מוצלבים שתי וערב","thin":"דק","bold":"מודגש","left":"שמאל","center":"מרכז","right":"ימין","extraBold":"מודגש במיוחד","architect":"ארכיטקט","artist":"אמן","cartoonist":"קריקטוריסט","fileTitle":"שם קובץ","colorPicker":"בוחר צבעים","canvasColors":"בשימוש בקנבס","canvasBackground":"רקע קנבס","drawingCanvas":"קנבס ציור","layers":"שכבות","actions":"פעולות","language":"שפה","liveCollaboration":"התחל שיתוף חי...","duplicateSelection":"שכפל","untitled":"ללא כותרת","name":"שם","yourName":"שמך","madeWithExcalidraw":"נוצר באמצעות Excalidraw","group":"קבץ","ungroup":"פרק קבוצה","collaborators":"שותפים","showGrid":"הצג רשת","addToLibrary":"הוסף לספריה","removeFromLibrary":"הסר מספריה","libraryLoadingMessage":"טוען ספריה…","libraries":"עיין בספריות","loadingScene":"טוען תצוגה…","align":"יישר","alignTop":"יישר למעלה","alignBottom":"יישר למטה","alignLeft":"יישר לשמאל","alignRight":"יישר לימין","centerVertically":"מרכז אנכית","centerHorizontally":"מרכז אופקית","distributeHorizontally":"חלוקה אופקית","distributeVertically":"חלוקה אנכית","flipHorizontal":"הפוך אופקית","flipVertical":"הפוך אנכית","viewMode":"מצב תצוגה","share":"שתף","showStroke":"הצג בוחר צבע מברשת","showBackground":"הצג בוחר צבע רקע","toggleTheme":"שינוי ערכת העיצוב","personalLib":"ספריה פרטית","excalidrawLib":"הספריה של Excalidraw","decreaseFontSize":"הקטן את גודל הגופן","increaseFontSize":"הגדל את גודל הגופן","unbindText":"ביטול קיבוע הטקסט","bindText":"קיבוע הטקסט למיכל","createContainerFromText":"ארוז טקסט במיכל","link":{"edit":"עריכת קישור","editEmbed":"ערוך קישור ושבץ","create":"יצירת קישור","createEmbed":"צור קישור ושבץ","label":"קישור","labelEmbed":"קשר ושבץ","empty":"לא נקבע קישור"},"lineEditor":{"edit":"ערוך קו","exit":"צא מעורך הקו"},"elementLock":{"lock":"נעילה","unlock":"ביטול נעילה","lockAll":"לנעול הכל","unlockAll":"שחרור הכול"},"statusPublished":"פורסם","sidebarLock":"שמור את סרגל הצד פתוח","selectAllElementsInFrame":"בחר את כל האלמנטים במסגרת","removeAllElementsFromFrame":"הסר את כל האלמנטים שבמסגרת","eyeDropper":""},"library":{"noItems":"עוד לא הוספת דברים...","hint_emptyLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן, או שתתקין ספריה מהספריה הציבורית מטה.","hint_emptyPrivateLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן."},"buttons":{"clearReset":"אפס את הקנבאס","exportJSON":"ייצא לקובץ","exportImage":"ייצוא התמונה...","export":"שמור ל...","copyToClipboard":"העתק ללוח","save":"שמור לקובץ נוכחי","saveAs":"שמירה בשם","load":"פתח","getShareableLink":"קבל קישור לשיתוף","close":"סגור","selectLanguage":"בחר שפה","scrollBackToContent":"גלול בחזרה לתוכן","zoomIn":"הגדל","zoomOut":"הקטן","resetZoom":"איפוס זום","menu":"תפריט","done":"בוצע","edit":"ערוך","undo":"בטל","redo":"בצע מחדש","resetLibrary":"איפוס ספריה","createNewRoom":"צור חדר חדש","fullScreen":"מסך מלא","darkMode":"מצב כהה","lightMode":"מצב בהיר","zenMode":"מצב זן","objectsSnapMode":"","exitZenMode":"צא ממצב זן","cancel":"ביטול","clear":"ניקוי","remove":"הסר","embed":"","publishLibrary":"פרסום","submit":"שליחה","confirm":"אשר","embeddableInteractionButton":""},"alerts":{"clearReset":"פעולה זו תנקה את כל הקנבס. אתה בטוח?","couldNotCreateShareableLink":"יצירת קישור לשיתוף נכשל.","couldNotCreateShareableLinkTooBig":"יצירת קישור לשיתוף נכשל: התצוגה גדולה מדי","couldNotLoadInvalidFile":"טעינת קובץ לא תקין נכשלה","importBackendFailed":"ייבוא מהשרת נכשל.","cannotExportEmptyCanvas":"לא ניתן לייצא קנבאס ריק.","couldNotCopyToClipboard":"לא ניתן היה להעתיק ללוח.","decryptFailed":"פיענוח ההצפנה של המידע נכשל.","uploadedSecurly":"ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.","loadSceneOverridePrompt":"טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?","collabStopOverridePrompt":"עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?\\n\\n(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)","errorAddingToLibrary":"לא ניתן להוסיף פריט לספרייה","errorRemovingFromLibrary":"לא ניתן להסיר פריט מהספריה","confirmAddLibrary":"זה יוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?","imageDoesNotContainScene":"נראה שהתמונה לא מכילה מידע על הסצינה. האם אפשרת הטמעת מידע הסצינה בעת השמירה?","cannotRestoreFromImage":"לא הצלחנו לשחזר את הסצנה מקובץ התמונה","invalidSceneUrl":"ייבוא מידע סצנה מהקישור שסופק כשל. או שהוא משובש, או שאינו מכיל מידע של Excalidraw בפורמט JSON.","resetLibrary":"פעולה זו תנקה את כל הספריה שלך. אתה בטוח?","removeItemsFromsLibrary":"מחק {{count}} פריט(ים) מהספריה?","invalidEncryptionKey":"מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.","collabOfflineWarning":"אין חיבור זמין לאינטרנט.\\nהשינויים שלך לא ישמרו!"},"errors":{"unsupportedFileType":"סוג הקובץ אינו נתמך.","imageInsertError":"לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...","fileTooBig":"הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.","svgImageInsertError":"לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.","failedToFetchImage":"","invalidSVGString":"SVG שגוי.","cannotResolveCollabServer":"לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.","importLibraryError":"לא ניתן היה לטעון את הספריה","collabSaveFailed":"לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","collabSaveFailed_sizeExceeded":"לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"בחירה","image":"הוספת תמונה","rectangle":"מלבן","diamond":"יהלום","ellipse":"אליפסה","arrow":"חץ","line":"קו","freedraw":"צייר","text":"טקסט","library":"ספריה","lock":"השאר את הכלי הנבחר פעיל גם לאחר סיום הציור","penMode":"מצב עט - מנע נגיעה","link":"הוספה/עדכון קישור של הצורה שנבחרה","eraser":"מחק","frame":"","embeddable":"","laser":"","hand":"יד (כלי הזזה)","extraTools":""},"headings":{"canvasActions":"פעולות קנבאס","selectedShapeActions":"פעולות על הצורות שנבחרו","shapes":"צורות"},"hints":{"canvasPanning":"כדי להזיז את הקנבס, החזק את גלגל העכבר לחוץ או את מקש הרווח לחוץ תוך כדי גרירה, או השתמש בכלי היד","linearElement":"לחץ להתחלת מספר נקודות, גרור לקו יחיד","freeDraw":"לחץ וגרור, שחרר כשסיימת","text":"טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה","embeddable":"","text_selected":"לחץ לחיצה כפולה או הקש על אנטר לעריכת הטקסט","text_editing":"כדי לסיים את העריכה לחץ על מקש Escape או על Ctrl (Cmd במחשבי אפל) ומקש Enter","linearElementMulti":"הקלק על הנקודה האחרונה או הקש Escape או Enter לסיום","lockAngle":"ניתן להגביל את הזוויות על ידי החזקה של מקש ה- SHIFT","resize":"ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,\\nהחזק ALT בשביל לשנות גודל ביחס למרכז","resizeImage":"אתה יכול לשנות את הגודל בחופשיות על ידי החזקת מקש SHIFT,\\nהחזק את מקש ALT כדי לבצע שינוי גודל מהמרכז","rotate":"ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב","lineEditor_info":"החזק Ctrl / Cmd ובצע לחיצה כפולה או לחץ Ctrl / Cmd + Enter לעריכת נקודות","lineEditor_pointSelected":"לחץ Delete למחיקת נקודה/ות,\\nCtrl / Cmd + D לשכפול, או גרור להזזה","lineEditor_nothingSelected":"בחר נקודה כדי לערוך (החזק SHIFT לבחירת כמה),\\nאו החזק Alt והקלק להוספת נקודות חדשות","placeImage":"הקלק להנחת התמונה, או הקלק וגרור להגדרת הגודל שלו ידנית","publishLibrary":"פרסם ספריה משלך","bindTextToElement":"הקש Enter כדי להוספת טקסט","deepBoxSelect":"החזק Ctrl / Cmd לבחירה עמוקה ולמניעת גרירה","eraserRevert":"החזק Alt להחזרת רכיבים מסומנים למחיקה","firefox_clipboard_write":"יכולות זה ניתנת להפעלה על ידי שינוי הדגל של \\"dom.events.asyncClipboard.clipboardItem\\" למצב \\"true\\". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.","disableSnapping":""},"canvasError":{"cannotShowPreview":"לא ניתן להראות תצוגה מקדימה","canvasTooBig":"הקנבס עלול להיות גדול מדי.","canvasTooBigTip":"טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני."},"errorSplash":{"headingMain":"","clearCanvasMessage":"אם טעינה מחדש לא עובדת, נסה ","clearCanvasCaveat":" זה יגרום לאובדן העבודה ","trackedToSentry":"","openIssueMessage":"","sceneContent":"תוכן הקנבאס:"},"roomDialog":{"desc_intro":"אתה יכול להזמין אנשים לקנבאס הנוכחי שלך לעבודה משותפת.","desc_privacy":"אל דאגה, השיתוף מוצפן מקצה לקצה, כך שכל מה שתצייר ישאר פרטי. אפילו השרתים שלנו לא יוכלו לראות את מה שאתה ממציא.","button_startSession":"התחל שיתוף","button_stopSession":"הפסק שיתוף","desc_inProgressIntro":"שיתוף חי פעיל כרגע.","desc_shareLink":"שתף את הקישור עם כל מי שאתה מעוניין לעבוד אתו:","desc_exitSession":"עצירת השיתוף תנתק אותך מהחדר, אבל עדיין תוכל להמשיך לעבוד על הקנבאס, מקומית. שים לב שזה לא ישפיע על אנשים אחרים, והם עדיין יוכלו לבצע שיתוף עם הגרסה שלהם.","shareTitle":"הצטרף לשיתוף לעבודה משותפת חיה, בזמן אמת, על גבי Excalidraw"},"errorDialog":{"title":"שגיאה"},"exportDialog":{"disk_title":"שמור לכונן","disk_details":"ייצא מידע של הקנבאס לקובץ שתוכל לייבא אחר כך.","disk_button":"שמירה לקובץ","link_title":"קבל קישור לשיתוף","link_details":"ייצוא כקישור לקריאה בלבד.","link_button":"ייצוא לקישור","excalidrawplus_description":"שמור את הקנבאס לסביבת העבודה שלך ב- +Excalidraw.","excalidrawplus_button":"ייצוא","excalidrawplus_exportError":"לא הצלחתי לייצא ל- +Excalidraw כרגע..."},"helpDialog":{"blog":"קרא את הבלוג שלנו","click":"קליק","deepSelect":"בחירה עמוקה","deepBoxSelect":"בחירה עמוקה בתוך קופסה ומניעת גרירה","curvedArrow":"חץ מעוגל","curvedLine":"קו מעוגל","documentation":"תיעוד","doubleClick":"לחיצה כפולה","drag":"גרור","editor":"עורך","editLineArrowPoints":"","editText":"","github":"מצאת בעיה? דווח","howto":"עקוב אחר המדריכים שלנו","or":"או","preventBinding":"למנוע נעיצת חיצים","tools":"כלים","shortcuts":"קיצורי מקלדת","textFinish":"סיים עריכה (עורך טקסט)","textNewLine":"הוסף שורה חדשה (עורך טקסט)","title":"עזרה","view":"תצוגה","zoomToFit":"זום להתאמת כל האלמנטים למסך","zoomToSelection":"התמקד בבחירה","toggleElementLock":"נעילה/ביטול הנעילה של הרכיבים הנבחרים","movePageUpDown":"זוז עמוד למעלה/למטה","movePageLeftRight":"זוז עמוד שמאלה/ימינה"},"clearCanvasDialog":{"title":"ניקוי הקנבס"},"publishDialog":{"title":"פרסם ספריה","itemName":"שם הפריט","authorName":"שם היוצר","githubUsername":"שם המשתמש שלך ב-GitHub","twitterUsername":"שם המשתמש שלך ב-Twitter","libraryName":"שם הספריה","libraryDesc":"תיאור הספריה","website":"אתר","placeholder":{"authorName":"שמך או שם המשתמש שלך","libraryName":"תנו שם לספריה","libraryDesc":"תיאור של הספריה שלך כדי לסייע למשתמשים להבין את השימוש בה","githubHandle":"כינוי GitHub (לא חובה), כדי שתוכל לערוך את הספרית לאחר שנשלחה לבדיקה","twitterHandle":"שם משתמש טוויטר (לא חובה), כדי שנדע למי לתת קרדיט כשאנחנו מפרסמים בטוויטר","website":"קישור לאתר הפרטי שלך או לכל מקום אחר (אופציונאלי)"},"errors":{"required":"נדרש","website":"הזינו כתובת URL תקינה"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:","atleastOneLibItem":"אנא בחר לפחות פריט אחד מספריה כדי להתחיל","republishWarning":"הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים."},"publishSuccessDialog":{"title":"הספריה הוגשה","content":"תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום"},"confirmDialog":{"resetLibrary":"איפוס ספריה","removeItemsFromLib":"הסר את הפריטים הנבחרים מהספריה"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"הציורים שלך מוצפנים מקצה לקצה כך שהשרתים של Excalidraw לא יראו אותם לעולם.","link":"פוסט בבלוג על הצפנה מקצה לקצב ב-Excalidraw"},"stats":{"angle":"זווית","element":"רכיב","elements":"רכיבים","height":"גובה","scene":"תצוגה","selected":"נבחר","storage":"אחסון","title":"סטטיסטיקות לחנונים","total":"סה״כ","version":"גרסה","versionCopy":"לחץ להעתקה","versionNotAvailable":"הגרסה אינה זמינה","width":"רוחב"},"toast":{"addedToLibrary":"נוסף לספריה","copyStyles":"סגנונות הועתקו.","copyToClipboard":"הועתק ללוח.","copyToClipboardAsPng":"{{exportSelection}} הועתקה ללוח כ-PNG\\n({{exportColorScheme}})","fileSaved":"קובץ נשמר.","fileSavedToFilename":"נשמר לקובץ {filename}","canvas":"קנבאס","selection":"בחירה","pasteAsSingleElement":"השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,\\nאו הדבק לתוך עורך טקסט קיים","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"שקוף","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"כל המידע שלח נשמר מקומית בדפדפן.","center_heading_plus":"אתה רוצה ללכת אל Excalidraw+ במקום?","menuHint":"ייצוא, העדפות, שפות, ..."},"defaults":{"menuHint":"ייצוא, העדפות, ועוד...","center_heading":"איורים. נעשים. פשוטים.","toolbarHint":"בחר כלי & והתחל לצייר!","helpHint":"קיצורים & עזרה"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js b/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js new file mode 100644 index 0000000..feded68 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[9828],{4646:function(e){e.exports=JSON.parse('{"labels":{"paste":"चिपकाएँ","pasteAsPlaintext":"सादे पाठ के रूप में चिपकाएं","pasteCharts":"चार्ट चिपकाएँ","selectAll":"सभी चुनें","multiSelect":"आकार को चयन में जोड़ें","moveCanvas":"कैनवास को स्थानांतरित करें","cut":"काटें","copy":"प्रतिलिपि","copyAsPng":"क्लिपबोर्ड पर कॉपी करें ,पीएनजी के रूप में","copyAsSvg":"क्लिपबोर्ड पर कॉपी करें,एसवीजी के रूप में","copyText":"लेखन के रूप में पटल पर कॉपी करें","bringForward":"सामने लाएं","sendToBack":"पीछे भेजें","bringToFront":"सामने लाएँ","sendBackward":"पीचे भीजे","delete":"मिटाए","copyStyles":"कॉपी स्टाइल","pasteStyles":"स्टाइल पेस्ट करें","stroke":"रेखा","background":"पृष्ठभूमि","fill":"भरें","strokeWidth":"रेखा की चौड़ाई","strokeStyle":"स्ट्रोक का आकार","strokeStyle_solid":"ठोस","strokeStyle_dashed":"डैश","strokeStyle_dotted":"बिंदीदार","sloppiness":"बेढ़ंगापन","opacity":"अपारदर्शिता","textAlign":"टेक्स्ट संरेखन","edges":"किनारा","sharp":"नुकीला","round":"गोल","arrowheads":"तीर शीर्ष","arrowhead_none":"कोई भी नहीं","arrowhead_arrow":"तीर","arrowhead_bar":"बार","arrowhead_dot":"बिंदु","arrowhead_triangle":"त्रिकोण","fontSize":"फ़ॉन्ट का आकार","fontFamily":"फ़ॉन्ट का परिवार","addWatermark":"ऐड \\"मेड विथ एक्सकैलिडराव\\"","handDrawn":"हाथ से बनाया हुआ","normal":"साधारण","code":"कोड","small":"छोटा","medium":"मध्यम","large":"बड़ा","veryLarge":"बहुत बड़ा","solid":"दृढ़","hachure":"हैशूर","zigzag":"तेढ़ी मेढ़ी","crossHatch":"क्रॉस हैच","thin":"पतला","bold":"मोटा","left":"बाएं","center":"मध्य","right":"दाएँ","extraBold":"बहुत मोटा","architect":"वास्तुकार","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फ़ाइल का नाम","colorPicker":"रंग चयन","canvasColors":"कॅनवास पर प्रयोगित","canvasBackground":"कैनवास बैकग्राउंड","drawingCanvas":"कैनवास बना रहे हैं","layers":"परतें","actions":"कार्रवाई","language":"भाषा","liveCollaboration":"जीवंत सहयोग...","duplicateSelection":"डुप्लिकेट","untitled":"अशीर्षित","name":"नाम","yourName":"आपका नाम","madeWithExcalidraw":"मेड विथ एक्सकैलिडराव","group":"समूह चयन","ungroup":"समूह चयन असमूहीकृत करें","collaborators":"सहयोगी","showGrid":"ग्रिड दिखाएं","addToLibrary":"लाइब्रेरी से जोड़ें","removeFromLibrary":"लाइब्रेरी से निकालें","libraryLoadingMessage":"लाइब्रेरी खुल रही है","libraries":"लाइब्रेरी ब्राउज़ करें","loadingScene":"दृश्य खुल रहा है","align":"संरेखित करें","alignTop":"ऊपर संरेखित करें","alignBottom":"नीचे संरेखित करें","alignLeft":"बायें संरेखित करें","alignRight":"दायें संरेखित करें","centerVertically":"लंबवत केन्द्रित","centerHorizontally":"क्षैतिज केन्द्रित","distributeHorizontally":"क्षैतिज रूप से वितरित करें","distributeVertically":"खड़ी रूप से वितरित करें","flipHorizontal":"दायें बायें पलटे","flipVertical":"ऊपर नीचे पलटे","viewMode":"अलग अलग देखें","share":"शेयर करें","showStroke":"","showBackground":"पृष्ठभूमि रंग वरक़ दिखाये","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"आकार घटाइऐ","increaseFontSize":"फ़ॉन्ट आकार बढ़ाएँ","unbindText":"","bindText":"लेखन को कोश से जोड़े","createContainerFromText":"मूलपाठ कंटेनर में मोड के दिखाए","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेखा संपादित करे","exit":"रेखा संपादक के बाहर"},"elementLock":{"lock":"ताले में रखें","unlock":"ताले से बाहर","lockAll":"सब ताले के अंदर रखे","unlockAll":"सब ताले के बाहर निकाले"},"statusPublished":"प्रकाशित","sidebarLock":"साइडबार खुला रखे.","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलक से रंग चुने"},"library":{"noItems":"अभी तक कोई आइटम जोडा नहीं गया.","hint_emptyLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने, अथवा जन कोष से एक संग्रह नीचे स्थापित करें.","hint_emptyPrivateLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने."},"buttons":{"clearReset":"कैनवास रीसेट करें","exportJSON":"","exportImage":"प्रतिमा निर्यात करे...","export":"यंहा सुरक्षित करे...","copyToClipboard":"क्लिपबोर्ड पर प्रतिलिपि बनाएँ","save":"","saveAs":"सेव करे इस तरह","load":"खोलें","getShareableLink":"साझा करने योग्य लिंक प्राप्त करें","close":"बंद करें","selectLanguage":"भाषा चुनें","scrollBackToContent":"सामग्री पर वापस स्क्रॉल करें","zoomIn":"बड़ा करें","zoomOut":"छोटा करें","resetZoom":"ज़ूम रीसेट करें","menu":"मेन्यू","done":"समाप्त","edit":"संशोधन करें","undo":"पूर्ववत् करें","redo":"फिर से करें","resetLibrary":"","createNewRoom":"एक नया कमरा बनाएं","fullScreen":"पूरी स्क्रीन","darkMode":"डार्क मोड","lightMode":"लाइट मोड","zenMode":"ज़ेन मोड","objectsSnapMode":"वस्तुओं से पकड़े","exitZenMode":"जेन मोड से बाहर निकलें","cancel":"","clear":"साफ़ करे","remove":"हटाएं","embed":"","publishLibrary":"प्रकाशित करें","submit":"प्रस्तुत करे","confirm":"पुष्टि करें","embeddableInteractionButton":""},"alerts":{"clearReset":"इससे पूरा कैनवास साफ हो जाएगा। क्या आपको यकीन है?","couldNotCreateShareableLink":"साझा करने योग्य लिंक नहीं बनाया जा सका।","couldNotCreateShareableLinkTooBig":"लिंक शेयर नहीं कर सकता: दृश्य बहुत बड़ा","couldNotLoadInvalidFile":"अमान्य फ़ाइल लोड नहीं की जा सकी","importBackendFailed":"बैकएंड से आयात करना विफल रहा।","cannotExportEmptyCanvas":"खाली कैनवास निर्यात नहीं कर सकता।","couldNotCopyToClipboard":"क्लिपबोर्ड पर कॉपी नहीं किया जा सका","decryptFailed":"डेटा को डिक्रिप्ट नहीं किया जा सका।","uploadedSecurly":"अपलोड को एंड-टू-एंड एन्क्रिप्शन के साथ सुरक्षित किया गया है, जिसका मतलब है कि एक्सक्लूसिव सर्वर और थर्ड पार्टी कंटेंट नहीं पढ़ सकते हैं।","loadSceneOverridePrompt":"लोड हो रहा है बाहरी ड्राइंग आपके मौजूदा सामग्री को बदल देगा। क्या आप जारी रखना चाहते हैं?","collabStopOverridePrompt":"चालू सत्र समाप्ति से आपका संग्रहित पूर्व स्थानीय अधिलेखन नष्ट होकर पुनः अधिलेखित होगा, क्या आपको यक़ीन हैं? ( यदी आपको पूर्व स्थापित अधिलेखन सुरक्षित चाहिये तो बस ब्राउज़र टैब बंद करे)","errorAddingToLibrary":"संग्रह में जोडा न जा सका","errorRemovingFromLibrary":"संग्रह से हटाया नहीं जा सका","confirmAddLibrary":"लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या","imageDoesNotContainScene":"ऐसा लगता है कि इस छवि में कोई दृश्य डेटा नहीं है। क्या आपने निर्यात के दौरान दृश्य एम्बेडिंग अनुमतित की है?","cannotRestoreFromImage":"छवि फ़ाइल बहाल दृश्य नहीं है","invalidSceneUrl":"दिये गये युआरेल से दृश्य आयात नहीं किया जा सका. यह या तो अनुचित है, या इसमें उचित Excalidraw JSON डेटा नहीं है।","resetLibrary":"यह पूरा संग्रह रिक्त करेगा. क्या आपको यक़ीन हैं?","removeItemsFromsLibrary":"{{count}} वस्तु(यें) संग्रह से हटायें?","invalidEncryptionKey":"कूटलेखन कुंजी 22 अक्षरों की होनी चाहिये, इसलिये जीवंत सहयोग अक्षम हैं","collabOfflineWarning":"कोई इंटरनेट कनेक्शन उपलब्ध नहीं है।\\nआपके बदलाव सहेजे नहीं जाएंगे!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार","imageInsertError":"छवि सम्मिलित नहीं की जा सकी. पुनः प्रयत्न करे...","fileTooBig":"फ़ाइल ज़रूरत से ज़्यादा बड़ी हैं. अधिकतम अनुमित परिमाण {{maxSize}} हैं","svgImageInsertError":"एसवीजी छवि सम्मिलित नहीं कर सके, एसवीजी रचना अनुचित हैं","failedToFetchImage":"","invalidSVGString":"अनुचित SVG","cannotResolveCollabServer":"कॉलेब सर्वर से कनेक्शन नहीं हो पा रहा. कृपया पृष्ठ को पुनः लाने का प्रयास करे.","importLibraryError":"संग्रह प्रतिष्ठापित नहीं किया जा सका","collabSaveFailed":"किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","brave_measure_text_error":{"line1":"लगता है कि आप Brave ब्राउज़र का उपयोग कर रहे और साथ में आक्रामक उँगलियो के छाप का चयन किया हुवा है","line2":"यह आपके चित्रों के पाठ तत्वोंको खंडित कर सकता हैं","line3":"हमें आपसे ठोस आग्रह है की आप सेट्टिंग में इस विकल्प का चयन ना करे. इस अनुक्रम का पालन करके इसका पता लगा सकते हैं","line4":"यदि इस सेटिंग्स को अक्षम करने पर भी पृष्ठ ठीक नहीं दिखता हो तो, हमारे GitHub पर एक मुद्दा प्रस्तुत करे, या हमें डिस्कोर्ड पर लिखित सम्पर्क करें"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"चयन","image":"छवि सम्मिलित करें","rectangle":"आयात","diamond":"तिर्यग्वर्ग","ellipse":"दीर्घवृत्त","arrow":"तीर","line":"रेखा","freedraw":"चित्रांतित करे","text":"पाठ","library":"लाइब्रेरी","lock":"ड्राइंग के बाद चयनित टूल को सक्रिय रखें","penMode":"पेन का मोड - स्पर्श टाले","link":"","eraser":"रबड़","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हाथ ( खिसकाने का औज़ार)","extraTools":""},"headings":{"canvasActions":"कैनवास क्रिया","selectedShapeActions":"चयनित आकृति क्रियाएं","shapes":"आकृतियाँ"},"hints":{"canvasPanning":"कैनवास को सरकाने के लिए, ड्रैग करते समय माउस व्हील को पकड़े रखे या स्पेसबार को दबाए रखे, अथवा हाथ वाले औज़ार का उपयोग करें","linearElement":"कई बिंदुओं को शुरू करने के लिए क्लिक करें, सिंगल लाइन के लिए खींचें","freeDraw":"क्लिक करें और खींचें। समाप्त करने के लिए, छोड़ो","text":"आप चयन टूल से कहीं भी डबल-क्लिक करके टेक्स्ट जोड़ सकते हैं","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"अंतिम बिंदु पर क्लिक करें या समाप्त होने के लिए एस्केप या एंटर दबाएं","lockAngle":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को मोड़ सकते हैं","resize":"आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,\\nकेंद्र से आकार बदलने के लिए ALT दबाए रखें","resizeImage":"","rotate":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं","lineEditor_info":"बिंदुओं को सम्पादित करने के लिए CtrlOrCmd को दबायें रखते हुये डबल क्लिक करे, अथवा CtrlOrCmd + Enter साथ दबाये","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"मिटाने के लिए चुने हुए चीजों को ना चुनने के लिए Alt साथ में दबाए","firefox_clipboard_write":"\\"dom.events.asyncClipboard.clipboardItem\\" फ़्लैग को \\"true\\" पर सेट करके इस सुविधा को संभवतः सक्षम किया जा सकता है। Firefox में ब्राउज़र फ़्लैग बदलने के लिए, \\"about:config\\" पृष्ठ पर जाएँ।","disableSnapping":"स्नैपिंग को निष्क्रिय करने के लिए CtrlOrCmd दबाए रखें"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन नहीं दिखा सकते हैं","canvasTooBig":"कैनवास बहुत बड़ा","canvasTooBigTip":"कैनवास बहुत बड़ा टिप"},"errorSplash":{"headingMain":"एक त्रुटि का सामना करना पड़ा। प्रयत्न ","clearCanvasMessage":"यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें ","clearCanvasCaveat":" इससे काम का नुकसान होगा ","trackedToSentry":"पहचानकर्ता के साथ त्रुटि {{eventId}} हमारे सिस्टम पर नज़र रखी गई थी।","openIssueMessage":"हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।","sceneContent":"दृश्य सामग्री:"},"roomDialog":{"desc_intro":"आप अपने वर्तमान दृश्य के लोगों को अपने साथ सहयोग करने के लिए आमंत्रित कर सकते हैं।","desc_privacy":"चिंता न करें, सत्र अंत-से-अंत एन्क्रिप्शन का उपयोग करता है, इसलिए आप जो भी ड्रा करेंगे वह निजी रहेगा। यहां तक कि हमारा सर्वर भी नहीं देख पाएगा कि आप क्या कर रहे हैं।","button_startSession":"सत्र प्रारंभ करें","button_stopSession":"सत्र रुकें","desc_inProgressIntro":"लाइव सहयोग सत्र अब जारी है।","desc_shareLink":"इस लिंक को आप जिस किसी के साथ भी सहयोग करना चाहते हैं, उसके साथ साझा करें","desc_exitSession":"सत्र रोकना आपको रूम से बाहर कर देगा, लेकिन आप स्थानीय स्तर पर दृश्य के साथ काम करना जारी रख पाएंगे। ध्यान दें कि यह अन्य लोगों को प्रभावित नहीं करेगा, और वे अभी भी अपने संस्करण पर सहयोग करने में सक्षम होंगे।","shareTitle":""},"errorDialog":{"title":"गलती"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"हमारा ब्लॉग पढे","click":"क्लिक करें","deepSelect":"","deepBoxSelect":"","curvedArrow":"वक्र तीर","curvedLine":"वक्र रेखा","documentation":"","doubleClick":"","drag":"खींचें","editor":"संपादक","editLineArrowPoints":"रेखा/तीर बिंदु सम्पादित करे","editText":"पाठ्य सम्पादित करे/ लेबल जोड़े","github":"मुद्दा मिला? प्रस्तुत करें","howto":"हमारे गाइड का पालन करें","or":"या","preventBinding":"तीर बंधन रोकें","tools":"औज़ार","shortcuts":"कीबोर्ड के शॉर्टकट्स","textFinish":"","textNewLine":"","title":"मदद","view":"दृश्य","zoomToFit":"सभी तत्वों को फिट करने के लिए ज़ूम करें","zoomToSelection":"चयन तक ज़ूम करे","toggleElementLock":"ताले के अंदर/बाहर चुनाव","movePageUpDown":"पृष्ठ ऊपर/नीचे करे","movePageLeftRight":"पृष्ठ बायी/दायी तरफ करे"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":"मान्य URL प्रविष्ट करें"},"noteDescription":"संग्रह सम्मिलित करने हेतु प्रस्तुत करें सार्वजनिक संग्रहालयअन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये","noteGuidelines":"संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें दिशा-निर्देश","noteLicense":"जमा करके, आप सहमत हैं कि संग्रहण को MIT लाइसेंस के तहत प्रकाशित किया जाएगा, जिसका संक्षिप्त अर्थ है कि कोई भी बिना किसी प्रतिबंध के उनका उपयोग कर सकता है।","noteItems":"","atleastOneLibItem":"","republishWarning":"टिप्पणी: कुछ चुने हुवे आइटम पहले ही प्रकाशित/प्रस्तुत किए जा चुके हैं। किसी प्रकाशित संग्रह को अद्यतन करते समय या पहले से प्रस्तुत आइटम को पुन्हा प्रस्तुत करते समय, आप बस उसे केवल अद्यतन करें ।"},"publishSuccessDialog":{"title":"","content":"{{authorName}} धन्यवाद. आपका संग्रहण समीक्षा के लिए दर्ज हो चुका है. समीक्षा स्थिति यहाँजान सकते हैं."},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"आपके चित्र अंत-से-अंत एन्क्रिप्टेड हैं, इसलिए एक्सक्लूसिव्रॉव के सर्वर उन्हें कभी नहीं देखेंगे।","link":""},"stats":{"angle":"कोण","element":"एलिमेंट","elements":"एलिमेंट","height":"ऊंचाई","scene":"दृश्य","selected":"चयनित","storage":"संग्रह","title":"बेवकूफ के लिए आँकड़े","total":"कुल","version":"संस्करण","versionCopy":"काॅपी करने के लिए क्लिक करें","versionNotAvailable":"संस्करण उपलब्ध नहीं है","width":"चौड़ाई"},"toast":{"addedToLibrary":"","copyStyles":"काॅपी कीए स्टाइल","copyToClipboard":"क्लिपबोर्ड में कॉपी कीए","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"एक अवयव के रूप में चिपकाने के लिए {{shortcut}} का उपयोग करें,\\nया किसी मौजूदा पाठ संपादक में चिपकायें","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"काला","white":"सफ़ेद","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जामुनी","gray":"गहरा","blue":"नीला","cyan":"आसमानी","teal":"हरा-नीला","green":"हरा","yellow":"पीला","orange":"नारंगी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"आपका सर्व डेटा ब्राउज़र के भीतर स्थानिक जगह पे सुरक्षित किया गया.","center_heading_plus":"बजाय आपको Excalidraw+ पर जाना है?","menuHint":"निर्यात, पसंद, भाषायें, ..."},"defaults":{"menuHint":"निर्यात, पसंद, और भी...","center_heading":"चित्रांकन। बनाया गया। सरल।","toolbarHint":"एक औजार चुने और चित्रकारी प्रारंभ करे!","helpHint":"शॉर्ट्कट और सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"अधिकांश उपयोगित रंग","colors":"रंग","shades":"छाया","hexCode":"हेक्स कोड","noShades":"इस रंग की कोई छाया उपलब्ध नहीं हैं"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूप में निर्यात करे","button":"छवि स्वरूप निर्यात करे","description":"दृष्य डेटा छवि स्वरूप में निर्यात करे, उस स्वरूप से आप उसे पुनः आयात कर सकते हो"},"saveToDisk":{"title":"डिस्क में सम्हाले","button":"डिस्क में सम्हाले","description":"दृष्य डेटा बाहरी फ़ाइल में निर्यात करे, जहाँसे आप उसे पुनः आयात कर सकते हो"},"excalidrawPlus":{"title":"एक्षकालीड्रॉ+","button":"एक्षकालीड्रॉ+ में निर्यात करे","description":"दृष्य को आपके एक्षकालीड्रॉ+ के कर्यस्थल में सम्हाले"}},"modal":{"loadFromFile":{"title":"फ़ाइल से लोड करें:","button":"फ़ाइल से लोड करें:","description":"फ़ाइल से लोड करने पर यह आपके कार्य की जगह लेलेगा

आपकी ड्रॉइंग निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हैं"},"shareableLink":{"title":"लिंक से लोड करें:","button":"इस जगह प्रतिस्थापित करे","description":"बाहर का चित्र लोड करने पर यह आपके कार्य की जगह लेलेगा

आप आपकी ड्रॉइंग पहले निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हों."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js b/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js new file mode 100644 index 0000000..a89bc4a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7368],{6373:function(e){e.exports=JSON.parse('{"labels":{"paste":"Beillesztés","pasteAsPlaintext":"","pasteCharts":"Grafikon beillesztése","selectAll":"Összes kijelölése","multiSelect":"Elem hozzáadása a kijelöléshez","moveCanvas":"Vászon mozgatása","cut":"Kivágás","copy":"Másolás","copyAsPng":"Vágólapra másolás mint PNG","copyAsSvg":"Vágólapra másolás mint SVG","copyText":"","bringForward":"Előrébb hozás","sendToBack":"Hátraküldés","bringToFront":"Előrehozás","sendBackward":"Hátrébb küldés","delete":"Törlés","copyStyles":"Stílus másolása","pasteStyles":"Stílus beillesztése","stroke":"Körvonal","background":"Háttér","fill":"Kitöltés","strokeWidth":"Körvonal vastagsága","strokeStyle":"Körvonal stílusa","strokeStyle_solid":"Kitöltött","strokeStyle_dashed":"Szaggatott","strokeStyle_dotted":"Pontozott","sloppiness":"Stílus","opacity":"Áttetszőség","textAlign":"Szöveg igazítása","edges":"Szélek","sharp":"Éles","round":"Kerek","arrowheads":"Nyílhegyek","arrowhead_none":"Nincs","arrowhead_arrow":"Nyíl","arrowhead_bar":"Oszlop","arrowhead_dot":"Pont","arrowhead_triangle":"Háromszög","fontSize":"Betűméret","fontFamily":"Betűkészlet család","addWatermark":"Add hozzá, hogy \\"Excalidraw-val készült\\"","handDrawn":"Kézzel rajzolt","normal":"Normál","code":"Kód","small":"Kicsi","medium":"Közepes","large":"Nagy","veryLarge":"Nagyon nagy","solid":"Kitöltött","hachure":"Vonalkázott","zigzag":"","crossHatch":"Keresztcsíkozott","thin":"Vékony","bold":"Félkövér","left":"Bal","center":"Közép","right":"Jobb","extraBold":"Extra Félkövér","architect":"Tervezői","artist":"Művészi","cartoonist":"Karikatúrás","fileTitle":"Fájlnév","colorPicker":"Színválasztó","canvasColors":"Rajzvászonon használt","canvasBackground":"Vászon háttérszíne","drawingCanvas":"Rajzvászon","layers":"Rétegek","actions":"Műveletek","language":"Nyelv","liveCollaboration":"","duplicateSelection":"Duplikálás","untitled":"Névtelen","name":"Név","yourName":"Neved","madeWithExcalidraw":"Excalidraw-val készült","group":"Csoportosítás","ungroup":"Csoportbontás","collaborators":"Közreműködők","showGrid":"Rács megjelenítése","addToLibrary":"Hozzáadás a könyvtárhoz","removeFromLibrary":"Eltávólítás a könyvtárból","libraryLoadingMessage":"Könyvtár betöltése…","libraries":"Könyvtárak böngészése","loadingScene":"Jelenet betöltése…","align":"Igazítás","alignTop":"Felülre igazítás","alignBottom":"Alulra igazítás","alignLeft":"Balra igazítás","alignRight":"Jobbra igazítás","centerVertically":"Függőlegesen középre igazított","centerHorizontally":"Vízszintesen középre igazított","distributeHorizontally":"Vízszintes elosztás","distributeVertically":"Függőleges elosztás","flipHorizontal":"Vízszintes tükrözés","flipVertical":"Függőleges tükrözés","viewMode":"Nézet","share":"Megosztás","showStroke":"Körvonal színválasztó megjelenítése","showBackground":"Háttérszín-választó megjelenítése","toggleTheme":"Téma váltása","personalLib":"Személyes könyvtár","excalidrawLib":"Excalidraw könyvtár","decreaseFontSize":"Betűméret csökkentése","increaseFontSize":"Betűméret növelése","unbindText":"Szövegkötés feloldása","bindText":"","createContainerFromText":"","link":{"edit":"Hivatkozás szerkesztése","editEmbed":"","create":"Hivatkozás létrehozása","createEmbed":"","label":"Hivatkozás","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Vászon törlése","exportJSON":"Exportálás fájlba","exportImage":"","export":"","copyToClipboard":"Vágólapra másolás","save":"Mentés az aktuális fájlba","saveAs":"Mentés másként","load":"","getShareableLink":"Megosztható link létrehozása","close":"Bezárás","selectLanguage":"Nyelv kiválasztása","scrollBackToContent":"Visszagörgetés a tartalomhoz","zoomIn":"Nagyítás","zoomOut":"Kicsinyítés","resetZoom":"Nagyítás alaphelyzetbe","menu":"Menü","done":"Kész","edit":"Szerkesztés","undo":"Vissza","redo":"Újra","resetLibrary":"Könyvtár alaphelyzetbe állítása","createNewRoom":"Új szoba létrehozása","fullScreen":"Teljes képernyő","darkMode":"Sötét mód","lightMode":"Világos mód","zenMode":"Letisztult mód","objectsSnapMode":"","exitZenMode":"Kilépés a letisztult módból","cancel":"Mégsem","clear":"Kiűrítés","remove":"Eltávolítás","embed":"","publishLibrary":"Közzététel","submit":"Elküldés","confirm":"Megerősítés","embeddableInteractionButton":""},"alerts":{"clearReset":"Ez a művelet törli a vászont. Biztos benne?","couldNotCreateShareableLink":"Nem sikerült megosztható linket létrehozni.","couldNotCreateShareableLinkTooBig":"Nem sikerült megosztható linket látrehozni: túl nagy a jelenet","couldNotLoadInvalidFile":"Nem sikerült betölteni a helytelen fájlt","importBackendFailed":"Nem sikerült betölteni a szerverről.","cannotExportEmptyCanvas":"Üres vászont nem lehet exportálni.","couldNotCopyToClipboard":"","decryptFailed":"Nem sikerült visszafejteni a titkosított adatot.","uploadedSecurly":"A feltöltést végpontok közötti titkosítással biztosítottuk, ami azt jelenti, hogy egy harmadik fél nem tudja megnézni a tartalmát, beleértve az Excalidraw szervereit is.","loadSceneOverridePrompt":"A betöltött külső rajz felül fogja írnia meglévőt. Szeretnéd folytatni?","collabStopOverridePrompt":"A munkamenet leállítása felül fogja írni az előzőleg helyben tárolt rajzot. Biztosan ezt akarod?\\n(Ha meg akarod tartani a helyben tárolt rajzot, egyszerűen csak zárd be a böngésző fület)","errorAddingToLibrary":"A tétel nem addható hozzá a könyvtárhoz","errorRemovingFromLibrary":"A tétel nem távolítható el a könyvtárból","confirmAddLibrary":"Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?","imageDoesNotContainScene":"Úgy tűnik, hogy ez a kép nem tartalmaz jelenetadatokat. Engedélyezted a jelenetbeágyazást az exportálás során?","cannotRestoreFromImage":"A jelenet visszaállítása nem sikerült ebből a kép fájlból","invalidSceneUrl":"Nem sikerült importálni a jelenetet a megadott URL-ről. Rossz formátumú, vagy nem tartalmaz érvényes Excalidraw JSON-adatokat.","resetLibrary":"Ezzel törlöd a könyvtárát. biztos vagy ebben?","removeItemsFromsLibrary":"{{count}} elemet törölsz a könyvtárból?","invalidEncryptionKey":"A titkosítási kulcsnak 22 karakterből kell állnia. Az élő együttműködés le van tiltva.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nem támogatott fájltípus.","imageInsertError":"Nem sikerült beszúrni a képet. Próbáld újra később...","fileTooBig":"A fájl túl nagy. A megengedett maximális méret {{maxSize}}.","svgImageInsertError":"Nem sikerült beszúrni az SVG-képet. Az SVG szintaktika érvénytelennek tűnik.","failedToFetchImage":"","invalidSVGString":"Érvénytelen SVG.","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Kijelölés","image":"Kép beszúrása","rectangle":"Téglalap","diamond":"Rombusz","ellipse":"Ellipszis","arrow":"Nyíl","line":"Vonal","freedraw":"Rajzolás","text":"Szöveg","library":"Könyvtár","lock":"Rajzolás után az aktív eszközt tartsa kijelölve","penMode":"","link":"Hivatkozás hozzáadása/frissítése a kiválasztott alakzathoz","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Vászon műveletek","selectedShapeActions":"Kijelölt forma műveletei","shapes":"Alakzatok"},"hints":{"canvasPanning":"","linearElement":"Kattintással görbe, az eger húzásával pedig egyenes nyilat rajzolhatsz","freeDraw":"Kattints és húzd, majd engedd el, amikor végeztél","text":"Tipp: A kijelölés eszközzel a dupla kattintás új szöveget hoz létre","embeddable":"","text_selected":"Kattints duplán, vagy nyomj entert a szöveg szerkesztéséhez","text_editing":"Nyomjd meg az Escape vagy a Ctrl/Cmd+ENTER billentyűkombinációt a szerkesztés befejezéséhez","linearElementMulti":"Kattints a következő ív pozíciójára, vagy fejezd be a nyilat az Escape vagy Enter megnyomásával","lockAngle":"A SHIFT billentyű lenyomva tartásával korlátozhatja forgatás szögét","resize":"A SHIFT billentyű lenyomva tartásával az átméretezés megtartja az arányokat,\\naz ALT lenyomva tartásával pedig a középpont egy helyben marad","resizeImage":"A SHIFT billentyű lenyomva tartásával szabadon átméretezheted,\\ntartsd lenyomva az ALT billentyűt a középről való átméretezéshez","rotate":"A SHIFT billentyű lenyomva tartásával korlátozhatja a szögek illesztését","lineEditor_info":"","lineEditor_pointSelected":"Nyomd meg a Törlés gombot a pont(ok) eltávolításához,\\nA Ctrl/Cmd+D a többszörözéshez, vagy húzással mozgathatja","lineEditor_nothingSelected":"Válaszd ki a szerkeszteni kívánt pontot (több kijelöléséhez tartsd lenyomva a SHIFT billentyűt),\\nvagy Alt, és kattintson az új pontok hozzáadásához","placeImage":"Kattints a kép elhelyezéséhez, vagy kattints és méretezd manuálisan","publishLibrary":"Tedd közzé saját könyvtáradat","bindTextToElement":"Nyomd meg az Entert szöveg hozzáadáshoz","deepBoxSelect":"Tartsd lenyomva a Ctrl/Cmd billentyűt a mély kijelöléshez és a húzás megakadályozásához","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Előnézet nem jeleníthető meg","canvasTooBig":"A vászon talán túl nagy.","canvasTooBigTip":"Tipp: próbáld meg a legtávolabbi elemeket közelebb hozni egy máshoz."},"errorSplash":{"headingMain":"Hiba történt. Próbáld ","clearCanvasMessage":"Ha az újratöltés nem működik, próbáld ","clearCanvasCaveat":" Ezzel az eddigi munka elveszik ","trackedToSentry":"A hibakód azonosítóval {{eventId}} nyomon van követve a rendszerünkben.","openIssueMessage":"Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a Kérjük, másolja be az alábbi információkat a GitHub problémába.","sceneContent":"Jelenet tartalma:"},"roomDialog":{"desc_intro":"Meghívhat embereket a jelenlegi jelenetbe, hogy együttműködjenek önnel.","desc_privacy":"Ne aggódj, a munkamenet végpontok közötti titkosítást használ, tehát bármit rajzolsz, privát marad. Még a szerverünkről se lehet belenézni.","button_startSession":"Munkamenet indítása","button_stopSession":"Munkamenet leállítása","desc_inProgressIntro":"Az élő együttműködési munkamenet folyamatban van.","desc_shareLink":"Ossza meg ezt a linket bárkivel, akivel együtt szeretne működni:","desc_exitSession":"Az munkamenet leállítása kilépteti önt a szobából, de folytathatja a munkát a saját gépén. Vegye figyelembe, hogy ez nem érinti más emberek munkáját és ők továbbra is együttműködhetnek a saját változatukon.","shareTitle":"Csatlakozás egy élő együttműködési munkamenethez az Excalidraw-ban"},"errorDialog":{"title":"Hiba"},"exportDialog":{"disk_title":"Mentés lemezre","disk_details":"Exportálja a jelenetadatokat egy fájlba, amelyből később importálhatja.","disk_button":"Mentés fájlba","link_title":"Megosztható hivatkozás","link_details":"Exportálás csak olvasható hivatkozásként.","link_button":"Exportálás hivatkozásba","excalidrawplus_description":"Mentse el a jelenetet az Excalidraw+ munkaterületére.","excalidrawplus_button":"Exportálás","excalidrawplus_exportError":"Jelenleg nem lehet exportálni az Excalidraw+-ba..."},"helpDialog":{"blog":"Olvasd a blogunkat","click":"kattintás","deepSelect":"Mély kijelölés","deepBoxSelect":"Mély kijelölés a dobozon belül, és a húzás megakadályozása","curvedArrow":"Ívelt nyíl","curvedLine":"Ívelt vonal","documentation":"Dokumentáció","doubleClick":"dupla kattintás","drag":"vonszolás","editor":"Szerkesztő","editLineArrowPoints":"","editText":"","github":"Hibát találtál? Küld be","howto":"Kövesd az útmutatóinkat","or":"vagy","preventBinding":"A nyíl ne ragadjon","tools":"","shortcuts":"Gyorsbillentyűk","textFinish":"Szerkesztés befejezése (szöveg)","textNewLine":"Új sor hozzáadása (szöveg)","title":"Segítség","view":"Nézet","zoomToFit":"Az összes elem látótérbe hozása","zoomToSelection":"Kijelölésre nagyítás","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Rajzvászon alaphelyzetbe"},"publishDialog":{"title":"Könyvtár közzététele","itemName":"Tétel neve","authorName":"Szerző neve","githubUsername":"GitHub felhasználónév","twitterUsername":"Twitter felhasználónév","libraryName":"Könyvtár neve","libraryDesc":"Könyvtár leírása","website":"Weboldal","placeholder":{"authorName":"Neved vagy felhasználóneved","libraryName":"A könyvtárad neve","libraryDesc":"A könyvtárad használatát segítő leírás","githubHandle":"GitHub-handle(opcionális), így szerkesztheted a könyvtárat, miután elküldted ellenőrzésre","twitterHandle":"Twitter-felhasználónév (opcionális), így tudjuk, kinek kell jóváírni a Twitteren keresztüli reklámozást","website":"Hivatkozás személyes webhelyedre vagy máshová (nem kötelező)"},"errors":{"required":"Kötelező","website":"Adj meg egy érvényes URL-t"},"noteDescription":"Küld be könyvtáradat, hogy bekerüljön a nyilvános könyvtár tárolóbahogy mások is felhasználhassák a rajzaikban.","noteGuidelines":"A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a segédletet benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges.","noteLicense":"A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre MIT Licensz ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket.","noteItems":"Minden könyvtárelemnek saját nevével kell rendelkeznie, hogy szűrhető legyen. A következő könyvtári tételek kerülnek bele:","atleastOneLibItem":"A kezdéshez válassz ki legalább egy könyvtári elemet","republishWarning":""},"publishSuccessDialog":{"title":"A könyvtár beküldve","content":"Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapototitt"},"confirmDialog":{"resetLibrary":"Könyvtár alaphelyzetbe állítása","removeItemsFromLib":"A kiválasztott elemek eltávolítása a könyvtárból"},"imageExportDialog":{"header":"Kép exportálása","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"A rajzaidat végpontok közötti titkosítással tároljuk, tehát az Excalidraw szervereiről se tud más belenézni.","link":"Blogbejegyzés a végpontok közötti titkosításról az Excalidraw-ban"},"stats":{"angle":"Szög","element":"Elem","elements":"Elemek","height":"Magasság","scene":"Jelenet","selected":"Kijelölt","storage":"Tárhely","title":"Statisztikák","total":"Összesen","version":"Verzió","versionCopy":"Kattints a másoláshoz","versionNotAvailable":"A verzió nem elérhető","width":"Szélesség"},"toast":{"addedToLibrary":"Könyvtárhoz adva","copyStyles":"Másolt stílusok.","copyToClipboard":"Vágólapra másolva.","copyToClipboardAsPng":"Az {{exportSelection}} PNG formátumban a vágólapra másolva \\n({{exportColorScheme}})","fileSaved":"Fájl elmentve.","fileSavedToFilename":"Mentve mint {filename}","canvas":"rajzvászon","selection":"kijelölés","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Átlátszó","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js b/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js new file mode 100644 index 0000000..267fccc --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3808],{3247:function(a){a.exports=JSON.parse('{"labels":{"paste":"Tempel","pasteAsPlaintext":"Tempel sebagai teks biasa","pasteCharts":"Tempel diagram","selectAll":"Pilih semua","multiSelect":"Tambahkan elemen ke pilihan","moveCanvas":"Pindahkan kanvas","cut":"Potong","copy":"Salin","copyAsPng":"Salin ke papan klip sebagai PNG","copyAsSvg":"Salin ke papan klip sebagai SVG","copyText":"Salin ke papan klip sebagai teks","bringForward":"Bawa maju","sendToBack":"Kirim ke belakang","bringToFront":"Bawa ke depan","sendBackward":"Kirim mundur","delete":"Hapus","copyStyles":"Salin gaya","pasteStyles":"Tempelkan gaya","stroke":"Guratan","background":"Latar","fill":"Isian","strokeWidth":"Lebar guratan","strokeStyle":"Gaya guratan","strokeStyle_solid":"Padat","strokeStyle_dashed":"Putus-putus","strokeStyle_dotted":"Titik-titik","sloppiness":"Kecerobohan","opacity":"Keburaman","textAlign":"Perataan teks","edges":"Tepi","sharp":"Tajam","round":"Bulat","arrowheads":"Mata panah","arrowhead_none":"Tidak ada","arrowhead_arrow":"Panah","arrowhead_bar":"Batang","arrowhead_dot":"Titik","arrowhead_triangle":"Segitiga","fontSize":"Ukuran font","fontFamily":"Jenis font","addWatermark":"Tambahkan \\"Dibuat dengan Excalidraw\\"","handDrawn":"Tulisan tangan","normal":"Normal","code":"Kode","small":"Kecil","medium":"Sedang","large":"Besar","veryLarge":"Sangat besar","solid":"Padat","hachure":"Garis-garis","zigzag":"Zigzag","crossHatch":"Asiran silang","thin":"Lembut","bold":"Tebal","left":"Kiri","center":"Tengah","right":"Kanan","extraBold":"Sangat tebal","architect":"Arsitek","artist":"Artis","cartoonist":"Kartunis","fileTitle":"Nama file","colorPicker":"Pilihan Warna","canvasColors":"Digunakan di kanvas","canvasBackground":"Latar Kanvas","drawingCanvas":"Kanvas","layers":"Lapisan","actions":"Aksi","language":"Bahasa","liveCollaboration":"Kolaborasi langsung...","duplicateSelection":"Duplikat","untitled":"Tanpa judul","name":"Nama","yourName":"Nama Anda","madeWithExcalidraw":"Dibuat dengan Excalidraw","group":"Kelompokan pilihan","ungroup":"Pisahkan pilihan","collaborators":"Kolaborator","showGrid":"Tampilkan grid","addToLibrary":"Tambahkan ke pustaka","removeFromLibrary":"Hapus dari pustaka","libraryLoadingMessage":"Memuat pustaka…","libraries":"Telusur pustaka","loadingScene":"Memuat pemandangan…","align":"Perataan","alignTop":"Rata atas","alignBottom":"Rata bawah","alignLeft":"Rata kiri","alignRight":"Rata kanan","centerVertically":"Pusatkan secara vertikal","centerHorizontally":"Pusatkan secara horizontal","distributeHorizontally":"Distribusikan horizontal","distributeVertically":"Distribusikan vertikal","flipHorizontal":"Balikkan horizontal","flipVertical":"Balikkan vertikal","viewMode":"Mode tampilan","share":"Bagikan","showStroke":"Tampilkan garis pengambil warna","showBackground":"Tampilkan latar pengambil warna","toggleTheme":"Ubah tema","personalLib":"Pustaka Pribadi","excalidrawLib":"Pustaka Excalidraw","decreaseFontSize":"Kecilkan ukuran font","increaseFontSize":"Besarkan ukuran font","unbindText":"Lepas teks","bindText":"Kunci teks ke kontainer","createContainerFromText":"Bungkus teks dalam kontainer","link":{"edit":"Edit tautan","editEmbed":"","create":"Buat tautan","createEmbed":"","label":"Tautan","labelEmbed":"","empty":""},"lineEditor":{"edit":"Edit tautan","exit":"Keluar editor garis"},"elementLock":{"lock":"Kunci","unlock":"Lepas","lockAll":"Kunci semua","unlockAll":"Lepas semua"},"statusPublished":"Telah terbit","sidebarLock":"Biarkan sidebar tetap terbuka","selectAllElementsInFrame":"Pilih semua elemen di bingkai","removeAllElementsFromFrame":"Hapus semua elemen dari bingkai","eyeDropper":"Ambil warna dari kanvas"},"library":{"noItems":"Belum ada item yang ditambahkan...","hint_emptyLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini, atau pasang pustaka dari gudang di bawah ini.","hint_emptyPrivateLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini."},"buttons":{"clearReset":"Setel Ulang Kanvas","exportJSON":"Ekspor ke file","exportImage":"Ekspor gambar...","export":"Simpan ke...","copyToClipboard":"Salin ke Papan Klip","save":"Simpan ke file sekarang","saveAs":"Simpan sebagai","load":"Buka","getShareableLink":"Buat Tautan yang Bisa Dibagian","close":"Tutup","selectLanguage":"Pilih bahasa","scrollBackToContent":"Gulir kembali ke konten","zoomIn":"Besarkan","zoomOut":"Kecilkan","resetZoom":"Reset Pembesaran","menu":"Menu","done":"Selesai","edit":"Edit","undo":"Urungkan","redo":"Ulangi","resetLibrary":"Reset pustaka","createNewRoom":"Buat ruang baru","fullScreen":"Layar penuh","darkMode":"Mode gelap","lightMode":"Mode terang","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Keluar dari mode zen","cancel":"Batal","clear":"Hapus","remove":"Hapus","embed":"","publishLibrary":"Terbitkan","submit":"Kirimkan","confirm":"Konfirmasi","embeddableInteractionButton":""},"alerts":{"clearReset":"Ini akan menghapus semua yang ada dikanvas. Apakah kamu yakin ?","couldNotCreateShareableLink":"Tidak bisa membuat tautan yang bisa dibagikan","couldNotCreateShareableLinkTooBig":"Tidak dapat membuat tautan yang dapat dibagikan: pemandangan terlalu besar","couldNotLoadInvalidFile":"Tidak dapat memuat berkas yang tidak valid","importBackendFailed":"Gagal mengimpor dari backend","cannotExportEmptyCanvas":"Tidak bisa mengekspor kanvas kosong","couldNotCopyToClipboard":"Tidak bisa menyalin ke papan klip.","decryptFailed":"Tidak dapat mengdekripsi data.","uploadedSecurly":"Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya","loadSceneOverridePrompt":"Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?","collabStopOverridePrompt":"Menghentikan sesi akan menimpa gambar Anda yang tersimpan secara lokal. Anda yakin?\\n\\n(Jika Anda ingin menyimpan gambar lokal Anda, gantinya cukup tutup tab browser.)","errorAddingToLibrary":"Tidak dapat menambahkan item ke pustaka","errorRemovingFromLibrary":"Tidak dapat membuang item dari pustaka","confirmAddLibrary":"Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?","imageDoesNotContainScene":"Gambar ini sepertinya tidak terdapat data pemandangan. Sudahkah Anda mengaktifkan penyematan pemandangan ketika ekspor?","cannotRestoreFromImage":"Pemandangan tidak dapat dipulihkan dari file gambar ini","invalidSceneUrl":"Tidak dapat impor pemandangan dari URL. Kemungkinan URL itu rusak atau tidak berisi data JSON Excalidraw yang valid.","resetLibrary":"Ini akan menghapus pustaka Anda. Anda yakin?","removeItemsFromsLibrary":"Hapus {{count}} item dari pustaka?","invalidEncryptionKey":"Sandi enkripsi harus 22 karakter. Kolaborasi langsung dinonaktifkan.","collabOfflineWarning":"Tidak ada koneksi internet.\\nPerubahan tidak akan disimpan!"},"errors":{"unsupportedFileType":"Tipe file tidak didukung.","imageInsertError":"Tidak dapat menyisipkan gambar. Coba lagi nanti...","fileTooBig":"File terlalu besar. Ukuran maksimum yang dibolehkan {{maxSize}}.","svgImageInsertError":"Tidak dapat menyisipkan gambar SVG. Markup SVG sepertinya tidak valid.","failedToFetchImage":"","invalidSVGString":"SVG tidak valid.","cannotResolveCollabServer":"Tidak dapat terhubung ke server kolab. Muat ulang laman dan coba lagi.","importLibraryError":"Tidak dapat memuat pustaka","collabSaveFailed":"Tidak dapat menyimpan ke dalam basis data server. Jika masih berlanjut, Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","collabSaveFailed_sizeExceeded":"Tidak dapat menyimpan ke dalam basis data server, tampaknya ukuran kanvas terlalu besar. Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","brave_measure_text_error":{"line1":"Sepertinya Anda menggunkan peramban Brave dengan pengaturan Blokir Fingerprinting yang Agresif diaktifkan.","line2":"Ini dapat membuat Elemen Teks dalam gambar mu.","line3":"Kami sangat menyarankan mematikan pengaturan ini. Anda dapat mengikuti langkah-langkah ini untuk melakukannya.","line4":"Jika mematikan pengaturan ini tidak membenarkan tampilan elemen teks, mohon buka\\nisu di GitHub kami, atau chat kami di Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Pilihan","image":"Sisipkan gambar","rectangle":"Persegi","diamond":"Berlian","ellipse":"Elips","arrow":"Panah","line":"Garis","freedraw":"Gambar","text":"Teks","library":"Pustaka","lock":"Biarkan alat yang dipilih aktif setelah menggambar","penMode":"Mode pena - mencegah sentuhan","link":"Tambah/Perbarui tautan untuk bentuk yang dipilih","eraser":"Penghapus","frame":"Alat bingkai","embeddable":"","laser":"","hand":"Tangan (alat panning)","extraTools":"Alat-alat lain"},"headings":{"canvasActions":"Opsi Kanvas","selectedShapeActions":"Opsi bentuk yang dipilih","shapes":"Bentuk"},"hints":{"canvasPanning":"Untuk memindahkan kanvas, tekan roda mouse atau spacebar sambil menyeret, atau menggunakan alat tangan","linearElement":"Klik untuk memulai banyak poin, seret untuk satu baris","freeDraw":"Klik dan seret, lepaskan jika Anda selesai","text":"Tip: Anda juga dapat menambahkan teks dengan klik ganda di mana saja dengan alat pemilihan","embeddable":"","text_selected":"Klik ganda atau tekan ENTER untuk edit teks","text_editing":"Tekan Escape atau CtrlAtauCmd+ENTER untuk selesai mengedit","linearElementMulti":"Klik pada titik akhir atau tekan Escape atau Enter untuk menyelesaikan","lockAngle":"Anda dapat menjaga sudut dengan menahan SHIFT","resize":"Anda dapat menjaga proposi dengan menekan SHIFT sambil mengubah ukuran,\\ntekan AlT untuk mengubah ukuran dari tengah","resizeImage":"Anda dapat mengubah secara bebas dengan menekan SHIFT,\\nTekan ALT untuk mengubah dari tengah","rotate":"Anda dapat menjaga sudut dengan menahan SHIFT sambil memutar","lineEditor_info":"Tekan Ctrl/Cmd dan Dobel-klik atau tekan Ctrl/Cmd +Enter untuk mengedit poin","lineEditor_pointSelected":"Tekan Delete untuk menghapus titik, Ctrl/Cmd + D untuk menduplikasi, atau seret untuk memindahkan","lineEditor_nothingSelected":"Pilih titik untuk mengedit (tekan SHIFT untuk pilih banyak), atau tekan Alt dan klik untuk tambahkan titik baru","placeImage":"Klik untuk tempatkan gambar, atau klik dan jatuhkan untuk tetapkan ukuran secara manual","publishLibrary":"Terbitkan pustaka Anda","bindTextToElement":"Tekan enter untuk tambahkan teks","deepBoxSelect":"Tekan Ctrl atau Cmd untuk memilih yang di dalam, dan mencegah penggeseran","eraserRevert":"Tahan Alt untuk mengembalikan elemen yang ditandai untuk dihapus","firefox_clipboard_write":"Fitur ini dapat diaktifkan melalui pengaturan flag \\"dom.events.asyncClipboard.clipboardItem\\" ke \\"true\\". Untuk mengganti flag di Firefox, pergi ke laman \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Tidak dapat menampilkan pratinjau","canvasTooBig":"Kanvas mungkin terlalu besar.","canvasTooBigTip":"Tip: coba pindahkan elemen-terjauh lebih dekat bersama."},"errorSplash":{"headingMain":"Mengalami sebuah kesalahan. Cobalah ","clearCanvasMessage":"Jika memuat ulang tidak bekerja, cobalah ","clearCanvasCaveat":" Ini akan menghasilkan hilangnya pekerjaan ","trackedToSentry":"Kesalahan dengan pengidentifikasi {{eventId}} dilacak di sistem kami.","openIssueMessage":"Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.","sceneContent":"Pemandangan konten:"},"roomDialog":{"desc_intro":"Anda dapat mengundang orang ke pemandangan Anda saat ini untuk berkolaborasi dengan Anda.","desc_privacy":"Jangan khawatir, sesi menggunakan enkripsi end-to-end, sehingga apa pun yang Anda gambar akan tetap bersifat pribadi. Bahkan server kami tidak dapat melihat apa yang Anda lakukan.","button_startSession":"Mulai sesi","button_stopSession":"Hentikan sesi","desc_inProgressIntro":"Sesi kolaborasi sedang berlangsung sekarang.","desc_shareLink":"Bagikan tautan ini dengan siapa pun yang Anda inginkan untuk kolaborasi bersama:","desc_exitSession":"Menghentikan sesi akan memutuskan hubungan Anda dari ruangan, tetapi Anda dapat melanjutkan bekerja dengan pemandangan Anda secara lokal. Perhatikan bahwa ini tidak memengaruhi orang lain, dan mereka masih dapat berkolaborasi pada versi mereka.","shareTitle":"Gabung sesi kolaborasi langsung di Excalidraw"},"errorDialog":{"title":"Kesalahan"},"exportDialog":{"disk_title":"Simpan ke disk","disk_details":"Ekspor data pemandangan ke file yang mana Anda dapat impor nanti.","disk_button":"Simpan ke file","link_title":"Tautan","link_details":"Ekspor sebagai tautan yang hanya dibaca.","link_button":"Ekspor ke tautan","excalidrawplus_description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda.","excalidrawplus_button":"Ekspor","excalidrawplus_exportError":"Tidak dapat ekspor ke Excalidraw+ saat ini..."},"helpDialog":{"blog":"Baca blog kami","click":"klik","deepSelect":"Pilih dalam","deepBoxSelect":"Pilih dalam kotak, dan cegah penggeseran","curvedArrow":"Panah lengkung","curvedLine":"Garis lengkung","documentation":"Dokumentasi","doubleClick":"klik-ganda","drag":"seret","editor":"Editor","editLineArrowPoints":"Edit titik garis/panah","editText":"Edit teks / tambah label","github":"Menemukan masalah? Kirimkan","howto":"Ikuti panduan kami","or":"atau","preventBinding":"Cegah pengikatan panah","tools":"Alat","shortcuts":"Pintasan keyboard","textFinish":"Selesai mengedit (editor teks)","textNewLine":"Tambahkan garis baru (editor teks)","title":"Bantuan","view":"Tampilan","zoomToFit":"Perbesar agar sesuai dengan semua elemen","zoomToSelection":"Perbesar ke seleksi","toggleElementLock":"Kunci/lepas seleksi","movePageUpDown":"Pindah halaman keatas/kebawah","movePageLeftRight":"Pindah halaman kebawah/keatas"},"clearCanvasDialog":{"title":"Hapus kanvas"},"publishDialog":{"title":"Terbitkan pustaka","itemName":"Nama item","authorName":"Nama pembuat","githubUsername":"Nama pengguna github","twitterUsername":"Nama pengguna Twitter","libraryName":"Nama Pustaka","libraryDesc":"Deskripsi pustaka","website":"Situs Web","placeholder":{"authorName":"Nama atau nama pengguna Anda","libraryName":"Nama dari pustaka Anda","libraryDesc":"Deskripsi pustaka Anda untuk membantu orang mengerti penggunaannya","githubHandle":"Akun GitHub (opsional), jadi Anda dapat mengubah pustaka ketika diserahkan untuk review","twitterHandle":"Nama pengguna Twitter (opsional), jadi kami tahu siapa dipuji ketika mempromosikannya melalui Twitter","website":"Hubungkan ke situs personal Anda atau lainnya (opsional)"},"errors":{"required":"Dibutuhkan","website":"Masukkan URL valid"},"noteDescription":"Kirimkan pustaka Anda untuk disertakan di repositori pustaka publikuntuk orang lain menggunakannya dalam gambar mereka.","noteGuidelines":"Pustaka butuh disetujui secara manual terlebih dahulu. Baca pedoman sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan.","noteLicense":"Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah Lisensi MIT, yang artinya siapa pun dapat menggunakannya tanpa batasan.","noteItems":"Setiap item pustaka harus memiliki nama, sehingga bisa disortir. Item pustaka di bawah ini akan dimasukan:","atleastOneLibItem":"Pilih setidaknya satu item pustaka untuk mulai","republishWarning":"Catatan: beberapa item yang dipilih telah ditandai sebagai sudah dipublikasikan/diserahkan. Anda hanya dapat menyerahkan kembali item-item ketika memperbarui pustaka atau pengumpulan."},"publishSuccessDialog":{"title":"Pustaka telah dikirm","content":"Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnyadi sini"},"confirmDialog":{"resetLibrary":"Reset pustaka","removeItemsFromLib":"Hapus item yang dipilih dari pustaka"},"imageExportDialog":{"header":"Ekspor gambar","label":{"withBackground":"Latar","onlySelected":"Hanya yang dipilih","darkMode":"Mode gelap","embedScene":"Sematkan pemandangan","scale":"Skala","padding":"Lapisan"},"tooltip":{"embedScene":"Data pemandangan akan disimpan dalam file PNG/SVG yang diekspor sehingga pemandangan itu dapat dipulihkan darinya.\\nAkan membesarkan ukuran file yang diekspor."},"title":{"exportToPng":"Ekspor ke PNG","exportToSvg":"Ekspor ke SVG","copyPngToClipboard":"Salin PNG ke papan klip"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Salin ke papan klip"}},"encrypted":{"tooltip":"Gambar anda terenkripsi end-to-end sehingga server Excalidraw tidak akan pernah dapat melihatnya.","link":"Pos blog tentang enkripsi ujung ke ujung di Excalidraw"},"stats":{"angle":"Sudut","element":"Elemen","elements":"Elemen","height":"Tinggi","scene":"Pemandangan","selected":"Terpilih","storage":"Penyimpanan","title":"Statistik untuk nerd","total":"Total","version":"Versi","versionCopy":"Klik untuk salin","versionNotAvailable":"Versi tidak tersedia","width":"Lebar"},"toast":{"addedToLibrary":"Tambahkan ke pustaka","copyStyles":"Gaya tersalin.","copyToClipboard":"Tersalin ke papan klip.","copyToClipboardAsPng":"Tersalin {{exportSelection}} ke clipboard sebagai PNG\\n({{exportColorScheme}})","fileSaved":"File tersimpan.","fileSavedToFilename":"Disimpan ke {filename}","canvas":"kanvas","selection":"pilihan","pasteAsSingleElement":"Gunakan {{shortcut}} untuk menempelkan sebagai satu elemen,\\natau tempelkan ke teks editor yang ada","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparan","black":"Hitam","white":"Putih","red":"Merah","pink":"Pink","grape":"Ungu","violet":"Violet","gray":"Abu-abu","blue":"Biru","cyan":"Cyan","teal":"Teal","green":"Hijau","yellow":"Kuning","orange":"Jingga","bronze":"Tembaga"},"welcomeScreen":{"app":{"center_heading":"Semua data Anda disimpan secara lokal di peramban Anda.","center_heading_plus":"Apa Anda ingin berpindah ke Excalidraw+?","menuHint":"Ekspor, preferensi, bahasa, ..."},"defaults":{"menuHint":"Ekspor, preferensi, dan selebihnya...","center_heading":"Diagram. Menjadi. Mudah.","toolbarHint":"Pilih alat & mulai menggambar!","helpHint":"Pintasan & bantuan"}},"colorPicker":{"mostUsedCustomColors":"Warna yang sering dipakai","colors":"Warna","shades":"Nuansa","hexCode":"Kode hexa","noShades":"Tidak ada nuansa untuk warna ini"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Ekspor sebagai gambar","button":"Ekspor sebagai gambar","description":"Ekspor data pemandangan sebagai gambar yang dapat anda impor nanti."},"saveToDisk":{"title":"Simpan ke disk","button":"Simpan ke disk","description":"Ekspor data pemandangan ke file yang dapat Anda dapat impor nanti."},"excalidrawPlus":{"title":"Excalidraw+","button":"Ekspor ke Excalidraw+","description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda."}},"modal":{"loadFromFile":{"title":"Muat dari file","button":"Muat dari file","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."},"shareableLink":{"title":"Muat dari link","button":"Ganti konten saya","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js b/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js new file mode 100644 index 0000000..fd63513 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6239],{3257:function(e){e.exports=JSON.parse('{"labels":{"paste":"Incolla","pasteAsPlaintext":"Incolla come testo normale","pasteCharts":"Incolla grafici","selectAll":"Seleziona tutto","multiSelect":"Aggiungi elemento alla selezione","moveCanvas":"Sposta tela","cut":"Taglia","copy":"Copia","copyAsPng":"Copia negli appunti come PNG","copyAsSvg":"Copia negli appunti come SVG","copyText":"Copia negli appunti come testo","bringForward":"Porta avanti","sendToBack":"Manda in fondo","bringToFront":"Porta in cima","sendBackward":"Manda dietro","delete":"Elimina","copyStyles":"Copia stili","pasteStyles":"Incolla stili","stroke":"Tratto","background":"Sfondo","fill":"Riempimento","strokeWidth":"Spessore del tratto","strokeStyle":"Stile del tratto","strokeStyle_solid":"Pieno","strokeStyle_dashed":"Tratteggiato","strokeStyle_dotted":"Punteggiato","sloppiness":"Imprecisione","opacity":"Opacità","textAlign":"Allineamento del testo","edges":"Bordi","sharp":"Acuto","round":"Rotondo","arrowheads":"Punta della freccia","arrowhead_none":"Nessuno","arrowhead_arrow":"Freccia","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triangolo","fontSize":"Dimensione carattere","fontFamily":"Carattere","addWatermark":"Aggiungi \\"Creato con Excalidraw\\"","handDrawn":"A mano libera","normal":"Normale","code":"Codice","small":"Piccolo","medium":"Medio","large":"Grande","veryLarge":"Molto grande","solid":"Pieno","hachure":"Tratteggio obliquo","zigzag":"Zig zag","crossHatch":"Tratteggio incrociato","thin":"Sottile","bold":"Grassetto","left":"Sinistra","center":"Centro","right":"Destra","extraBold":"Extra Grassetto","architect":"Architetto","artist":"Artista","cartoonist":"Fumettista","fileTitle":"Nome del file","colorPicker":"Selettore colore","canvasColors":"Usato su tela","canvasBackground":"Sfondo tela","drawingCanvas":"Area di disegno","layers":"Livelli","actions":"Azioni","language":"Lingua","liveCollaboration":"Collaborazione dal vivo...","duplicateSelection":"Duplica","untitled":"Senza titolo","name":"Nome","yourName":"Il vostro nome","madeWithExcalidraw":"Creato con Excalidraw","group":"Crea gruppo da selezione","ungroup":"Dividi gruppo da selezione","collaborators":"Collaboratori","showGrid":"Visualizza griglia","addToLibrary":"Aggiungi alla libreria","removeFromLibrary":"Rimuovi dalla libreria","libraryLoadingMessage":"Caricamento libreria…","libraries":"Sfoglia librerie","loadingScene":"Caricamento della scena…","align":"Allinea","alignTop":"Allinea in alto","alignBottom":"Allinea in basso","alignLeft":"Allinea a sinistra","alignRight":"Allinea a destra","centerVertically":"Centra Verticalmente","centerHorizontally":"Centra orizzontalmente","distributeHorizontally":"Distribuisci orizzontalmente","distributeVertically":"Distribuisci verticalmente","flipHorizontal":"Capovolgi orizzontalmente","flipVertical":"Capovolgi verticalmente","viewMode":"Modalità visualizzazione","share":"Condividi","showStroke":"Mostra selettore colore del tratto","showBackground":"Mostra selettore colore di sfondo","toggleTheme":"Cambia tema","personalLib":"Libreria Personale","excalidrawLib":"Libreria di Excalidraw","decreaseFontSize":"Riduci dimensione dei caratteri","increaseFontSize":"Aumenta la dimensione dei caratteri","unbindText":"Scollega testo","bindText":"Associa il testo al container","createContainerFromText":"Avvolgi il testo in un container","link":{"edit":"Modifica link","editEmbed":"Modifica collegamento e incorpora","create":"Crea link","createEmbed":"Crea collegamento e incorpora","label":"Link","labelEmbed":"Collega & incorpora","empty":"Nessun collegamento impostato"},"lineEditor":{"edit":"Modifica linea","exit":"Esci dall\'editor di linea"},"elementLock":{"lock":"Blocca","unlock":"Sblocca","lockAll":"Blocca tutto","unlockAll":"Sblocca tutto"},"statusPublished":"Pubblicato","sidebarLock":"Mantieni aperta la barra laterale","selectAllElementsInFrame":"Seleziona tutti gli elementi nel riquadro","removeAllElementsFromFrame":"Rimuovi tutti gli elementi dal riquadro","eyeDropper":"Scegli il colore della tela"},"library":{"noItems":"Nessun elemento ancora aggiunto...","hint_emptyLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui, o installa una libreria dal repository pubblico qui sotto.","hint_emptyPrivateLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui."},"buttons":{"clearReset":"Svuota la tela","exportJSON":"Esporta su file","exportImage":"Esporta immagine...","export":"Salva in...","copyToClipboard":"Copia negli appunti","save":"Salva sul file corrente","saveAs":"Salva con nome","load":"Apri","getShareableLink":"Ottieni link condivisibile","close":"Chiudi","selectLanguage":"Seleziona lingua","scrollBackToContent":"Scorri indietro fino al contenuto","zoomIn":"Aumenta ingrandimento","zoomOut":"Riduci ingrandimento","resetZoom":"Ripristina ingrandimento","menu":"Menù","done":"Fatto","edit":"Modifica","undo":"Annulla","redo":"Ripeti","resetLibrary":"Ripristina libreria","createNewRoom":"Crea nuova stanza","fullScreen":"Schermo intero","darkMode":"Tema scuro","lightMode":"Tema chiaro","zenMode":"Modalità Zen","objectsSnapMode":"Aggancia agli oggetti","exitZenMode":"Uscire dalla modalità zen","cancel":"Annulla","clear":"Cancella","remove":"Rimuovi","embed":"Attiva/disattiva incorporamento","publishLibrary":"Pubblica","submit":"Invia","confirm":"Conferma","embeddableInteractionButton":"Clicca per interagire"},"alerts":{"clearReset":"Questa azione cancellerà l\'intera tela. Sei sicuro?","couldNotCreateShareableLink":"Non riesco a creare un link condivisibile.","couldNotCreateShareableLinkTooBig":"Impossibile creare il link condivisibile: la scena è troppo grande","couldNotLoadInvalidFile":"Impossibile caricare un file no valido","importBackendFailed":"Importazione dal server fallita.","cannotExportEmptyCanvas":"Non è possibile esportare una tela vuota.","couldNotCopyToClipboard":"Impossibile copiare negli appunti.","decryptFailed":"Impossibile decriptare i dati.","uploadedSecurly":"L\'upload è stato protetto con la crittografia end-to-end, il che significa che il server Excalidraw e terze parti non possono leggere il contenuto.","loadSceneOverridePrompt":"Se carichi questo disegno esterno, sostituirà quello che hai. Vuoi continuare?","collabStopOverridePrompt":"Interrompere la sessione sovrascriverà il precedente disegno memorizzato localmente. Sei sicuro?\\n\\n(Se vuoi mantenere il tuo disegno locale, chiudi semplicemente la scheda del browser.)","errorAddingToLibrary":"Impossibile aggiungere l\'elemento alla libreria","errorRemovingFromLibrary":"Impossibile rimuovere l\'elemento dalla libreria","confirmAddLibrary":"Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?","imageDoesNotContainScene":"Questa immagine pare non contenere alcuna scena. Avevi incluso la scena durante l\'esportazione?","cannotRestoreFromImage":"Impossibile ripristinare la scena da questo file immagine","invalidSceneUrl":"Impossibile importare la scena dall\'URL fornito. Potrebbe essere malformato o non contenere dati JSON Excalidraw validi.","resetLibrary":"Questa azione cancellerà l\'intera libreria. Sei sicuro?","removeItemsFromsLibrary":"Eliminare {{count}} elementi dalla libreria?","invalidEncryptionKey":"La chiave di cifratura deve essere composta da 22 caratteri. La collaborazione live è disabilitata.","collabOfflineWarning":"Nessuna connessione internet disponibile.\\nLe tue modifiche non verranno salvate!"},"errors":{"unsupportedFileType":"Tipo di file non supportato.","imageInsertError":"Non è stato possibile inserire l\'immagine. Riprova più tardi...","fileTooBig":"Il file è troppo grande. La dimensione massima consentita è {{maxSize}}.","svgImageInsertError":"Impossibile inserire l\'immagine SVG. Il markup SVG non sembra corretto.","failedToFetchImage":"","invalidSVGString":"SVG non valido.","cannotResolveCollabServer":"Impossibile connettersi al server di collab. Ricarica la pagina e riprova.","importLibraryError":"Impossibile caricare la libreria","collabSaveFailed":"Impossibile salvare nel database di backend. Se i problemi persistono, dovresti salvare il tuo file localmente per assicurarti di non perdere il tuo lavoro.","collabSaveFailed_sizeExceeded":"Impossibile salvare nel database di backend, la tela sembra essere troppo grande. Dovresti salvare il file localmente per assicurarti di non perdere il tuo lavoro.","brave_measure_text_error":{"line1":"Sembra che tu stia utilizzando il browser Brave con l\'impostazione Blocco aggressivo delle impronte digitali abilitata.","line2":"Ciò potrebbe causare la rottura degli Elementi di testo nei tuoi disegni.","line3":"Consigliamo vivamente di disabilitare questa impostazione. Puoi seguire questi passaggi su come farlo.","line4":"Se la disattivazione di questa impostazione non risolve la visualizzazione degli elementi di testo, apri un problema sul nostro GitHub o scrivici su Discord"},"libraryElementTypeError":{"embeddable":"Gli elementi incorporabili non possono essere aggiunti alla libreria.","image":"Il supporto per l\'aggiunta d\'immagini alla libreria verrà aggiunto a breve!"}},"toolBar":{"selection":"Selezione","image":"Inserisci immagine","rectangle":"Rettangolo","diamond":"Rombo","ellipse":"Ellisse","arrow":"Freccia","line":"Linea","freedraw":"Disegno","text":"Testo","library":"Libreria","lock":"Mantieni lo strumento selezionato attivo dopo aver disegnato","penMode":"Modalità penna - previene il tocco","link":"Aggiungi/ aggiorna il link per una forma selezionata","eraser":"Gomma","frame":"Strumento riquadro","embeddable":"Incorporamento Web","laser":"Puntatore laser","hand":"Mano (strumento di panoramica)","extraTools":"Altri strumenti"},"headings":{"canvasActions":"Azioni sulla Tela","selectedShapeActions":"Impostazioni della forma selezionata","shapes":"Forme"},"hints":{"canvasPanning":"Per spostare la tela, tieni premuta la rotellina del mouse o la barra spaziatrice mentre trascini oppure usa lo strumento mano","linearElement":"Clicca per iniziare una linea in più punti, trascina per singola linea","freeDraw":"Clicca e trascina, rilascia quando avrai finito","text":"Suggerimento: puoi anche aggiungere del testo facendo doppio clic ovunque con lo strumento di selezione","embeddable":"Fare click e trascina per creare un incorporamento web","text_selected":"Fai doppio click o premi INVIO per modificare il testo","text_editing":"Premi ESC o CtrlOCmd+INVIO per completare le modifiche","linearElementMulti":"Clicca sull\'ultimo punto o premi Esc o Invio per finire","lockAngle":"Puoi limitare l\'angolo tenendo premuto SHIFT","resize":"Per vincolare le proporzioni, tieni premuto MAIUSC durante il ridimensionamento;\\nper ridimensionare dal centro, tieni premuto ALT","resizeImage":"Puoi ridimensionare liberamente tenendo premuto SHIFT,\\ntieni premuto ALT per ridimensionare dal centro","rotate":"Puoi mantenere gli angoli tenendo premuto SHIFT durante la rotazione","lineEditor_info":"Tieni premuto Ctrl o Cmd e doppio clic oppure premi Ctrl o Cmd + Invio per modificare i punti","lineEditor_pointSelected":"Premi Elimina per rimuovere il punto(i),\\nCtrlOCmd+D per duplicare o trascinare per spostare","lineEditor_nothingSelected":"Seleziona un punto da modificare (tieni premuto MAIUSC per selezionare più punti),\\noppure tieni premuto Alt e fai clic per aggiungere nuovi punti","placeImage":"Fai click per posizionare l\'immagine, o click e trascina per impostarne la dimensione manualmente","publishLibrary":"Pubblica la tua libreria","bindTextToElement":"Premi invio per aggiungere il testo","deepBoxSelect":"Tieni premuto CtrlOCmd per selezionare in profondità e per impedire il trascinamento","eraserRevert":"Tieni premuto Alt per ripristinare gli elementi contrassegnati per l\'eliminazione","firefox_clipboard_write":"Questa funzione può essere abilitata impostando il flag \\"dom.events.asyncClipboard.clipboardItem\\" su \\"true\\". Per modificare i flag del browser in Firefox, visitare la pagina \\"about:config\\".","disableSnapping":"Tieni premuto Ctrl o Cmd per disabilitare lo snap"},"canvasError":{"cannotShowPreview":"Impossibile visualizzare l\'anteprima","canvasTooBig":"La tela potrebbe essere troppo grande.","canvasTooBigTip":"Suggerimento: prova a spostare gli elementi più lontani più vicini tra loro."},"errorSplash":{"headingMain":"Si è verificato un errore. Provare ","clearCanvasMessage":"Se ricaricare non funziona, prova ","clearCanvasCaveat":" Questo risulterà nella perdita del lavoro ","trackedToSentry":"L\'errore con identificativo {{eventId}} è stato tracciato nel nostro sistema.","openIssueMessage":"Siamo stati molto cauti nel non includere informazioni della scena nell\'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.","sceneContent":"Contenuto della scena:"},"roomDialog":{"desc_intro":"Puoi invitare persone nella tua scena attuale per collaborare con te.","desc_privacy":"Non preoccuparti, la sessione utilizza la crittografia end-to-end, quindi qualsiasi cosa disegni rimarrà privata. Nemmeno il nostro server sarà in grado di vedere cosa hai creato.","button_startSession":"Avvia sessione","button_stopSession":"Termina sessione","desc_inProgressIntro":"La sessione di collaborazione è attualmente in corso.","desc_shareLink":"Condividi questo link con chiunque desideri collaborare:","desc_exitSession":"Interrompere la sessione scollegherà la tua stanza ma potrai continuare a lavorare con la scena, localmente. Tieni presente che questo non influirà sulle altre persone, e che saranno ancora in grado di collaborare alla loro versione.","shareTitle":"Partecipa a una sessione di collaborazione live su Excalidraw"},"errorDialog":{"title":"Errore"},"exportDialog":{"disk_title":"Salva su disco","disk_details":"Esporta i dati della scena su file, dal quale potrai importare in seguito.","disk_button":"Salva su file","link_title":"Link condivisibile","link_details":"Esporta come link di sola lettura.","link_button":"Esporta come Link","excalidrawplus_description":"Salva la scena nel tuo spazio di lavoro Excalidraw+.","excalidrawplus_button":"Esporta","excalidrawplus_exportError":"Non è stato possibile esportare su Excalidraw+ al questo momento..."},"helpDialog":{"blog":"Leggi il nostro blog","click":"click","deepSelect":"Selezione profonda","deepBoxSelect":"Seleziona in profondità all\'interno della casella e previene il trascinamento","curvedArrow":"Freccia curva","curvedLine":"Linea curva","documentation":"Documentazione","doubleClick":"doppio-click","drag":"trascina","editor":"Editor","editLineArrowPoints":"Modifica punti linea/freccia","editText":"Modifica testo / aggiungi etichetta","github":"Trovato un problema? Segnalalo","howto":"Segui le nostre guide","or":"oppure","preventBinding":"Impedisci legame della freccia","tools":"Stumenti","shortcuts":"Scorciatoie da tastiera","textFinish":"Completa la modifica (editor di testo)","textNewLine":"Aggiungi nuova riga (editor di testo)","title":"Guida","view":"Vista","zoomToFit":"Adatta zoom per mostrare tutti gli elementi","zoomToSelection":"Zoom alla selezione","toggleElementLock":"Blocca/sblocca selezione","movePageUpDown":"Sposta la pagina su/giù","movePageLeftRight":"Sposta la pagina a sinistra/destra"},"clearCanvasDialog":{"title":"Svuota la tela"},"publishDialog":{"title":"Pubblica la libreria","itemName":"Nome dell\'elemento","authorName":"Nome dell\'autore","githubUsername":"Nome utente di GitHub","twitterUsername":"Nome utente di Twitter","libraryName":"Nome della libreria","libraryDesc":"Descrizione della libreria","website":"Sito Web","placeholder":{"authorName":"Il tuo nome o nome utente","libraryName":"Nome della tua libreria","libraryDesc":"Descrizione della tua libreria per aiutare le persone a comprenderne lo scopo","githubHandle":"Handle di GitHub (opzionale), così che tu possa modificare la libreria una volta inviata per la revisione","twitterHandle":"Nome utente di Twitter (opzionale), così che sappiamo chi accreditare promuovendo su Twitter","website":"Link al tuo sito web personale o altro (opzionale)"},"errors":{"required":"Obbligatorio","website":"Inserisci un URL valido"},"noteDescription":"Invia la tua libreria da includere nella repository della libreria pubblicaperché sia usata da altri nei loro disegni.","noteGuidelines":"La libreria dev\'esser prima approvata manualmente. Sei pregato di leggere le linee guida prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario.","noteLicense":"Inviando, acconsenti che la libreria sarà pubblicata sotto la Licenza MIT, che in breve significa che chiunque possa usarla senza restrizioni.","noteItems":"Ogni elemento della libreria deve avere il proprio nome, così che sia filtrabile. Gli elementi della seguente libreria saranno inclusi:","atleastOneLibItem":"Sei pregato di selezionare almeno un elemento della libreria per iniziare","republishWarning":"Nota: alcuni degli elementi selezionati sono contrassegnati come già pubblicati/presentati. È necessario reinviare gli elementi solo quando si aggiorna una libreria o una presentazione esistente."},"publishSuccessDialog":{"title":"Libreria inviata","content":"Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo statoqui"},"confirmDialog":{"resetLibrary":"Ripristina la libreria","removeItemsFromLib":"Rimuovi gli elementi selezionati dalla libreria"},"imageExportDialog":{"header":"Esporta immagine","label":{"withBackground":"Sfondo","onlySelected":"Solo selezionato","darkMode":"Tema scuro","embedScene":"Includi scena","scale":"Scala","padding":"Rientro"},"tooltip":{"embedScene":"I dati della scena saranno salvati nel file PNG/SVG esportato in modo che la scena possa essere ripristinata da esso.\\nQuesto aumenterà la dimensione del file esportato."},"title":{"exportToPng":"Esporta come PNG","exportToSvg":"Esporta come SVG","copyPngToClipboard":"Copia PNG negli appunti"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copia negli appunti"}},"encrypted":{"tooltip":"I tuoi disegni sono crittografati end-to-end in modo che i server di Excalidraw non li possano mai vedere.","link":"Articolo del blog sulla crittografia end-to-end di Excalidraw"},"stats":{"angle":"Angolo","element":"Elemento","elements":"Elementi","height":"Altezza","scene":"Scena","selected":"Selezionato","storage":"Memoria","title":"Statistiche per nerd","total":"Totale","version":"Versione","versionCopy":"Clicca per copiare","versionNotAvailable":"Versione non disponibile","width":"Larghezza"},"toast":{"addedToLibrary":"Aggiunto alla libreria","copyStyles":"Stili copiati.","copyToClipboard":"Copiato negli appunti.","copyToClipboardAsPng":"{{exportSelection}} copiato negli appunti come PNG\\n({{exportColorScheme}})","fileSaved":"File salvato.","fileSavedToFilename":"Salvato in {filename}","canvas":"tela","selection":"selezione","pasteAsSingleElement":"Usa {{shortcut}} per incollare come un singolo elemento,\\no incollare in un editor di testo esistente","unableToEmbed":"Incorporare questo url non è permesso. Crea una issue su GitHub per richiedere che l\'url sia autorizzato","unrecognizedLinkFormat":"Il link che hai incorporato non corrisponde al formato previsto. Prova a incollare la stringa \'embed\' fornita dal sito di origine"},"colors":{"transparent":"Trasparente","black":"Nero","white":"Bianco","red":"Rosso","pink":"Rosa","grape":"Uva","violet":"Viola","gray":"Grigio","blue":"Blu","cyan":"Ciano","teal":"Verde acqua","green":"Verde","yellow":"Giallo","orange":"Arancio","bronze":"Bronzo"},"welcomeScreen":{"app":{"center_heading":"Tutti i tuoi dati sono salvati localmente nel browser.","center_heading_plus":"Volevi invece andare su Excalidraw+?","menuHint":"Esporta, preferenze, lingue, ..."},"defaults":{"menuHint":"Esporta, preferenze, e altro...","center_heading":"Diagrammi. Fatto. Semplice.","toolbarHint":"Scegli uno strumento & Inizia a disegnare!","helpHint":"Scorciatoie & aiuto"}},"colorPicker":{"mostUsedCustomColors":"Colori personalizzati più utilizzati","colors":"Colori","shades":"Sfumature","hexCode":"Codice esadecimale","noShades":"Nessuna sfumatura disponibile per questo colore"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esporta come immagine","button":"Esporta come immagine","description":"Esporta i dati della scena come immagine, che potrai importare in seguito."},"saveToDisk":{"title":"Salva su disco","button":"Salva su disco","description":"Esporta i dati della scena su file, che potrai importare in seguito."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esporta su Excalidraw+","description":"Salva la scena sul tuo spazio di lavoro Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carica da file","button":"Carica da file","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."},"shareableLink":{"title":"Carica da link","button":"Sostituisci il mio contenuto","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js b/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js new file mode 100644 index 0000000..def14ed --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1204],{198:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼り付け","pasteAsPlaintext":"書式なしテキストとして貼り付け","pasteCharts":"チャートの貼り付け","selectAll":"すべて選択","multiSelect":"複数選択","moveCanvas":"キャンバスを移動","cut":"切り取り","copy":"コピー","copyAsPng":"PNGとしてクリップボードへコピー","copyAsSvg":"SVGとしてクリップボードへコピー","copyText":"テキストとしてクリップボードにコピー","bringForward":"前面に移動","sendToBack":"最背面に移動","bringToFront":"最前面に移動","sendBackward":"背面に移動","delete":"削除","copyStyles":"スタイルのコピー","pasteStyles":"スタイルの貼り付け","stroke":"線","background":"背景","fill":"塗りつぶし","strokeWidth":"線の太さ","strokeStyle":"線の種類","strokeStyle_solid":"実線","strokeStyle_dashed":"破線","strokeStyle_dotted":"点線","sloppiness":"ばらつき加減","opacity":"透明度","textAlign":"文字の配置","edges":"角","sharp":"四角","round":"丸","arrowheads":"線の終点","arrowhead_none":"なし","arrowhead_arrow":"矢印","arrowhead_bar":"バー","arrowhead_dot":"ドット","arrowhead_triangle":"三角","fontSize":"フォントの大きさ","fontFamily":"フォントの種類","addWatermark":"\\"Made with Excalidraw\\"と表示","handDrawn":"手描き風","normal":"普通","code":"コード","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"ベタ塗り","hachure":"斜線","zigzag":"ジグザグ","crossHatch":"網掛け","thin":"細","bold":"太字","left":"左寄せ","center":"中央寄せ","right":"右寄せ","extraBold":"極太","architect":"正確","artist":"アート","cartoonist":"漫画風","fileTitle":"ファイル名","colorPicker":"色選択","canvasColors":"キャンバス上で使用","canvasBackground":"キャンバスの背景","drawingCanvas":"キャンバスの描画","layers":"レイヤー","actions":"操作","language":"言語","liveCollaboration":"共同編集...","duplicateSelection":"複製","untitled":"無題","name":"名前","yourName":"あなたの名前","madeWithExcalidraw":"Excalidrawで作成","group":"グループ化","ungroup":"グループ化を解除","collaborators":"共同編集者","showGrid":"グリッドを表示","addToLibrary":"ライブラリに追加","removeFromLibrary":"ライブラリから削除","libraryLoadingMessage":"ライブラリを読み込み中…","libraries":"ライブラリを参照する","loadingScene":"シーンを読み込み中…","align":"配置","alignTop":"上揃え","alignBottom":"下揃え","alignLeft":"左揃え","alignRight":"右揃え","centerVertically":"縦方向に中央揃え","centerHorizontally":"横方向に中央揃え","distributeHorizontally":"水平方向に分散配置","distributeVertically":"垂直方向に分散配置","flipHorizontal":"水平方向に反転","flipVertical":"垂直方向に反転","viewMode":"閲覧モード","share":"共有","showStroke":"ストロークカラーピッカーを表示","showBackground":"背景色ピッカーを表示","toggleTheme":"テーマの切り替え","personalLib":"個人ライブラリ","excalidrawLib":"Excalidrawライブラリ","decreaseFontSize":"フォントサイズを縮小","increaseFontSize":"フォントサイズを拡大","unbindText":"テキストのバインド解除","bindText":"テキストをコンテナにバインド","createContainerFromText":"コンテナ内でテキストを折り返す","link":{"edit":"リンクを編集","editEmbed":"リンクの編集と埋め込み","create":"リンクを作成","createEmbed":"リンクの作成と埋め込み","label":"リンク","labelEmbed":"リンクと埋め込み","empty":"リンクが設定されていません"},"lineEditor":{"edit":"行を編集","exit":"行エディタを終了"},"elementLock":{"lock":"ロック","unlock":"ロック解除","lockAll":"すべてロック","unlockAll":"すべてのロックを解除"},"statusPublished":"公開済み","sidebarLock":"サイドバーを開いたままにする","selectAllElementsInFrame":"フレーム内のすべての要素を選択","removeAllElementsFromFrame":"フレーム内のすべての要素を削除","eyeDropper":"キャンバスから色を選択"},"library":{"noItems":"まだアイテムが追加されていません…","hint_emptyLibrary":"キャンバス上のアイテムを選択してここに追加するか、以下の公開リポジトリからライブラリをインストールしてください。","hint_emptyPrivateLibrary":"キャンバス上のアイテムを選択すると、ここに追加されます。"},"buttons":{"clearReset":"キャンバスのリセット","exportJSON":"ファイルへエクスポート","exportImage":"画像のエクスポート...","export":"名前を付けて保存...","copyToClipboard":"クリップボードにコピー","save":"現在のファイルに保存","saveAs":"名前を付けて保存","load":"開く","getShareableLink":"共有URLの取得","close":"閉じる","selectLanguage":"言語の選択","scrollBackToContent":"コンテンツまでスクロールで戻る","zoomIn":"拡大","zoomOut":"縮小","resetZoom":"拡大/縮小をリセット","menu":"メニュー","done":"完了","edit":"編集","undo":"元に戻す","redo":"やり直し","resetLibrary":"ライブラリをリセット","createNewRoom":"新しい部屋を作成する","fullScreen":"フルスクリーン","darkMode":"ダークモード","lightMode":"ライトモード","zenMode":"Zenモード","objectsSnapMode":"","exitZenMode":"集中モードをやめる","cancel":"キャンセル","clear":"消去","remove":"削除","embed":"埋め込みの切り替え","publishLibrary":"公開","submit":"送信","confirm":"確認","embeddableInteractionButton":""},"alerts":{"clearReset":"この操作によってキャンバス全体が消えます。よろしいですか?","couldNotCreateShareableLink":"共有URLを作成できませんでした。","couldNotCreateShareableLinkTooBig":"共有可能なリンクを作成できませんでした: シーンが大きすぎます","couldNotLoadInvalidFile":"無効なファイルを読み込めませんでした。","importBackendFailed":"サーバーからの読み込みに失敗しました。","cannotExportEmptyCanvas":"空のキャンバスはエクスポートできません。","couldNotCopyToClipboard":"クリップボードにコピーできませんでした。","decryptFailed":"データを復号できませんでした。","uploadedSecurly":"データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。","loadSceneOverridePrompt":"外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか?","collabStopOverridePrompt":"セッションを停止すると、ローカルに保存されている図が上書きされます。 本当によろしいですか?\\n\\n(ローカルの図を保持したい場合は、セッションを停止せずにブラウザタブを閉じてください。)","errorAddingToLibrary":"アイテムをライブラリに追加できませんでした","errorRemovingFromLibrary":"ライブラリからアイテムを削除できませんでした","confirmAddLibrary":"{{numShapes}} 個の図形をライブラリに追加します。よろしいですか?","imageDoesNotContainScene":"この画像にはシーンデータが含まれていないようです。エクスポート時にシーンの埋め込みを有効にしましたか?","cannotRestoreFromImage":"このイメージファイルからシーンを復元できませんでした","invalidSceneUrl":"指定された URL からシーンをインポートできませんでした。不正な形式であるか、有効な Excalidraw JSON データが含まれていません。","resetLibrary":"ライブラリを消去します。本当によろしいですか?","removeItemsFromsLibrary":"{{count}} 個のアイテムをライブラリから削除しますか?","invalidEncryptionKey":"暗号化キーは22文字でなければなりません。ライブコラボレーションは無効化されています。","collabOfflineWarning":"インターネットに接続されていません。\\n変更は保存されません!"},"errors":{"unsupportedFileType":"サポートされていないファイル形式です。","imageInsertError":"画像を挿入できませんでした。後でもう一度お試しください...","fileTooBig":"ファイルが大きすぎます。許可される最大サイズは {{maxSize}} です。","svgImageInsertError":"SVGイメージを挿入できませんでした。SVGマークアップは無効に見えます。","failedToFetchImage":"","invalidSVGString":"無効なSVGです。","cannotResolveCollabServer":"コラボレーションサーバに接続できませんでした。ページを再読み込みして、もう一度お試しください。","importLibraryError":"ライブラリを読み込めませんでした。","collabSaveFailed":"バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","collabSaveFailed_sizeExceeded":"キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","brave_measure_text_error":{"line1":"Aggressly Block Fingerprinting の設定が有効なBraveブラウザを使用しているようです。","line2":"これにより、図面の テキスト要素 が壊れる可能性があります。","line3":"この設定を無効にすることを強く推奨します。 設定手順 をこちらから確認できます。","line4":"この設定を無効にすると、テキスト要素の表示が修正されません。 GitHub で Issue を開くか、 Discord にご記入ください"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"選択","image":"画像を挿入","rectangle":"矩形","diamond":"ひし形","ellipse":"楕円","arrow":"矢印","line":"直線","freedraw":"描画","text":"テキスト","library":"ライブラリ","lock":"描画後も使用中のツールを選択したままにする","penMode":"ペンモード - タッチ防止","link":"選択した図形のリンクを追加/更新","eraser":"消しゴム","frame":"フレームツール","embeddable":"Web埋め込み","laser":"","hand":"手 (パンニングツール)","extraTools":"その他のツール"},"headings":{"canvasActions":"キャンバス操作","selectedShapeActions":"選択された図形に対する操作","shapes":"図形"},"hints":{"canvasPanning":"キャンバスを移動するには、マウスホイールまたはスペースバーを押しながらドラッグするか、手ツールを使用します","linearElement":"クリックすると複数の頂点からなる曲線を開始、ドラッグすると直線","freeDraw":"クリックしてドラッグします。離すと終了します","text":"ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます","embeddable":"","text_selected":"テキストを編集するには、ダブルクリックまたはEnterキーを押します","text_editing":"Esc キーまたは CtrlOrCmd+ENTER キーを押して編集を終了します","linearElementMulti":"最後のポイントをクリックするか、エスケープまたはEnterを押して終了します","lockAngle":"SHIFTを押したままにすると、角度を制限することができます","resize":"サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます","resizeImage":"SHIFTを長押しすると自由にサイズを変更できます。\\n中央からサイズを変更するにはALTを長押しします","rotate":"回転中にSHIFT キーを押すと角度を制限することができます","lineEditor_info":"CtrlOrCmd を押したままダブルクリックするか、CtrlOrCmd + Enter を押して点を編集します","lineEditor_pointSelected":"Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動","lineEditor_nothingSelected":"編集する点を選択(SHIFTを押したままで複数選択)、\\nAltキーを押しながらクリックすると新しい点を追加","placeImage":"クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します","publishLibrary":"自分のライブラリを公開","bindTextToElement":"Enterを押してテキストを追加","deepBoxSelect":"CtrlOrCmd を押し続けることでドラッグを抑止し、深い選択を行います","eraserRevert":"Alt を押し続けることで削除マークされた要素を元に戻す","firefox_clipboard_write":"この機能は、\\"dom.events.asyncClipboard.clipboardItem\\" フラグを \\"true\\" に設定することで有効になる可能性があります。Firefox でブラウザーの設定を変更するには、\\"about:config\\" ページを参照してください。","disableSnapping":""},"canvasError":{"cannotShowPreview":"プレビューを表示できません","canvasTooBig":"キャンバスが大きすぎます。","canvasTooBigTip":"ヒント: 最も遠い要素をもう少し近づけてみてください。"},"errorSplash":{"headingMain":"エラーが発生しました。もう一度やり直してください。 ","clearCanvasMessage":"再読み込みがうまくいかない場合は、 ","clearCanvasCaveat":" これにより作業が失われます ","trackedToSentry":"識別子のエラー {{eventId}} が我々のシステムで追跡されました。","openIssueMessage":"エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 GitHub のIssueに以下の情報をコピーして貼り付けてください。","sceneContent":"シーンの内容:"},"roomDialog":{"desc_intro":"他の人を編集中のあなたの画面に招待して共同編集することができます。","desc_privacy":"このセッションはエンドツーエンド暗号化されており、描画内容は保護されています。運営サーバーからも内容は見えません。","button_startSession":"セッションを開始する","button_stopSession":"セッションを終了する","desc_inProgressIntro":"共同編集セッションが有効になっています。","desc_shareLink":"下記URLを共同編集したい人に共有してください:","desc_exitSession":"セッションを終了するとあなたはルームから切断されますが、ローカルで作業を続けることができます。セッションを終了しても他のメンバには影響はなく、引き続き共同作業を行うことができます。","shareTitle":"Excalidrawの共同編集セッションに参加する"},"errorDialog":{"title":"エラー"},"exportDialog":{"disk_title":"ディスクに保存","disk_details":"シーンデータを後からインポートできるファイルにエクスポートします。","disk_button":"ファイルへ保存","link_title":"共有可能なリンク","link_details":"読み取り専用リンクとしてエクスポート","link_button":"リンクとしてエクスポート","excalidrawplus_description":"Excalidraw+ ワークスペースにシーンを保存します。","excalidrawplus_button":"エクスポート","excalidrawplus_exportError":"Excalidraw+ にエクスポートできませんでした..."},"helpDialog":{"blog":"公式ブログを読む","click":"クリック","deepSelect":"深い選択","deepBoxSelect":"ボックス内の深い選択、およびドラッグの抑止","curvedArrow":"カーブした矢印","curvedLine":"曲線","documentation":"ドキュメント","doubleClick":"ダブルクリック","drag":"ドラッグ","editor":"エディタ","editLineArrowPoints":"","editText":"テキストの編集 / ラベルの追加","github":"不具合報告はこちら","howto":"ヘルプ・マニュアル","or":"または","preventBinding":"矢印を結合しない","tools":"ツール","shortcuts":"キーボードショートカット","textFinish":"編集を終了 (テキストエディタ)","textNewLine":"新しい行を追加 (テキスト)","title":"ヘルプ","view":"表示","zoomToFit":"すべての要素が収まるようにズーム","zoomToSelection":"選択要素にズーム","toggleElementLock":"選択したアイテムをロック/ロック解除","movePageUpDown":"ページを上下に移動","movePageLeftRight":"ページを左右に移動"},"clearCanvasDialog":{"title":"キャンバスを消去"},"publishDialog":{"title":"ライブラリを公開","itemName":"アイテム名","authorName":"作成者名","githubUsername":"GitHub ユーザ名","twitterUsername":"Twitter ユーザ名","libraryName":"ライブラリ名","libraryDesc":"ライブラリの説明","website":"Webサイト","placeholder":{"authorName":"お名前またはユーザー名","libraryName":"あなたのライブラリ名","libraryDesc":"ライブラリの使い方を理解するための説明","githubHandle":"GitHubハンドル(任意)。一度レビューのために送信されると、ライブラリを編集できます","twitterHandle":"Twitterのユーザー名 (任意)。Twitterでプロモーションする際にクレジットする人を知っておくためのものです","website":"個人のウェブサイトまたは他のサイトへのリンク (任意)"},"errors":{"required":"必須項目","website":"有効な URL を入力してください"},"noteDescription":"以下に含めるライブラリを提出してください 公開ライブラリのリポジトリ他の人が作図に使えるようにするためです","noteGuidelines":"最初にライブラリを手動で承認する必要があります。次をお読みください ガイドライン 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。","noteLicense":"提出することにより、ライブラリが次の下で公開されることに同意します: MIT ライセンス つまり誰でも制限なく使えるということです","noteItems":"各ライブラリ項目は、フィルタリングのために独自の名前を持つ必要があります。以下のライブラリアイテムが含まれます:","atleastOneLibItem":"開始するには少なくとも1つのライブラリ項目を選択してください","republishWarning":"注意: 選択された項目の中には、すでに公開/投稿済みと表示されているものがあります。既存のライブラリや投稿を更新する場合のみ、アイテムを再投稿してください。"},"publishSuccessDialog":{"title":"ライブラリを送信しました","content":"{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。こちら"},"confirmDialog":{"resetLibrary":"ライブラリをリセット","removeItemsFromLib":"選択したアイテムをライブラリから削除"},"imageExportDialog":{"header":"画像をエクスポート","label":{"withBackground":"背景","onlySelected":"","darkMode":"ダークモード","embedScene":"","scale":"スケール","padding":"余白"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG にエクスポート","exportToSvg":"SVG にエクスポート","copyPngToClipboard":"クリップボードにPNGをコピー"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"クリップボードにコピー"}},"encrypted":{"tooltip":"描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。","link":"Excalidrawのエンドツーエンド暗号化に関するブログ記事"},"stats":{"angle":"角度","element":"要素","elements":"要素","height":"高さ","scene":"シーン","selected":"選択済み","storage":"ストレージ","title":"詳細統計情報","total":"合計","version":"バージョン","versionCopy":"クリックしてコピー","versionNotAvailable":"利用できないバージョン","width":"幅"},"toast":{"addedToLibrary":"ライブラリに追加しました","copyStyles":"スタイルをコピーしました。","copyToClipboard":"クリップボードにコピー","copyToClipboardAsPng":"{{exportSelection}} を PNG 形式でクリップボードにコピーしました\\n({{exportColorScheme}})","fileSaved":"ファイルを保存しました","fileSavedToFilename":"{filename} に保存しました","canvas":"キャンバス","selection":"選択","pasteAsSingleElement":"{{shortcut}} を使用して単一の要素として貼り付けるか、\\n既存のテキストエディタに貼り付け","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"透明","black":"黒","white":"白","red":"赤","pink":"ピンク","grape":"グレープ","violet":"バイオレット","gray":"灰色","blue":"青","cyan":"シアン","teal":"ティール","green":"緑","yellow":"黄","orange":"オレンジ","bronze":"ブロンズ"},"welcomeScreen":{"app":{"center_heading":"すべてのデータはブラウザにローカル保存されます。","center_heading_plus":"代わりにExcalidraw+を開きますか?","menuHint":"エクスポート、設定、言語..."},"defaults":{"menuHint":"エクスポート、設定、その他...","center_heading":"ダイアグラムを簡単に。","toolbarHint":"ツールを選んで描き始めよう!","helpHint":"ショートカットとヘルプ"}},"colorPicker":{"mostUsedCustomColors":"最も使用されているカスタム色","colors":"色","shades":"影","hexCode":"Hexコード","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"画像としてエクスポート","button":"画像としてエクスポート","description":""},"saveToDisk":{"title":"ディスクに保存","button":"ディスクに保存","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+にエクスポート","description":"Excalidraw+ ワークスペースにシーンを保存します。"}},"modal":{"loadFromFile":{"title":"ファイルからロード","button":"ファイルからロード","description":""},"shareableLink":{"title":"リンクからロード","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js b/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js new file mode 100644 index 0000000..edbd34d --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[663],{7941:function(e){e.exports=JSON.parse('{"labels":{"paste":"Qoyıw","pasteAsPlaintext":"Ápiwayı tekst retinde qoyıw","pasteCharts":"Diagrammalardı qoyıw","selectAll":"Barlıǵın tańlaw","multiSelect":"","moveCanvas":"","cut":"Qıyıw","copy":"Kóshirip alıw","copyAsPng":"Almasıw buferine PNG retinde kóshirip alıw","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Óshiriw","copyStyles":"","pasteStyles":"","stroke":"Jiyek","background":"Fon","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"Qırlar","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"Jebe","arrowhead_bar":"","arrowhead_dot":"Noqat","arrowhead_triangle":"","fontSize":"Shrift ólshemi","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"Kod","small":"","medium":"","large":"Úlken","veryLarge":"Júdá úlken","solid":"","hachure":"","zigzag":"Zigzag","crossHatch":"","thin":"Jińishke","bold":"Qalıń","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Fayl ataması","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"Háreketler","language":"Til","liveCollaboration":"","duplicateSelection":"Nusqa","untitled":"Atamasız","name":"Ataması","yourName":"Atıńız","madeWithExcalidraw":"Excalidraw járdeminde islengen","group":"","ungroup":"","collaborators":"Qatnasıwshılar","showGrid":"","addToLibrary":"Kitapxanaǵa qosıw","removeFromLibrary":"Kitapxanadan alıp taslaw","libraryLoadingMessage":"Kitapxana júklenbekte…","libraries":"Kitapxanalardı kóriw","loadingScene":"Saxna júklenbekte…","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"Kóriw rejimi","share":"Bólisiw","showStroke":"","showBackground":"","toggleTheme":"Temanı ózgertiw","personalLib":"Jeke kitapxana","excalidrawLib":"Excalidraw kitapxanası","decreaseFontSize":"Shrift ólshemin kishireytiw","increaseFontSize":"Shrift ólshemin úlkeytiw","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Siltemeni ózgertiw","editEmbed":"","create":"Siltemeni jaratıw","createEmbed":"","label":"Silteme","labelEmbed":"","empty":""},"lineEditor":{"edit":"Qatardı ózgertiw","exit":"Qatardı ózgertiw redaktorınan shıǵıw"},"elementLock":{"lock":"Qulıplaw","unlock":"Qulıptan shıǵarıw","lockAll":"Barlıǵın qulıplaw","unlockAll":"Barlıǵın qulıptan shıǵarıw"},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"Súwretti eksportlaw...","export":"Retinde saqlaw...","copyToClipboard":"Almasıw buferine kóshirip alındı","save":"Ámeldegi faylǵa saqlaw","saveAs":"Retinde saqlaw","load":"Ashıw","getShareableLink":"","close":"Jabıw","selectLanguage":"Tildi tańlaw","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Menyu","done":"Tayın","edit":"Ózgertiw","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"Tolıq ekran","darkMode":"Qarańǵı tema","lightMode":"Jaqtı tema","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"Biykarlaw","clear":"Tazalaw","remove":"Óshiriw","embed":"","publishLibrary":"","submit":"Jiberiw","confirm":"Tastıyıqlaw","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"Almasıw buferine kóshirip alıw ámelge aspadı.","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Jaramsız SVG.","cannotResolveCollabServer":"","importLibraryError":"Kitapxananı júklew ámelge aspadı","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Súwret qoyıw","rectangle":"Tórt múyeshlik","diamond":"","ellipse":"","arrow":"","line":"Sızıq","freedraw":"Sızıw","text":"Tekst","library":"Kitapxana","lock":"","penMode":"","link":"","eraser":"Óshirgish","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"Figuralar"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Tekst qosıw ushın Enter túymesin basıń","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Qátelik"},"exportDialog":{"disk_title":"Diskke saqlaw","disk_details":"","disk_button":"Faylǵa saqlaw","link_title":"","link_details":"","link_button":"Siltemege eksportlaw","excalidrawplus_description":"","excalidrawplus_button":"Eksportlaw","excalidrawplus_exportError":""},"helpDialog":{"blog":"Biziń blogtı oqıń","click":"basıw","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"Hújjetshilik","doubleClick":"","drag":"","editor":"Redaktor","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"yamasa","preventBinding":"","tools":"Ásbaplar","shortcuts":"","textFinish":"","textNewLine":"","title":"Járdem","view":"Kóriw","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"Avtor atı","githubUsername":"GitHub paydalanıwshı atı","twitterUsername":"Twitter paydalanıwshı atı","libraryName":"Kitapxana ataması","libraryDesc":"","website":"Veb-sayt","placeholder":{"authorName":"Atıńız yamasa paydalanıwshı atı","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Kitapxananı qayta ornatıw","removeItemsFromLib":""},"imageExportDialog":{"header":"Súwretti eksportlaw","label":{"withBackground":"Fon","onlySelected":"","darkMode":"Qarańǵı tema","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Almasıw buferine kóshirip alıw"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Element","elements":"Elementler","height":"","scene":"Saxna","selected":"Tańlandı","storage":"","title":"","total":"","version":"Versiya","versionCopy":"Kóshirip alıw ushın basıń","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"Kitapxanaǵa qosıldı","copyStyles":"","copyToClipboard":"Almasıw buferine kóshirip alındı.","copyToClipboardAsPng":"","fileSaved":"Fayl saqlandı.","fileSavedToFilename":"{filename} saqlandı","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"Qara","white":"Aq","red":"Qızıl","pink":"Qızǵılt","grape":"","violet":"Qızǵılt kók","gray":"","blue":"Kók","cyan":"Kók aspan","teal":"Piruza","green":"Jasıl","yellow":"Sarı","orange":"Qızǵılt sarı","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":"Eksportlaw, sazlawlar, tiller, ..."},"defaults":{"menuHint":"Eksportlaw, sazlawlar hám basqa...","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"Reńler","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Súwret retinde eksportlaw","button":"Súwret retinde eksportlaw","description":""},"saveToDisk":{"title":"Diskke saqlaw","button":"Diskke saqlaw","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"","description":""}},"modal":{"loadFromFile":{"title":"Fayldan júklew","button":"Fayldan júklew","description":""},"shareableLink":{"title":"Siltemeden júklew","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js b/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js new file mode 100644 index 0000000..a23e37c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[9551],{228:function(e){e.exports=JSON.parse('{"labels":{"paste":"Senṭeḍ","pasteAsPlaintext":"","pasteCharts":"Senṭeḍ udlifen","selectAll":"Fren akk","multiSelect":"Rnu aferdis ɣer tefrayt","moveCanvas":"Smutti taɣzut n usuneɣ","cut":"Gzem","copy":"Nɣel","copyAsPng":"Nɣel ɣer tecfawit am PNG","copyAsSvg":"Nɣel ɣer tecfawit am SVG","copyText":"Nɣel ɣer tecfawit am uḍris","bringForward":"Awi ɣer sdat","sendToBack":"Awi s agilal","bringToFront":"Err ɣer deffir","sendBackward":"Awi ɣer deffir","delete":"Kkes","copyStyles":"Nɣel iɣunab","pasteStyles":"Senṭeḍ iɣunab","stroke":"Azizdew","background":"Agilal","fill":"Taččart","strokeWidth":"Tehri n yizirig","strokeStyle":"Aɣanib n tizirig","strokeStyle_solid":"Aččuran","strokeStyle_dashed":"S tjerriḍin","strokeStyle_dotted":"S tenqiḍin","sloppiness":"Astehzi","opacity":"Tiḍullest","textAlign":"Areyyec n uḍris","edges":"Leryuf","sharp":"Yemsed","round":"Imdewer","arrowheads":"Ixfawen n tenccabt","arrowhead_none":"Ulac","arrowhead_arrow":"Taneccabt","arrowhead_bar":"Afeggag","arrowhead_dot":"Tanqiḍt","arrowhead_triangle":"Akerdis","fontSize":"Tiddi n tsefsit","fontFamily":"Tawacult n tsefsiyin","addWatermark":"Seddu \\"Yettwaxdem s Excalidraw\\"","handDrawn":"Asuneɣ s ufus","normal":"Amagnu","code":"Tangalt","small":"Meẓẓi","medium":"Alemmas","large":"Ameqran","veryLarge":"Meqqer aṭas","solid":"Aččuran","hachure":"Azerreg","zigzag":"","crossHatch":"Azerreg anmidag","thin":"Arqaq","bold":"Azuran","left":"Azelmaḍ","center":"Talemmast","right":"Ayfus","extraBold":"Azuran aṭas","architect":"Amasdag","artist":"Anaẓur","cartoonist":"Amefɣul","fileTitle":"Isem n ufaylu","colorPicker":"Amafran n yini","canvasColors":"Yettwaseqdec di teɣzut n usuneɣ","canvasBackground":"Agilal n teɣzut n usuneɣ","drawingCanvas":"Taɣzut n usuneɣ","layers":"Tissiyin","actions":"Tigawin","language":"Tutlayt","liveCollaboration":"Amɛiwen s srid...","duplicateSelection":"Sisleg","untitled":"War azwel","name":"Isem","yourName":"Isem-ik (im)","madeWithExcalidraw":"Yettwaxdem s Excalidraw","group":"Segrew tafrayt","ungroup":"Kkess asegrew i tefrayt","collaborators":"Imɛiwnen","showGrid":"Beqqeḍ aferrug","addToLibrary":"Rnu ɣer temkarḍit","removeFromLibrary":"Kkes si temkarḍit","libraryLoadingMessage":"Asali n temkarḍit…","libraries":"Snirem timkarḍiyin","loadingScene":"Asali n usayes…","align":"Reyyec","alignTop":"Areyyec uksawen","alignBottom":"Areyyec ukessar","alignLeft":"Reyyec s azelmaḍ","alignRight":"Areyyec s ayfus","centerVertically":"Di tlemmast s ibeddi","centerHorizontally":"Di tlemmast s uglawi","distributeHorizontally":"Freq s uglawi","distributeVertically":"Freq s yibeddi","flipHorizontal":"Tuttya taglawant","flipVertical":"Tuttya tubdidt","viewMode":"Askar n tmuɣli","share":"Bḍu","showStroke":"Beqqeḍ amelqaḍ n yini n yizirig","showBackground":"Beqqeḍ amelqaḍ n yini n ugilal","toggleTheme":"Snifel asentel","personalLib":"Tamkarḍit tudmawant","excalidrawLib":"Tamkarḍit n Excalidraw","decreaseFontSize":"Senqes tiddi n tsefsit","increaseFontSize":"Sali tiddi n tsefsit","unbindText":"Serreḥ iweḍris","bindText":"Arez aḍris s anagbar","createContainerFromText":"","link":{"edit":"Ẓreg aseɣwen","editEmbed":"","create":"Snulfu-d aseɣwen","createEmbed":"","label":"Aseɣwen","labelEmbed":"","empty":""},"lineEditor":{"edit":"Ẓreg izirig","exit":"Ffeɣ seg umaẓrag n yizirig"},"elementLock":{"lock":"Sekkeṛ","unlock":"Serreḥ","lockAll":"Sekkeṛ akk","unlockAll":"Serreḥ akk"},"statusPublished":"Yeffeɣ-d","sidebarLock":"Eǧǧ afeggag n yidis yeldi","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ulac iferdisen yettwarnan yakan...","hint_emptyLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi, neɣ sbedd tamkarḍit seg usarsay azayez, ukessar-agi.","hint_emptyPrivateLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi."},"buttons":{"clearReset":"Ales awennez n teɣzut n usuneɣ","exportJSON":"Sifeḍ afaylu","exportImage":"Sifeḍ tugna...","export":"Sekles di...","copyToClipboard":"Nɣel ɣer tecfawit","save":"Sekles deg ufaylu amiran","saveAs":"Sekles am","load":"Ldi","getShareableLink":"Awi-d aseɣwen n beṭṭu","close":"Mdel","selectLanguage":"Fren tutlayt","scrollBackToContent":"Uɣal s agbur","zoomIn":"Simɣur","zoomOut":"Simẓi","resetZoom":"Ales awennez n usemɣer","menu":"Umuɣ","done":"Ifukk","edit":"Ẓreg","undo":"Sefsex","redo":"Err-d","resetLibrary":"Ales awennez n temkarḍit","createNewRoom":"Snulfu-d taxxamt tamaynutt","fullScreen":"Agdil aččuran","darkMode":"Askar imsulles","lightMode":"Askar afaw","zenMode":"Askar Zen","objectsSnapMode":"","exitZenMode":"Ffeɣ seg uskar Zen","cancel":"Sefsex","clear":"Sfeḍ","remove":"Kkes","embed":"","publishLibrary":"Ẓreg","submit":"Azen","confirm":"Sentem","embeddableInteractionButton":""},"alerts":{"clearReset":"Ayagi ad isfeḍ akk taɣzut n usuneɣ. Tetḥeqqeḍ?","couldNotCreateShareableLink":"D awezɣi asnulfu n useɣwen n beṭṭu.","couldNotCreateShareableLinkTooBig":"D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas","couldNotLoadInvalidFile":"D awezɣi asali n ufaylu armeɣtu","importBackendFailed":"Takterḍ seg uɣawas n deffir ur teddi ara.","cannotExportEmptyCanvas":"D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.","couldNotCopyToClipboard":"Ulamek anɣal ɣer tecfawit.","decryptFailed":"D awezɣi tukksa n uwgelhen i yisefka.","uploadedSecurly":"Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.","loadSceneOverridePrompt":"Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?","collabStopOverridePrompt":"Aḥbas n tɣimit ad yesefsex unuɣ-inek (m) yettwaḥerzen yakan s wudem adigan. Tetḥeqqeḍ?\\n(Ma tebɣiḍ ad teǧǧeḍ unuɣ-inek (m) adigan, mdel iccer n yiminig, deg umḍiq.)","errorAddingToLibrary":"Ulamek ara yettwarnu uferdis ɣer temkarḍit","errorRemovingFromLibrary":"Ulamek ara yettwakkes uferdis si temkarḍit","confirmAddLibrary":"Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?","imageDoesNotContainScene":"Tugna-agi tettban-d ur tesɛi ara isefka n usayes. Tesremdeḍ aseddu n usayes deg usifeḍ?","cannotRestoreFromImage":"Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna","invalidSceneUrl":"Ulamek taktert n usayes seg URL i d-ittunefken. Ahat mačči d tameɣtut neɣ ur tegbir ara isefka JSON n Excalidraw.","resetLibrary":"Ayagi ad isfeḍ tamkarḍit-inek•m. Tetḥeqqeḍ?","removeItemsFromsLibrary":"Ad tekkseḍ {{count}} n uferdis (en) si temkarḍit?","invalidEncryptionKey":"Tasarut n uwgelhen isefk ad tesɛu 22 n yiekkilen. Amɛiwen srid yensa.","collabOfflineWarning":"Ulac tuqqna n internet.\\nIbedilen-ik ur ttwaklasen ara!"},"errors":{"unsupportedFileType":"Anaw n ufaylu ur yettwasefrak ara.","imageInsertError":"D awezɣi tugra n tugna. Eɛreḍ tikkelt-nniḍen ardeqqal...","fileTooBig":"Afaylu meqqer aṭas. Tiddi tafellayt yurgen d {{maxSize}}.","svgImageInsertError":"D awezɣi tugra n tugna SVG. Acraḍ SVG yettban-d d armeɣtu.","failedToFetchImage":"","invalidSVGString":"SVG armeɣtu.","cannotResolveCollabServer":"Ulamek tuqqna s aqeddac n umyalel. Ma ulac uɣilif ales asali n usebter sakin eɛreḍ tikkelt-nniḍen.","importLibraryError":"Ur d-ssalay ara tamkarḍit","collabSaveFailed":"Ulamek asekles deg uzadur n yisefka deg ugilal. Ma ikemmel wugur, isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","collabSaveFailed_sizeExceeded":"Ulamek asekles deg uzadur n yisefka deg ugilal, taɣzut n usuneɣ tettban-d temqer aṭas. Isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","brave_measure_text_error":{"line1":"","line2":"Ayagi yezmer ad d-iglu s truẓi nIferdisen n uḍrisdeg wunuɣen-inek.","line3":"Ad k-nsemter ad tsexsiḍ aɣewwar-agi. Tzemreḍ ad tḍefreḍisurifen-agi ɣef wamek ara txedmeḍ.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Tafrayt","image":"Ger tugna","rectangle":"Asrem","diamond":"Ameɣṛun","ellipse":"Taglayt","arrow":"Taneccabt","line":"Izirig","freedraw":"Suneɣ","text":"Aḍris","library":"Tamkarḍit","lock":"Eǧǧ afecku n tefrayt yermed mbaɛd asuneɣ","penMode":"Askar n yimru - gdel tanalit","link":"Rnu/leqqem aseɣwen i talɣa yettwafernen","eraser":"Sfeḍ","frame":"","embeddable":"","laser":"","hand":"Afus (afecku n usmutti n tmuɣli)","extraTools":""},"headings":{"canvasActions":"Tigawin n teɣzut n usuneɣ","selectedShapeActions":"Tigawin n talɣa yettwafernen","shapes":"Talɣiwin"},"hints":{"canvasPanning":"Akken ad tesmuttiḍ taɣzut n usuneɣ, ṭṭef ṛṛuda n umumed, neɣ seqdec afecku Afus","linearElement":"Ssit akken ad tebduḍ aṭas n tenqiḍin, zuɣer i yiwen n yizirig","freeDraw":"Ssit yerna zuɣer, serreḥ ticki tfukeḍ","text":"Tixidest: tzemreḍ daɣen ad ternuḍ aḍris s usiti snat n tikkal anida tebɣiḍ s ufecku n tefrayt","embeddable":"","text_selected":"Ssit snat n tikkal neɣ ssed taqeffalt Kcem akken ad tẓergeḍ aḍris","text_editing":"Ssit Escape neɣ CtrlOrCmd+ENTER akken ad tfakkeḍ asiẓreg","linearElementMulti":"Ssit ɣef tenqiḍt taneggarut neɣ ssed taqeffalt Escape neɣ taqeffalt Kcem akken ad tfakkeḍ","lockAngle":"Tzemreḍ ad tḥettmeḍ tiɣmert s tuṭṭfa n tqeffalt SHIFT","resize":"Tzemreḍ ad tḥettemeḍ assaɣ s tuṭṭfa n tqeffalt SHIFT mi ara tettbeddileḍ tiddi,\\nma teṭṭfeḍ ALT abeddel n tiddi ad yili si tlemmast","resizeImage":"Tzemreḍ ad talseḍ tiddi s tilelli s tuṭṭfa n SHIFT,\\nṭṭef ALT akken ad talseḍ tiddi si tlemmast","rotate":"Tzemreḍ ad tḥettemeḍ tiɣemmar s tuṭṭfa n SHIFT di tuzzya","lineEditor_info":"Ssed ɣef CtrlOrCmd yerna ssit snat n tikkal neɣ ssed ɣef CtrlOrCmd + Kcem akken ad tẓergeḍ tineqqiḍin","lineEditor_pointSelected":"Ssed taqeffalt kkes akken ad tekkseḍ tanqiḍ (tinqiḍin),\\nCtrlOrCmd+D akken ad tsiselgeḍ, neɣ zuɣer akken ad tesmuttiḍ","lineEditor_nothingSelected":"Fren tanqiḍt akken ad tẓergeḍ (ṭṭef SHIFT akken ad tferneḍ aṭas),\\nneɣ ṭṭef Alt akken ad ternuḍ tinqiḍin timaynutin","placeImage":"Ssit akken ad tserseḍ tugna, neɣ ssit u zuɣer akken ad tesbaduḍ tiddi-ines s ufus","publishLibrary":"Siẓreg tamkarḍit-inek•inem","bindTextToElement":"Ssed ɣef kcem akken ad ternuḍ aḍris","deepBoxSelect":"Ṭṭef CtrlOrCmd akken ad tferneḍ s telqey, yerna ad trewleḍ i uzuɣer","eraserRevert":"Ssed Alt akken ad tsefsxeḍ iferdisen yettwacerḍen i tukksa","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Ulamek abeqqeḍ n teskant","canvasTooBig":"Taɣzut n usuneɣ tezmer ad tili temeqqer aṭas.","canvasTooBigTip":"Tixidest: eɛreḍ ad tesqerbeḍ ciṭ iferdisen yembaɛaden."},"errorSplash":{"headingMain":"Teḍra-d tuccḍa. Eɛreḍ ","clearCanvasMessage":"Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ ","clearCanvasCaveat":" Ayagi ad d-iglu s usṛuḥu n umahil ","trackedToSentry":"Tuccḍa akked umesmagi {{eventId}} tettwasekles deg unagraw-nneɣ.","openIssueMessage":"Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.","sceneContent":"Agbur n usayes:"},"roomDialog":{"desc_intro":"Tzemreḍ ad d-teɛerḍeḍ medden ɣer usayes-inek (m) amiran akken ad ttekkin yid-k.","desc_privacy":"Ur tqelliq ara, tiɣimit tsseqdac awgelhen ixef s ixef, dɣa ayen ara tsunɣeḍ ad iqqim d amaẓlay. Ula d aqeddac-nneɣ ur yezmir ara ad iwali acu txeddemeḍ.","button_startSession":"Bdu tiɣimit","button_stopSession":"Ḥbes tiɣimit","desc_inProgressIntro":"Tiɣimit n umɛawen s srid tetteddu akka tura.","desc_shareLink":"Bḍu aseɣwen-agi akked medden ukud tebɣiḍ ad temɛawaneḍ:","desc_exitSession":"Aḥbas n tɣimit ad k (m) yesenser si texxamt, maca ad tizmireḍ ad tkemmeleḍ amahil s usayes, s wudem adigan. Ẓer belli ayagi ur yettḥaz ara imdanen-nniḍen, yerna ad izmiren ad kemmelen ad mɛawanen di tsuffeɣt-nnsen.","shareTitle":"Rnu ɣer tɣimit n umɛiwen s srid n Excalidraw"},"errorDialog":{"title":"Tuccḍa"},"exportDialog":{"disk_title":"Sekles deg uḍebsi","disk_details":"Sekles isefka n usayes deg ufaylu ansi ara tizmireḍ ad d-tketreḍ areḍqal.","disk_button":"Sekles deg ufaylu","link_title":"Aseɣwen n beṭṭu","link_details":"Sifeḍ am useɣwen n tɣuri kan.","link_button":"Sifeḍ deg useɣwen","excalidrawplus_description":"Sekles asayes-inek•inem di tallunt n umahil Excalidraw+.","excalidrawplus_button":"Sifeḍ","excalidrawplus_exportError":"Ulamek asifeḍ ɣer Excalidraw+ akka tura..."},"helpDialog":{"blog":"Ɣeṛ ablug-nneɣ","click":"ssit","deepSelect":"Afran s telqey","deepBoxSelect":"Afran s telqey s tnaka, yerna ad tyrewleḍ i uzuɣer","curvedArrow":"Taneccabt izelgen","curvedLine":"Izirig izelgen","documentation":"Tasemlit","doubleClick":"ssit snat n tikkal","drag":"zuɣer","editor":"Amaẓrag","editLineArrowPoints":"Ẓreg tinqiḍin n yizirig/taneccabt","editText":"Ẓreg aḍris/rnu tabzimt","github":"Tufiḍ-d ugur? Azen-aɣ-d","howto":"Ḍfer imniren-nneɣ","or":"neɣ","preventBinding":"Seḥbes tuqqna n tneccabin","tools":"Ifecka","shortcuts":"Inegzumen n unasiw","textFinish":"Fak asiẓreg (amaẓrag n uḍris)","textNewLine":"Rnu ajerriḍ amaynut (amaẓrag n uḍris)","title":"Tallelt","view":"Tamuɣli","zoomToFit":"Simɣur akken ad twliḍ akk iferdisen","zoomToSelection":"Simɣur ɣer tefrayt","toggleElementLock":"Sekkeṛ/kkes asekker i tefrayt","movePageUpDown":"Smutti asebter d asawen/akessar","movePageLeftRight":"Smutti asebter s azelmaḍ/ayfus"},"clearCanvasDialog":{"title":"Sfeḍ taɣzut n usuneɣ"},"publishDialog":{"title":"Suffeɣ-d tamkarḍit","itemName":"Isem n uferdis","authorName":"Isem n umeskar","githubUsername":"Isem n useqdac n GitHub","twitterUsername":"Isem n useqdac n Twitter","libraryName":"Isem n temkarḍit","libraryDesc":"Aglam n temkarḍit","website":"Asmel n web","placeholder":{"authorName":"Isem neɣ isem n useqdac inek•inem","libraryName":"Isem n temkarḍit-inek•inem","libraryDesc":"Aglam n temkarḍit-inek•inem akken ad tɛiwneḍ medden ad fehmen aseqdec-inec","githubHandle":"Isem n useqdac n GitHub ( d anefrunan) akken ad tizmireḍ ad tisẓrigeḍ tamkarḍit ticki tuzneḍ-tt i uselken","twitterHandle":"Isem n useqdac n Twitter (d anefrunan) akken ad nẓer anwa ara nsenmer deg udellel di Twitter","website":"Aseɣwen ɣer usmel-inek•inem neɣ wayeḍ (d anefrunan)"},"errors":{"required":"Yettwasra","website":"Sekcem URL ameɣtu"},"noteDescription":"Azen tamkarḍit-inek•inem akken ad teddu di akaram azayez n temkarḍiti yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen.","noteGuidelines":"Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer iwellihen send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen.","noteLicense":"Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s Turagt MIT, ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist.","noteItems":"Yal aferdis n temkarḍit isefk ad isɛu isem-is i yiman-is akken ad yili wamek ara yettusizdeg. Iferdisen-agi n temkarḍit ad ddun:","atleastOneLibItem":"Ma ulac uɣilif fern ma drus yiwen n uferdis n temkarḍit akken ad tebduḍ","republishWarning":"Tamawt: kra n yiferdisen yettwafernen ttwacerḍen ffeɣen-d/ttwaznen. Isefk ad talseḍ tuzzna n yiferdisen anagar mi ara tleqqemeḍ tamkarḍit neɣ tuzzna yellan."},"publishSuccessDialog":{"title":"Tamkarḍit tettwazen","content":"Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayerdagi"},"confirmDialog":{"resetLibrary":"Ales awennez n temkarḍit","removeItemsFromLib":"Kkes iferdisen yettafernen si temkarḍit"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Unuɣen-inek (m) ttuwgelhnen seg yixef s ixef dɣa iqeddacen n Excalidraw werǧin ad ten-walin. ","link":"Amagrad ɣef uwgelhen ixef s ixef di Excalidraw"},"stats":{"angle":"Tiɣmeṛt","element":"Aferdis","elements":"Iferdisen","height":"Tattayt","scene":"Asayes","selected":"Yettwafren","storage":"Aḥraz","title":"","total":"Aɣrud","version":"Alqem","versionCopy":"Sit ad tneɣleḍ","versionNotAvailable":"Ur inuḥ ulqem","width":"Tehri"},"toast":{"addedToLibrary":"Yettwarna ɣer temkarḍit","copyStyles":"Iɣunab yettwaneɣlen.","copyToClipboard":"Yettwaɣel ɣer tecfawit.","copyToClipboardAsPng":"{{exportSelection}} yettwanɣel ɣer tecfawit am PNG\\n({{exportColorScheme}})","fileSaved":"Afaylu yettwasekles.","fileSavedToFilename":"Yettwasekles di {filename}","canvas":"taɣzut n usuneɣ","selection":"tafrayt","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Afrawan","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.","center_heading_plus":"Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?","menuHint":"Asifeḍ, ismenyifen, tutlayin, ..."},"defaults":{"menuHint":"Asifeḍ, ismenyifen, d wayen-nniḍen...","center_heading":"","toolbarHint":"Fren afecku tebduḍ asuneɣ!","helpHint":"Inegzumen akked tallelt"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js b/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js new file mode 100644 index 0000000..e1a7259 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[22],{8972:function(e){e.exports=JSON.parse('{"labels":{"paste":"Қою","pasteAsPlaintext":"","pasteCharts":"Диаграммаларды қою","selectAll":"Бәрін таңдау","multiSelect":"","moveCanvas":"","cut":"Қию","copy":"Көшіру","copyAsPng":"","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Жою","copyStyles":"Стильдерді көшіру","pasteStyles":"Стильдерді қою","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"Нұсқар ұштары","arrowhead_none":"Жоқ","arrowhead_arrow":"Нұсқар","arrowhead_bar":"Тосқауыл","arrowhead_dot":"Нүкте","arrowhead_triangle":"","fontSize":"Қаріп өлшемі","fontFamily":"Қаріп тобы","addWatermark":"","handDrawn":"","normal":"Қалыпты","code":"","small":"Кіші","medium":"Орта","large":"Үлкен","veryLarge":"Өте үлкен","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"","bold":"","left":"Солға","center":"Ортаға","right":"Оңға","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Файл атауы","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"","language":"Тіл","liveCollaboration":"","duplicateSelection":"Көшірме","untitled":"Атауысыз","name":"","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"Жабу","selectLanguage":"Тілді таңдау","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Mәзір","done":"Дайын","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"Суретті жүктеу мүмкін болмады. Кейінірек қайталап көріңіз...","fileTooBig":"Файл өте үлкен. Максималды рұқсат етілген көлем {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Суретті қою","rectangle":"","diamond":"","ellipse":"","arrow":"Нұсқар","line":"","freedraw":"","text":"Мәтін","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Қате"},"exportDialog":{"disk_title":"","disk_details":"Сахна деректерін кейін қайта импорттауға болатын файлға экспорттаңыз.","disk_button":"Файлға сақтау","link_title":"Ортақ сілтеме","link_details":"Тек оқуға арналған сілтеме ретінде экспорттау.","link_button":"Сілтемеге экспорттау","excalidrawplus_description":"Сахнаны өзіңіздің Excalidraw+ жұмыс кеңістігінде сақтаңыз.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Қазіргі уақытта Excalidraw+ үшін экспорттау мүмкін емес..."},"helpDialog":{"blog":"Біздің блогты оқу","click":"шерту","deepSelect":"","deepBoxSelect":"","curvedArrow":"Майысқан нұсқар","curvedLine":"Майысқан сызық","documentation":"Құжаттама","doubleClick":"қос шерту","drag":"апару","editor":"Өңдеу","editLineArrowPoints":"","editText":"","github":"Қате таптыңыз ба? Жолдаңыз","howto":"Біздің нұсқаулықтарды орындаңыз","or":"немесе","preventBinding":"Нұсқарды байланыстыруға жол бермеу","tools":"","shortcuts":"Пернетақта пәрмендері","textFinish":"Өңдеуді аяқтау (мәтіндік редактор)","textNewLine":"Жаңа жолға көшу (мәтіндік редактор)","title":"Көмек","view":"Көру","zoomToFit":"Барлық элементтердің көлеміне сәйкес үлкейту","zoomToSelection":"Таңдалғанды үлкейту","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Сіздің сызбаларыңыз өтпелі шифрлеу арқылы шифрланған, сондықтан Excalidraw серверлері оларды ешқашан көрмейді.","link":"Excalidraw қолданатын өтпелі шифрлеу туралы блог жазбасы"},"stats":{"angle":"Бұрыш","element":"Элемент","elements":"Элементтер","height":"Биіктігі","scene":"Сахна","selected":"Таңдалды","storage":"Сақтау көлемі","title":"","total":"Барлығы","version":"Нұсқа","versionCopy":"Көшіру үшін басыңыз","versionNotAvailable":"Бұл нұсқа қолжетімсіз","width":"Ені"},"toast":{"addedToLibrary":"","copyStyles":"Стильдер көшірілді.","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"Файл сақталды.","fileSavedToFilename":"{filename} сақталды","canvas":"","selection":"таңдау","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js b/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js new file mode 100644 index 0000000..6a5f763 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6566],{5845:function(e){e.exports=JSON.parse('{"labels":{"paste":"បិទភ្ជាប់","pasteAsPlaintext":"បិទភ្ជាប់ជាអត្ថបទធម្មតា","pasteCharts":"បិទភ្ជាប់តារាង","selectAll":"ជ្រើសរើស​ទាំងអស់","multiSelect":"បន្ថែមធាតុទៅលើការជ្រើសរើស","moveCanvas":"ផ្លាស់ទីបាវ","cut":"កាត់","copy":"ចម្លង","copyAsPng":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ PNG","copyAsSvg":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ SVG","copyText":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​អត្ថបទ","bringForward":"នាំយកទៅលើ","sendToBack":"នាំយកទៅក្រោយបង្អស់","bringToFront":"នាំយកទៅលើបង្អស់","sendBackward":"នាំយកទៅក្រោយ","delete":"លុប","copyStyles":"ចម្លងរចនាប័ទ្ម","pasteStyles":"បិទភ្ជាប់រចនាប័ទ្ម","stroke":"ខ្វាច់","background":"ផ្ទៃខាងក្រោយ","fill":"បំពេញ","strokeWidth":"ទទឹងខ្វាច់","strokeStyle":"រចនាប័ទ្មរបស់ខ្វាច់","strokeStyle_solid":"តាន់","strokeStyle_dashed":"ដាច់ៗ","strokeStyle_dotted":"ចំណុចៗ","sloppiness":"រចនាប័ទ្មបន្ទាត់","opacity":"ភាពច្បាស់","textAlign":"តម្រឹមអត្ថបទ","edges":"គែម","sharp":"មុត","round":"រាងមូល","arrowheads":"ក្បាលព្រួញ","arrowhead_none":"គ្មាន","arrowhead_arrow":"ព្រួញ","arrowhead_bar":"របារ","arrowhead_dot":"ចំណុច","arrowhead_triangle":"ត្រីកោណ","fontSize":"ទំហំពុម្ពអក្សរ","fontFamily":"ក្រុម​ពុម្ពអក្សរ","addWatermark":"បន្ថែមវ៉ាត់ធើម៉ាក \\"Made with Excalidraw\\"","handDrawn":"គូរដោយដៃ","normal":"ធម្មតា","code":"កូដ","small":"តូច","medium":"មធ្យម","large":"ធំ","veryLarge":"ធំខ្លាំង","solid":"តាន់","hachure":"Hachure","zigzag":"Zigzag","crossHatch":"បន្ទាត់ឆ្នូតៗ","thin":"ស្តើង","bold":"ដឹត","left":"ខាងឆ្វេង","center":"កណ្ដាល","right":"នៅខាងស្ដាំ","extraBold":"ដិតបន្ថែម","architect":"ស្ថាបត្យករ","artist":"សិល្បៈករ","cartoonist":"អ្នកគំនូរជីវចល","fileTitle":"ឈ្មោះ​ឯកសារ","colorPicker":"ឧបករណ៍​ជ្រើស​ពណ៌","canvasColors":"ប្រើលើបាវ","canvasBackground":"ផ្ទៃខាងក្រោយបាវ","drawingCanvas":"តំបន់គំនូរ","layers":"ស្រទាប់","actions":"សកម្មភាព","language":"ភាសា","liveCollaboration":"សហការគ្នាផ្ទាល់...","duplicateSelection":"ចម្លង","untitled":"គ្មានឈ្មោះ","name":"ឈ្មោះ","yourName":"ឈ្មោះ​របស់​អ្នក","madeWithExcalidraw":"បង្កើតជាមួយ Excalidraw","group":"ការជ្រើសរើសជាក្រុម","ungroup":"បំបែកក្រុមការជ្រើសរើសជាក្រុម","collaborators":"អ្នកសហការ","showGrid":"បង្ហាញក្រឡាចត្រង្គ","addToLibrary":"បន្ថែមទៅបណ្ណាល័យ","removeFromLibrary":"លុបចេញពីបណ្ណាល័យ","libraryLoadingMessage":"កំពុងផ្ទុកបណ្ណាល័យ...","libraries":"រកមើលបណ្ណាល័យ","loadingScene":"កំពុង​ផ្ទុក​ស៊ីន...","align":"តម្រឹម","alignTop":"តម្រឹមផ្នែកខាងលើ","alignBottom":"តម្រឹមផ្នែកខាងក្រោម","alignLeft":"​តម្រឹម​ឆ្វេង","alignRight":"តម្រឹម​ស្តាំ","centerVertically":"កណ្តាល​បញ្ឈរ","centerHorizontally":"កណ្តាល​ផ្ដេក","distributeHorizontally":"ចែកចាយផ្ដេក","distributeVertically":"ចែកចាយបញ្ឈរ","flipHorizontal":"ត្រឡប់​ដោយ​ផ្ដេក","flipVertical":"ត្រឡប់​ដោយ​បញ្ឈរ","viewMode":"ម៉ូដ​បង្ហាញ","share":"ចែករំលែក","showStroke":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ខ្វាច់","showBackground":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ផ្ទៃខាងក្រោយ","toggleTheme":"បិទ/បើកប្រធានបទ","personalLib":"បណ្ណាល័យផ្ទាល់ខ្លួន","excalidrawLib":"បណ្ណាល័យ Excalidraw","decreaseFontSize":"បន្ថយទំហំពុម្ពអក្សរ","increaseFontSize":"បង្កើនទំហំពុម្ពអក្សរ","unbindText":"ស្រាយអត្ថបទ","bindText":"ភ្ជាប់អត្ថបទទៅប្រអប់","createContainerFromText":"រុំអត្ថបទក្នុងប្រអប់មួយ","link":{"edit":"កែតំណភ្ជាប់","editEmbed":"","create":"បង្កើតតំណភ្ជាប់","createEmbed":"","label":"តំណ","labelEmbed":"","empty":""},"lineEditor":{"edit":"កែសម្រួលបន្ទាត់","exit":"ចាកចេញពីការកែសម្រួលបន្ទាត់"},"elementLock":{"lock":"ចាក់សោ","unlock":"ដោះសោ","lockAll":"ចាក់សោទាំងអស់","unlockAll":"ដោះសោទាំងអស់"},"statusPublished":"ត្រូវបានបោះពុម្ពផ្សាយ","sidebarLock":"ទុករបារចំហៀងបើក","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"មិនទាន់មានធាតុបន្ថែមទេ...","hint_emptyLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ ឬដំឡើងបណ្ណាល័យពីឃ្លាំងសាធារណៈខាងក្រោម។","hint_emptyPrivateLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ"},"buttons":{"clearReset":"កំណត់បាវឡើងវិញ","exportJSON":"នាំចេញជាឯកសារ","exportImage":"នាំរូបភាពចេញ","export":"រក្សាទុក​នៅ...","copyToClipboard":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់","save":"រក្សាទុកទៅឯកសារបច្ចុប្បន្ន","saveAs":"រក្សាទុក​ជា","load":"បើក","getShareableLink":"យកតំណដែលអាចចែករំលែកបាន","close":"បិទ","selectLanguage":"រើសភាសា","scrollBackToContent":"រំកិលត្រឡប់ទៅមាតិកាវិញ","zoomIn":"ពង្រីក","zoomOut":"បង្រួម","resetZoom":"កំណត់ការពង្រីកឡើងវិញ","menu":"ម៉ឺនុយ","done":"រួចរាល់","edit":"កែ","undo":"ត្រឡប់វិញ","redo":"ធ្វើ​វិញ","resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","createNewRoom":"បង្កើតបន្ទប់ថ្មី","fullScreen":"ពេញ​អេក្រង់","darkMode":"ម៉ូដងងឹត","lightMode":"ម៉ូដភ្លឺ","zenMode":"ម៉ូត Zen","objectsSnapMode":"","exitZenMode":"ចេញពី zen​ ម៉ូត","cancel":"បោះបង់","clear":"សម្អាត","remove":"ដកចេញ","embed":"","publishLibrary":"បោះពុម្ពផ្សាយ","submit":"ដាក់​ស្នើ","confirm":"បញ្ជាក់","embeddableInteractionButton":""},"alerts":{"clearReset":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","couldNotCreateShareableLink":"មិនអាចបង្កើតតំណដែលអាចចែករំលែកបានទេ។","couldNotCreateShareableLinkTooBig":"មិន​អាច​បង្កើត​តំណ​ដែល​អាច​ចែក​រំលែក​បាន៖ ស៊ីន​ធំ​ពេក","couldNotLoadInvalidFile":"មិនអាចផ្ទុកឯកសារមិនត្រឹមត្រូវបានទេ។","importBackendFailed":"ការនាំចូលពីម៉ាស៊ីនមេបានបរាជ័យ។","cannotExportEmptyCanvas":"មិនអាចនាំចេញបាវទទេបានទេ។","couldNotCopyToClipboard":"មិនអាចចម្លងទៅក្ដារតម្បៀតខ្ទាស់បានទេ។","decryptFailed":"មិនអាចឌិគ្រីបទិន្នន័យបានទេ។","uploadedSecurly":"ការបង្ហោះត្រូវបានការពារដោយការអ៊ិនគ្រីបពីចុងដល់ចប់ មានន័យថា ទាំងម៉ាស៊ីនមេរបស់ Excalidraw ឬភាគីទីបីមិនអាចអានខ្លឹមសារបានទេ។","loadSceneOverridePrompt":"ការផ្ទុកគំនូរខាងក្រៅនឹងជំនួសមាតិកាដែលមានស្រាប់របស់អ្នក។ តើអ្នកចង់បន្តទេ?","collabStopOverridePrompt":"ការបញ្ឈប់សម័យនឹងសរសេរជាន់លើគំនូរដែលបានរក្សាទុកនៅលើកុំព្យូទ័ររបស់អ្នកពីមុន។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?\\n\\n(ប្រសិនបើអ្នកចង់រក្សាគំនូរដែលនៅលើកុំព្យូទ័ររបស់អ្នក គ្រាន់តែបិទផ្ទាំងកម្មវិធីរុករក។)","errorAddingToLibrary":"មិនអាចបន្ថែមធាតុទៅបណ្ណាល័យបានទេ","errorRemovingFromLibrary":"មិនអាចលុបធាតុចេញពីបណ្ណាល័យបានទេ","confirmAddLibrary":"វានឹងបន្ថែមរូបរាង {{numShapes}} ទៅបណ្ណាល័យរបស់អ្នក។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","imageDoesNotContainScene":"រូបភាពនេះហាក់ដូចជាមិនមានទិន្នន័យស៊ីនណាមួយទេ។ តើអ្នកបានបើកការបង្កប់ស៊ីននៅពេលនាំចេញទេ?","cannotRestoreFromImage":"មិនអាចស្ដារស៊ីនពីឯកសាររូបភាពនេះបានទេ","invalidSceneUrl":"មិន​អាច​នាំចូល​ស៊ីន​ពី URL ដែល​បាន​ផ្តល់​ឱ្យ​ទេ។ វាមានទម្រង់ខុស ឬមិនមានទិន្នន័យ Excalidraw JSON ដែលត្រឹមត្រូវ។","resetLibrary":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","removeItemsFromsLibrary":"តើអ្នកប្រាកដថាចង់លុប {{count}} ធាតុចេញពីបណ្ណាល័យទេ?","invalidEncryptionKey":"សោអ៊ីនគ្រីបត្រូវតែមាន 22 តួអក្សរ។ ការសហការផ្ទាល់ត្រូវបានបិទ។","collabOfflineWarning":"គ្មានការតភ្ជាប់អ៊ីនធឺណិត។\\nការផ្លាស់ប្តូររបស់អ្នកនឹងមិនត្រូវបានរក្សាទុកទេ!"},"errors":{"unsupportedFileType":"ប្រភេទឯកសារមិនត្រូវបានគាំទ្រទេ។","imageInsertError":"មិនអាចបញ្ចូលរូបភាពបានទេ។ សូម​ព្យាយាម​ម្តង​ទៀត​នៅ​ពេល​ក្រោយ……","fileTooBig":"ឯកសារធំពេក។ ទំហំអតិបរមាដែលអនុញ្ញាតគឺ {{maxSize}}។","svgImageInsertError":"មិនអាចបញ្ចូលរូបភាព SVG បានទេ។ ស្លាក SVG ហាក់ដូចជាមិនត្រឹមត្រូវ។","failedToFetchImage":"","invalidSVGString":"SVG មិន​ត្រឹមត្រូវ។","cannotResolveCollabServer":"មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសហការផ្ទាល់បានទេ។ សូមផ្ទុកទំព័រឡើងវិញ ហើយព្យាយាមម្តងទៀត។","importLibraryError":"មិនអាចផ្ទុកបណ្ណាល័យបានទេ។","collabSaveFailed":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ។ ប្រសិនបើបញ្ហានៅតែបន្តកើតមាន​ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","collabSaveFailed_sizeExceeded":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ, ផ្ទាំងបាវហាក់ដូចជាធំពេក។ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","brave_measure_text_error":{"line1":"អ្នកហាក់ដូចជាកំពុងប្រើប្រាស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត Brave ជាមួយនឹងការកំណត់ ការពារស្នាមម្រាមដៃយ៉ាងធ្ងន់ធ្ងរ ត្រូវបានបើក។","line2":"វាអាចបណ្តាលឱ្យមានការបំបែក ធាតុអត្ថបទ នៅក្នុងគំនូររបស់អ្នក។","line3":"យើងណែនាំយ៉ាងមុតមាំឱ្យបិទការកំណត់នេះ។ អ្នកអាចអនុវត្តតាម ជំហានទាំងនេះ ដើម្បីបិទការកំណត់នេះ។","line4":"ប្រសិនបើការបិទការកំណត់នេះមិនបានជួសជុលការបង្ហាញធាតុអត្ថបទទេ សូមដាក់ issue នៅលើ GitHub ឬរាយការណ៍នៅលើ Discord របស់យើង"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ការជ្រើសរើស","image":"បញ្ចូលរូបភាព","rectangle":"ចតុ​កោណ​កែង​","diamond":"ពេជ្រ","ellipse":"ពងក្រពើ","arrow":"ព្រួញ","line":"បន្ទាត់","freedraw":"គូរ","text":"អត្ថបទ","library":"បណ្ណាល័យ","lock":"រក្សារឧបករណ៍ដែលបានជ្រើសរើសបន្ទាប់ពីគូររួច","penMode":"របៀបប៊ិច - ជៀសវាងការប៉ះ","link":"បន្ថែម/ធ្វើបច្ចុប្បន្នភាពតំណភ្ជាប់សម្រាប់រូបរាងដែលបានជ្រើសរើស","eraser":"ជ័រលុប","frame":"","embeddable":"","laser":"","hand":"ដៃ (panning tool)","extraTools":""},"headings":{"canvasActions":"សកម្មភាពបាវ","selectedShapeActions":"សកម្មភាពរបស់រាងដែលបានជ្រើសរើស","shapes":"រាង"},"hints":{"canvasPanning":"ដើម្បីផ្លាស់ទីបាវ សូមសង្កត់កង់កណ្ដុរឬគ្រាប់ចុចspacebarខណៈពេលកំពុងអូស ឬប្រើឧបករណ៍ដៃ។","linearElement":"ចុចដើម្បីបង្កើតចំណុចច្រើន អូសដើម្បីបង្កើតបន្ទាត់មួយ","freeDraw":"ចុច​ហើយ​អូស លែង​ពេល​រួចរាល់","text":"គន្លឹះ៖ អ្នកក៏អាចបន្ថែមអត្ថបទដោយចុចពីរដងនៅកន្លែងណាមួយដោយប្រើឧបករណ៍ជ្រើសរើស","embeddable":"","text_selected":"ចុចពីរដង ឬចុច ENTER ដើម្បីកែសម្រួលអត្ថបទ","text_editing":"ចុច Escape ឬ CtrlOrCmd +ENTER ដើម្បីបញ្ចប់ការកែសម្រួល","linearElementMulti":"ចុចលើចំណុចចុងក្រោយ ឬចុច Esc/Enter ដើម្បីបញ្ចប់","lockAngle":"អ្នកអាចសង្កត់ Shift ដើម្បីកំណត់មុំ","resize":"អ្នកអាចសង្កត់ SHIFT ដើម្បីបងំ្ខឲមានសមាមាត្រ ខណៈពេលដែលប្តូរទំហំ\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","resizeImage":"អ្នកអាចប្តូរទំហំរូបភាពដោយសេរីដោយសង្កត់ SHIFT,\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","rotate":"អ្នកអាចសង្កត់ Shift ខណៈពេលកំពុងបង្វិល ដើម្បីកម្រិតមុំ","lineEditor_info":"សង្កត់ CtrlOrCmd ហើយចុចពីរដង ឬចុច CtrlOrCmd + Enter ដើម្បីកែសម្រួលចំណុច","lineEditor_pointSelected":"ចុច Delete ដើម្បីលុបចំណុច(ច្រើន)\\nCtrlOrCmd+D ដើម្បីចម្លង, ឬអូសដើម្បីផ្លាស់ទី","lineEditor_nothingSelected":"ជ្រើសរើសចំណុចដែលត្រូវកែសម្រួល (សង្កត់ SHIFT ដើម្បីជ្រើសរើសច្រើនចំណុច)\\nឬ សង្កត់ Alt ហើយចុចដើម្បីបន្ថែមចំណុចថ្មី។","placeImage":"ចុចដើម្បីដាក់រូបភាព ឬចុចហើយអូសដើម្បីកំណត់ទំហំរបស់រូបភាពដោយដៃ","publishLibrary":"បោះពុម្ពផ្សាយបណ្ណាល័យផ្ទាល់ខ្លួនរបស់អ្នក","bindTextToElement":"ចុច Enter ដើម្បីបន្ថែមអត្ថបទ","deepBoxSelect":"សង្កត់ CtrlOrCmd ដើម្បីជ្រើសរើសយ៉ាងជ្រៅ និងជៀសវាងការអូស","eraserRevert":"សង្កត់ Alt ដើម្បីដកការជ្រើសរើសធាតុដែលត្រូវបានសម្គាល់សម្រាប់ការលុប","firefox_clipboard_write":"បើកមុខងារនេះដោយកំណត់ទង់ \\"dom.events.asyncClipboard.clipboardItem\\" ទៅ \\"true\\" \\nដើម្បីផ្លាស់ប្តូរទង់កម្មវិធីរុករកនៅក្នុង Firefox សូមចូលទៅកាន់ទំព័រ \\"about:config\\"។","disableSnapping":""},"canvasError":{"cannotShowPreview":"មិនអាចបង្ហាញការមើលជាមុនបាន","canvasTooBig":"បាវអាចមានទំហំធំពេក។","canvasTooBigTip":"គន្លឹះ៖ ព្យាយាមផ្លាស់ទីធាតុដែលឆ្ងាយបំផុតឱ្យទៅជិតគ្នាបន្តិច។"},"errorSplash":{"headingMain":"បានជួបប្រទះកំហុសមួយ។ សូមព្យាយាម ។","clearCanvasMessage":"ប្រសិនបើការផ្ទុកឡើងវិញមិនអាចដោះស្រាយកំហុសបានទេ សូមសាកល្បង ","clearCanvasCaveat":" នេះនឹងបណ្តាលឱ្យបាត់បង់ការងារ ","trackedToSentry":"កំហុសជាមួយលេខសម្គាល់ {{eventId}} ត្រូវបានតាមដាននៅលើប្រព័ន្ធរបស់យើង។","openIssueMessage":"យើងមានការប្រុងប្រយ័ត្នខ្លាំងណាស់ក្នុងការមិនបញ្ចូលព័ត៌មានរបស់ស៊ីនរបស់អ្នកទៅលើកំហុស។ ប្រសិនបើស៊ីនរបស់អ្នកមិនមានលក្ខណៈឯកជនទេ សូមពិចារណាបន្តទៅកាន់ សូមបញ្ចូលព័ត៌មានខាងក្រោមដោយចម្លង និងបិទភ្ជាប់វាទៅក្នុងបញ្ហារបស់ GitHub។","sceneContent":"មាតិកាបាវ៖"},"roomDialog":{"desc_intro":"អ្នកអាចអញ្ជើញអ្នកដទៃឱ្យសហការជាមួយអ្នកនៅលើស៊ីនបច្ចុប្បន្ន។","desc_privacy":"កុំបារម្ភ វគ្គប្រើការអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះអ្វីដែលអ្នកគូរនឹងនៅតែជាឯកជន។ សូម្បីតែម៉ាស៊ីនមេរបស់យើងក៏នឹងមិនអាចមើលឃើញអ្វីដែលអ្នកកំពុងធ្វើដែរ។","button_startSession":"ចាប់ផ្តើមវគ្គ","button_stopSession":"បញ្ឈប់វគ្គ","desc_inProgressIntro":"វគ្គសហការផ្ទាល់ឥឡូវនេះកំពុងដំណើរការ។","desc_shareLink":"ចែករំលែកតំណនេះជាមួយអ្នកដែលអ្នកចង់សហការជាមួយ៖","desc_exitSession":"ការបញ្ឈប់វគ្គនេះនឹងផ្តាច់អ្នកចេញពីបន្ទប់ ប៉ុន្តែអ្នកនឹងនៅតែអាចបន្តប្រើបាវនៅលើកុំព្យូទ័ររបស់អ្នក។ សូមចំណាំថាវានឹងមិនប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតទេ​ ហើយពួកគេនឹងនៅតែអាចបន្តសហការលើកំណែរបស់ពួកគេ។","shareTitle":"ចូលរួមវគ្គសហការផ្ទាល់នៅលើ Excalidraw"},"errorDialog":{"title":"មានកំហុស"},"exportDialog":{"disk_title":"រក្សាទុកទៅថាស","disk_details":"នាំចេញទិន្នន័យរបស់ស៊ីនជាឯកសារដែលអ្នកអាចនាំចូលនៅពេលក្រោយ។","disk_button":"រក្សាទុកក្នុងឯកសារ","link_title":"តំណដែលអាចចែករំលែកបាន","link_details":"នាំចេញជាតំណបានតែមើលឬអាន។","link_button":"នាំចេញជាតំណ","excalidrawplus_description":"រក្សាទុកស៊ីនទៅកន្លែងធ្វើការ Excalidraw+ របស់អ្នក។","excalidrawplus_button":"នាំចេញ","excalidrawplus_exportError":"មិនអាចនាំចេញទៅ Excalidraw+ បានទេនៅពេលនេះ..."},"helpDialog":{"blog":"អានប្លក់របស់យើង","click":"ចុច","deepSelect":"ការជ្រើសរើសជាក្រុម","deepBoxSelect":"ជ្រើសរើសជាក្រុម និង ជៀសវាងការអូសទាញផ្លាស់ទី","curvedArrow":"ព្រួញកោង","curvedLine":"ព្រួញកោង","documentation":"ឯកសារ","doubleClick":"ចុច​ពីរ​ដង","drag":"អូស","editor":"កម្មវិធីនិពន្ធ","editLineArrowPoints":"កែសម្រួលចំណុចនៃបន្ទាត់ ឬព្រួញ","editText":"បន្ថែម ឬកែសម្រួលអត្ថបទ","github":"រកឃើញបញ្ហា? ដាក់ស្នើ","howto":"ឯកសារជំនួយ","or":"ឬ","preventBinding":"ទប់ស្កាត់ការចងព្រួញ","tools":"ឧបករណ៍","shortcuts":"ផ្លូវកាត់ក្តារចុច","textFinish":"បញ្ចប់ការកែសម្រួល (កម្មវិធីនិពន្ធអត្ថបទ)","textNewLine":"ចុះបន្ទាត់ (កម្មវិធីនិពន្ធអត្ថបទ)","title":"ជំនួយ","view":"បង្ហាញ","zoomToFit":"ធ្វើមាត្រដ្ឋានឱ្យសមនឹងធាតុទាំងអស់។","zoomToSelection":"ពង្រីកទៅការជ្រើសរើស","toggleElementLock":"ចាក់សោ/ដោះសោការជ្រើសរើស","movePageUpDown":"ផ្លាស់ទីទំព័រឡើងលើ/ចុះក្រោម","movePageLeftRight":"ផ្លាស់ទីទំព័រទៅឆ្វេង/ស្ដាំ"},"clearCanvasDialog":{"title":"សម្អាតបាវ"},"publishDialog":{"title":"បោះពុម្ពបណ្ណាល័យ","itemName":"ឈ្មោះ​ធាតុ","authorName":"ឈ្មោះអ្នកនិពន្ធ","githubUsername":"ឈ្មោះអ្នកប្រើ GitHub","twitterUsername":"ឈ្មោះអ្នកប្រើ Twitter","libraryName":"ឈ្មោះបណ្ណាល័យ","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យ","website":"គេហទំព័រ","placeholder":{"authorName":"ឈ្មោះរបស់អ្នក ឬឈ្មោះអ្នកប្រើប្រាស់","libraryName":"ឈ្មោះបណ្ណាល័យរបស់អ្នក","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យរបស់អ្នក នឹងអនុញ្ញាតឱ្យអ្នក​ផ្សេងយល់ពីការប្រើប្រាស់របស់វា។","githubHandle":"ឈ្មោះអ្នកប្រើ GitHub (ជាជម្រើស) ដូច្នេះអ្នកអាចកែសម្រួលបណ្ណាល័យបាននៅពេលដាក់ស្នើសម្រាប់ការពិនិត្យ","twitterHandle":"ឈ្មោះអ្នកប្រើប្រាស់ Twitter (ជាជម្រើស) ដូច្នេះយើងដឹងថាអ្នកណាដែលត្រូវផ្តល់ក្រេឌីតនៅពេលផ្សព្វផ្សាយតាម Twitter","website":"ភ្ជាប់ទៅគេហទំព័រផ្ទាល់ខ្លួនរបស់អ្នក ឬគេហទំព័រផ្សេងទៀត (ជាជម្រើស)"},"errors":{"required":"ត្រូវបានទាមទារ","website":"សូមវាយបញ្ចូល URL ​ដែលត្រឹមត្រូវ"},"noteDescription":"ដាក់ស្នើបណ្ណាល័យរបស់អ្នកដើម្បីដាក់បញ្ចូលក្នុង ឃ្លាំងបណ្ណាល័យសាធារណៈ សម្រាប់ឲ្យអ្នកផ្សេងប្រើក្នុងគំនូររបស់ពួកគេ។","noteGuidelines":"បណ្ណាល័យត្រូវតែអនុម័តដោយដៃជាមុនសិន។ សូមអាន ការណែនាំ មុនពេលដាក់ស្នើ។ ការប្រាស្រ័យទាក់ទងជាបន្តបន្ទាប់ និងការផ្លាស់ប្តូរបណ្ណាល័យទាមទារឱ្យអ្នកមានគណនី GitHub ប៉ុន្តែមិនត្រូវបានទាមទារយ៉ាងតឹងរ៉ឹងទេ។","noteLicense":"តាមរយៈការដាក់ស្នើ អ្នកយល់ព្រមថាបណ្ណាល័យនឹងត្រូវបានបោះពុម្ពផ្សាយក្រោម អាជ្ញាប័ណ្ណ MIT ដែលមានន័យយ៉ាងខ្លី អ្នកណាក៏អាចប្រើប្រាស់វាបានដោយគ្មានការរឹតត្បិត។","noteItems":"ធាតុនីមួយៗនៅក្នុងបណ្ណាល័យត្រូវតែមានឈ្មោះផ្ទាល់ខ្លួនដើម្បីយើងអាចត្រងវាបាន។ ធាតុខាងក្រោមនឹងត្រូវបានរួមបញ្ចូល:","atleastOneLibItem":"សូមជ្រើសរើសយ៉ាងហោចណាស់ធាតុបណ្ណាល័យមួយដើម្បីចាប់ផ្តើម","republishWarning":"ចំណាំ៖ ធាតុដែលត្រូវបានជ្រើសរើសមួយចំនួនត្រូវបានសម្គាល់ថាបានបោះពុម្ព/បញ្ជូនរួចរាល់ហើយ។ អ្នកគួរតែបញ្ជូនធាតុឡើងវិញនៅពេលដែលធ្វើបច្ចុប្បន្នភាពបណ្ណាល័យដែលមានស្រាប់ ឬការបញ្ជូន។"},"publishSuccessDialog":{"title":"បណ្ណាល័យត្រូវបានដាក់ស្នើ","content":"សូមអរគុណ {{authorName}}។ បណ្ណាល័យរបស់អ្នកត្រូវបានបញ្ជូនមកពិនិត្យ។ សូមចុច ទីនេះ ដើម្បីតាមដានស្ថានភាពនៃការដាក់ស្នើនេះ។"},"confirmDialog":{"resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","removeItemsFromLib":"លុបធាតុដែលបានជ្រើសរើសចេញពីបណ្ណាល័យ"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"គំនូររបស់អ្នកត្រូវបានអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះម៉ាស៊ីនមេរបស់ Excalidraw នឹងមិនឃើញពួកវាទេ។","link":"ប្លក់ផុសលើការអ៊ិនគ្រីបពីចុងដល់ចុងក្នុង Excalidraw"},"stats":{"angle":"មុំ","element":"ធាតុ","elements":"ធាតុច្រើន","height":"កម្ពស់","scene":"ស៊ីន","selected":"បានជ្រើសរើស","storage":"ការផ្ទុក","title":"ស្ថិតិសម្រាប់ nerds","total":"សរុប","version":"ជំនាន់:","versionCopy":"ចុចដើម្បីចម្លង","versionNotAvailable":"កំណែមិនអាចប្រើបាន","width":"ទទឹង​"},"toast":{"addedToLibrary":"បានបន្ថែមទៅបណ្ណាល័យ","copyStyles":"រចនាប័ទ្មត្រូវបានចម្លង។","copyToClipboard":"បានចម្លងទៅក្ដារតម្បៀតខ្ទាស់។","copyToClipboardAsPng":"បានចម្លង {{exportSelection}} ទៅក្ដារតម្បៀតខ្ទាស់ជា PNG\\n({{exportColorScheme}})","fileSaved":"ឯកសារត្រូវបានរក្សាទុក។","fileSavedToFilename":"បានរក្សាទុកនៅក្នុង {filename}","canvas":"តំបន់គំនូរ","selection":"ការជ្រើសរើស","pasteAsSingleElement":"ប្រើ {{shortcut}} ដើម្បីបិទភ្ជាប់ជាធាតុតែមួយ,\\nឬបិទភ្ជាប់ទៅក្នុងកម្មវិធីនិពន្ធអត្ថបទដែលមានស្រាប់","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ថ្លាមើលធ្លុះ","black":"ពណ៍ខ្មៅ","white":"ពណ៌ស","red":"ពណ៌ក្រហម","pink":"ពណ៌ផ្កាឈូក","grape":"ពណ៌ទំពាំងបាយជូរ","violet":"ពណ៌ស្វាយ","gray":"ពណ៌ប្រផេះ","blue":"ពណ៌ខៀវ","cyan":"ពណ៌ផ្ទៃមេឃ","teal":"ពណ៌​ខៀវបៃតង","green":"ពណ៌បៃតង","yellow":"ពណ៌លឿង","orange":"ពណ៌ទឹកក្រូច","bronze":"ពណ៌សំរិទ្ធ"},"welcomeScreen":{"app":{"center_heading":"ទិន្នន័យទាំងអស់របស់អ្នក ត្រូវបានរក្សាទុកនៅក្នុង browser របស់អ្នក ។","center_heading_plus":"តើ​អ្នក​ចង់​ទៅ Excalidraw+ ​វិញ ឬ មែន?","menuHint":"នាំចេញ ចំណូលចិត្ត ភាសា ..."},"defaults":{"menuHint":"ការនាំចេញ ចំណូលចិត្ត និង ច្រើនទៀត...","center_heading":"ងាយស្រួល ។ ធ្វើ ។​ ដ្យាក្រាម ។","toolbarHint":"ជ្រើសរើសឧបករណ៍មួយ និង ចាប់ផ្តើមគូរ!","helpHint":"ផ្លូវកាត់ &​ ជំនួយ"}},"colorPicker":{"mostUsedCustomColors":"ពណ៌ផ្ទាល់ខ្លួនដែលប្រើច្រើនបំផុត","colors":"ពណ៌","shades":"ស្រមោល","hexCode":"លេខកូដ hex","noShades":"មិនមានស្រមោលសម្រាប់ពណ៌នេះទេ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js b/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js new file mode 100644 index 0000000..ea7c316 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6844],{7596:function(e){e.exports=JSON.parse('{"labels":{"paste":"붙여넣기","pasteAsPlaintext":"일반 텍스트로 붙여넣기","pasteCharts":"차트 붙여넣기","selectAll":"전체 선택","multiSelect":"선택 영역에 추가하기","moveCanvas":"캔버스 이동","cut":"잘라내기","copy":"복사","copyAsPng":"클립보드로 PNG 이미지 복사","copyAsSvg":"클립보드로 SVG 이미지 복사","copyText":"클립보드로 텍스트 복사","bringForward":"앞으로 가져오기","sendToBack":"맨 뒤로 보내기","bringToFront":"맨 앞으로 가져오기","sendBackward":"뒤로 보내기","delete":"삭제","copyStyles":"스타일 복사하기","pasteStyles":"스타일 붙여넣기","stroke":"선 색상","background":"배경색","fill":"채우기","strokeWidth":"선 굵기","strokeStyle":"선","strokeStyle_solid":"실선","strokeStyle_dashed":"파선","strokeStyle_dotted":"점선","sloppiness":"대충 긋기","opacity":"불투명도","textAlign":"텍스트 정렬","edges":"가장자리","sharp":"뾰족하게","round":"둥글게","arrowheads":"화살촉","arrowhead_none":"없음","arrowhead_arrow":"화살표","arrowhead_bar":"막대","arrowhead_dot":"점","arrowhead_triangle":"삼각형","fontSize":"글자 크기","fontFamily":"글꼴","addWatermark":"\\"Made with Excalidraw\\" 추가","handDrawn":"손글씨","normal":"일반","code":"코드","small":"작게","medium":"보통","large":"크게","veryLarge":"매우 크게","solid":"단색","hachure":"평행선","zigzag":"지그재그","crossHatch":"교차선","thin":"얇게","bold":"굵게","left":"왼쪽","center":"가운데","right":"오른쪽","extraBold":"매우 굵게","architect":"건축가","artist":"예술가","cartoonist":"만화가","fileTitle":"파일 이름","colorPicker":"색상 선택기","canvasColors":"캔버스에서 사용되었음","canvasBackground":"캔버스 배경","drawingCanvas":"캔버스 그리기","layers":"레이어","actions":"동작","language":"언어","liveCollaboration":"실시간 협업...","duplicateSelection":"복제","untitled":"제목 없음","name":"이름","yourName":"이름 입력","madeWithExcalidraw":"Made with Excalidraw","group":"그룹 생성","ungroup":"그룹 해제","collaborators":"공동 작업자","showGrid":"그리드 보기","addToLibrary":"라이브러리에 추가","removeFromLibrary":"라이브러리에서 제거","libraryLoadingMessage":"라이브러리 불러오는 중…","libraries":"라이브러리 찾기","loadingScene":"화면 불러오는 중…","align":"정렬","alignTop":"상단 정렬","alignBottom":"하단 정렬","alignLeft":"왼쪽 정렬","alignRight":"오른쪽 정렬","centerVertically":"수직으로 중앙 정렬","centerHorizontally":"수평으로 중앙 정렬","distributeHorizontally":"수평으로 분배","distributeVertically":"수직으로 분배","flipHorizontal":"좌우반전","flipVertical":"상하반전","viewMode":"보기 모드","share":"공유","showStroke":"윤곽선 색상 선택기 열기","showBackground":"배경 색상 선택기 열기","toggleTheme":"테마 전환","personalLib":"개인 라이브러리","excalidrawLib":"Excalidraw 라이브러리","decreaseFontSize":"폰트 사이즈 줄이기","increaseFontSize":"폰트 사이즈 키우기","unbindText":"텍스트 분리","bindText":"텍스트를 컨테이너에 결합","createContainerFromText":"텍스트를 컨테이너에 담기","link":{"edit":"링크 수정하기","editEmbed":"링크 & 임베드 수정하기","create":"링크 만들기","createEmbed":"링크 & 임베드 만들기","label":"링크","labelEmbed":"링크 & 임베드","empty":"링크를 지정하지 않았습니다"},"lineEditor":{"edit":"선 수정하기","exit":"선 편집기 종료"},"elementLock":{"lock":"잠금","unlock":"잠금 해제","lockAll":"모두 잠금","unlockAll":"모두 잠금 해제"},"statusPublished":"게시됨","sidebarLock":"사이드바 유지","selectAllElementsInFrame":"프레임의 모든 요소 선택","removeAllElementsFromFrame":"프레임의 모든 요소 삭제","eyeDropper":"캔버스에서 색상 고르기"},"library":{"noItems":"추가된 아이템 없음","hint_emptyLibrary":"캔버스 위에서 아이템을 선택하여 여기에 추가를 하거나, 아래의 공용 저장소에서 라이브러리를 설치하세요.","hint_emptyPrivateLibrary":"캔버스 위에서 아이템을 선택하여 여기 추가하세요."},"buttons":{"clearReset":"캔버스 초기화","exportJSON":"파일로 내보내기","exportImage":"이미지 내보내기","export":"다른 이름으로 저장...","copyToClipboard":"클립보드로 복사","save":"현재 파일에 저장","saveAs":"다른 이름으로 저장","load":"열기","getShareableLink":"공유 가능한 링크 생성","close":"닫기","selectLanguage":"언어 선택","scrollBackToContent":"콘텐츠 영역으로 스크롤하기","zoomIn":"확대","zoomOut":"축소","resetZoom":"확대/축소 초기화","menu":"메뉴","done":"완료","edit":"수정","undo":"실행 취소","redo":"다시 실행","resetLibrary":"라이브러리 리셋","createNewRoom":"방 만들기","fullScreen":"전체화면","darkMode":"다크 모드","lightMode":"밝은 모드","zenMode":"젠 모드","objectsSnapMode":"다른 요소들에 정렬시키기","exitZenMode":"젠 모드 종료하기","cancel":"취소","clear":"지우기","remove":"삭제","embed":"임베딩 토글","publishLibrary":"게시하기","submit":"제출","confirm":"확인","embeddableInteractionButton":"클릭하여 상호작용"},"alerts":{"clearReset":"모든 작업 내용이 초기화됩니다. 계속하시겠습니까?","couldNotCreateShareableLink":"공유 가능한 링크를 생성할 수 없습니다.","couldNotCreateShareableLinkTooBig":"공유 가능한 링크를 생성할 수 없습니다: 화면이 너무 큽니다.","couldNotLoadInvalidFile":"유효하지 않은 파일입니다.","importBackendFailed":"서버로부터 불러 오지 못했습니다.","cannotExportEmptyCanvas":"빈 캔버스를 내보낼 수 없습니다.","couldNotCopyToClipboard":"클립보드로 복사하지 못했습니다.","decryptFailed":"데이터를 복호화하지 못했습니다.","uploadedSecurly":"업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.","loadSceneOverridePrompt":"외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?","collabStopOverridePrompt":"협업 세션을 종료하면 로컬 저장소에 있는 그림이 협업 세션의 그림으로 대체됩니다. 진행하겠습니까?\\n\\n(로컬 저장소에 있는 그림을 유지하려면 현재 브라우저 탭을 닫아주세요.)","errorAddingToLibrary":"아이템을 라이브러리에 추가 할수 없습니다","errorRemovingFromLibrary":"라이브러리에서 아이템을 삭제할수 없습니다","confirmAddLibrary":"{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?","imageDoesNotContainScene":"이 이미지는 화면 데이터를 포함하고 있지 않은 것 같습니다. 내보낼 때 화면을 첨부하도록 설정하셨나요?","cannotRestoreFromImage":"이미지 파일에서 화면을 복구할 수 없었습니다","invalidSceneUrl":"제공된 URL에서 화면을 가져오는데 실패했습니다. 주소가 잘못되거나, 유효한 Excalidraw JSON 데이터를 포함하고 있지 않은 것일 수 있습니다.","resetLibrary":"당신의 라이브러리를 초기화 합니다. 계속하시겠습니까?","removeItemsFromsLibrary":"{{count}}개의 아이템을 라이브러리에서 삭제하시겠습니까?","invalidEncryptionKey":"암호화 키는 반드시 22글자여야 합니다. 실시간 협업이 비활성화됩니다.","collabOfflineWarning":"인터넷에 연결되어 있지 않습니다.\\n변경 사항들이 저장되지 않습니다!"},"errors":{"unsupportedFileType":"지원하지 않는 파일 형식 입니다.","imageInsertError":"이미지를 삽입할 수 없습니다. 나중에 다시 시도 하십시오","fileTooBig":"파일이 너무 큽니다. 최대 크기는 {{maxSize}} 입니다.","svgImageInsertError":"SVG 이미지를 삽입하지 못했습니다. SVG 문법이 유효하지 않은 것 같습니다.","failedToFetchImage":"이미지를 가져오는데 실패했습니다.","invalidSVGString":"유효하지 않은 SVG입니다.","cannotResolveCollabServer":"협업 서버에 접속하는데 실패했습니다. 페이지를 새로고침하고 다시 시도해보세요.","importLibraryError":"라이브러리를 불러오지 못했습니다.","collabSaveFailed":"데이터베이스에 저장하지 못했습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","collabSaveFailed_sizeExceeded":"데이터베이스에 저장하지 못했습니다. 캔버스가 너무 큰 거 같습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","brave_measure_text_error":{"line1":"귀하께서는 강력한 지문 차단 설정이 활성화된 Brave browser를 사용하고 계신 것 같습니다.","line2":"이 기능으로 인해 화이트보드의 텍스트 요소들이 손상될 수 있습니다.","line3":"저희는 해당 기능을 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는 이 게시글을 참고해주세요.","line4":"만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희 Github에 이슈를 올려주시거나 Discord로 알려주세요."},"libraryElementTypeError":{"embeddable":"임베드 요소들은 라이브러리에 추가할 수 없습니다.","image":"라이브러리에 이미지 삽입 기능은 곧 지원될 예정입니다!"}},"toolBar":{"selection":"선택","image":"이미지 삽입","rectangle":"사각형","diamond":"다이아몬드","ellipse":"타원","arrow":"화살표","line":"선","freedraw":"그리기","text":"텍스트","library":"라이브러리","lock":"선택된 도구 유지하기","penMode":"펜 모드 - 터치 방지","link":"선택한 도형에 대해서 링크를 추가/업데이트","eraser":"지우개","frame":"프레임 도구","embeddable":"웹 임베드","laser":"레이저 포인터","hand":"손 (패닝 도구)","extraTools":"다른 도구"},"headings":{"canvasActions":"캔버스 동작","selectedShapeActions":"선택된 모양 동작","shapes":"모양"},"hints":{"canvasPanning":"캔버스를 옮기려면 마우스 휠이나 스페이스바를 누르고 드래그하거나, 손 도구를 사용하기","linearElement":"여러 점을 연결하려면 클릭하고, 직선을 그리려면 바로 드래그하세요.","freeDraw":"클릭 후 드래그하세요. 완료되면 놓으세요.","text":"팁: 선택 툴로 아무 곳이나 더블 클릭해 텍스트를 추가할 수도 있습니다.","embeddable":"클릭 및 드래그하여 웹사이트 임베드 만들기","text_selected":"더블 클릭 또는 ENTER를 눌러서 텍스트 수정","text_editing":"ESC나 CtrlOrCmd+ENTER를 눌러서 수정을 종료하기","linearElementMulti":"마지막 지점을 클릭하거나 Esc 또는 Enter 키를 눌러 완료하세요.","lockAngle":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","resize":"SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.\\nALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.","resizeImage":"SHIFT를 눌러서 자유롭게 크기를 변경하거나,\\nALT를 눌러서 중앙을 고정하고 크기를 변경하기","rotate":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","lineEditor_info":"꼭짓점을 수정하려면 CtrlOrCmd 키를 누르고 더블 클릭을 하거나 CtrlOrCmd + Enter를 누르세요.","lineEditor_pointSelected":"Delete 키로 꼭짓점을 제거하거나,\\nCtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기","lineEditor_nothingSelected":"꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),\\nAlt를 누르고 클릭해서 새로운 꼭짓점 추가하기","placeImage":"클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기","publishLibrary":"당신만의 라이브러리를 게시하기","bindTextToElement":"Enter 키를 눌러서 텍스트 추가하기","deepBoxSelect":"CtrlOrCmd 키를 눌러서 깊게 선택하고, 드래그하지 않도록 하기","eraserRevert":"Alt를 눌러서 삭제하도록 지정된 요소를 되돌리기","firefox_clipboard_write":"이 기능은 설정에서 \\"dom.events.asyncClipboard.clipboardItem\\" 플래그를 \\"true\\"로 설정하여 활성화할 수 있습니다. Firefox에서 브라우저 플래그를 수정하려면, \\"about:config\\" 페이지에 접속하세요.","disableSnapping":"CtrlOrCmd 키를 눌러서 다른 요소와의 정렬 무시하기"},"canvasError":{"cannotShowPreview":"미리보기를 볼 수 없습니다","canvasTooBig":"캔버스가 너무 큽니다.","canvasTooBigTip":"팁: 멀리 있는 요소들을 좀 더 가까이로 붙여 보세요."},"errorSplash":{"headingMain":"오류가 발생했습니다. ","clearCanvasMessage":"새로고침으로 해결되지 않을 경우, ","clearCanvasCaveat":" 작업 내용을 잃게 됩니다 ","trackedToSentry":"오류 {{eventId}} 가 시스템에서 발견되었습니다.","openIssueMessage":"저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요. 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.","sceneContent":"화면 내용:"},"roomDialog":{"desc_intro":"현재 화면에 공동 작업자를 초대해 협업할 수 있습니다.","desc_privacy":"안심하세요, 세션은 종단 간 암호화를 사용하므로 당신의 작업은 비공개로 유지되며 서버조차도 작업 내용을 알 수 없습니다.","button_startSession":"세션 시작","button_stopSession":"세션 중단","desc_inProgressIntro":"실시간 협업 세션이 진행 중입니다.","desc_shareLink":"공동 작업자에게 이 링크를 공유하세요.","desc_exitSession":"세션을 중단하면 연결은 끊어지나 작업을 이어갈 수 있습니다. 이 작업은 다른 작업자에게 영향을 미치지 않으며 각자의 공동 작업은 계속 유지됩니다.","shareTitle":"Excalidraw의 실시간 협업 세션에 참가하기"},"errorDialog":{"title":"오류"},"exportDialog":{"disk_title":"디스크에 저장","disk_details":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다.","disk_button":"파일로 저장","link_title":"공유 가능한 링크 생성","link_details":"읽기 전용 링크로 내보냅니다.","link_button":"링크로 내보내기","excalidrawplus_description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다.","excalidrawplus_button":"내보내기","excalidrawplus_exportError":"지금은 Excalidraw+로 내보낼 수 없습니다..."},"helpDialog":{"blog":"블로그 읽어보기","click":"클릭","deepSelect":"깊게 선택","deepBoxSelect":"영역을 깊게 선택하고, 드래그하지 않도록 하기","curvedArrow":"곡선 화살표","curvedLine":"곡선","documentation":"설명서","doubleClick":"더블 클릭","drag":"드래그","editor":"에디터","editLineArrowPoints":"직선 / 화살표 꼭짓점 수정","editText":"텍스트 수정 / 라벨 추가","github":"문제 제보하기","howto":"가이드 참고하기","or":"또는","preventBinding":"화살표가 붙지 않게 하기","tools":"도구","shortcuts":"키보드 단축키","textFinish":"편집 완료 (텍스트 에디터)","textNewLine":"줄바꿈(텍스트 에디터)","title":"도움말","view":"보기","zoomToFit":"모든 요소가 보이도록 확대/축소","zoomToSelection":"선택 영역으로 확대/축소","toggleElementLock":"선택한 항목을 잠금/잠금 해제","movePageUpDown":"페이지 움직이기 위/아래","movePageLeftRight":"페이지 움직이기 좌/우"},"clearCanvasDialog":{"title":"캔버스 지우기"},"publishDialog":{"title":"라이브러리 게시하기","itemName":"아이템 이름","authorName":"저자명","githubUsername":"깃허브 사용자이름","twitterUsername":"트위터 사용자이름","libraryName":"라이브러리 이름","libraryDesc":"라이브러리 설명","website":"웹사이트","placeholder":{"authorName":"이름 또는 사용자명","libraryName":"당신의 라이브러리 이름","libraryDesc":"사람들에게 라이브러리의 용도를 알기 쉽게 설명해주세요","githubHandle":"GitHub 사용자명 (선택), 제출한 뒤에도 심사를 위해서 라이브러리를 수정할 때 사용됩니다","twitterHandle":"Twitter 사용자명 (선택), Twitter를 통해서 홍보할 때 제작자를 밝히기 위해 사용됩니다","website":"개인 웹사이트나 다른 어딘가의 링크 (선택)"},"errors":{"required":"필수사항","website":"유효한 URL을 입력하세요"},"noteDescription":"당신의 라이브러리를 제출하여 공개 라이브러리 저장소에서 다른 사람들의 그림에 사용할 수 있도록 하세요.","noteGuidelines":"라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 가이드라인을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다.","noteLicense":"제출함으로써, 당신은 라이브러리가 MIT 라이선스 하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다.","noteItems":"각각의 라이브러리는 분류할 수 있도록 고유한 이름을 가져야 합니다. 다음의 라이브러리 항목이 포함됩니다:","atleastOneLibItem":"최소한 하나의 라이브러리를 선택해주세요","republishWarning":"참고: 선택된 항목의 일부는 이미 제출/게시되었습니다. 기존의 라이브러리나 제출물을 업데이트하는 경우에만 제출하세요."},"publishSuccessDialog":{"title":"라이브러리 제출됨","content":"{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을여기에서 확인하실 수 있습니다."},"confirmDialog":{"resetLibrary":"라이브러리 리셋","removeItemsFromLib":"선택한 항목을 라이브러리에서 제거"},"imageExportDialog":{"header":"이미지 내보내기","label":{"withBackground":"배경","onlySelected":"선택한 항목만","darkMode":"다크 모드","embedScene":"화면을 담기","scale":"크기","padding":"여백"},"tooltip":{"embedScene":"화면 정보가 내보내는 PNG/SVG 파일에 저장되어 이후에 파일에서 화면을 복구할 수 있습니다. 파일 크기가 증가합니다."},"title":{"exportToPng":"PNG로 내보내기","exportToSvg":"SVG로 내보내기","copyPngToClipboard":"클립보드로 PNG 복사"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"클립보드로 복사"}},"encrypted":{"tooltip":"그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다.","link":"Excalidraw의 종단 간 암호화에 대한 블로그 포스트"},"stats":{"angle":"각도","element":"요소","elements":"요소","height":"높이","scene":"화면","selected":"선택됨","storage":"저장공간","title":"덕후들을 위한 통계","total":"합계","version":"버전","versionCopy":"복사하려면 클릭","versionNotAvailable":"해당 버전 사용 불가능","width":"너비"},"toast":{"addedToLibrary":"라이브러리에 추가되었습니다","copyStyles":"스타일 복사.","copyToClipboard":"클립보드로 복사.","copyToClipboardAsPng":"{{exportSelection}}를 클립보드에 PNG로 복사했습니다\\n({{exportColorScheme}})","fileSaved":"파일이 저장되었습니다.","fileSavedToFilename":"{filename} 로 저장되었습니다","canvas":"캔버스","selection":"선택한 요소","pasteAsSingleElement":"단일 요소로 붙여넣거나, 기존 텍스트 에디터에 붙여넣으려면 {{shortcut}} 을 사용하세요.","unableToEmbed":"이 URL의 임베딩이 허용되지 않았습니다. GitHub에 이슈를 남겨서 이 URL이 화이트리스트에 등재될 수 있도록 요청하세요","unrecognizedLinkFormat":"임베딩하려는 링크의 형식이 잘못된 것 같습니다. 원본 사이트에서 제공하는 \\"임베딩\\" 텍스트를 그대로 붙여 넣어 주세요"},"colors":{"transparent":"투명","black":"블랙","white":"화이트","red":"레드","pink":"핑크","grape":"그레이프","violet":"바이올렛","gray":"그레이","blue":"블루","cyan":"시안","teal":"틸","green":"그린","yellow":"옐로우","orange":"오렌지","bronze":"브론즈"},"welcomeScreen":{"app":{"center_heading":"모든 데이터는 브라우저에 안전하게 저장됩니다.","center_heading_plus":"대신 Excalidraw+로 이동하시겠습니까?","menuHint":"내보내기, 설정, 언어, ..."},"defaults":{"menuHint":"내보내기, 설정, 등등...","center_heading":"간단하게 만드는 다이어그램.","toolbarHint":"도구를 선택하고, 그리세요!","helpHint":"단축키 & 도움말"}},"colorPicker":{"mostUsedCustomColors":"가장 많이 사용된 색상들","colors":"색상","shades":"색조","hexCode":"Hex 코드","noShades":"사용할 수 있는 색조가 없음"},"overwriteConfirm":{"action":{"exportToImage":{"title":"이미지로 내보내기","button":"이미지로 내보내기","description":"나중에 다시 불러올 수 있도록 화면 데이터를 이미지로 내보냅니다."},"saveToDisk":{"title":"디스크에 저장","button":"디스크에 저장","description":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다."},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+로 내보내기","description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다."}},"modal":{"loadFromFile":{"title":"파일에서 불러오기","button":"파일에서 불러오기","description":"파일을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."},"shareableLink":{"title":"주소에서 불러오기","button":"컨텐츠를 덮어쓰기","description":"외부 작업물을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js b/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js new file mode 100644 index 0000000..5a5864b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3031],{2508:function(e){e.exports=JSON.parse('{"labels":{"paste":"دانانەوە","pasteAsPlaintext":"دایبنێ وەک دەقی سادە","pasteCharts":"دانانەوەی خشتەکان","selectAll":"دیاریکردنی هەموو","multiSelect":"زیادکردنی بۆ دیاریکراوەکان","moveCanvas":"تابلۆ بجوڵێنە","cut":"بڕین","copy":"لەبەرگرتنەوە","copyAsPng":"PNGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyAsSvg":"SVGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyText":"لەبەرگرتنەوە بۆ تەختەنووس وەک نوسین","bringForward":"بهێنە پێشتر","sendToBack":"بنێرە دواوە","bringToFront":"بهێنە پێشەوە","sendBackward":"بنێرە دواتر","delete":"سڕینەوە","copyStyles":"لەبەرگرتنەوەی ستایل","pasteStyles":"دانانەوەی ستایل","stroke":"هێڵکار","background":"پاشبنەما","fill":"پڕکردنەوە","strokeWidth":"پانی هێڵکاری","strokeStyle":"ستایلی هێڵکاری","strokeStyle_solid":"سادە","strokeStyle_dashed":"پچڕ پچڕ","strokeStyle_dotted":"خاڵدار","sloppiness":"لێژی","opacity":"ڕوونی","textAlign":"ڕێکخستنی دەق","edges":"لێوارەکان","sharp":"تیژ","round":"چەماوە","arrowheads":"سەرەتیر","arrowhead_none":"هیچیان","arrowhead_arrow":"تیر","arrowhead_bar":"هێڵ","arrowhead_dot":"خاڵ","arrowhead_triangle":"سێگۆشە","fontSize":"قەبارەی فۆنت","fontFamily":"خێزانی فۆنت","addWatermark":"زیادبکە \\"Made with Excalidraw\\"","handDrawn":"دەست کێشراو","normal":"ئاسایی","code":"کۆد","small":"بچووک","medium":"ناوەند","large":"گه‌وره‌","veryLarge":"زۆر گه‌وره‌","solid":"سادە","hachure":"هاچور","zigzag":"زیگزاگ","crossHatch":"کرۆس هاتچ","thin":"تەنک","bold":"تۆخ","left":"چەپ","center":"ناوه‌ند","right":"ڕاست","extraBold":"زۆر تۆخ","architect":"تەلارساز","artist":"هونەرمەند","cartoonist":"کارتۆنی","fileTitle":"ناوی فایل","colorPicker":"ڕەنگ هەڵگر","canvasColors":"بەکارهاتووە لەسەر تابلۆ","canvasBackground":"پاشبنەمای تابلۆ","drawingCanvas":"کێشانی تابلۆ","layers":"چینەکان","actions":"کردارەکان","language":"زمان","liveCollaboration":"هاوکاریکردنی زیندو...","duplicateSelection":"لەبەرگرتنەوە","untitled":"بێ ناونیشان","name":"ناو","yourName":"ناوەکەت","madeWithExcalidraw":"دروستکراوە بە Excalidraw","group":"دیاریکردنی گروپ","ungroup":"گروپی دیاریکراوەکان لابەرە","collaborators":"هاوکارەکان","showGrid":"گرید نیشانبدە","addToLibrary":"زیادکردن بۆ کتێبخانە","removeFromLibrary":"لابردن لە کتێبخانە","libraryLoadingMessage":"...بارکردنی کتێبخانە","libraries":"گەڕانی کتێبخانە","loadingScene":"...بارکردنی دیمەنەکە","align":"لاچەنکردن","alignTop":"لاچەنکردن بۆ سەرەوە","alignBottom":"لاچەنکردن بۆ خوارەوە","alignLeft":"لاچەنکردن بۆ چەپ","alignRight":"لاچەنکردن بۆ ڕاست","centerVertically":"بە ستونی ناوەند بکە","centerHorizontally":"بە ئاسۆی ناوەند بکە","distributeHorizontally":"بە ئاسۆی دابەشی بکە","distributeVertically":"بە ستونی دابەشی بکە","flipHorizontal":"هەڵگەڕانەوەی ئاسۆیی","flipVertical":"هەڵگەڕانەوەی ستونی","viewMode":"دۆخی بینین","share":"هاوبەشی پێکردن","showStroke":"ڕەنگهەڵگری هێڵکار نیشانبدە","showBackground":"ڕەنگهەڵگری باکگراوند نیشانبدە","toggleTheme":"دۆخی ڕوکار بگۆڕە","personalLib":"کتێبخانەی کەسی","excalidrawLib":"کتێبخانەی Excalidraw","decreaseFontSize":"کەمکردنەوەی قەبارەی فۆنت","increaseFontSize":"زایدکردنی قەبارەی فۆنت","unbindText":"دەقەکە جیابکەرەوە","bindText":"دەقەکە ببەستەوە بە کۆنتەینەرەکەوە","createContainerFromText":"دەق لە چوارچێوەیەکدا بپێچە","link":{"edit":"دەستکاریکردنی بەستەر","editEmbed":"","create":"دروستکردنی بەستەر","createEmbed":"","label":"بەستەر","labelEmbed":"","empty":""},"lineEditor":{"edit":"دەستکاری کردنی دێڕ","exit":"دەرچوون لە دەستکاریکەری دێڕ"},"elementLock":{"lock":"قفڵکردن","unlock":"کردنەوە","lockAll":"قفڵکردنی هەموو","unlockAll":"کردنەوەی قفلی هەمووی"},"statusPublished":"بڵاوکراوەتەوە","sidebarLock":"هێشتنەوەی شریتی لا بە کراوەیی","selectAllElementsInFrame":"هەموو توخمەکانی ناو چوارچێوەکە دیاری بکە","removeAllElementsFromFrame":"هەموو توخمەکانی ناو چوارچێوەکە لابەرە","eyeDropper":"ڕەنگێک لەسەر تابلۆکە هەڵبژێرە"},"library":{"noItems":"هێشتا هیچ بڕگەیەک زیاد نەکراوە...","hint_emptyLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت، یان کتێبخانەیەک لە کۆگا گشتیەکەوە دابمەزرێنە، لە خوارەوە.","hint_emptyPrivateLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت."},"buttons":{"clearReset":"تابلۆکە وەک سەرەتا لێبکەوە","exportJSON":"هەناردەکردن بۆ فایل","exportImage":"وێنە هەناردە بکە...","export":"پاشەکەوت بکە بۆ...","copyToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس","save":"پاشەکەوت بکە بۆ فایلی بەردەست","saveAs":"پاشەکەوتکردن وەک","load":"بکەرەوە","getShareableLink":"بەستەری هاوبەشیپێکردن بەدەستبهێنە","close":"داخستن","selectLanguage":"دیاریکردنی زمان","scrollBackToContent":"گەڕاندنەوە بۆ ناوەڕۆک","zoomIn":"نزیک خستنەوە","zoomOut":"دوورخستنەوە","resetZoom":"ڕێستکردنی زووم","menu":"پێڕست","done":"تەواو","edit":"دەستکاری کردن","undo":"گه‌ڕانه‌وه‌ بۆ پێشوو","redo":"گه‌ڕانه‌وه‌ بۆ داهاتوو","resetLibrary":"ڕێکخستنەوەی کتێبخانە","createNewRoom":"ژوورێکی نوێ دروست بکە","fullScreen":"پڕ بە شاشە","darkMode":"دۆخی تاریک","lightMode":"دۆخی ڕووناک","zenMode":"دۆخی زێن","objectsSnapMode":"","exitZenMode":"بەجێهێشتنی دۆخی زێن","cancel":"هەڵوەشاندنەوە","clear":"خاوێنکردنەوە","remove":"لابردن","embed":"","publishLibrary":"بڵاوکردنەوە","submit":"پێشکەشکردن","confirm":"دوپاتکردنەوە","embeddableInteractionButton":""},"alerts":{"clearReset":"ئەمە هەموو تابلۆکە خاوێن دەکاتەوە، دڵنیایت؟","couldNotCreateShareableLink":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت","couldNotCreateShareableLinkTooBig":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت: دیمەنەکە زۆر گەورەیە","couldNotLoadInvalidFile":"ناتوانرا باربکرێت، فایلەکە دروستنییە","importBackendFailed":"هاوردەکردن لە پاشکۆکە سەرکەوتوو نەبوو.","cannotExportEmptyCanvas":"ناتوانرێت تابلۆی بەتاڵ هەناردەبکرێت.","couldNotCopyToClipboard":"ناتوانرا لەبەربگیرێتەوە بۆ تەختەنوس","decryptFailed":"ناتوانرا داتاکان شیبکرێتەوە","uploadedSecurly":"بارکردنەکە بە کۆدکردنی کۆتایی بۆ کۆتایی پارێزراوە، ئەمەش واتە سێرڤەری Excalidraw و لایەنی سێیەم ناتوانن ناوەڕۆکەکە بخوێننەوە.","loadSceneOverridePrompt":"بارکردنی وێنەکێشانی دەرەکی جێگەی ناوەڕۆکی بەردەستت دەگرێتەوە. دەتەوێت بەردەوام بیت؟","collabStopOverridePrompt":"وەستاندنی دانیشتنەکە وێنەکێشانی پێشووت دەنووسێتەوە کە لە ناوخۆدا هەڵگیراوە. ئایا دڵنیایت?\\n\\n(ئەگەر دەتەوێت وێنەکێشانی ناوخۆیی خۆت بهێڵیتەوە، لەبری ئەوە تەنها تابی وێبگەڕەکە دابخە).","errorAddingToLibrary":"نەیتوانی بڕگە زیاد بکات بۆ کتێبخانە","errorRemovingFromLibrary":"نەیتوانی بڕگە لە کتێبخانە بسڕێتەوە","confirmAddLibrary":"ئەمە {{numShapes}} شێوە(ەکان) زیاد دەکات بۆ کتێبخانەکەت. ئایا دڵنیایت?","imageDoesNotContainScene":"وادیارە ئەم وێنەیە هیچ داتایەکی دیمەنی تێدا نییە. ئایا دیمەنی چەسپاندنت لە کاتی هەناردەدا چالاک کردووە؟","cannotRestoreFromImage":"ناتوانرێت دیمەنەکە بگەڕێندرێتەوە لەم فایلە وێنەیە","invalidSceneUrl":"ناتوانێت دیمەنەکە هاوردە بکات لە URL ی دابینکراو. یان نادروستە، یان داتای \\"ئێکسکالیدراو\\" JSON ی دروستی تێدا نییە.","resetLibrary":"ئەمە کتێبخانەکەت خاوێن دەکاتەوە. ئایا دڵنیایت?","removeItemsFromsLibrary":"سڕینەوەی {{count}} ئایتم(ەکان) لە کتێبخانە؟","invalidEncryptionKey":"کلیلی رەمزاندن دەبێت لە 22 پیت بێت. هاوکاری ڕاستەوخۆ لە کارخراوە.","collabOfflineWarning":"هێڵی ئینتەرنێت بەردەست نییە.\\n گۆڕانکارییەکانت سەیڤ ناکرێن!"},"errors":{"unsupportedFileType":"جۆری فایلی پشتگیری نەکراو.","imageInsertError":"نەیتوانی وێنە داخڵ بکات. دواتر هەوڵ بدە","fileTooBig":"فایلەکە زۆر گەورەیە. زۆرترین قەبارەی ڕێگەپێدراو {{maxSize}}}.","svgImageInsertError":"نەیتوانی وێنەی SVG داخڵ بکات. نیشانەی ئێس ڤی جی نادروست دیارە.","failedToFetchImage":"","invalidSVGString":"ئێس ڤی جی نادروستە.","cannotResolveCollabServer":"ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.","importLibraryError":"نەیتوانی کتێبخانە بار بکات","collabSaveFailed":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت. ئەگەر کێشەکان بەردەوام بوون، پێویستە فایلەکەت لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","collabSaveFailed_sizeExceeded":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت، پێدەچێت تابلۆکە زۆر گەورە بێت. پێویستە فایلەکە لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","brave_measure_text_error":{"line1":"وادیارە وێبگەڕی Brave بەکاردەهێنیت و ڕێکخستنی Aggressively Block Fingerprinting ـت چالاک کردووە.","line2":"ئەمە ئەکرێ ببێتە هۆی تێکدانی دانە دەقییەکان لە وێنەکێشانەکانتدا.","line3":"ئێمە بە توندی پێشنیاری لەکارخستنی ئەم ڕێکخستنە دەکەین. بۆ لە کارخستنی دەتوانیت بەم هەنگاوانەدا بڕۆیت.","line4":"ئەگەر لەکارخستنی ئەم ڕێکخستنە نەبوە هۆی چاککردنەوەی پێشاندانی دانە دەقییەکان، تکایە کێشەیەک بکەرەوە لەسەر گیتهەبەکەمان، یان بۆمان بنوسە لەسەر دیسکۆرد"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"دەستنیشانکردن","image":"داخڵکردنی وێنە","rectangle":"لاکێشە","diamond":"ئەڵماس","ellipse":"هێلکەیی","arrow":"تیر","line":"هێڵ","freedraw":"کێشان","text":"دەق","library":"کتێبخانە","lock":"ئامێرە دیاریکراوەکان چالاک بهێڵەوە دوای وێنەکێشان","penMode":"شێوازی قەڵەم - دەست لێدان ڕابگرە","link":"زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو","eraser":"سڕەر","frame":"ئامرازی چوارچێوە","embeddable":"","laser":"","hand":"دەست (ئامرازی پانکردن)","extraTools":"ئامرازی زیاتر"},"headings":{"canvasActions":"کردارەکانی تابلۆ","selectedShapeActions":"کردارەکانی شێوەی دەستنیشانکراو","shapes":"شێوەکان"},"hints":{"canvasPanning":"بۆ جوڵاندنی تابلۆ، ویلی ماوسەکەت یان دوگمەی سپەیس بگرە لەکاتی ڕاکێشاندە، یانیش ئامرازی دەستەکە بەکاربهێنە","linearElement":"کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ","freeDraw":"کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە","text":"زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن","embeddable":"","text_selected":"دووجار کلیک بکە یان ENTER بکە بۆ دەستکاریکردنی دەق","text_editing":"بۆ تەواوکردنی دەستکاریکردنەکە Escape یان Ctrl/Cmd+ENTER بکە","linearElementMulti":"کلیک لەسەر کۆتا خاڵ بکە یان Escape یان Enter بکە بۆ تەواوکردن","lockAngle":"دەتوانیت گۆشە سنووردار بکەیت بە ڕاگرتنی SHIFT","resize":"دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","resizeImage":"دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","rotate":"دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا","lineEditor_info":"یان Ctrl یان Cmd بگرە و دوانە کلیک بکە یانیش پەنجە بنێ بە Ctrl یان Cmd + ئینتەر بۆ دەستکاریکردنی خاڵەکان","lineEditor_pointSelected":"بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە","lineEditor_nothingSelected":"خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،\\nیان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان","placeImage":"کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت","publishLibrary":"کتێبخانەی تایبەت بە خۆت بڵاوبکەرەوە","bindTextToElement":"بۆ زیادکردنی دەق enter بکە","deepBoxSelect":"CtrlOrCmd ڕابگرە بۆ هەڵبژاردنی قووڵ، و بۆ ڕێگریکردن لە ڕاکێشان","eraserRevert":"بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە","firefox_clipboard_write":"ئەم تایبەتمەندییە بە ئەگەرێکی زۆرەوە دەتوانرێت چالاک بکرێت بە ڕێکخستنی ئاڵای \\"dom.events.asyncClipboard.clipboardItem\\" بۆ \\"true\\". بۆ گۆڕینی ئاڵاکانی وێبگەڕ لە فایەرفۆکسدا، سەردانی لاپەڕەی \\"about:config\\" بکە.","disableSnapping":""},"canvasError":{"cannotShowPreview":"ناتوانرێ پێشبینین پیشان بدرێت","canvasTooBig":"تابلۆکە لەوانەیە زۆر گەورەبێت.","canvasTooBigTip":"زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە."},"errorSplash":{"headingMain":"تووشی هەڵەیەک بوو. هەوڵ بدە ","clearCanvasMessage":"ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ","clearCanvasCaveat":" ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ","trackedToSentry":"هەڵەکە لەگەڵ ناسێنەری {{eventId}} لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.","openIssueMessage":"ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.","sceneContent":"پێکهاتەی ناو دیمەنەکە:"},"roomDialog":{"desc_intro":"دەتوانیت خەڵک بانگهێشت بکەیت بۆ دیمەنی ئێستات بۆ هاوکاری کردن لەگەڵت.","desc_privacy":"نیگەران مەبە، دانیشتنەکە کۆدکردنی کۆتایی بە کۆتایی بەکاردەهێنێت، بۆیە هەرچییەک بکێشیت بە تایبەتی دەمێنێتەوە. تەنانەت سێرڤەرەکەمان ناتوانێت بزانێت کە تۆ چیت دروستکردووە.","button_startSession":"دەستپێکردنی دانیشتن","button_stopSession":"وەستاندنی دانیشتن","desc_inProgressIntro":"دانیشتنی هاوکاری ڕاستەوخۆ ئێستا لە ئارادایە.","desc_shareLink":"هاوبەشکردنی ئەم لینکە لەگەڵ هەر کەسێک کە دەتەوێت هاوکاری بکەیت لەگەڵ:","desc_exitSession":"وەستاندنی دانیشتنەکە پەیوەندیت لەگەڵ ژوورەکە دەپچڕێنێت، بەڵام تۆ دەتوانیت بەردەوام بیت لە کارکردن لەگەڵ دیمەنەکە، لە ناوخۆدا. تێبینی بکە کە ئەمە کاریگەری لەسەر کەسانی تر نابێت، وە ئەوان هێشتا دەتوانن هاوکاری بکەن لەسەر وەشانەکەیان.","shareTitle":"بەشداری بکە لە دانیشتنی هاریکاری ڕاستەوخۆ لە ئێکسکالیدراو"},"errorDialog":{"title":"هه‌ڵه‌ ڕوویدا"},"exportDialog":{"disk_title":"پاشەکەوت بکە لە دیسک","disk_details":"هەناردەکردنی داتای دیمەنەکە بۆ فایلێک کە دواتر دەتوانیت لێی هاوردە بکەیت.","disk_button":"پاشەکەوت بکە بۆ فایل","link_title":"بەستەری هاوبەشیپێکردن","link_details":"ناردن وەک بەستەری تەنها-خوێندنەوە.","link_button":"هەناردەکردن بۆ بەستەر","excalidrawplus_description":"دیمەنەکە لە شوێنی کارکردنی Excalidraw+ هەڵبگرە.","excalidrawplus_button":"هەناردەکردن","excalidrawplus_exportError":"لەم ساتەدا نەتوانرا هەناردە بکرێت بۆ Excalidrow+..."},"helpDialog":{"blog":"بلۆگەکەمان بخوێنەوە","click":"گرتە","deepSelect":"دەستنیشانکردنی قوڵ","deepBoxSelect":"لەناو بۆکسەکەدا بە قووڵی هەڵبژێرە، و ڕێگری لە ڕاکێشان بکە","curvedArrow":"تیری نوشتاوە","curvedLine":"هێڵی نوشتاوە","documentation":"دۆکیومێنتەیشن","doubleClick":"دوو گرتە","drag":"راکێشان","editor":"دەستکاریکەر","editLineArrowPoints":"دەستکاری خاڵەکانی هێڵ/تیر بکە","editText":"دەستکاری دەق بکە / لەیبڵێک زیاد بکە","github":"کێشەیەکت دۆزیەوە؟ پێشکەشکردن","howto":"شوێن ڕینماییەکانمان بکەوە","or":"یان","preventBinding":"ڕێگریبکە لە نوشتاناوەی تیر","tools":"ئامرازەکان","shortcuts":"کورتکراوەکانی تەختەکلیل","textFinish":"تەواوکردنی دەستکاریکردن (دەستکاریکەری دەق)","textNewLine":"زیادکردنی دێڕی نوێ (دەستکاریکەری دەق)","title":"یارماتی","view":"دیمەن","zoomToFit":"زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت","zoomToSelection":"زووم بکە بۆ دەستنیشانکراوەکان","toggleElementLock":"قفڵ/کردنەوەی دەستنیشانکراوەکان","movePageUpDown":"لاپەڕەکە بجوڵێنە بۆ سەرەوە/خوارەوە","movePageLeftRight":"لاپەڕەکە بجوڵێنە بۆ چەپ/ڕاست"},"clearCanvasDialog":{"title":"تابلۆکە خاوێن بکەرەوە"},"publishDialog":{"title":"پێشکەشکردنی کتێبخانە","itemName":"ناوی بڕگە","authorName":"ناوی نوسەر","githubUsername":"ناوی بەکارهێنەری Github","twitterUsername":"ناوی بەکارهێنەری Twitter","libraryName":"ناوی کتێبخانە","libraryDesc":"وەسفی کتێبخانە","website":"ماڵپەڕ","placeholder":{"authorName":"ناوەکات یاخود ناوی بەکارهێنەر","libraryName":"ناوی کتێبخانەکەت","libraryDesc":"وەسفی کتێبخانەکەت بۆ یارمەتیدانی خەڵک بۆ تێگەیشتن لە بەکارهێنانی","githubHandle":"ناوی GitHub (ئارەزوومەندانە)، بۆیە دەتوانیت دەستکاری کتێبخانەکە بکەیت کاتێک پێشکەش دەکرێت بۆ پێداچوونەوە","twitterHandle":"ناوی بەکارهێنەری تویتەر (ئارەزوومەندانە)، بۆیە بزانین لەکاتی بانگەشەکردن لە ڕێگەی تویتەرەوە کریدت بۆ کێ بکەین","website":"لینکی ماڵپەڕی تایبەتی خۆت یان شوێنێکی تر (ئارەزومەندانە)"},"errors":{"required":"داواکراوە","website":"URLێکی دروست تێبنووسە"},"noteDescription":"کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو کۆگای کتێبخانەی گشتیبۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن.","noteGuidelines":"کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی ڕێنماییەکان پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە.","noteLicense":"بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی مۆڵەتی MIT، کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت","noteItems":"هەر شتێکی کتێبخانە دەبێت ناوی تایبەتی خۆی هەبێت بۆ ئەوەی بتوانرێت فلتەر بکرێت. ئەم بابەتانەی کتێبخانانەی خوارەوە لەخۆدەگرێت:","atleastOneLibItem":"تکایە بەلایەنی کەمەوە یەک بڕگەی کتێبخانە دیاریبکە بۆ دەستپێکردن","republishWarning":"تێبینی: هەندێک لە ئایتمە دیاریکراوەکان نیشانکراون وەک ئەوەی پێشتر بڵاوکراونەتەوە/نێردراون. تەنها پێویستە شتەکان دووبارە پێشکەش بکەیتەوە لە کاتی نوێکردنەوەی کتێبخانەیەکی هەبوو یان پێشکەشکردن."},"publishSuccessDialog":{"title":"کتێبخانە پێشکەش کرا","content":"سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیتلێرە"},"confirmDialog":{"resetLibrary":"ڕێکخستنەوەی کتێبخانە","removeItemsFromLib":"لابردنی ئایتمە دیاریکراوەکان لە کتێبخانە"},"imageExportDialog":{"header":"وێنە هەناردە بکە","label":{"withBackground":"پاشبنەما","onlySelected":"تەنها دیاریکراوەکان","darkMode":"دۆخی تاریک","embedScene":"دیمەنەکە بەکاربهێنەرەوە","scale":"قەبارە","padding":"بۆشایی"},"tooltip":{"embedScene":"داتاکانی دیمەنەکە لە فایلە هەناردەکراوەکەی PNG/SVG هەڵدەگیرێن بۆ ئەوەی دیمەنەکە لێیەوە بگەڕێتەوە.\\nقەبارەی پەڕگەی هەناردەکراو زیاد دەکات."},"title":{"exportToPng":"هەناردە بکە وەک PNG","exportToSvg":"هەناردە بکە وەک SVG","copyPngToClipboard":"لەبەربگرەوە بۆ سەر تەختەنوس"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس"}},"encrypted":{"tooltip":"وێنەکێشانەکانت لە کۆتاییەوە بۆ کۆتایی کۆد کراون بۆیە سێرڤەرەکانی ئێکسکالیدرا هەرگیز نایانبینن.","link":"بلۆگ پۆست لەسەر کۆدکردنی کۆتای بۆ کۆتای لە ئێکسکالیدرەو"},"stats":{"angle":"گۆشە","element":"توخم","elements":"توخمەکان","height":"بەرزی","scene":"دیمەنەکە","selected":"دەستنیشانکراوەکان","storage":"بیرگە","title":"ئامار بۆ نێردەکان","total":"گشتی","version":"وەشان","versionCopy":"کلیک بۆ لەبەرگرتنەوە","versionNotAvailable":"وەشان بەردەست نییە","width":"پانی"},"toast":{"addedToLibrary":"زیادکرا بۆ کتێبخانە","copyStyles":"ستایلی کۆپیکراو.","copyToClipboard":"لەبەرگیرایەوە بۆ تەختەنوس.","copyToClipboardAsPng":"کۆپی کراوە {{exportSelection}} بۆ کلیپبۆرد وەک PNG\\n({{exportColorScheme}})","fileSaved":"فایل هەڵگیرا.","fileSavedToFilename":"هەڵگیراوە بۆ {filename}","canvas":"تابلۆ","selection":"دەستنیشانکراوەکان","pasteAsSingleElement":"بۆ دانانەوە وەکو یەک توخم یان دانانەوە بۆ نێو دەسکاریکەرێکی دەق کە بوونی هەیە {{shortcut}} بەکاربهێنە","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ڕوون","black":"ڕەش","white":"سپی","red":"سور","pink":"پەمەیی","grape":"مێوژی","violet":"مۆری کاڵ","gray":"خۆڵەمێشی","blue":"شین","cyan":"شینی ئاسمانی","teal":"شەدری","green":"سه‌وز","yellow":"زەرد","orange":"پرتەقاڵی","bronze":"برۆنزی"},"welcomeScreen":{"app":{"center_heading":"هەموو داتاکانت لە ناوخۆی وێنگەڕەکەتدا پاشەکەوت کراوە.","center_heading_plus":"ویستت بڕۆیت بۆ Excalidraw+?","menuHint":"هەناردەکردن، ڕێکخستنەکان، زمانەکان، ..."},"defaults":{"menuHint":"هەناردەکردن، ڕێکخستنەکان، و زیاتر...","center_heading":"دایاگرامەکان. ئاسان. کراون.","toolbarHint":"ئامرازێک هەڵبگرە و دەستبکە بە کێشان!","helpHint":"قەدبڕەکان و یارمەتی"}},"colorPicker":{"mostUsedCustomColors":"زۆرترین ڕەنگە باوە بەکارهاتووەکان","colors":"ڕەنگەکان","shades":"سێبەرەکان","hexCode":"کۆدی هێکس","noShades":"هیچ سێبەرێک بۆ ئەم ڕەنگە بەردەست نییە"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js b/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js new file mode 100644 index 0000000..530041c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8340],{3755:function(i){i.exports=JSON.parse('{"labels":{"paste":"Įklijuoti","pasteAsPlaintext":"Įklijuoti kaip paprastą tekstą","pasteCharts":"Įklijuoti diagramas","selectAll":"Pažymėti viską","multiSelect":"Pridėkite elementą prie pasirinktų","moveCanvas":"Judinti drobę","cut":"Iškirpti","copy":"Kopijuoti","copyAsPng":"Kopijuoti į iškarpinę kaip PNG","copyAsSvg":"Kopijuoti į iškarpinę kaip SVG","copyText":"Kopijuoti į iškarpinę kaip tekstą","bringForward":"Kelti priekio link","sendToBack":"Nustumti į užnugarį","bringToFront":"Iškelti į priekį","sendBackward":"Nustumti link užnugario","delete":"Ištrinti","copyStyles":"Kopijuoti stilius","pasteStyles":"Įklijuoti stilius","stroke":"Linija","background":"Fonas","fill":"Užpildymas","strokeWidth":"Linijos storis","strokeStyle":"Linijos stilius","strokeStyle_solid":"Ištisinė","strokeStyle_dashed":"Brūkšniuota","strokeStyle_dotted":"Taškuota","sloppiness":"Netvarkingumas","opacity":"Nepermatomumas","textAlign":"Teksto lygiavimas","edges":"Kraštai","sharp":"Aštrus","round":"Užapvalintas","arrowheads":"Rodyklės viršūnės","arrowhead_none":"Jokios","arrowhead_arrow":"Rodyklė","arrowhead_bar":"Brukšnys","arrowhead_dot":"Taškas","arrowhead_triangle":"Trikampis","fontSize":"Šrifto dydis","fontFamily":"Šriftas","addWatermark":"Sukurta su Excalidraw","handDrawn":"Ranka rašytas","normal":"Normalus","code":"Kodas","small":"Mažas","medium":"Vidutinis","large":"Didelis","veryLarge":"Labai didelis","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"Plonas","bold":"Pastorintas","left":"Kairėje","center":"Centre","right":"Dešinėje","extraBold":"Labiau pastorintas","architect":"Architektas","artist":"Menininkas","cartoonist":"Karikatūristas","fileTitle":"Failo pavadinimas","colorPicker":"Spalvos parinkiklis","canvasColors":"","canvasBackground":"Drobės fonas","drawingCanvas":"","layers":"Sluoksniai","actions":"Veiksmai","language":"Kalba","liveCollaboration":"Bendradarbiavimas gyvai...","duplicateSelection":"","untitled":"","name":"","yourName":"Jūsų vardas","madeWithExcalidraw":"Sukurta su Excalidraw","group":"Grupuoti pasirinkimą","ungroup":"Išgrupuoti pasirinkimą","collaborators":"Bendradarbiautojai","showGrid":"Rodyti tinklelį","addToLibrary":"Pridėti į biblioteką","removeFromLibrary":"Pašalinti iš bibliotekos","libraryLoadingMessage":"","libraries":"Naršyti bibliotekas","loadingScene":"","align":"Lygiuoti","alignTop":"Lygiuoti viršuje","alignBottom":"Lygiuoti apačioje","alignLeft":"Lygiuoti kairėje","alignRight":"Lygiuoti dešinėje","centerVertically":"Centruoti vertikaliai","centerHorizontally":"Centruoti horizontaliai","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"Apversti horizontaliai","flipVertical":"Apversti vertikaliai","viewMode":"","share":"Dalintis","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"Asmeninė biblioteka","excalidrawLib":"Exaclidraw biblioteka","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Redeguoti nuorodą","editEmbed":"","create":"Sukurti nuorodą","createEmbed":"","label":"Nuoroda","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Užrakinti","unlock":"Atrakinti","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"Eksportuoti į failą","exportImage":"","export":"","copyToClipboard":"Kopijuoti į iškarpinę","save":"","saveAs":"Išsaugoti kaip","load":"","getShareableLink":"Gauti nuorodą dalinimuisi","close":"Uždaryti","selectLanguage":"Pasirinkite kalbą","scrollBackToContent":"","zoomIn":"Priartinti","zoomOut":"Nutolinti","resetZoom":"","menu":"Meniu","done":"","edit":"Redaguoti","undo":"Anuliuoti","redo":"","resetLibrary":"Atstatyti biblioteką","createNewRoom":"Sukurti naują kambarį","fullScreen":"Visas ekranas","darkMode":"Tamsus režimas","lightMode":"Šviesus režimas","zenMode":"„Zen“ režimas","objectsSnapMode":"","exitZenMode":"Išeiti iš „Zen“ režimo","cancel":"Atšaukti","clear":"Išvalyti","remove":"Pašalinti","embed":"","publishLibrary":"Paskelbti","submit":"Pateikti","confirm":"Patvirtinti","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Sesijos nutraukimas perrašys ankstesnį, lokaliai išsaugotą piešinį. Ar tikrai to nori?\\n\\n(Jei nori išlaikyti lokalų piešinį, tiesiog uždaryk naršyklės skirtuką.)","errorAddingToLibrary":"Nepavyko įtraukti elemento į biblioteką","errorRemovingFromLibrary":"Nepavyko pašalinti elemento iš bibliotekos","confirmAddLibrary":"Tai įtrauks {{numShapes}} figūrą/-as į tavo biblioteką. Ar tikrai to nori?","imageDoesNotContainScene":"Panašu, jog šis paveiksliukas neturi scenos duomenų. Ar yra įjuntas scenos įtraukimas ekportavimo metu?","cannotRestoreFromImage":"Nepavyko atstatyti scenos iš šio nuotraukos failo","invalidSceneUrl":"Nepavyko suimportuoti scenos iš pateiktos nuorodos (URL). Ji arba blogai suformatuota, arba savyje neturi teisingų Excalidraw JSON duomenų.","resetLibrary":"Tai išvalys tavo biblioteką. Ar tikrai to nori?","removeItemsFromsLibrary":"Ištrinti {{count}} elementą/-us iš bibliotekos?","invalidEncryptionKey":"Šifravimo raktas turi būti iš 22 simbolių. Redagavimas gyvai yra išjungtas.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nepalaikomas failo tipas.","imageInsertError":"Nepyko įkelti paveiksliuko. Pabandyk vėliau...","fileTooBig":"Per didelis failas. Didžiausias leidžiamas dydis yra {{maxSize}}.","svgImageInsertError":"Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.","failedToFetchImage":"","invalidSVGString":"Nevalidus SVG.","cannotResolveCollabServer":"Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.","importLibraryError":"Nepavyko įkelti bibliotekos","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Žymėjimas","image":"Įkelti paveiksliuką","rectangle":"Stačiakampis","diamond":"Deimantas","ellipse":"Elipsė","arrow":"Rodyklė","line":"Linija","freedraw":"Piešti","text":"Tekstas","library":"Biblioteka","lock":"Baigus piešti, išlaikyti pasirinktą įrankį","penMode":"Rašyklio režimas - neleisti prisilietimų","link":"Pridėti / Atnaujinti pasirinktos figūros nuorodą","eraser":"Trintukas","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Veiksmai su drobe","selectedShapeActions":"Veiksmai su pasirinkta figūra","shapes":"Figūros"},"hints":{"canvasPanning":"","linearElement":"Paspaudimai sukurs papildomus taškus, nepertraukiamas tempimas sukurs liniją","freeDraw":"Spausk ir tempk, paleisk kai norėsi pabaigti","text":"Užuomina: tekstą taip pat galima pridėti bet kur su dvigubu pelės paspaudimu, kol parinkas žymėjimo įrankis","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"Pradėti seansą","button_stopSession":"Sustabdyti seansą","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Klaida"},"exportDialog":{"disk_title":"Įrašyti į diską","disk_details":"","disk_button":"Įrašyti į failą","link_title":"Nuoroda dalinimuisi","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Eksportuoti","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"paspaudimas","deepSelect":"","deepBoxSelect":"","curvedArrow":"Banguota rodyklė","curvedLine":"Banguota linija","documentation":"Dokumentacija","doubleClick":"dvigubas paspaudimas","drag":"vilkti","editor":"Redaktorius","editLineArrowPoints":"","editText":"","github":"Radai klaidą? Pateik","howto":"Vadovaukis mūsų gidu","or":"arba","preventBinding":"","tools":"Įrankiai","shortcuts":"Spartieji klavišai","textFinish":"Baigti redagavimą (teksto redaktoriuje)","textNewLine":"Pridėti naują eilutę (tekto redaktoriuje)","title":"Pagalba","view":"","zoomToFit":"","zoomToSelection":"Priartinti iki pažymėtos vietos","toggleElementLock":"","movePageUpDown":"Pajudinti puslapį aukštyn/žemyn","movePageLeftRight":"Pajudinti puslapį kairėn/dešinėn"},"clearCanvasDialog":{"title":"Išvalyti drobę"},"publishDialog":{"title":"Paviešinti biblioteką","itemName":"Elemento pavadinimas","authorName":"Autoriaus vardas","githubUsername":"Github spalyvardis","twitterUsername":"Twitter slapyvardis","libraryName":"Bibliotekos pavadinimas","libraryDesc":"Bibliotekos aprašas","website":"Tinklalapis","placeholder":{"authorName":"Tavo vardas arba spalyvardis","libraryName":"Tavo bibliotekos pavadinimas","libraryDesc":"Tavo bibliotekos aprašas, padėti žmonėms geriau suprasti jos paskirtį","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Privalomas","website":"Įveskite teisingą nuorodą (URL)"},"noteDescription":"Pateik savo biblioteką, jog ji galėtų būti įtraukta į jog kiti žmonės galėtų tai naudoti savo piešiniuose.","noteGuidelines":"Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti gairės","noteLicense":"MIT licencija, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Biblioteka pateikta","content":"Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būsenąčia"},"confirmDialog":{"resetLibrary":"Atstatyti biblioteką","removeItemsFromLib":"Pašalinti pasirinktus elementus iš bibliotekos"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Elementas","elements":"Elementai","height":"Aukštis","scene":"Scena","selected":"Pasirinkta","storage":"Saugykla","title":"Informacija moksliukams","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"Plotis"},"toast":{"addedToLibrary":"Pridėta į biblioteką","copyStyles":"","copyToClipboard":"Nukopijuota į iškarpinę.","copyToClipboardAsPng":"","fileSaved":"Failas išsaugotas.","fileSavedToFilename":"Išsaugota į {filename}","canvas":"drobė","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Permatoma","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js b/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js new file mode 100644 index 0000000..231ba0c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6768],{2327:function(t){t.exports=JSON.parse('{"labels":{"paste":"Ielīmēt","pasteAsPlaintext":"Ielīmēt kā vienkāršu tekstu","pasteCharts":"Ielīmēt grafikus","selectAll":"Atlasīt visu","multiSelect":"Pievienot elementu atlasei","moveCanvas":"Pārvietot tāfeli","cut":"Izgriezt","copy":"Kopēt","copyAsPng":"Kopēt starpliktuvē kā PNG","copyAsSvg":"Kopēt starpliktuvē kā SVG","copyText":"Kopēt starpliktuvē kā tekstu","bringForward":"Pārvietot vienu slāni augstāk","sendToBack":"Pārvietot uz zemāko slāni","bringToFront":"Pārvietot uz virsējo slāni","sendBackward":"Pārvietot par vienu slāni zemāk","delete":"Dzēst","copyStyles":"Kopēt stilus","pasteStyles":"Ielīmēt stilus","stroke":"Svītras krāsa","background":"Fona krāsa","fill":"Aizpildījums","strokeWidth":"Svītras platums","strokeStyle":"Svītras stils","strokeStyle_solid":"Vienlaidu","strokeStyle_dashed":"Raustīta līnija","strokeStyle_dotted":"Punktota līnija","sloppiness":"Precizitāte","opacity":"Necaurspīdīgums","textAlign":"Teksta līdzināšana","edges":"Malas","sharp":"Asas","round":"Apaļas","arrowheads":"Bultas","arrowhead_none":"Nekādas","arrowhead_arrow":"Bulta","arrowhead_bar":"Svītra","arrowhead_dot":"Punkts","arrowhead_triangle":"Trijstūris","fontSize":"Teksta lielums","fontFamily":"Fontu saime","addWatermark":"Pievienot \\"Radīts ar Excalidraw\\"","handDrawn":"Rokraksts","normal":"Parasts","code":"Kods","small":"Mazs","medium":"Vidējs","large":"Liels","veryLarge":"Ļoti liels","solid":"Pilns","hachure":"Svītrots","zigzag":"Zigzaglīnija","crossHatch":"Šķērssvītrots","thin":"Šaurs","bold":"Trekns","left":"Pa kreisi","center":"Vidū","right":"Pa labi","extraBold":"Īpaši trekns","architect":"Arhitekts","artist":"Mākslinieks","cartoonist":"Karikatūrists","fileTitle":"Datnes nosaukums","colorPicker":"Krāsu atlasītājs","canvasColors":"Izmantots tāfelei","canvasBackground":"Ainas fons","drawingCanvas":"Tāfele","layers":"Slāņi","actions":"Darbības","language":"Valoda","liveCollaboration":"Sadarbība tiešsaistē...","duplicateSelection":"Izveidot kopiju","untitled":"Bez nosaukuma","name":"Vārds","yourName":"Jūsu vārds","madeWithExcalidraw":"Radīts ar Excalidraw","group":"Grupēt atlasīto","ungroup":"Atgrupēt atlasīto","collaborators":"Dalībnieki","showGrid":"Rādīt režģi","addToLibrary":"Pievienot bibliotēkai","removeFromLibrary":"Izņemt no bibliotēkas","libraryLoadingMessage":"Ielādē bibliotēku…","libraries":"Apskatīt bibliotēkas","loadingScene":"Ielādē ainu…","align":"Līdzināt","alignTop":"Līdzināt augšpusē","alignBottom":"Līdzināt lejā","alignLeft":"Līdzināt pa kreisi","alignRight":"Līdzināt pa labi","centerVertically":"Centrēt vertikāli","centerHorizontally":"Centrēt horizontāli","distributeHorizontally":"Izdalīt horizontāli","distributeVertically":"Izdalīt vertikāli","flipHorizontal":"Apmest horizontāli","flipVertical":"Apmest vertikāli","viewMode":"Skata režīms","share":"Kopīgot","showStroke":"Rādīt svītras krāsas atlasītāju","showBackground":"Rādīt fona krāsas atlasītāju","toggleTheme":"Pārslēgt krāsu tēmu","personalLib":"Personīgā bibliotēka","excalidrawLib":"Excalidraw bibliotēka","decreaseFontSize":"Samazināt fonta izmēru","increaseFontSize":"Palielināt fonta izmēru","unbindText":"Atdalīt tekstu","bindText":"Piesaistīt tekstu figūrai","createContainerFromText":"Ietilpināt tekstu figurā","link":{"edit":"Rediģēt saiti","editEmbed":"","create":"Izveidot saiti","createEmbed":"","label":"Saite","labelEmbed":"","empty":""},"lineEditor":{"edit":"Rediģēt līniju","exit":"Aizvērt līnijas redaktoru"},"elementLock":{"lock":"Fiksēt","unlock":"Atbrīvot","lockAll":"Fiksēt visu","unlockAll":"Atbrīvot visu"},"statusPublished":"Publicēts","sidebarLock":"Paturēt atvērtu sānjoslu","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Neviena vienība vēl nav pievienota...","hint_emptyLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu, vai pievienojiet publisku bibliotēku zemāk.","hint_emptyPrivateLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu."},"buttons":{"clearReset":"Atiestatīt tāfeli","exportJSON":"Eksportēt kā failu","exportImage":"Eksportēt attēlu...","export":"Saglabāt uz...","copyToClipboard":"Kopēt starpliktuvē","save":"Saglabāt pašreizējo datni","saveAs":"Saglabāt kā","load":"Atvērt","getShareableLink":"Iegūt kopīgošanas saiti","close":"Aizvērt","selectLanguage":"Izvēlieties valodu","scrollBackToContent":"Atgriezties pie satura","zoomIn":"Tuvināt","zoomOut":"Tālināt","resetZoom":"Atiestatīt tuvinājumu","menu":"Izvēlne","done":"Gatavs","edit":"Rediģēt","undo":"Atsaukt","redo":"Atcelt atsaukšanu","resetLibrary":"Atiestatīt bibliotēku","createNewRoom":"Izveidot jaunu telpu","fullScreen":"Pilnekrāna režīms","darkMode":"Tumšais režīms","lightMode":"Gaišais režīms","zenMode":"Zen režīms","objectsSnapMode":"","exitZenMode":"Pamest Zen režīmu","cancel":"Atcelt","clear":"Notīrīt","remove":"Noņemt","embed":"","publishLibrary":"Publicēt","submit":"Iesniegt","confirm":"Apstiprināt","embeddableInteractionButton":""},"alerts":{"clearReset":"Šī funkcija notīrīs visu tāfeli. Vai turpināt?","couldNotCreateShareableLink":"Nevarēja izveidot kopīgojamo saiti.","couldNotCreateShareableLinkTooBig":"Nevarēja izveidot kopīgojamo saiti – aina ir par lielu","couldNotLoadInvalidFile":"Nevarēja ielādēt nederīgu datni","importBackendFailed":"Ielāde no krātuves neizdevās.","cannotExportEmptyCanvas":"Nevar eksportēt tukšu tāfeli.","couldNotCopyToClipboard":"Nevarēja nokopēt starpliktuvē.","decryptFailed":"Nevarēja atšifrēt datus.","uploadedSecurly":"Augšuplāde nodrošināta ar šifrēšanu no gala līdz galam, kas nozīmē, ka Excalidraw serveri un trešās puses nevar lasīt saturu.","loadSceneOverridePrompt":"Ārēja satura ielāde aizstās jūsu pašreizējo saturu. Vai vēlaties turpināt?","collabStopOverridePrompt":"Sesijas pārtraukšana pārrakstīs jūsu iepriekšējo zīmējumu, kas saglabāts jūsu pārlūkā. Vai turpināt?\\n\\n(Ja vēlaties paturēt zīmējumu, kas saglabāts jūsu pārlūkā, vienkārši aizveriet pārlūka cilni.)","errorAddingToLibrary":"Nevarēja pievienot vienumu bibliotēkai","errorRemovingFromLibrary":"Nevarēja izņemt vienumu no bibliotēkas","confirmAddLibrary":"Šī funkcija pievienos {{numShapes}} formu(-as) jūsu bibliotēkai. Vai turpināt?","imageDoesNotContainScene":"Šķiet, ka attēls nesatur ainas datus. Vai iespējojāt ainas iegulšanu, kad eksportējāt?","cannotRestoreFromImage":"Ainu nevarēja atgūt no attēla datnes","invalidSceneUrl":"Nevarēja importēt ainu no norādītā URL. Vai nu tas ir nederīgs, vai nesatur derīgus Excalidraw JSON datus.","resetLibrary":"Šī funkcija iztukšos bibliotēku. Vai turpināt?","removeItemsFromsLibrary":"Vai izņemt {{count}} vienumu(s) no bibliotēkas?","invalidEncryptionKey":"Šifrēšanas atslēgai jābūt 22 simbolus garai. Tiešsaistes sadarbība ir izslēgta.","collabOfflineWarning":"Nav pieejams interneta pieslēgums.\\nJūsu izmaiņas netiks saglabātas!"},"errors":{"unsupportedFileType":"Neatbalstīts datnes veids.","imageInsertError":"Nevarēja ievietot attēlu. Mēģiniet vēlāk...","fileTooBig":"Datne ir par lielu. Lielākais atļautais izmērs ir {{maxSize}}.","svgImageInsertError":"Nevarēja ievietot SVG attēlu. Šķiet, ka SVG marķējums nav derīgs.","failedToFetchImage":"","invalidSVGString":"Nederīgs SVG.","cannotResolveCollabServer":"Nevarēja savienoties ar sadarbošanās serveri. Lūdzu, pārlādējiet lapu un mēģiniet vēlreiz.","importLibraryError":"Nevarēja ielādēt bibliotēku","collabSaveFailed":"Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","collabSaveFailed_sizeExceeded":"Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Atlase","image":"Ievietot attēlu","rectangle":"Taisnstūris","diamond":"Rombs","ellipse":"Elipse","arrow":"Bulta","line":"Līnija","freedraw":"Zīmēt","text":"Teksts","library":"Bibliotēka","lock":"Paturēt izvēlēto rīku pēc darbības","penMode":"Pildspalvas režīms – novērst pieskaršanos","link":"Pievienot/rediģēt atlasītās figūras saiti","eraser":"Dzēšgumija","frame":"","embeddable":"","laser":"","hand":"Roka (panoramēšanas rīks)","extraTools":""},"headings":{"canvasActions":"Tāfeles darbības","selectedShapeActions":"Izvēlētās formas darbības","shapes":"Formas"},"hints":{"canvasPanning":"Lai bīdītu tāfeli, turiet nospiestu ritināšanas vai atstarpes taustiņu, vai izmanto rokas rīku","linearElement":"Klikšķiniet, lai sāktu zīmēt vairākus punktus; velciet, lai zīmētu līniju","freeDraw":"Spiediet un velciet; atlaidiet, kad pabeidzat","text":"Ieteikums: lai pievienotu tekstu, varat arī jebkur dubultklikšķināt ar atlases rīku","embeddable":"","text_selected":"Dubultklikšķiniet vai spiediet ievades taustiņu, lai rediģētu tekstu","text_editing":"Spiediet iziešanas taustiņu vai CtrlOrCmd+ENTER, lai beigtu rediģēt","linearElementMulti":"Klikšķiniet uz pēdējā punkta vai spiediet izejas vai ievades taustiņu, lai pabeigtu","lockAngle":"Varat ierobežot leņķi, turot nospiestu SHIFT","resize":"Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,\\nvai arī ALT, lai mainītu izmēru ap centru","resizeImage":"Varat brīvi mainīt izmēru, turot nospiestu SHIFT;\\nturiet nospiestu ALT, lai mainītu izmēru ap centru","rotate":"Rotējot varat ierobežot leņķi, turot nospiestu SHIFT","lineEditor_info":"Turiet CtrlOrCmd un dubultklikšķiniet, vai spiediet CtrlOrCmd + Enter, lai rediģētu punktus","lineEditor_pointSelected":"Spiediet dzēšanas taustiņu, lai noņemtu punktus, – CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu","lineEditor_nothingSelected":"Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),\\nvai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus","placeImage":"Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru","publishLibrary":"Publicēt savu bibliotēku","bindTextToElement":"Spiediet ievades taustiņu, lai pievienotu tekstu","deepBoxSelect":"Turient nospiestu Ctrl vai Cmd, lai atlasītu dziļumā un lai nepieļautu objektu pavilkšanu","eraserRevert":"Turiet Alt, lai noņemtu elementus no dzēsšanas atlases","firefox_clipboard_write":"Šis iestatījums var tikt ieslēgts ar \\"dom.events.asyncClipboard.clipboardItem\\" marķieri pārslēgtu uz \\"true\\". Lai mainītu pārlūka marķierus Firefox, apmeklē \\"about:config\\" lapu.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Nevar rādīt priekšskatījumu","canvasTooBig":"Iespējams, tāfele ir par lielu.","canvasTooBigTip":"Ieteikums: mēģiniet satuvināt pašus tālākos elementus."},"errorSplash":{"headingMain":"Notikusi kļūda. Mēģiniet ","clearCanvasMessage":"Ja pārlādēšana nestrādā, mēģiniet ","clearCanvasCaveat":" Tas novedīs pie darba zaudēšanas ","trackedToSentry":"Kļūda ar kodu {{eventId}} tika noteikta mūsu sistēmā.","openIssueMessage":"Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.","sceneContent":"Ainas saturs:"},"roomDialog":{"desc_intro":"Varat ielūgt cilvēkus pašreizējajā ainā, lai sadarbotos ar tiem.","desc_privacy":"Neuztraucieties, sesija izmanto šifrēšanu no gala līdz galam, tātad jūsu zīmējums paliks privāts. Pat mūsu serveri nevarēs redzēt, ar ko esat nācis klajā.","button_startSession":"Sākt sesiju","button_stopSession":"Beigt sesiju","desc_inProgressIntro":"Notiek tiešsaistes sadarbības sesija.","desc_shareLink":"Dalieties ar šo saiti ar jebkuru, ar ko vēlaties sadarboties:","desc_exitSession":"Sesijas beigšana jūs atvienos no sadarbošanās, bet jūs vēl joprojām varēsiet strādāt ar ainu savā datorā. Ievērojiet, ka šis neietekmēs citus dalībniekus, un viņi vēl joprojām varēs sadarboties savā ainas versijā.","shareTitle":"Pievienoties tiešsaistes sadarbībai programmā Excalidraw"},"errorDialog":{"title":"Kļūda"},"exportDialog":{"disk_title":"Saglabāt diskā","disk_details":"Eksportēt ainas datus datnē, ko vēlāk varēsiet importēt.","disk_button":"Saglabāt datnē","link_title":"Kopīgošanas saite","link_details":"Eksportēt kā tikai lasāmu saiti.","link_button":"Eksportēt kā saiti","excalidrawplus_description":"Saglabāt ainu savā Excalidraw+ darbvietā.","excalidrawplus_button":"Eksportēt","excalidrawplus_exportError":"Pašreiz nevarēja eksportēt uz Excalidraw+..."},"helpDialog":{"blog":"Lasīt mūsu blogu","click":"klikšķis","deepSelect":"Atlasīt dziļumā","deepBoxSelect":"Atlasīt dziļumā kastes ietvaros, un nepieļaut pavilkšanu","curvedArrow":"Liekta bulta","curvedLine":"Liekta līnija","documentation":"Dokumentācija","doubleClick":"dubultklikšķis","drag":"vilkt","editor":"Redaktors","editLineArrowPoints":"Rediģēt līniju/bultu punktus","editText":"Rediģēt tekstu/pievienot birku","github":"Sastapāt kļūdu? Ziņot","howto":"Sekojiet mūsu instrukcijām","or":"vai","preventBinding":"Novērst bultu piesaistīšanos","tools":"Rīki","shortcuts":"Tastatūras saīsnes","textFinish":"Pabeigt rediģēšanu (teksta redaktorā)","textNewLine":"Nākamā rindiņa (teksta redaktorā)","title":"Palīdzība","view":"Skatīt","zoomToFit":"Iestatīt mērogu, kas iekļauj visus elementus","zoomToSelection":"Iestatīt mērogu, lai rādītu atlasi","toggleElementLock":"Fiksēt/atbrīvot atlasīto","movePageUpDown":"Pārvietot lapu augšup/lejup","movePageLeftRight":"Pārvietot lapu pa labi/kreisi"},"clearCanvasDialog":{"title":"Notīrīt tāfeli"},"publishDialog":{"title":"Publicēt bibliotēku","itemName":"Vienuma nosaukums","authorName":"Autora vārds","githubUsername":"GitHub lietotājvārds","twitterUsername":"Twitter lietotājvārds","libraryName":"Bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts","website":"Mājaslapa","placeholder":{"authorName":"Jūsu vārds vai lietotājvārds","libraryName":"Jūsu bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts, kas palīdzēs citiem saprast tās pielietojumu","githubHandle":"GitHub lietotājvārds (neobligāts), lai jūs varētu rediģēt bibliotēku pēc tās iesniegšanas izskatīšanai","twitterHandle":"Twitter lietotājvārds (neobligāts), lai mēs varētu jūs pieminēt kā autoru, kad reklamēsim bibliotēku platformā Twitter","website":"Saikne uz jūsu personīgo mājaslapu vai kādu citu lapu (neobligāta)"},"errors":{"required":"Obligāts","website":"Ievadiet derīgu URL"},"noteDescription":"Iesniegt savu bibliotēku iekļaušanai publiskajā bibliotēku datubāzē, lai citi to varētu izmantot savos zīmējumos.","noteGuidelines":"Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet norādījumus pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams.","noteLicense":"Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar MIT Licenci, kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem.","noteItems":"Katram bibliotēkas vienumam jābūt savam nosaukumam, lai to varētu atrast filtrējot. Tiks iekļauti sekojošie bibliotēkas vienumi:","atleastOneLibItem":"Lūdzu, atlasiet vismaz vienu bibliotēkas vienumu, lai sāktu darbu","republishWarning":"Ievēro: daži no atzīmētajiem objektiem jau atzīmēti kā publicēti vai iesniegti publicēšanai. Tos vajadzētu atkārtoti iesniegt tikai tad, ja vēlies labot esošo bibliotēku."},"publishSuccessDialog":{"title":"Bibliotēka iesniegta","content":"Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusamšeit"},"confirmDialog":{"resetLibrary":"Atiestatīt bibliotēku","removeItemsFromLib":"Noņemt atlasītos vienumus no bibliotēkas"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Jūsu zīmējumi ir šifrēti no gala līdz galam; līdz ar to Excalidraw serveri tos nekad neredzēs.","link":"Ieraksts par šifrēšanu no gala līdz galam Excalidraw blogā"},"stats":{"angle":"Leņķis","element":"Elements","elements":"Elementi","height":"Augstums","scene":"Aina","selected":"Atlasīti","storage":"Krātuve","title":"Statistika entuziastiem","total":"Kopā","version":"Versija","versionCopy":"Klikšķiniet, lai nokopētu","versionNotAvailable":"Versija nav pieejama","width":"Platums"},"toast":{"addedToLibrary":"Pievienots bibliotēkai","copyStyles":"Nokopēja stilus.","copyToClipboard":"Nokopēja starpliktuvē.","copyToClipboardAsPng":"Nokopēja {{exportSelection}} starpliktuvē kā PNG ({{exportColorScheme}})","fileSaved":"Datne saglabāta.","fileSavedToFilename":"Saglabāts kā {filename}","canvas":"tāfeli","selection":"atlasi","pasteAsSingleElement":"Izmantojiet {{shortcut}}, lai ielīmētu kā jaunu elementu, vai ielīmētu esošā teksta lauciņā","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Caurspīdīgs","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.","center_heading_plus":"Vai tā vietā vēlies doties uz Excalidraw+?","menuHint":"Eksportēšana, iestatījumi, valodas..."},"defaults":{"menuHint":"Eksportēšana, iestatījumi un vēl...","center_heading":"Diagrammas. Izveidotas. Vienkārši.","toolbarHint":"Izvēlies rīku un sāc zīmēt!","helpHint":"Īsceļi un palīdzība"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js b/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js new file mode 100644 index 0000000..c496548 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3397],{5297:function(e){e.exports=JSON.parse('{"labels":{"paste":"चिटकवा","pasteAsPlaintext":"साधा मजकूर च्या रुपात पेस्ट करा","pasteCharts":"चार्ट चिकटवा","selectAll":"समस्त निवडा","multiSelect":"निवडित तत्व जोडा","moveCanvas":"पटल हलवा","cut":"कापा","copy":"प्रतिलिपी","copyAsPng":"PNG रूपे फळी वर कॉपी करा","copyAsSvg":"SVG रूपे फळी वर कॉपी करा","copyText":"लिखित रूपे फळी वर कॉपी करा","bringForward":"पुढे पुढे आणा","sendToBack":"सर्वात मागे करा","bringToFront":"सर्वात पुढे आणा","sendBackward":"मागे मागे करा","delete":"हटवा","copyStyles":"शैली कॉपी करा","pasteStyles":"कॉपी केलेली शैली वापरा","stroke":"रेघे चा रंग","background":"पार्श्वभूमी","fill":"भरा","strokeWidth":"रेघ रुंदी","strokeStyle":"रेघ शैली","strokeStyle_solid":"भरीव","strokeStyle_dashed":"तुटित तुटित","strokeStyle_dotted":"ठिपके ठिपके","sloppiness":"गबाळेपणा","opacity":"अपारदर्शक्ता","textAlign":"मजकूर संरेखन","edges":"किनारी","sharp":"टोचरं","round":"गोलाकार","arrowheads":"बाण टोक","arrowhead_none":"कुठलाहि नाही","arrowhead_arrow":"बाण","arrowhead_bar":"दांडुक","arrowhead_dot":"ठिपका","arrowhead_triangle":"त्रिकोण","fontSize":"अक्षर आकार","fontFamily":"अक्षर समूह","addWatermark":"\\"एक्सकेलीड्रॉ ने बनवलेलं\\" जोडा","handDrawn":"हातानी बनवलेलं","normal":"सामान्य","code":"सांकेतिक लिपि","small":"छोटे","medium":"मध्यम","large":"मोठं","veryLarge":"फार मोठं","solid":"भरीव","hachure":"हैशूर रेखांकन","zigzag":"वाकडी तिकड़ी","crossHatch":"आडव्या रेघा","thin":"पातळ","bold":"जाड","left":"डावं","center":"मधे","right":"उजवं","extraBold":"जास्त जाड","architect":"वास्तुविद्याविशारद","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फाईलचे नाव","colorPicker":"रंग निवडक","canvasColors":"कॅनवास वर वापरलेले","canvasBackground":"पटल पार्श्वभूमि","drawingCanvas":"चित्र पटल","layers":"स्तर","actions":"क्रिया","language":"भाषा","liveCollaboration":"ज्वलंत सहयोग...","duplicateSelection":"प्रतिलिपि","untitled":"अशीर्षकांकित","name":"नाव","yourName":"तुमचे नाव","madeWithExcalidraw":"एक्सकेलीड्रॉ ने बनवलेलं","group":"समूह निवड","ungroup":"समूह निवड ला रद्द करा","collaborators":"Sahayog","showGrid":"ग्रिड दाखवा","addToLibrary":"संग्रह मधे सम्मिलित करा","removeFromLibrary":"संग्रहातून काढ़ा","libraryLoadingMessage":"संग्रह लोड होत आहे…","libraries":"संग्रह देखे","loadingScene":"दृश्य लोड होत आहे…","align":"संरेखित करा","alignTop":"वर संरेखित करा","alignBottom":"खाली संरेखित करा","alignLeft":"डावा बाजूला संरेखित करा","alignRight":"उजव्या बाजूला संरेखित करा","centerVertically":"मधल्या मधे उभं संरेखित करा","centerHorizontally":"मधल्या मधे आडवं संरेखित करा","distributeHorizontally":"आडवं वितरित करा","distributeVertically":"उभं वितरित करा","flipHorizontal":"आडवं फ्लिप करा","flipVertical":"उभं फ्लिप करा","viewMode":"पहायची पद्धत","share":"सामायिक करा","showStroke":"रेघ रंग निवड यंत्र दाखवा","showBackground":"पार्श्वभूमि: रंग निवड यंत्र दाखवा","toggleTheme":"शैली बदला","personalLib":"वैयक्तिक संग्रह","excalidrawLib":"एक्सकेलीड्रॉ संग्रह","decreaseFontSize":"अक्षर आकार छोटा करा","increaseFontSize":"अक्षर आकार मोठा करा","unbindText":"लेखन संबंध संपवा","bindText":"शब्द समूह ला पात्रात घ्या","createContainerFromText":"मजकूर कंटेनर मधे मोडून दाखवा","link":{"edit":"दुवा संपादन","editEmbed":"","create":"दुवा तयार करा","createEmbed":"","label":"दुवा","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेघ संपादन","exit":"रेघ संपादकाबाहेर"},"elementLock":{"lock":"कुलूपात ठेवा","unlock":"कुलूपातून बाहेर","lockAll":"सर्व कुलूपात ठेवा","unlockAll":"सर्व कुलूपातून बाहेर"},"statusPublished":"प्रकाशित करा","sidebarLock":"साइडबार उघडं ठेवा","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलकातून रंग निवडा"},"library":{"noItems":"अजून कोणतेही आइटम जोडलेले नाही...","hint_emptyLibrary":"पटल वर एक वस्तु निवडुन एथे जोडा, किव्हा एक संग्रह जन कोष कडुन खाली स्थापित करा.","hint_emptyPrivateLibrary":"ईथे जोडण्या साठी पटल वरून एक वस्तु निवडा."},"buttons":{"clearReset":"पटल पुसा","exportJSON":"फ़ाइलमधे बाहेर ठेवा","exportImage":"प्रतिमा निर्यात करा...","export":"येथे सुरक्षित करा...","copyToClipboard":"फळी वर कॉपी करा","save":"वर्तमान फ़ाइल मधे जतन करा","saveAs":"ह्या नावाने जतन करा","load":"उघडा","getShareableLink":"सामायिके साठी दुवा प्राप्त करा","close":"बंद करा","selectLanguage":"भाषा निवड करा","scrollBackToContent":"पहलेचा मजकुर वर मागे स्क्रॉल करा","zoomIn":"मोठं करून पहा","zoomOut":"छोटं करून पहा","resetZoom":"छोटं मोठं करणं बंद करा","menu":"यादि","done":"झालं","edit":"संपादित करा","undo":"पूर्ववत करा","redo":"पुन्हा करा(&R)","resetLibrary":"संग्रह पुनर्स्थित करा","createNewRoom":"एक नवी खोली बनवा","fullScreen":"पूर्ण दृश्यपटल","darkMode":"अंधार स्थिथि","lightMode":"उजेड स्थिति","zenMode":"ध्यानग्र स्थिति","objectsSnapMode":"वस्तूंपासून पकड़ा","exitZenMode":"ध्यानग्र स्थितितून बाहेर","cancel":"रद्द","clear":"स्वछ","remove":"हटवा","embed":"","publishLibrary":"प्रकाशित करा","submit":"जमा करा","confirm":"पुष्टि करा","embeddableInteractionButton":""},"alerts":{"clearReset":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","couldNotCreateShareableLink":"सामायी करण करण्या योग्य दुवा नाही बनवता आला.","couldNotCreateShareableLinkTooBig":"सामायी करण करण्या योग्य दुवा नाही बनवता आला: दृश्य फार मोठं आहे","couldNotLoadInvalidFile":"अवैध फ़ाइल लोड करता आली नाही","importBackendFailed":"बैकएंड हून मागवणे विफल झाले.","cannotExportEmptyCanvas":"रिकामा पटल जतन करता येत नाही.","couldNotCopyToClipboard":"पटल वर कॉपी नाही झाली.","decryptFailed":"डीक्रिप्ट करता आले नाही.","uploadedSecurly":"अपलोड या टोकापासून त्या टोकापर्यंत कूटबद्धित करून सुरक्षित केले गेले आहे, हयाचा अर्थ असा की एक्सकेलीड्रॉ सर्व्हर आणि तृतीय पक्ष मजकूर वाचू शकत नाहीत.","loadSceneOverridePrompt":"बाह्य रेखाचित्र लोड केल्याने तुमची तुमचा विद्यमान मजकूर बदलेल. हे काम तुम्हाला चालू ठेवायचे आहे का?","collabStopOverridePrompt":"सत्र थांबवल्याने तुमचे पूर्वीचे, स्थानिकरित्या संग्रहित रेखाचित्र अधिलिखित होईल. तुला खात्री आहे?\\n\\n(तुम्हाला तुमचे स्थानिक रेखाचित्र ठेवायचे असल्यास, त्याऐवजी फक्त ब्राउझर टॅब बंद करा.)","errorAddingToLibrary":"संग्रहात तत्व जोडू शकलो नाही","errorRemovingFromLibrary":"संग्रहातून तत्व काढू शकलो नाही","confirmAddLibrary":"हे तुमच्या संग्राहात {{numShapes}} आकार (एक किव्हा अनेक) जोडेल. तुला खात्री आहे?","imageDoesNotContainScene":"या प्रतिमेमध्ये कोणताही दृश्य डेटा असल्याचे दिसत नाही. बाहेर जतन करताना तुम्ही दृश्य रुतवले होते का?","cannotRestoreFromImage":"प्रतिमा फ़ाइल पासून दृश्य पुनः रचित नाही झाला","invalidSceneUrl":"दिलेल्या यू-आर-एल पासून दृश्य आणू शकलो नाही. तो एकतर बरोबार नाही आहे किंवा त्यात वैध एक्सकेलीड्रॉ जेसन डेटा नाही.","resetLibrary":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","removeItemsFromsLibrary":"संग्रहातून {{count}} तत्व (एक किव्हा अनेक) काढू?","invalidEncryptionKey":"कूटबद्धन कुंजी 22 अक्षरांची असणे आवश्यक आहे. थेट सहयोग अक्षम केले आहे.","collabOfflineWarning":"इंटरनेट कनेक्शन उपलब्ध नाही.\\nतुमचे बदल जतन केले जाणार नाहीत!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार.","imageInsertError":"प्रतिमा आत घालता येत नाही. नंतर पुन्हा प्रयत्न करा...","fileTooBig":"फाइल फार मोठी आहे. आकाराची कमाल परवानगी {{maxSize}} आहे.","svgImageInsertError":"एस-वी-जी प्रतिमा आत घालवू शकलो नाही. एस-वी-जी-मार्क-अप यंत्र अयोग्य आहे.","failedToFetchImage":"","invalidSVGString":"अयोग्य एस-वी-जी.","cannotResolveCollabServer":"कॉलेब-सर्वर हे पोहोचत नाही आहे. पान परत लोड करायचा प्रयत्न करावे.","importLibraryError":"संग्रह प्रतिस्थापित नाही करता आला","collabSaveFailed":"काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।\\n\\nबॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी.","brave_measure_text_error":{"line1":"असं वाटते की तुम्हीं Brave ब्राउज़र वापरतात आहात आणि त्या बरोबार आक्रामक पद्धति चें बोटांचे ठसे हां सेटिंग्स चा विकल्प चयन केलेला आहे.","line2":"हे तुमच्या चित्रांच्या पाठ तत्वांनां खंडित करू शकतात.","line3":"तुम्हाला आमच्या कड़ून खूप आग्रह आहे की हे सेटिंग्स मधले चयन नका करु. हे अनुक्रम हे कसे करावे हे दाखवु शकते.","line4":"ही सेटिंग अक्षम करूनही पृष्ठ योग्यरित्या प्रदर्शित होत नसल्यास, आमच्या GitHub वर समस्या सबमिट करा, किव्हा डिस्कॉर्ड वर आम्हाला लिहा"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"निवड","image":"प्रतिमा आत घाला","rectangle":"आयत","diamond":"चौकोन आकाराचा","ellipse":"अंडाकार","arrow":"बाण","line":"रेखा","freedraw":"रेखांकित करा","text":"टेक्स्ट","library":"संग्रह","lock":"निवडलेले यंत्र चित्रकरण झाल्या नंतर ही सक्रिय ठेवा","penMode":"पेन चा मोड - स्पर्श टाळा","link":"निवडलेल्या आकारासाठी दुवा जोडा/बदल करा","eraser":"खोड रबर","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हात ( सरकवण्या चे उपकरण)","extraTools":""},"headings":{"canvasActions":"पटल क्रिया","selectedShapeActions":"निवडित आकार क्रिया","shapes":"आकार"},"hints":{"canvasPanning":"कॅनव्हास सरकवण्या साठी, ड्रॅग करताना माउस व्हील धरा किंवा स्पेसबार दाबून ठेवा अथवा हात वालं उपकरण वापरा","linearElement":"अनेक बिंदु साठी क्लिक करा, रेघे साठी ड्रैग करा","freeDraw":"क्लिक आणि ड्रैग करा, झालं तेव्हा सोडा","text":"टीप: तुम्हीं निवड यंत्रानी कोठेही दुहेरी क्लिक करून टेक्स्ट जोडू शकता","embeddable":"","text_selected":"लेखन संपादन साठी दुहेरी क्लिक करा किव्हा एंटर दाबा","text_editing":"संपादन संपवायचं असल्यास एस्केप दाबा किव्हा कंट्रोल या कम्मांड बरोबार एंटर दाबा","linearElementMulti":"शेवटच्या बिंदु वर क्लिक करा किव्हा एस्केप या एंटर दाबा","lockAngle":"शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","resize":"आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, \\nकेंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा","resizeImage":"SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,\\nकेंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा","rotate":"फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","lineEditor_info":"पॉइंट संपादित करण्यासाठी CtrlOrCmd दाबून ठेवुन डबल-क्लिक करा किंवा CtrlOrCmd + Enter बरोबर दाबा","lineEditor_pointSelected":"बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,\\nCtrlOrCmd बरोबार D प्रति साठी,\\nकिव्हा ड्रेग हलवण्या साठी","lineEditor_nothingSelected":"संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),\\nकिंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा","placeImage":"प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा","publishLibrary":"आपला खाजगी संग्रह प्रकाशित करा","bindTextToElement":"मजकूर जोडण्यासाठी एंटर की दाबा","deepBoxSelect":"खोल निवड ह्या साठी कंट्रोल किव्हा कमांड दाबून ठेवा, आणि बाहेर खेचणे वाचवण्या साठी पण","eraserRevert":"खोडण्या साठी घेतलेल्या वस्तु ना घेण्या साठी Alt दाबून ठेवावे","firefox_clipboard_write":"हे वैशिष्ट्य \\"dom.events.asyncClipboard.clipboardItem\\" फ्लॅग \\"सत्य\\" वर सेट करून शक्यतो सक्षम केले जाऊ शकते. Firefox मध्ये ब्राउझर फ्लॅग बदलण्यासाठी, \\"about:config\\" पृष्ठावर जा.","disableSnapping":"स्नैपिंग अक्षम करण्या साठी CtrlOrCmd दाबून ठेवा"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन दाखवू शकत नाही","canvasTooBig":"पटल खूप जास्त मोठा असू शकतो.","canvasTooBigTip":"टीप: दूर चा तत्व थोडं जवळ आणण्याचा प्रयत्न करावा."},"errorSplash":{"headingMain":"त्रुटि आली. परत प्रयत्न करा ","clearCanvasMessage":"रीलोडिंग होत नसल्यास, परत प्रयत्न करा ","clearCanvasCaveat":" त्यामुळे केलेल्या कामाचे नुकसान होईल ","trackedToSentry":"त्रुटि क्रमांक के साथ त्रुटि {{eventId}} आमच्या प्रणाली नी निरीक्षण केले होते.","openIssueMessage":"त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.","sceneContent":"दृश्य विषय:"},"roomDialog":{"desc_intro":"तुम्‍ही तुमच्‍या सध्‍याच्‍या दृश्यासाठी लोकांना आपल्‍यासह सहयोग करण्‍यासाठी आमंत्रित करू शकता.","desc_privacy":"काळजी करू नका, सत्र या टोकापासून त्या टोकापर्यंत कूटबद्धता वापरते, त्यामुळे तुम्ही जे काही काढाल ते खाजगी राहील. तुम्ही काय घेऊन आला आहात हे आमचा सर्व्हर ही देखील पाहू शकत नाही.","button_startSession":"सत्र सुरु करा","button_stopSession":"सत्र थाम्बवा","desc_inProgressIntro":"थेट सहयोग सत्र चालू आहे.","desc_shareLink":"तुम्ही ज्यांच्याशी सहयोग करू इच्छिता त्यांच्याशी ही दुवा सामायिक करा:","desc_exitSession":"सत्र थांबवल्याने तुम्हीं खोली तून बाहेर याल, तरिही तुम्ही स्थानिक पातळीवर दृश्यासह काम करु शकाल. लक्षात ठेवा की याचा इतर लोकांवर परिणाम होणार नाही आणि ते त्यांच्या आवृत्तीवर सहयोग करित राहातील.","shareTitle":"एक्सकेलीड्रॉ वर थेट सहयोग सत्रात सामील व्हा"},"errorDialog":{"title":"त्रुटि"},"exportDialog":{"disk_title":"डिस्क मधे जतन करा","disk_details":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुम तो डेटा नंतर परत आणु शकता.","disk_button":"फ़ाइल मधे जतन करा","link_title":"सामायिके साठी दुवा","link_details":"नुसतं वाचु देणारा दुवा चा स्वरूपे बाहेर ठेवा.","link_button":"दुवा स्वरूपे बाहेर ठेवा","excalidrawplus_description":"दृश्य तुमच्या एक्सकेलीड्रॉ कार्यक्षेत्र मधे जतन करा.","excalidrawplus_button":"बाहेर ठेवा","excalidrawplus_exportError":"एक्सकेलीड्रॉ मधे बाहेर ठेवता नाही येत..."},"helpDialog":{"blog":"आमचा ब्लॉग वाचा","click":"क्लिक करा","deepSelect":"खोल निवड","deepBoxSelect":"चौकट मधे खोल निवड करा आणि बाहेर ओढणे वाचवा","curvedArrow":"वक्र बाण","curvedLine":"वक्र रेघ","documentation":"कागदपत्रे","doubleClick":"दुहेरी क्लिक","drag":"ओढा","editor":"संपादक","editLineArrowPoints":"रेघ/तीर बिंदु सम्पादित करा","editText":"पाठ्य सम्पादित करा/ लेबल जोडा","github":"समस्या मिळाली? प्रस्तुत करा","howto":"आमच्या मार्गदर्शकाचे अनुसरण करा","or":"किंवा","preventBinding":"बाण बंधन होणं टाळा","tools":"अवजार","shortcuts":"कीबोर्ड शॉर्टकट","textFinish":"संपादन संपले (मजकूर संपादन)","textNewLine":"नवी ओळ जोडा (मजकूर संपादक)","title":"मदत","view":"दृश्य","zoomToFit":"सर्व तत्व दिसतील असे दृश्यरूप आकार करा","zoomToSelection":"निवडी प्रयंत दृश्यरूप आकार करा","toggleElementLock":"कुलूपातून आत/बाहेर निवड","movePageUpDown":"पान वर/खाली करा","movePageLeftRight":"पान डावी/उजवी कडे करा"},"clearCanvasDialog":{"title":"पटल स्वच्छ करा"},"publishDialog":{"title":"संग्रह प्रकाशित करा","itemName":"वस्तु चे नाव","authorName":"लेखक चे नाव","githubUsername":"गिटहब वापरकर्तानाव","twitterUsername":"ट्विटर वापरकर्तानाव","libraryName":"संग्रहाचे नाव","libraryDesc":"संग्रहाचे वर्णन","website":"वेबसाइट","placeholder":{"authorName":"तुमचे नाव किव्हा वापरकर्तानाव","libraryName":"तुमचा संग्रहाचे नाव","libraryDesc":"तुमचा संग्रहाचे वर्णन लोकांना संग्रहा बद्दल जाणकारी देतील","githubHandle":"गिटहब हैंडल (वैकल्पिक), एकदा संग्रह पुनरावलोकना साठी जमा केल्या नंतर ही तुम्हीं सम्पादित करु शकता","twitterHandle":"ट्विटर वापरकार्यक नाव (वैकल्पिक), त्यामुळे ट्विटर वर ज़हीरांति साठी कोणाला गुण द्यायचे हे आम्हाला समजेल","website":"दुवा तुमच्या वैयक्तिक वेब-साइट किव्हा कुठे दूसरिकडे (ऐच्छिक) करावा"},"errors":{"required":"आवश्यक आहे","website":"वैध यू-आर-एल द्या"},"noteDescription":"समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा सार्वजनिक संग्रहाचे कोठारइतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी.","noteGuidelines":"संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा मार्गदर्शक तत्त्वे जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे.","noteLicense":"जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल एम-आइ-टी परवाना, ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो.","noteItems":"प्रतैक संग्रहाचे नाव, नीट शोधनासाठी, असणे आवश्यक आहे. खाली दिलेल्या वस्तु समाविष्ट केल्या जातील:","atleastOneLibItem":"सुरु करण्यासाठी, कृपया करून, कमित कमी एक वस्तु तरी निवडा","republishWarning":"टीप: काही निवडक आयटम आधीच प्रकाशित/प्रस्तुत केलेले आहेत. विद्यमान लायब्ररी किंवा प्रस्तुतित आयटम अद्यावित करताना तुम्ही फक्त तो पुन्हा प्रस्तुत करा."},"publishSuccessDialog":{"title":"संग्रह जमा केला","content":"धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकताइकडे"},"confirmDialog":{"resetLibrary":"संग्रह पुनर्स्थित करा","removeItemsFromLib":"निवडलेले आयटम्स संग्रहातून काढा"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"तुमचे चित्रे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत, त्या कारणांनी ऐक्सकैलिड्रॉ सर्वर्स ह्यानां ते पहाणं कधीच जमणार नाही.","link":"ब्लॉग पोस्ट ऐक्सकैलिड्रॉ मधे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत"},"stats":{"angle":"कोण","element":"वस्तु","elements":"वस्तु","height":"उंची","scene":"दृश्य","selected":"निवडलेले","storage":"साठवण","title":"अभ्यासू लोगो के लिये आंकडे","total":"योग","version":"आवृत्ती","versionCopy":"कॉपी करायला क्लिक करा","versionNotAvailable":"आवृति उपलब्ध नाही","width":"रुंदी"},"toast":{"addedToLibrary":"संग्रह मधे सम्मिलित","copyStyles":"कॉपी केलेली शैली.","copyToClipboard":"फळी वर कॉपी झाली.","copyToClipboardAsPng":"{{exportSelection}} फळी वर पी-एन-जी स्वरूपात कॉपी झाली\\n({{exportColorScheme}})","fileSaved":"फ़ाइल जतन झाली.","fileSavedToFilename":"{filename} मधे जतन झाली","canvas":"पटल","selection":"निवड","pasteAsSingleElement":"एक घटक म्हणून चिपकावण्या साठी {{shortcut}} वापरा,\\nकिंवा विद्यमान मजकूर संपादकात चिपकवा","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"पारदर्शक","black":"काळा","white":"पांढरा","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जांभळा","gray":"राखाडी","blue":"निळा","cyan":"आकाशी","teal":"हिरवट निळा","green":"हिरवा","yellow":"पिवळा","orange":"केशरी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"तुमचा सर्व डेटा तुमच्या ब्राउझरमध्ये स्थानिक पातळीवर जतन केला जातो.","center_heading_plus":"त्याऐवजी तुम्हाला Excalidraw+ वर जायचे आहे का?","menuHint":"निर्यात, आवड़ी-निवडी, भाषा, ..."},"defaults":{"menuHint":"निर्यात, आवड़ी निवडी आणि आणकिही...","center_heading":"आकृत्या. काढणे. सोपे.","toolbarHint":"एक साधन निवडा आणि चित्रीकरण सुरु करा!","helpHint":"शॉर्टकट आणि सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"सर्वात जास्त वापरणीस रंग","colors":"रंग","shades":"रंगछटा","hexCode":"हेक्स कोड","noShades":"ह्या रंगाच्या छटा उपलब्ध नाहित"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूपे निर्यात करा","button":"छवि स्वरूपे निर्यात करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"saveToDisk":{"title":"डिस्क मधे जतन करा","button":"डिस्क मधे जतन करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"excalidrawPlus":{"title":"एक्षकालीड्रॉ +","button":"एक्षकाली ड्रॉ+ मधे निर्यात करा","description":"दृष्य तुमच्या एक्षकालीड्रॉ+ चा कार्यस्थल मधे जतन करा."}},"modal":{"loadFromFile":{"title":"फ़ाइल मधुन लोड करा","button":"फ़ाइल मधुन लोड करा","description":"फ़ाइल मधुन लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."},"shareableLink":{"title":"लिंक पासून लोड करा","button":"माझ सध्याचे कार्य बदला","description":"बाहरी चित्र लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js b/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js new file mode 100644 index 0000000..df59cae --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1477],{7704:function(e){e.exports=JSON.parse('{"labels":{"paste":"ထား","pasteAsPlaintext":"","pasteCharts":"","selectAll":"အကုန်ရွေး","multiSelect":"ရွေးထားသည့်ထဲပုံထည့်","moveCanvas":"ကားချပ်ရွှေ့","cut":"","copy":"ကူး","copyAsPng":"PNG အနေဖြင့်ကူး","copyAsSvg":"SVG အနေဖြင့်ကူး","copyText":"","bringForward":"ရှေ့ပို့","sendToBack":"နောက်ဆုံးထား","bringToFront":"ရှေ့ဆုံးထား","sendBackward":"နောက်ပို့","delete":"ဖျက်","copyStyles":"ပုံစံကူး","pasteStyles":"ပုံစံထား","stroke":"မျဉ်း","background":"နောက်ခံ","fill":"ဖြည့်","strokeWidth":"မျဉ်းအထူ","strokeStyle":"မျဉ်းပုံစံ","strokeStyle_solid":"အပြည့်","strokeStyle_dashed":"မျဉ်းပြတ်","strokeStyle_dotted":"မျဉ်းစက်","sloppiness":"သေသပ်မှု","opacity":"ထင်ရှားမှု","textAlign":"စာသားညှိ","edges":"အစွန်း","sharp":"ထောင့်ချွန်","round":"ထောင့်ဝိုင်း","arrowheads":"မြှားခေါင်း","arrowhead_none":"ဘာမျှမရှိ","arrowhead_arrow":"မြှား","arrowhead_bar":"","arrowhead_dot":"အစက်","arrowhead_triangle":"","fontSize":"စာလုံးအရွယ်","fontFamily":"စာလုံးပုံစံ","addWatermark":"\\"Excalidraw ဖြင့်ဖန်တီးသည်။\\" စာသားထည့်","handDrawn":"လက်ရေး","normal":"ပုံမှန်","code":"ကုဒ်","small":"အသေး","medium":"အလတ်","large":"အကြီး","veryLarge":"ပိုကြီး","solid":"အပြည့်","hachure":"မျဉ်းစောင်း","zigzag":"","crossHatch":"ဇကာကွက်","thin":"ပါး","bold":"ထူ","left":"ဘယ်","center":"အလယ်","right":"ညာ","extraBold":"ပိုထူ","architect":"ဗိသုကာ","artist":"ပန်းချီ","cartoonist":"ကာတွန်း","fileTitle":"","colorPicker":"အရောင်ရွေး","canvasColors":"","canvasBackground":"ကားချပ်နောက်ခံ","drawingCanvas":"ပုံဆွဲကားချပ်","layers":"အလွှာများ","actions":"လုပ်ဆောင်ချက်များ","language":"ဘာသာစကား","liveCollaboration":"","duplicateSelection":"ပွား","untitled":"အမည်မရှိ","name":"အမည်","yourName":"သင့်အမည်","madeWithExcalidraw":"Excalidraw ဖြင့်ဖန်တီးသည်။","group":"အုပ်စုဖွဲ့","ungroup":"အုပ်စုဖျက်သိမ်း","collaborators":"ပူးပေါင်းပါဝင်သူများ","showGrid":"","addToLibrary":"မှတ်တမ်းတင်","removeFromLibrary":"မှတ်တမ်းမှထုတ်","libraryLoadingMessage":"မှတ်တမ်းအား တင်သွင်းနေသည်…","libraries":"စာကြည့်တိုက်တွင်ရှာဖွေပါ","loadingScene":"မြင်ကွင်းဖော်နေသည်…","align":"ချိန်ညှိ","alignTop":"ထိပ်ညှိ","alignBottom":"အခြေညှိ","alignLeft":"ဘယ်ညှိ","alignRight":"ညာညှိ","centerVertically":"ဒေါင်လိုက်အလယ်ညှိ","centerHorizontally":"အလျားလိုက်အလယ်ညှိ","distributeHorizontally":"အလျားလိုက်","distributeVertically":"ထောင်လိုက်","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"ကားချပ်ရှင်းလင်း","exportJSON":"","exportImage":"","export":"","copyToClipboard":"ကူးယူ","save":"","saveAs":"ပြောင်းသိမ်း","load":"","getShareableLink":"မျှဝေရန် လင့်ခ်ရယူ","close":"ပိတ်","selectLanguage":"ဘာသာစကားရွေးပါ","scrollBackToContent":"ကားချပ်ပြန်တည်","zoomIn":"ချဲ့","zoomOut":"ချုံ့","resetZoom":"ပုံမှန်ပြန်ထား","menu":"မီနူး","done":"ပြီးပြီ","edit":"ပြင်ဆင်","undo":"ပြန်ထား","redo":"ထပ်လုပ်","resetLibrary":"","createNewRoom":"အခန်းသစ်ဖွဲ့","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"ဇင်မြင်ကွင်းမှထွက်","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"ကားချပ်တစ်ခုလုံးရှင်းလင်းပါတော့မည်။ အတည်ပြုပါ။","couldNotCreateShareableLink":"မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotCreateShareableLinkTooBig":"မြင်ကွင်းအရမ်းကြီးနေသဖြင့် မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotLoadInvalidFile":"လွဲမှားနေသောဖိုင်အား တင်၍မရပါ။","importBackendFailed":"Backend မှမလုပ်ဆောင်နိုင်သေးပါ။","cannotExportEmptyCanvas":"ကားချပ်အလွတ်အားထုတ်ယူ၍မရပါ။","couldNotCopyToClipboard":"","decryptFailed":"အချက်အလက်ဖော်ယူ၍မရပါ။","uploadedSecurly":"တင်သွင်းအချက်အလက်များအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်စနစ်အသုံးပြု၍လုံခြုံစွာထိန်းသိမ်းထားပါသဖြင့် Excalidraw ဆာဗာနှင့်ဆက်စပ်အဖွဲ့အစည်းများပင်လျှင်မဖတ်ရှုနိုင်ပါ။","loadSceneOverridePrompt":"လက်ရှိရေးဆွဲထားသမျှအား ပြင်ပမှတင်သွင်းသောပုံနှင့်အစားထိုးပါမည်။ ဆက်လက်ဆောင်ရွက်လိုပါသလား။","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။","imageDoesNotContainScene":"","cannotRestoreFromImage":"ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ရွေးချယ်","image":"","rectangle":"စတုဂံ","diamond":"စိန်","ellipse":"အဝိုင်း","arrow":"မြှား","line":"မျဉ်း","freedraw":"","text":"စာသား","library":"မှတ်တမ်း","lock":"ရွေးချယ်ထားသောကိရိယာကိုသာဆက်သုံး","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ကားချပ်လုပ်ဆောင်ချက်","selectedShapeActions":"ပုံသဏ္ဌာန်လုပ်ဆောင်ချက်","shapes":"ပုံသဏ္ဌာန်များ"},"hints":{"canvasPanning":"","linearElement":"အမှတ်များချမှတ်ရေးဆွဲရန်ကလစ်နှိပ်ပါ၊ မျဉ်းတစ်ကြောင်းတည်းအတွက် တရွတ်ဆွဲပါ။","freeDraw":"ကလစ်နှိပ်၍ တရွတ်ဆွဲပါ၊ ပြီးလျှင်လွှတ်ပါ။","text":"မှတ်ချက်။ ။မည်သည့်ကိရိယာရွေးထားသည်ဖြစ်စေ ကလစ်နှစ်ချက်နှိပ်၍စာသားထည့်နိုင်သည်","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"နောက်ဆုံးအမှတ်ပေါ်တွင်ကလစ်နှိပ်ခြင်း၊ Escape (သို့) Enter နှိပ်ခြင်းတို့ဖြင့်အဆုံးသတ်နိုင်","lockAngle":"","resize":"အချိုးအစားကန့်သတ်ရန် Shift နှင့် ဗဟိုမှချိန်ညှိရန် Alt တို့ကိုနှိပ်ထားနိုင်သည်","resizeImage":"","rotate":"Shift ကိုနှိပ်ထားခြင်းဖြင့် ထောင့်အလိုက်လှည့်နိုင်သည်","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"နမူနာမပြသနိုင်ပါ","canvasTooBig":"ကားချပ်အလွန်ကြီးကောင်းကြီးနေနိုင်သည်။","canvasTooBigTip":"မှတ်ချက်။ ။ဝေးကွာနေသော ပုံများ၊ စာများအား ပိုမိုနီးကပ်အောင်ရွှေ့ကြည့်ပါ။"},"errorSplash":{"headingMain":"ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် ","clearCanvasMessage":"အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်","clearCanvasCaveat":" ရေးဆွဲထားသည်များ ဆုံးရှုံးနိုင်သည် ","trackedToSentry":"ချို့ယွင်းမှုသတ်မှတ်ချက် {{eventId}} အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။","openIssueMessage":"ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။","sceneContent":"မြင်ကွင်းပါအချက်အလက်။ ။"},"roomDialog":{"desc_intro":"လက်ရှိမြင်ကွင်းတွင်ပူးပေါင်းရေးဆွဲရန် အခြားသူများအား ဖိတ်ကြားနိုင်သည်။","desc_privacy":"နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့်ရေးဆွဲသမျှအား ဆာဗာပေါ်မှပင်လျှင်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ။ မစိုးရိမ်ပါနှင့်။","button_startSession":"ပူးပေါင်းမှုစတင်","button_stopSession":"ပူးပေါင်းမှုအဆုံးသတ်","desc_inProgressIntro":"တိုက်ရိုက်ပူးပေါင်းရေးဆွဲမှုများပြုလုပ်နေပါသည်။","desc_shareLink":"ဤလင့်ခ်အား ပူးပေါင်းရေးဆွဲလိုသူများထံပေးပို့ပါ။ ။ ","desc_exitSession":"ပူးပေါင်းမှုရပ်တန့်ပါက အဖွဲ့အတွင်းမှထွက်ခွာသွားမည်ဖြစ်သော်လည်း မိမိမြင်ကွင်းတွင်ဆက်လက်ရေးဆွဲနိုင်ပါမည်။ အဖွဲ့အတွင်းကျန်ရှိနေခဲ့သောအခြားပါဝင်သူများသည်လည်း ဆက်လက်ပူးပေါင်းရေးဆွဲနေနိုင်ပါလိမ့်မည်။","shareTitle":""},"errorDialog":{"title":"ချို့ယွင်းချက်"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"ရေးဆွဲထားသောပုံများအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့် Excalidraw ၏ဆာဗာများပင်လျှင်မြင်တွေ့ရမည်မဟုတ်ပါ။","link":""},"stats":{"angle":"ထောင့်","element":"","elements":"","height":"အမြင့်","scene":"မြင်ကွင်း","selected":"ရွေးချယ်သည်","storage":"သိုလှောင်ခန်း","title":"အက္ခရာများအတွက်အချက်အလက်များ","total":"စုစုပေါင်း","version":"","versionCopy":"","versionNotAvailable":"","width":"အကျယ်"},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js b/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js new file mode 100644 index 0000000..8db1bfd --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2359],{1167:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"Lim inn som klartekst","pasteCharts":"Lim inn diagrammer","selectAll":"Velg alt","multiSelect":"Legg til element i utvalg","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til PNG","copyAsSvg":"Kopier til utklippstavlen som SVG","copyText":"Kopier til utklippstavlen som tekst","bringForward":"Flytt framover","sendToBack":"Send bakerst","bringToFront":"Flytt forrest","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stiler","pasteStyles":"Lim inn stiler","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strektykkelse","strokeStyle":"Strekstil","strokeStyle_solid":"Heltrukket","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Ujevnhet","opacity":"Synlighet","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilspisser","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Søyle","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Fontfamilie","addWatermark":"Legg til \\"Laget med Excalidraw\\"","handDrawn":"Håndtegnet","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Helfarge","hachure":"Skravert","zigzag":"Sikk-sakk","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tykk","left":"Venstre","center":"Midtstill","right":"Høyre","extraBold":"Ekstra tykk","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegner","fileTitle":"Filnavn","colorPicker":"Fargevelger","canvasColors":"Brukes på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlinger","language":"Språk","liveCollaboration":"Sanntids-samarbeid...","duplicateSelection":"Dupliser","untitled":"Uten navn","name":"Navn","yourName":"Ditt navn","madeWithExcalidraw":"Laget med Excalidraw","group":"Gruppér utvalg","ungroup":"Avgruppér utvalg","collaborators":"Samarbeidspartnere","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern fra bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Bla gjennom biblioteker","loadingScene":"Laster inn scene…","align":"Juster","alignTop":"Juster øverst","alignBottom":"Juster nederst","alignLeft":"Juster venstre","alignRight":"Juster høyre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Distribuer horisontalt","distributeVertically":"Distribuer vertikalt","flipHorizontal":"Snu horisontalt","flipVertical":"Snu vertikalt","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargevelger for kantfarge","showBackground":"Vis fargevelger for bakgrunnsfarge","toggleTheme":"Veksle tema","personalLib":"Personlig bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Reduser skriftstørrelse","increaseFontSize":"Øk skriftstørrelse","unbindText":"Avbind tekst","bindText":"Bind tekst til beholderen","createContainerFromText":"La tekst flyte i en beholder","link":{"edit":"Rediger lenke","editEmbed":"Rediger lenke og bygg inn","create":"Opprett lenke","createEmbed":"Opprett lenke og bygg inn","label":"Lenke","labelEmbed":"Lenk & bygg inn","empty":"Ingen lenke er valgt"},"lineEditor":{"edit":"Rediger linje","exit":"Avslutt linjeredigering"},"elementLock":{"lock":"Lås","unlock":"Lås opp","lockAll":"Lås alle","unlockAll":"Lås opp alle"},"statusPublished":"Publisert","sidebarLock":"Holde sidemenyen åpen","selectAllElementsInFrame":"Velg alle elementene i rammen","removeAllElementsFromFrame":"Fjern alle elementer fra rammen","eyeDropper":"Velg farge fra lerretet"},"library":{"noItems":"Ingen elementer lagt til ennå...","hint_emptyLibrary":"Velg et objekt på lerretet for å legge det til her, eller installer et bibliotek fra den offentlige samlingen under.","hint_emptyPrivateLibrary":"Velg et objekt på lerretet for å legge det til her."},"buttons":{"clearReset":"Tøm lerretet og tilbakestill bakgrunnsfargen","exportJSON":"Eksporter til fil","exportImage":"Eksporter bilde...","export":"Lagre som...","copyToClipboard":"Kopier til utklippstavle","save":"Lagre til aktiv fil","saveAs":"Lagre som","load":"Åpne","getShareableLink":"Få delingslenke","close":"Lukk","selectLanguage":"Velg språk","scrollBackToContent":"Skroll tilbake til innhold","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjør om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Opprett et nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"Slå av/på innebygging","publishLibrary":"Publiser","submit":"Send inn","confirm":"Bekreft","embeddableInteractionButton":"Klikk for å samhandle"},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke lage delbar lenke.","couldNotCreateShareableLinkTooBig":"Kunne ikke opprette lenke til deling: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke laste inn ugyldig fil","importBackendFailed":"Importering av backend feilet.","cannotExportEmptyCanvas":"Kan ikke eksportere et tomt lerret.","couldNotCopyToClipboard":"Kunne ikke kopiere til utklippstavlen.","decryptFailed":"Kunne ikke dekryptere data.","uploadedSecurly":"Opplastingen er kryptert og kan ikke leses av Excalidraw-serveren eller tredjeparter.","loadSceneOverridePrompt":"Å laste inn ekstern tegning vil erstatte det eksisterende innholdet. Ønsker du å fortsette?","collabStopOverridePrompt":"Hvis du slutter økten, overskrives din forrige, lokalt lagrede tegning. Er du sikker?\\n\\n(Hvis du ønsker å beholde din lokale tegning, bare lukk nettleserfanen i stedet.)","errorAddingToLibrary":"Kunne ikke legge element i biblioteket","errorRemovingFromLibrary":"Kunne ikke fjerne element fra biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Det ser ikke ut til at dette bildet inneholder noen scenedata. Har du aktivert innebygging av scene under eksporten?","cannotRestoreFromImage":"Scenen kunne ikke gjenopprettes fra denne bildefilen","invalidSceneUrl":"Kunne ikke importere scene fra den oppgitte URL-en. Den er enten ødelagt, eller inneholder ikke gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil tømme biblioteket ditt. Er du sikker?","removeItemsFromsLibrary":"Slett {{count}} element(er) fra biblioteket?","invalidEncryptionKey":"Krypteringsnøkkel må ha 22 tegn. Live-samarbeid er deaktivert.","collabOfflineWarning":"Ingen Internett-tilkobling tilgjengelig.\\nEndringer dine vil ikke bli lagret!"},"errors":{"unsupportedFileType":"Filtypen støttes ikke.","imageInsertError":"Kunne ikke sette inn bildet. Prøv igjen senere...","fileTooBig":"Filen er for stor. Maksimal tillatt størrelse er {{maxSize}}.","svgImageInsertError":"Kunne ikke sette inn SVG-bilde. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikke koble til samarbeidsserveren. Vennligst oppdater siden og prøv på nytt.","importLibraryError":"Kunne ikke laste bibliotek","collabSaveFailed":"Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.","collabSaveFailed_sizeExceeded":"Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt.","brave_measure_text_error":{"line1":"Ser ut som om du bruker Brave nettleser med Aggressivt Block Finger -innstillingen aktivert.","line2":"Dette kan resultere i å bryte tekst-elementene i tegningene.","line3":"Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge disse trinnene om hvordan du gjør det.","line4":"Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, vennligst åpne en sak på vår GitHub, eller skriv oss på Discord"},"libraryElementTypeError":{"embeddable":"Innebygde elementer kan ikke legges til i biblioteket.","image":"Støtte for å legge til bilder i biblioteket kommer snart!"}},"toolBar":{"selection":"Velg","image":"Sett inn bilde","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Tegn","text":"Tekst","library":"Bibliotek","lock":"Behold merket verktøy som aktivt","penMode":"Pennemodus - forhindre berøring","link":"Legg til / oppdater link for en valgt figur","eraser":"Viskelær","frame":"Rammeverktøy","embeddable":"Nettinnbygging","laser":"","hand":"Hånd (panoreringsverktøy)","extraTools":"Flere verktøy"},"headings":{"canvasActions":"Handlinger: lerret","selectedShapeActions":"Handlinger: valgt objekt","shapes":"Former"},"hints":{"canvasPanning":"For å flytte lerretet, hold musehjulet eller mellomromstasten mens du drar, eller bruk hånd-verktøyet","linearElement":"Klikk for å starte linje med flere punkter, eller dra for en enkel linje","freeDraw":"Klikk og dra, slipp når du er ferdig","text":"Tips: du kan også legge til tekst ved å dobbeltklikke hvor som helst med utvalgsverktøyet","embeddable":"Klikk og dra for å opprette en nettside innebygd","text_selected":"Dobbeltklikk eller trykk ENTER for å redigere tekst","text_editing":"Trykk Escape eller Ctrl/Cmd+Enter for å fullføre redigering","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan låse vinkelen ved å holde nede SHIFT","resize":"Du kan beholde forholdet ved å trykke SHIFT mens du endrer størrelse,\\ntrykk ALT for å endre størrelsen fra midten","resizeImage":"Du kan endre størrelse fritt ved å holde SHIFT,\\nhold ALT for å endre størrelse fra midten","rotate":"Du kan låse vinklene ved å holde SHIFT mens du roterer","lineEditor_info":"Hold Ctrl/Cmd og dobbelklikk eller trykk Ctrl/Cmd + Enter for å endre punkter","lineEditor_pointSelected":"Trykk på Slett for å fjerne punktet, Ctrl / Cmd+D for å duplisere, eller dra for å flytte","lineEditor_nothingSelected":"Velg et punkt å redigere (hold SHIFT for å velge flere),\\neller hold Alt og klikk for å legge til nye punkter","placeImage":"Klikk for å plassere bildet, eller klikk og dra for å angi størrelsen manuelt","publishLibrary":"Publiser ditt eget bibliotek","bindTextToElement":"Trykk Enter for å legge til tekst","deepBoxSelect":"Hold CTRL/CMD for å markere dypt og forhindre flytting","eraserRevert":"Hold Alt for å reversere elementene merket for sletting","firefox_clipboard_write":"Denne funksjonen kan sannsynligvis aktiveres ved å sette \\"dom.events.asyncClipboard.clipboardItem\\" flagget til \\"true\\". For å endre nettleserens flagg i Firefox, besøk \\"about:config\\"-siden.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikke vise forhåndsvisning","canvasTooBig":"Lerretet kan være for stort.","canvasTooBigTip":"Tips: Prøv å flytte de ytterste elementene litt tettere sammen."},"errorSplash":{"headingMain":"En feil oppsto. Prøv ","clearCanvasMessage":"Om ny sidelasting ikke fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} ble logget i vårt system.","openIssueMessage":"Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.","sceneContent":"Scene-innhold:"},"roomDialog":{"desc_intro":"Du kan invitere personer til scenen din for å samarbeide med deg.","desc_privacy":"Ta det med ro, sesjonen bruker ende-til-ende-kryptering, så alt du tegner forblir privat. Ikke en gang serveren vår kan se hva du lager.","button_startSession":"Start økt","button_stopSession":"Stopp sesjon","desc_inProgressIntro":"Sanntids-samarbeidsøkt er nå i gang.","desc_shareLink":"Del denne linken med de du vil samarbeide med:","desc_exitSession":"Dersom du avslutter sesjonen blir du frakoblet rommet, men du kan fortsette å arbeide med scenen lokalt. Vær oppmerksom på at dette ikke vil påvirke andre personer, og de vil fortsatt ha mulighet til å samarbeide på deres versjon.","shareTitle":"Bli med i en live samarbeidsøkt på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scene-dataene til en fil som du kan importere fra senere.","disk_button":"Lagre til fil","link_title":"Delbar lenke","link_details":"Eksporter som en skrivebeskyttet lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scenen til ditt Excalidraw+ arbeidsområde.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikke eksportere til Excalidraw+ for øyeblikket..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker dypt","deepBoxSelect":"Marker dypt innad i boks og forhindre flytting","curvedArrow":"Buet pil","curvedLine":"Buet linje","documentation":"Dokumentasjon","doubleClick":"dobbeltklikk","drag":"dra","editor":"Redigeringsvisning","editLineArrowPoints":"Rediger linje/pilpunkter","editText":"Rediger tekst / legg til etikett","github":"Funnet et problem? Send inn","howto":"Følg våre veiledninger","or":"eller","preventBinding":"Forhindre pilbinding","tools":"Verktøy","shortcuts":"Tastatursnarveier","textFinish":"Fullfør redigering (teksteditor)","textNewLine":"Legg til ny linje (teksteditor)","title":"Hjelp","view":"Vis","zoomToFit":"Zoom for å se alle elementer","zoomToSelection":"Zoom til utvalg","toggleElementLock":"Lås/lås opp utvalg","movePageUpDown":"Flytt side opp/ned","movePageLeftRight":"Flytt siden til venstre/høyre"},"clearCanvasDialog":{"title":"Tøm lerret"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnavn","authorName":"Forfatterens navn","githubUsername":"GitHub-brukernavnet","twitterUsername":"Twitter-brukernavn","libraryName":"Biblioteknavn","libraryDesc":"Beskrivelse av bibliotek","website":"Nettsted","placeholder":{"authorName":"Ditt navn eller brukernavn","libraryName":"Navnet på biblioteket ditt","libraryDesc":"Beskrivelse av biblioteket ditt for å hjelpe folk med å forstå bruken","githubHandle":"Github-brukernavn (valgfritt), slik at du kan redigere biblioteket når du har sendt inn for gjennomgang","twitterHandle":"Twitter-brukernavn (valgfritt), slik at vi vet hvem vi skal kreditere når promotert på Twitter","website":"Lenke til din personlige nettside eller et annet sted (valgfritt)"},"errors":{"required":"Påkrevd","website":"Angi en gyldig nettadresse"},"noteDescription":"Send inn biblioteket ditt som skal inkluderes i kildekode for offentlig bibliotekfor andre å bruke dem i tegninger.","noteGuidelines":"Biblioteket må godkjennes manuelt først. Les retningslinjene før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd.","noteLicense":"Ved å sende inn godtar du at biblioteket blir publisert under MIT-lisens, som kortfattet betyr at andre kan bruke dem uten begrensninger.","noteItems":"Hvert bibliotek må ha sitt eget navn, så det er filtrerbart. Følgende bibliotekselementer vil bli inkludert:","atleastOneLibItem":"Vennligst velg minst ett bibliotek for å komme i gang","republishWarning":"Merk: noen av de valgte elementene er merket som allerede publisert/sendt. Du bør kun sende inn elementer på nytt når du oppdaterer et eksisterende bibliotek eller innlevering."},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusenher"},"confirmDialog":{"resetLibrary":"Nullstill bibliotek","removeItemsFromLib":"Fjern valgte elementer fra bibliotek"},"imageExportDialog":{"header":"Eksporter bilde","label":{"withBackground":"Bakgrunn","onlySelected":"Kun valgte","darkMode":"Mørk modus","embedScene":"Bygg inn scene","scale":"Skalering","padding":"Avstand"},"tooltip":{"embedScene":"Scenedata vil bli lagret i den eksporterte PNG/SVG-filen, slik at scenen kan gjenopprettes fra den.\\nDet vil øke den eksporterte filstørrelsen."},"title":{"exportToPng":"Eksporter til PNG","exportToSvg":"Eksporter til SVG","copyPngToClipboard":"Kopier PNG til utklippstavlen"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopier til utklippstavle"}},"encrypted":{"tooltip":"Dine tegninger er ende-til-ende-krypterte slik at Excalidraw sine servere aldri vil se dem.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Elementer","height":"Høyde","scene":"Scene","selected":"Valgt","storage":"Lagring","title":"Statistikk for nerder","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjon ikke tilgjengelig","width":"Bredde"},"toast":{"addedToLibrary":"Lagt til i biblioteket","copyStyles":"Kopierte stiler.","copyToClipboard":"Kopiert til utklippstavlen.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavlen som PNG\\n({{exportColorScheme}})","fileSaved":"Fil lagret.","fileSavedToFilename":"Lagret til {filename}","canvas":"lerret","selection":"utvalg","pasteAsSingleElement":"Bruk {{shortcut}} for å lime inn som ett enkelt element,\\neller lim inn i en eksisterende tekstbehandler","unableToEmbed":"Innbygging av denne nettadressen er ikke tillatt. Oppret en sak på GitHub for å be om url-hvitelisting","unrecognizedLinkFormat":"Linken du bygget inn samsvarer ikke med det forventede formatet. Prøv å lime inn \\"bygg inn\\"-strengen fra kildesiden"},"colors":{"transparent":"Gjennomsiktig","black":"Svart","white":"Hvit","red":"Rød","pink":"Rosa","grape":"Drue","violet":"Fiolett","gray":"Grå","blue":"Blå","cyan":"Turkis","teal":"Blågrønn","green":"Grønn","yellow":"Gul","orange":"Oransje","bronze":"Bronse"},"welcomeScreen":{"app":{"center_heading":"Alle dine data lagres lokalt i din nettleser.","center_heading_plus":"Ønsker du å gå til Excalidraw+ i stedet?","menuHint":"Eksporter, innstillinger, språk, ..."},"defaults":{"menuHint":"Eksporter, innstillinger og mer...","center_heading":"Diagrammer. Gjort. Enkelt.","toolbarHint":"Velg et verktøy og start å tegne!","helpHint":"Snarveier & hjelp"}},"colorPicker":{"mostUsedCustomColors":"Mest brukte egendefinerte farger","colors":"Farger","shades":"Toner","hexCode":"Heksadesimal kode","noShades":"Ingen toner tilgjengelig for denne fargen"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksporter som bilde","button":"Eksporter som bilde","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"saveToDisk":{"title":"Lagre til disk","button":"Lagre til disk","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksporter til Excalidraw+","description":"Lagre scenen til ditt Excalidraw+-arbeidsområde."}},"modal":{"loadFromFile":{"title":"Last inn fra fil","button":"Last inn fra fil","description":"Å laste fra en fil vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene under."},"shareableLink":{"title":"Last inn fra lenke","button":"Erstatt innholdet mitt","description":"Lasting av ekstern tegning vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene nedenfor."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js b/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js new file mode 100644 index 0000000..b196e54 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3024],{290:function(e){e.exports=JSON.parse('{"labels":{"paste":"Plakken","pasteAsPlaintext":"Plakken als platte tekst","pasteCharts":"Plak grafieken","selectAll":"Alles selecteren","multiSelect":"Voeg element toe aan selectie","moveCanvas":"Canvas verplaatsen","cut":"Knip","copy":"Kopiëren","copyAsPng":"Kopieer als PNG","copyAsSvg":"Kopieer naar klembord als SVG","copyText":"Kopieer naar klembord als tekst","bringForward":"Breng naar voren","sendToBack":"Stuur naar achtergrond","bringToFront":"Breng naar voorgrond","sendBackward":"Breng naar achter","delete":"Verwijderen","copyStyles":"Kopieer opmaak","pasteStyles":"Plak opmaak","stroke":"Lijn","background":"Achtergrond","fill":"Invulling","strokeWidth":"Lijnbreedte","strokeStyle":"Lijnstijl","strokeStyle_solid":"Ononderbroken","strokeStyle_dashed":"Gestreept","strokeStyle_dotted":"Gestippeld","sloppiness":"Slordigheid","opacity":"Doorzichtigheid","textAlign":"Uitlijning","edges":"Randen","sharp":"Hoekig","round":"Rond","arrowheads":"Pijlpunten","arrowhead_none":"Geen","arrowhead_arrow":"Pijl","arrowhead_bar":"Balk","arrowhead_dot":"Punt","arrowhead_triangle":"Driehoek","fontSize":"Tekstgrootte","fontFamily":"Lettertype","addWatermark":"Voeg \\"Gemaakt met Excalidraw\\" toe","handDrawn":"Handgetekend","normal":"Normaal","code":"Code","small":"Klein","medium":"Medium","large":"Groot","veryLarge":"Zeer groot","solid":"Ingekleurd","hachure":"Arcering","zigzag":"","crossHatch":"Tweemaal gearceerd","thin":"Dun","bold":"Vet","left":"Links","center":"Midden","right":"Rechts","extraBold":"Zwaar","architect":"Architect","artist":"Artiest","cartoonist":"Cartoonist","fileTitle":"Bestandsnaam","colorPicker":"Kleurenkiezer","canvasColors":"Gebruikt op canvas","canvasBackground":"Canvas achtergrond","drawingCanvas":"Canvas","layers":"Lagen","actions":"Acties","language":"Taal","liveCollaboration":"Live Samenwerking...","duplicateSelection":"Dupliceer","untitled":"Naamloos","name":"Naam","yourName":"Jouw naam","madeWithExcalidraw":"Gemaakt met Excalidraw","group":"Groeperen","ungroup":"Groep opheffen","collaborators":"Deelnemers","showGrid":"Raster weergeven","addToLibrary":"Voeg toe aan bibliotheek","removeFromLibrary":"Verwijder uit bibliotheek","libraryLoadingMessage":"Bibliotheek laden…","libraries":"Blader door bibliotheken","loadingScene":"Scène laden…","align":"Uitlijnen","alignTop":"Boven uitlijnen","alignBottom":"Onder uitlijnen","alignLeft":"Links uitlijnen","alignRight":"Rechts uitlijnen","centerVertically":"Verticaal Centreren","centerHorizontally":"Horizontaal Centreren","distributeHorizontally":"Horizontaal verspreiden","distributeVertically":"Verticaal distribueren","flipHorizontal":"Horizontaal spiegelen","flipVertical":"Verticaal spiegelen","viewMode":"Weergavemodus","share":"Deel","showStroke":"Toon lijn kleur kiezer","showBackground":"Toon achtergrondkleur kiezer","toggleTheme":"Thema aan/uit","personalLib":"Persoonlijke bibliotheek","excalidrawLib":"Excalidraw bibliotheek","decreaseFontSize":"Letters verkleinen","increaseFontSize":"Letters vergroten","unbindText":"Ontkoppel tekst","bindText":"Koppel tekst aan de container","createContainerFromText":"","link":{"edit":"Wijzig link","editEmbed":"Link bewerken & insluiten","create":"Maak link","createEmbed":"Link maken en insluiten","label":"Link","labelEmbed":"Link toevoegen & insluiten","empty":"Er is geen link ingesteld"},"lineEditor":{"edit":"Bewerk regel","exit":"Verlaat regel-editor"},"elementLock":{"lock":"Vergrendel","unlock":"Ontgrendel","lockAll":"Vergrendel alles","unlockAll":"Ontgrendel alles"},"statusPublished":"Gepubliceerd","sidebarLock":"Zijbalk open houden","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Nog geen items toegevoegd...","hint_emptyLibrary":"Selecteer een item op het canvas om het hier toe te voegen of installeer een bibliotheek uit de openbare repository, hieronder.","hint_emptyPrivateLibrary":"Selecteer een item op het canvas om het hier toe te voegen."},"buttons":{"clearReset":"Canvas opnieuw instellen","exportJSON":"Exporteren naar bestand","exportImage":"Exporteer afbeelding...","export":"Sla op...","copyToClipboard":"Kopieer","save":"Opslaan naar huidige bestand","saveAs":"Opslaan als","load":"Open","getShareableLink":"Maak een deelbare link","close":"Sluiten","selectLanguage":"Taal selecteren","scrollBackToContent":"Scroll terug naar inhoud","zoomIn":"Inzoomen","zoomOut":"Uitzoomen","resetZoom":"Zoom terugzetten","menu":"Menu","done":"Klaar","edit":"Bewerken","undo":"Ongedaan maken","redo":"Herstel ongedaan maken","resetLibrary":"Bibliotheek Resetten","createNewRoom":"Creëer live-samenwerkingssessie","fullScreen":"Volledig scherm","darkMode":"Donkere modus","lightMode":"Lichte modus","zenMode":"Zen modus","objectsSnapMode":"","exitZenMode":"Verlaat zen modus","cancel":"Annuleren","clear":"Wissen","remove":"Verwijderen","embed":"Insluiten in-/uitschakelen","publishLibrary":"Publiceren","submit":"Versturen","confirm":"Bevestigen","embeddableInteractionButton":"Klik voor interactie"},"alerts":{"clearReset":"Dit zal het hele canvas verwijderen. Weet je het zeker?","couldNotCreateShareableLink":"Kon geen deelbare link aanmaken.","couldNotCreateShareableLinkTooBig":"Kan geen deelbare link aanmaken: de scène is te groot","couldNotLoadInvalidFile":"Kan ongeldig bestand niet laden","importBackendFailed":"Importeren vanuit backend mislukt.","cannotExportEmptyCanvas":"Kan geen leeg canvas exporteren.","couldNotCopyToClipboard":"Kon niet naar klembord kopiëren.","decryptFailed":"Kan gegevens niet decoderen.","uploadedSecurly":"De upload is beveiligd met end-to-end encryptie, wat betekent dat de Excalidraw server en derden de inhoud niet kunnen lezen.","loadSceneOverridePrompt":"Het inladen van een externe tekening zal je bestaande inhoud vervangen. Wil je verdergaan?","collabStopOverridePrompt":"Wanneer de sessie wordt gestopt, overschrijft u de eerdere, lokaal opgeslagen tekening. Weet je het zeker?\\n\\n(Als je de lokale tekening wilt behouden, sluit je in plaats daarvan het browsertabblad)","errorAddingToLibrary":"Kan item niet toevoegen aan de bibliotheek","errorRemovingFromLibrary":"Kan item niet uit de bibliotheek verwijderen","confirmAddLibrary":"Dit zal {{numShapes}} vorm(en) toevoegen aan je bibliotheek. Weet je het zeker?","imageDoesNotContainScene":"Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je scène embedding tijdens het exporteren ingeschakeld?","cannotRestoreFromImage":"Scène kan niet worden hersteld vanuit dit afbeeldingsbestand","invalidSceneUrl":"Kan scène niet importeren vanuit de opgegeven URL. Het is onjuist of bevat geen geldige Excalidraw JSON-gegevens.","resetLibrary":"Dit zal je bibliotheek wissen. Weet je het zeker?","removeItemsFromsLibrary":"Verwijder {{count}} item(s) uit bibliotheek?","invalidEncryptionKey":"Encryptiesleutel moet 22 tekens zijn. Live samenwerking is uitgeschakeld.","collabOfflineWarning":"Geen internetverbinding beschikbaar.\\nJe wijzigingen worden niet opgeslagen!"},"errors":{"unsupportedFileType":"Niet-ondersteund bestandstype.","imageInsertError":"Afbeelding invoegen mislukt. Probeer het later opnieuw...","fileTooBig":"Bestand is te groot. Maximale grootte is {{maxSize}}.","svgImageInsertError":"Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.","failedToFetchImage":"","invalidSVGString":"Ongeldige SVG.","cannotResolveCollabServer":"Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.","importLibraryError":"Kon bibliotheek niet laden","collabSaveFailed":"Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","collabSaveFailed_sizeExceeded":"Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"Ingesloten elementen kunnen niet worden toegevoegd aan de bibliotheek.","image":"Ondersteuning voor het toevoegen van afbeeldingen aan de bibliotheek komt binnenkort!"}},"toolBar":{"selection":"Selectie","image":"Voeg afbeelding in","rectangle":"Rechthoek","diamond":"Ruit","ellipse":"Ovaal","arrow":"Pijl","line":"Lijn","freedraw":"Teken","text":"Tekst","library":"Bibliotheek","lock":"Geselecteerde tool actief houden na tekenen","penMode":"Pen modus - Blokkeer aanraken","link":"Link toevoegen / bijwerken voor een geselecteerde vorm","eraser":"Gum","frame":"","embeddable":"Web insluiten","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Canvasacties","selectedShapeActions":"Acties van geselecteerde vorm","shapes":"Vormen"},"hints":{"canvasPanning":"Om de canvas te verplaatsen, houd muiswiel of spatiebalk ingedrukt tijdens slepen, of gebruik het handgereedschap","linearElement":"Klik om meerdere punten te starten, sleep voor één lijn","freeDraw":"Klik en sleep, laat los als je klaar bent","text":"Tip: je kunt tekst toevoegen door ergens dubbel te klikken met de selectietool","embeddable":"Klink-sleep om een website-insluiting te maken","text_selected":"Dubbelklik of druk op ENTER om tekst te bewerken","text_editing":"Druk op Escape of CtrlOrCmd+ENTER om het bewerken te voltooien","linearElementMulti":"Klik op het laatste punt of druk op Escape of Enter om te stoppen","lockAngle":"Je kunt de hoek beperken door SHIFT ingedrukt te houden","resize":"Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,\\ngebruik ALT om vanuit het midden te vergroten/verkleinen","resizeImage":"","rotate":"Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait","lineEditor_info":"Houd CtrlOrCmd en Dubbelklik of druk op CtrlOrCmd + Enter om punten te bewerken","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"Publiceer je eigen bibliotheek","bindTextToElement":"Druk op enter om tekst toe te voegen","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan voorbeeld niet tonen","canvasTooBig":"Het canvas is mogelijk te groot.","canvasTooBigTip":"Tip: beweeg de verste elementen iets dichter bij elkaar."},"errorSplash":{"headingMain":"Fout opgetreden. Probeer ","clearCanvasMessage":"Als herladen niet werkt, probeer ","clearCanvasCaveat":" Dit zal leiden tot verlies van je werk ","trackedToSentry":"De fout met ID {{eventId}} was gevolgd op ons systeem.","openIssueMessage":"We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze Kopieer de informatie hieronder naar de GitHub issue.","sceneContent":"Scène-inhoud:"},"roomDialog":{"desc_intro":"Je kunt mensen uitnodigen om met je samen te werken.","desc_privacy":"Geen zorgen, de sessie gebruikt end-to-end encryptie, dus wat je tekent blijft privé. Zelfs onze server zal niet kunnen zien wat je tekent.","button_startSession":"Start sessie","button_stopSession":"Stop sessie","desc_inProgressIntro":"De live-samenwerkingssessie is nu gestart.","desc_shareLink":"Deel deze link met iedereen waarmee je wil samenwerken:","desc_exitSession":"Het stoppen van de sessie zal je loskoppelen van de kamer, maar je kunt lokaal doorwerken met de scène.\\nPas op: dit heeft geen invloed op andere mensen en dat zij nog steeds in staat zullen zijn om samen te werken aan hun versie.","shareTitle":"Neem deel aan een live samenwerkingssessie op Excalidraw"},"errorDialog":{"title":"Fout"},"exportDialog":{"disk_title":"Opslaan op schijf","disk_details":"De scènegegevens exporteren naar een bestand waaruit u later kunt importeren.","disk_button":"Opslaan naar bestand","link_title":"Deelbare link","link_details":"Exporteren als een alleen-lezen link.","link_button":"Exporteer naar link","excalidrawplus_description":"Sla de scène op in je Excalidraw+ werkruimte.","excalidrawplus_button":"Exporteer","excalidrawplus_exportError":"Kan op dit moment niet exporteren naar Excalidraw+..."},"helpDialog":{"blog":"Lees onze blog","click":"klik","deepSelect":"Deep selecteer","deepBoxSelect":"","curvedArrow":"Gebogen pijl","curvedLine":"Kromme lijn","documentation":"Documentatie","doubleClick":"dubbelklikken","drag":"slepen","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Probleem gevonden? Verzenden","howto":"Volg onze handleidingen","or":"of","preventBinding":"Pijlbinding voorkomen","tools":"Tools","shortcuts":"Sneltoetsen","textFinish":"Voltooi het bewerken (teksteditor)","textNewLine":"Nieuwe regel toevoegen (teksteditor)","title":"Help","view":"Weergave","zoomToFit":"Zoom in op alle elementen","zoomToSelection":"Inzoomen op selectie","toggleElementLock":"","movePageUpDown":"Pagina omhoog/omlaag","movePageLeftRight":"Verplaats pagina links/rechts"},"clearCanvasDialog":{"title":"Wis canvas"},"publishDialog":{"title":"Publiceer bibliotheek","itemName":"Itemnaam","authorName":"Naam auteur","githubUsername":"GitHub gebruikersnaam","twitterUsername":"Twitter gebruikersnaam","libraryName":"Naam bibliotheek","libraryDesc":"Beschrijving van de bibliotheek","website":"Website","placeholder":{"authorName":"Je naam of gebruikersnaam","libraryName":"Naam van je bibliotheek","libraryDesc":"Beschrijving van je bibliotheek om mensen te helpen het gebruik ervan te begrijpen","githubHandle":"","twitterHandle":"","website":"Link naar je persoonlijke website of elders (optioneel)"},"errors":{"required":"Vereist","website":"Vul een geldige URL in"},"noteDescription":"openbare repository","noteGuidelines":"richtlijnen","noteLicense":"MIT-licentie, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotheek ingediend","content":"Hier"},"confirmDialog":{"resetLibrary":"Reset bibliotheek","removeItemsFromLib":"Verwijder geselecteerde items uit bibliotheek"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Je tekeningen zijn beveiligd met end-to-end encryptie, dus Excalidraw\'s servers zullen nooit zien wat je tekent.","link":"Blog post over end-to-end versleuteling in Excalidraw"},"stats":{"angle":"Hoek","element":"Element","elements":"Elementen","height":"Hoogte","scene":"Scene","selected":"Geselecteerd","storage":"Opslag","title":"Statistieken voor nerds","total":"Totaal","version":"Versie","versionCopy":"Klik om te kopiëren","versionNotAvailable":"Versie niet beschikbaar","width":"Breedte"},"toast":{"addedToLibrary":"Toegevoegd aan bibliotheek","copyStyles":"Stijlen gekopieerd.","copyToClipboard":"Gekopieerd naar het klembord.","copyToClipboardAsPng":"{{exportSelection}} naar klembord gekopieerd als PNG\\n({{exportColorScheme}})","fileSaved":"Bestand opgeslagen.","fileSavedToFilename":"Opgeslagen als {filename}","canvas":"canvas","selection":"selectie","pasteAsSingleElement":"Gebruik {{shortcut}} om te plakken als een enkel element,\\nof plak in een bestaande teksteditor","unableToEmbed":"Het insluiten van deze url is momenteel niet toegestaan. Zet een probleem op GitHub om de URL op de whitelist te zetten","unrecognizedLinkFormat":"De link die u hebt ingesloten komt niet overeen met het verwachte formaat. Probeer de \'embed\' string van de bronsite te plakken"},"colors":{"transparent":"Transparant","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"Exporteren, voorkeuren en meer...","center_heading":"Diagrammen. Eenvoudig. Gemaakt.","toolbarHint":"Kies een tool & begin met tekenen!","helpHint":"Snelkoppelingen en hulp"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js b/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js new file mode 100644 index 0000000..64ee86b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3885],{4481:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"","pasteCharts":"Lim inn diagram","selectAll":"Vel alt","multiSelect":"Legg til element i utval","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til utklippstavla som PNG","copyAsSvg":"Kopier til utklippstavla som SVG","copyText":"","bringForward":"Flytt framover","sendToBack":"Send heilt bak","bringToFront":"Flytt heilt fram","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stilar","pasteStyles":"Lim inn stilar","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strekbreidd","strokeStyle":"Strekstil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stipla","strokeStyle_dotted":"Prikka","sloppiness":"Ujamnheit","opacity":"Synlegheit","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhovud","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstorleik","fontFamily":"Skrifttype","addWatermark":"Legg til «Laga med Excalidraw»","handDrawn":"Handteikna","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Solid","hachure":"Skravert","zigzag":"","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tjukk","left":"Venstre","center":"Midstill","right":"Høgre","extraBold":"Ekstra tjukk","architect":"Arkitekt","artist":"Kunstnar","cartoonist":"Teiknar","fileTitle":"Filnamn","colorPicker":"Fargeveljar","canvasColors":"Brukt på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlingar","language":"Språk","liveCollaboration":"","duplicateSelection":"Dupliser","untitled":"Utan namn","name":"Namn","yourName":"Namnet ditt","madeWithExcalidraw":"Laga med Excalidraw","group":"Grupper utval","ungroup":"Avgrupper utval","collaborators":"Samarbeidarar","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern frå bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Blad gjennom bibliotek","loadingScene":"Laster scene…","align":"Juster","alignTop":"Juster til topp","alignBottom":"Juster til botn","alignLeft":"Juster til venstre","alignRight":"Juster til høgre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Sprei horisontalt","distributeVertically":"Sprei vertikalt","flipHorizontal":"Vipp vassrett","flipVertical":"Vipp loddrett","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargeveljar for linjer","showBackground":"Vis fargeveljar for bakgrunn","toggleTheme":"Veksle tema","personalLib":"Personleg bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Gjer skriftstorleik mindre","increaseFontSize":"Gjer skriftstorleik større","unbindText":"Avbind tekst","bindText":"","createContainerFromText":"","link":{"edit":"Rediger lenke","editEmbed":"","create":"Lag lenke","createEmbed":"","label":"Lenke","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Tilbakestill lerretet","exportJSON":"Eksporter til fil","exportImage":"","export":"","copyToClipboard":"Kopier til utklippstavla","save":"Lagre til noverande fil","saveAs":"Lagre som","load":"","getShareableLink":"Hent delingslenke","close":"Lukk","selectLanguage":"Vel språk","scrollBackToContent":"Skroll tilbake til innhald","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjer om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Lag nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"","publishLibrary":"Publiser","submit":"Send inn","confirm":"Stadfest","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikkje lage delingslenke.","couldNotCreateShareableLinkTooBig":"Kunne ikkje opprette deleleg lenke: scena er for stor","couldNotLoadInvalidFile":"Kunne ikkje laste inn ugyldig fil","importBackendFailed":"Importering av backend feila.","cannotExportEmptyCanvas":"Kan ikkje eksportere eit tomt lerret.","couldNotCopyToClipboard":"","decryptFailed":"Kunne ikkje dekryptere data.","uploadedSecurly":"Opplastinga er kryptert og er ikkje mogleg å lese av Excalidraw-serveren eller tredjepartar.","loadSceneOverridePrompt":"Innlasting av ekstern teikning erstattar ditt eksisterande innhald. Ynskjer du å fortsette?","collabStopOverridePrompt":"Viss du avsluttar økta overskriv du den førre, lokalt lagra teikninga di. Er du sikker?\\n\\n(Ønsker du å halde fram med denne? Då er det berre å lukke denne fana.)","errorAddingToLibrary":"Kunne ikkje legge elementet i biblioteket","errorRemovingFromLibrary":"Kunne ikkje fjerne elementet frå biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Dette biletet ser ikkje ut til å ha noko scenedata. Har du skrutt på innbygging av scene medan eksporteringa heldt på?","cannotRestoreFromImage":"Scena kunne ikkje gjenopprettast frå denne biletfila","invalidSceneUrl":"Kunne ikkje hente noko scene frå den URL-en. Ho er anten øydelagd eller inneheld ikkje gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil fjerne alt innhald frå biblioteket. Er du sikker?","removeItemsFromsLibrary":"Slette {{count}} element frå biblioteket?","invalidEncryptionKey":"Krypteringsnøkkelen må ha 22 teikn. Sanntidssamarbeid er deaktivert.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Filtypen er ikkje støtta.","imageInsertError":"Kunne ikkje sette inn biletet. Prøv igjen seinare...","fileTooBig":"Fila er for stor. Maksimal tillate storleik er {{maxSize}}.","svgImageInsertError":"Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikkje kople til samarbeidsserveren. Ver vennleg å oppdatere inn sida og prøv på nytt.","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Vel","image":"Sett in bilete","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Teikn","text":"Tekst","library":"Bibliotek","lock":"Hald fram med valt verktøy","penMode":"","link":"Legg til/ oppdater lenke til valt figur","eraser":"Viskelêr","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Handlingar: lerret","selectedShapeActions":"Handlingar: valt objekt","shapes":"Formar"},"hints":{"canvasPanning":"","linearElement":"Klikk for å starte linje med fleire punkt, eller drag for ei enkel linje","freeDraw":"Klikk og drag, slepp når du er ferdig","text":"Tips: du kan òg leggje til tekst ved å dobbeltklikke kor som helst med utvalgsverktyet","embeddable":"","text_selected":"Dobbelklikk eller trykk ENTER for å redigere teksta","text_editing":"Trykk Escape eller CtrlOrCmd+ENTER for å fullføre redigeringa","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan begrense vinkelen ved å holde nede SKIFT","resize":"Du kan halde fram med forholdet ved å trykke SHIFT medan du endrar storleik,\\ntrykk ALT for å endre storleiken frå midten","resizeImage":"Du kan endre storleiken fritt ved å halde inne SHIFT,\\nhald ALT for å endre storleik frå sentrum","rotate":"Du kan låse vinklane ved å halde SHIFT medan du roterer","lineEditor_info":"","lineEditor_pointSelected":"Trykk på Slett for å fjerne punkt(a),\\nCtrl / Cmd+D for å duplisere, eller drag for å flytte","lineEditor_nothingSelected":"Vel eit punkt å redigere (hald inne SHIFT for å velje fleire),\\neller hald inne Alt og klikk for å legge til nye punkt","placeImage":"Klikk for å plassere biletet, eller klikk og drag for å velje storleik manuelt","publishLibrary":"Publiser ditt eige bibliotek","bindTextToElement":"Trykk på enter for å legge til tekst","deepBoxSelect":"Hald inne Ctrl / Cmd for å velje djupt, og forhindre flytting","eraserRevert":"Hald inne Alt for å reversere markering av element for sletting","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikkje vise førehandsvising","canvasTooBig":"Lerretet er mogleg for stort.","canvasTooBigTip":"Tips: prøv å flytte elementa som er lengst frå kvarandre, litt nærare kvarandre."},"errorSplash":{"headingMain":"Ein feil oppstod. Prøv ","clearCanvasMessage":"Om ny sidelasting ikkje fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} vart logga i systemet vårt.","openIssueMessage":"Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.","sceneContent":"Scene-innhald:"},"roomDialog":{"desc_intro":"Du kan invitere personar til scena di for å samarbeide med deg.","desc_privacy":"Ta det med ro; økta brukar ende-til-ende-kryptering, så alt du teiknar held fram med å vere privat. Ikkje ein gong serveren vår kan sjå kva du lagar.","button_startSession":"Start økt","button_stopSession":"Stopp økt","desc_inProgressIntro":"Sanntids-samarbeidsøkt er no i gang.","desc_shareLink":"Del denne lenka med dei du vil samarbeide med:","desc_exitSession":"Dersom du avsluttar økta blir du kopla frå rommet, men du kan halde fram med å arbeide med scena lokalt. Ver merksam på at dette ikkje vil påverke andre personar, og desse vil framleis ha moglegheit til å samarbeide på deira eigen versjon.","shareTitle":"Bli med på eit sanntidssamarbeid på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scenedataa til ei fil du kan importere seinare.","disk_button":"Lagre til fil","link_title":"Deleleg lenke","link_details":"Eksporter som skrivebeskytta lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scena til Excalidraw+-arbeidsområdet ditt.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikkje eksportere til Excalidraw+ akkurat no..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker djupt","deepBoxSelect":"Marker djupt inni boksen og forhindr flytting","curvedArrow":"Boga pil","curvedLine":"Boga linje","documentation":"Dokumentasjon","doubleClick":"dobbelklikk","drag":"drag","editor":"Redigering","editLineArrowPoints":"","editText":"","github":"Funne eit problem? Send inn","howto":"Følg vegleiinga vår","or":"eller","preventBinding":"Hindre pilkopling","tools":"","shortcuts":"Tastatursnarvegar","textFinish":"Fullfør redigering (teksthandsamar)","textNewLine":"Legg til ny linje (teksthandsamar)","title":"Hjelp","view":"Vising","zoomToFit":"Zoom for å sjå alle elementa","zoomToSelection":"Zoom til utval","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Tøm lerretet"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnamn","authorName":"Eigaren sitt namn","githubUsername":"GitHub-brukarnamn","twitterUsername":"Twitter-brukarnamn","libraryName":"Biblioteknamn","libraryDesc":"Bibliotekskildring","website":"Nettstad","placeholder":{"authorName":"Namnet eller brukarnamnet ditt","libraryName":"Namnet på biblioteket ditt","libraryDesc":"Skildring av biblioteket ditt sånn at andre forstår bruken av det","githubHandle":"GitHub-brukarnamn (valfritt), slik at du kan redigere bibiloteket når det er sendt inn til vurdering","twitterHandle":"Twitter-brukarnamn (valfritt), så vi veit kven vi skal kreditere på Twitter","website":"Lenke til den personlege nettstaden din eller ein anna stad (valfritt)"},"errors":{"required":"Kravt","website":"Fyll inn ein gyldig URL"},"noteDescription":"Send inn biblioteket ditt til inkludering i den offentlege bibliotek-kjeldekodaslik at andre kan bruke det i teikningane deira.","noteGuidelines":"Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese retningslinjene før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.","noteLicense":"Ved å sende inn godkjenner du at biblioteket vert publisert under MIT-lisensen, som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.","noteItems":"Kvart bibliotekselement må ha eit eige namn, slik at det er mogleg å filtrere. Dei følgande bibliotekselementa blir inkludert:","atleastOneLibItem":"Ver vennleg å markere minst eitt bibliotekselement for å starte","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på statusher"},"confirmDialog":{"resetLibrary":"Tilbakestill bibliotek","removeItemsFromLib":"Fjern valde element frå biblioteket"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Teikningane dine er ende-til-ende-krypterte slik at Excalidraw sine serverar aldri får sjå dei.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Høgde","scene":"Scene","selected":"Valde","storage":"Lagring","title":"Statistikk for nerdar","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjonen er ikkje tilgjengeleg","width":"Breidde"},"toast":{"addedToLibrary":"Lagt til i bibliotek","copyStyles":"Kopierte stilane.","copyToClipboard":"Kopiert til utklippstavla.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavla som PNG\\n({{exportColorScheme}})","fileSaved":"Fila er lagra.","fileSavedToFilename":"Lagra som {filename}","canvas":"lerret","selection":"val","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Gjennomsiktig","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js b/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js new file mode 100644 index 0000000..8c35c88 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1690],{2284:function(a){a.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar en tèxt brut","pasteCharts":"Pegar los grafics","selectAll":"Tot seleccionar","multiSelect":"Apondre un element a la seleccion","moveCanvas":"Desplaçar lo canabàs","cut":"Talhar","copy":"Copiar","copyAsPng":"Copiar al quichapapièrs coma PNG","copyAsSvg":"Copiar al quichapapièrs coma SVG","copyText":"Copiar al quichapapièrs coma tèxt","bringForward":"En avant","sendToBack":"En arrièr","bringToFront":"A l’endavant","sendBackward":"Endarrièr","delete":"Suprimir","copyStyles":"Copiar los estiles","pasteStyles":"Pegar los estils","stroke":"Contorn","background":"Rèireplan","fill":"Empliment","strokeWidth":"Largor de contorn","strokeStyle":"Estil de contorn","strokeStyle_solid":"Solide","strokeStyle_dashed":"Tiret","strokeStyle_dotted":"Puntilhat","sloppiness":"Estil de traça","opacity":"Opacitat","textAlign":"Alinhament tèxt","edges":"Angles","sharp":"Ponchut","round":"Arredonit","arrowheads":"Cap de la flècha","arrowhead_none":"Cap","arrowhead_arrow":"Sageta","arrowhead_bar":"Barra","arrowhead_dot":"Ponch","arrowhead_triangle":"Triangle","fontSize":"Talha polissa","fontFamily":"Familha de polissa","addWatermark":"Apondre « Fabricat amb Excalidraw »","handDrawn":"A la man levada","normal":"Normala","code":"Còdi","small":"Pichona","medium":"Mejana","large":"Granda","veryLarge":"Gradassa","solid":"Solide","hachure":"Raia","zigzag":"","crossHatch":"Raia crosada","thin":"Fin","bold":"Espés","left":"Esquèrra","center":"Centre","right":"Drecha","extraBold":"Espesàs","architect":"Arquitècte","artist":"Artista","cartoonist":"Dessenhaire","fileTitle":"Nom del fichièr","colorPicker":"Selector de color","canvasColors":"Utilizada suls canabassses","canvasBackground":"Rèireplan del canabàs","drawingCanvas":"Zòna de dessenh","layers":"Calques","actions":"Accions","language":"Lenga","liveCollaboration":"Collaboracion en dirèct...","duplicateSelection":"Duplicar","untitled":"Sens títol","name":"Nom","yourName":"Vòstre nom","madeWithExcalidraw":"Fabricat amb Excalidraw","group":"Gropar la seleccion","ungroup":"Desunir la seleccion","collaborators":"Collaborators","showGrid":"Afichar la gresilha","addToLibrary":"Apondre a la bibliotèca","removeFromLibrary":"Suprimir de la bibliotèca","libraryLoadingMessage":"Cargament de la bibliotèca…","libraries":"Percórrer las bibliotècas","loadingScene":"Cargament de la scèna…","align":"Alinhament","alignTop":"Alinhar ennaut","alignBottom":"Alinhar enbàs","alignLeft":"Alinhar a esquèrra","alignRight":"Alinhar a drecha","centerVertically":"Centrar verticalament","centerHorizontally":"Centrar orizontalament","distributeHorizontally":"Distribuir orizontalament","distributeVertically":"Distribuir verticalament","flipHorizontal":"Virar orizontalament","flipVertical":"Virar verticalament","viewMode":"Mòde de vista","share":"Partejar","showStroke":"Mostrar lo selector de color de contorn","showBackground":"Mostrar lo selector de color de fons","toggleTheme":"Alternar tèma","personalLib":"Bibliotèca personala","excalidrawLib":"Bibliotèca Excalidraw","decreaseFontSize":"Reduire talha polissa","increaseFontSize":"Aumentar talha polissa","unbindText":"Dessociar lo tèxte","bindText":"Ligar lo tèxt al contenidor","createContainerFromText":"","link":{"edit":"Modificar lo ligam","editEmbed":"","create":"Crear un ligam","createEmbed":"","label":"Ligam","labelEmbed":"","empty":""},"lineEditor":{"edit":"Modificar la linha","exit":"Sortir de l’editor de linha"},"elementLock":{"lock":"Verrolhar","unlock":"Desverrolhar","lockAll":"Tot verrolhar","unlockAll":"Tot desverrolhar"},"statusPublished":"Publicat","sidebarLock":"Gardar la barra laterala dobèrta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Cap d’element pas encara apondut...","hint_emptyLibrary":"Seleccionatz un element d’apondre aquí, o installatz una bibliotèca del depaus public, çai-jos.","hint_emptyPrivateLibrary":"Seleccionatz un element d’apondre aquí pel canabàs."},"buttons":{"clearReset":"Reïnicializar lo canabàs","exportJSON":"Exportar en fichièr","exportImage":"Exportar imatges...","export":"Enregistrar dins...","copyToClipboard":"Copiar al quichapapièrs","save":"Salvar al fichièr actual","saveAs":"Enregistrar jos","load":"Dobrir","getShareableLink":"Obténer lo ligam de partatge","close":"Tampar","selectLanguage":"Causir una lenga","scrollBackToContent":"Tornar al contengut","zoomIn":"Zoom avant","zoomOut":"Zoom arrièr","resetZoom":"Tirar lo zoom","menu":"Menú","done":"Acabat","edit":"Modificar","undo":"Anullar","redo":"Restablir","resetLibrary":"Reïnicializar la bibliotèca","createNewRoom":"Crear sala novèla","fullScreen":"Ecran complèt","darkMode":"Mòde escur","lightMode":"Mòde clar","zenMode":"Mòde escur","objectsSnapMode":"","exitZenMode":"Sortir del mòde zen","cancel":"Anullar","clear":"Escafar","remove":"Tirar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Aquò suprimirà lo canabàs complèt. O volètz vertadièrament ?","couldNotCreateShareableLink":"Creacion impossibla del ligam de partatge.","couldNotCreateShareableLinkTooBig":"Creacion impossibla del ligam de partatge : la scèna es tròp granda","couldNotLoadInvalidFile":"Cargament impossible d’un fichièr invalid","importBackendFailed":"Importacion fracassada.","cannotExportEmptyCanvas":"Impossible d’exportar los canabasses voids.","couldNotCopyToClipboard":"Còpia impossibla al quichapapièrs.","decryptFailed":"Deschiframent impossible de las donadas.","uploadedSecurly":"Lo telecargament es estat securizat amb un chiframent del cap a la fin, significa que los servidors d’Excalidraw o que quina tèrça part que siá pòdon pas legir lo contengut.","loadSceneOverridePrompt":"Cargar un dessenh extèrn remplaçarà vòstre contengut existent. Volètz contunhar ?","collabStopOverridePrompt":"Arrestar la session remplaçarà vòstre precedent dessenh gardat localament. O volètz vertadièrament ?\\n\\n(Se volètz gardar vòstre dessenh local, tampatz simplament l’onglet del navegador a la plaça)","errorAddingToLibrary":"Apondon impossible de l’element a la bibliotèca","errorRemovingFromLibrary":"Supression impossibla de l’element a la bibliotèca","confirmAddLibrary":"Apondrà {{numShapes}} forma(s) a vòstra bibliotèca. Confirmatz ?","imageDoesNotContainScene":"Aqueste imatge sembla pas conténer cap de donadas de scèna. Avètz activat l’integracion de scèna pendent l’exportacion ?","cannotRestoreFromImage":"Restauracion impossibla de la scèna a partir del fichièr imatge","invalidSceneUrl":"Importacion impossibla de la scèna a partir de l’URL provesida. Es siá mal formatada o siá conten pas cap de donada JSON Excalidraw valida.","resetLibrary":"Aquò suprimirà vòstra bibliotèca. O volètz vertadièrament ?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la bibliotèca ?","invalidEncryptionKey":"La clau de chiframent deu conténer 22 caractèrs. La collaboracion en dirèct es desactivada.","collabOfflineWarning":"Cap de connexion pas disponibla.\\nVòstras modificacions seràn pas salvadas !"},"errors":{"unsupportedFileType":"Tipe de fichièr pas pres en carga.","imageInsertError":"Insercion d’imatge impossibla. Tornatz ensajar mai tard...","fileTooBig":"Fichièr tròp pesuc. La talha maximala autorizada es {{maxSize}}.","svgImageInsertError":"Insercion d’imatge SVG impossibla. Las balisas SVG semblan invalidas.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Connexion impossibla al servidor collab. Mercés de recargar la pagina e tornar ensajar.","importLibraryError":"Impossible de cargar la bibliotèca","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleccion","image":"Inserir imatge","rectangle":"Rectangle","diamond":"Lausange","ellipse":"Ellipsa","arrow":"Sageta","line":"Linha","freedraw":"Dessenhar","text":"Tèxt","library":"Bibliotèca","lock":"Mantenir activa l’aisina aprèp dessenhar","penMode":"Mòde estilo - empachar lo contact","link":"Apondre/Actualizar lo ligam per una fòrma seleccionada","eraser":"Goma","frame":"","embeddable":"","laser":"","hand":"Man (aisina de desplaçament de la vista)","extraTools":""},"headings":{"canvasActions":"Accions del canabàs","selectedShapeActions":"Accions per la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"","linearElement":"Clicatz per començar mantun punt, lisatz per una sola linha","freeDraw":"Clicatz e lisatz, relargatz un còp acabat","text":"Astúcia : podètz tanben apondre de tèxt en doble clicant ont que siá amb l’aisina de seleccion","embeddable":"","text_selected":"Clicatz dos còps o quichatz ENTRADA per modificar lo tèxt","text_editing":"Quichatz ESCAPAR o CtrlOrCmd+ENTRADA per acabar la modificacion","linearElementMulti":"Clicatz sul darrièr punt o quichatz Ecap o Entrada per acabar","lockAngle":"Podètz restrénger l’angle en mantenent MAJ","resize":"Podètz servar las proporcions en mantenent la tòca MAJ pendent lo redimensionament,\\nmantenètz la tòca ALT per redimensionar a partir del centre","resizeImage":"Podètz retalhar liurament en quichant CTRL,\\nquichatz ALT per retalhar a partir del centre","rotate":"Podètz restrénger los angles en mantenent MAJ pendent la rotacion","lineEditor_info":"Tenètz quichat Ctrl o Cmd e doble clic o quichatz Ctrl o Cmd + Entrada per modificar los ponches","lineEditor_pointSelected":"Quichar Suprimir per tirar lo(s) punt(s),\\nCtrlOCmd+D per duplicar, o lisatz per desplaçar","lineEditor_nothingSelected":"Seleccionar un punt d’editar (manténer Maj. per ne seleccionar mantun),\\no manténer Alt e clicar per n’apondre de novèls","placeImage":"Clicatz per plaçar l’imatge, o clicatz e lisatz per definir sa talha manualament","publishLibrary":"Publicar vòstra pròpria bibliotèca","bindTextToElement":"Quichatz Entrada per apondre de tèxte","deepBoxSelect":"Gardar CtrlOCmd per una seleccion gropada e empachar lo desplaçament","eraserRevert":"Tenètz quichat Alt per anullar los elements marcats per supression","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Afichatge impossible de l’apercebut","canvasTooBig":"Lo canabàs pòt èsser tròp grand.","canvasTooBigTip":"Astúcia : ensajatz de sarrar los elements mai alonhats."},"errorSplash":{"headingMain":"Una error s’es producha. Ensajatz ","clearCanvasMessage":"Se recargar fonciona pas, ensajatz ","clearCanvasCaveat":" Menarà a una pèrda del trabalh ","trackedToSentry":"Error amb l’identificant {{eventId}} es estada enregistrada sus nòstre sistèma.","openIssueMessage":"Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.","sceneContent":"Contengut de la scèna :"},"roomDialog":{"desc_intro":"Podètz convidar lo monde a vòstra scèna actuala per participar amb vos.","desc_privacy":"Vos en fagatz pas, la session utiliza lo chiframent del cap a la fin, çò que dessenetz demorarà privat. Mai nòstres servidors poiràn pas veire vòstra creacion.","button_startSession":"Començar la session","button_stopSession":"Arrestar la session","desc_inProgressIntro":"La session de collaboracion es ara en cors.","desc_shareLink":"Partejatz aqueste ligam amb lo monde amb qui volètz collaborar :","desc_exitSession":"Arrestar la session vos desconnectarà de la sala, mas poiretz contunhar de trabalhar a la scèna, en local. Notatz qu’aquò afectarà pas los autres, e poiràn collaborar a lor version.","shareTitle":"Rejonhètz una session collaborativa sus Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Salvar al disc","disk_details":"Exportar las donadas de la scèna cap a un fichièr que podètz importar mai tard.","disk_button":"Salvar al fichièr","link_title":"Ligam de partejar","link_details":"Exportar coma un ligam de lectura sola.","link_button":"Exportar en ligam","excalidrawplus_description":"Enregistrar la scèna dins vòstre espaci de trabalh Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Export impossibla cap a Excalidraw+ pel moment..."},"helpDialog":{"blog":"Legir nòstre blog","click":"clic","deepSelect":"Seleccion prigonda","deepBoxSelect":"Seleccionar demest un grop e empacha lo desplaçament","curvedArrow":"Sageta corba","curvedLine":"Linha corba","documentation":"Documentacion","doubleClick":"doble clic","drag":"lisar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Problèma trobat ? Senhalatz-lo","howto":"Seguissètz nòstras guidas","or":"o","preventBinding":"Empachar la fixacion de sagetas","tools":"Aisinas","shortcuts":"Acorchis clavièr","textFinish":"Terminar l’edicion (editor de tèxt)","textNewLine":"Apondre linha novèl (editor de tèxt)","title":"Ajuda","view":"Vista","zoomToFit":"Zoomar per veire totes los elements","zoomToSelection":"Zoomar la seleccion","toggleElementLock":"Verrolhar/Desverrolhar la seleccion","movePageUpDown":"Desplaçar la pagina ennaut/enbàs","movePageLeftRight":"Desplaçar la pagina a esquèrra/drecha"},"clearCanvasDialog":{"title":"Escafar canabàs"},"publishDialog":{"title":"Publicar la bibliotèca","itemName":"Nom de l’element","authorName":"Nom de l’autor","githubUsername":"Nom d’utilizaire GitHub","twitterUsername":"Nom d’utilizaire Twitter","libraryName":"Nom de la bibliotèca","libraryDesc":"Descripcion de la bibliotèca","website":"Site web","placeholder":{"authorName":"Vòstre nom o nom d’utilizaire","libraryName":"Nom de vòstra bibliotèca","libraryDesc":"Descripcion de vòstra bibliotèca per ajudar lo monde a comprendre son utilizacion","githubHandle":"GitHub handle(opcional), per poder modificar la bibliotèca un còp enviada per repassa","twitterHandle":"Nom d’utilizaire Twitter (opcional), per saber qual mercejar quand ne parlam sus Twitter","website":"Ligam cap a vòstre site web personal o endacòm mai (opcional)"},"errors":{"required":"Requerit","website":"Picatz una URL valida"},"noteDescription":"Enviatz vòstra bibliotèca per èsser compresa al repertòri public de bibliotècaper que los autres l’utilizen dins lor dessenhs.","noteGuidelines":"Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las linhas directrises abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri.","noteLicense":"En sometent, acceptatz que la bibliotèca siá publicada sota la Licéncia MIT, que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion.","noteItems":"Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses :","atleastOneLibItem":"Volgatz seleccionar almens un element de bibliotèca per començar","republishWarning":"Nòta : d’unes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent l’actualizacion d’una bibliotèca existenta o un mandadís."},"publishSuccessDialog":{"title":"Bibliotèca somesa","content":"Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançamentaquí"},"confirmDialog":{"resetLibrary":"Reïnicializar la bibliotèca","removeItemsFromLib":"Tirar los elements seleccionats de la bibliotèca"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Vòstres dessenhs son chifrats del cap a la fin en consequéncia los servidors d’Excalidraw los veiràn pas jamai.","link":"Article de blòg sul chiframent del cap a la fin dins Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Nautor","scene":"Scèna","selected":"Seleccionat","storage":"Emmagazinatge","title":"Estatisticas pels nerds","total":"Total","version":"Version","versionCopy":"Clicar per copiar","versionNotAvailable":"Version pas disponibla","width":"Largor"},"toast":{"addedToLibrary":"Apondut a la bibliotèca","copyStyles":"Estiles copiats.","copyToClipboard":"Copiats al quichapapièrs.","copyToClipboardAsPng":"{{exportSelection}} copiat coma PNG ({{exportColorScheme}})","fileSaved":"Fichièr enregistrat.","fileSavedToFilename":"Enregistrat jos {filename}","canvas":"canabàs","selection":"seleccion","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparéncia","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totas las donadas son enregistradas dins vòstre navegador.","center_heading_plus":"Voliatz puslèu utilizar Excalidraw+ a la plaça ?","menuHint":"Exportar, preferéncias, lengas, ..."},"defaults":{"menuHint":"Exportar, preferéncias, e mai...","center_heading":"Diagram. Tot. Simplament.","toolbarHint":"Prenètz un esplech e començatz de dessenhar !","helpHint":"Acorchis e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js b/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js new file mode 100644 index 0000000..d36b381 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3162],{6773:function(e){e.exports=JSON.parse('{"labels":{"paste":"ਪੇਸਟ ਕਰੋ","pasteAsPlaintext":"ਸਾਦੇ ਪਾਠ ਵਜੋਂ ਪੇਸਟ ਕਰੋ","pasteCharts":"ਚਾਰਟ ਪੇਸਟ ਕਰੋ","selectAll":"ਸਾਰੇ ਚੁਣੋ","multiSelect":"ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ","moveCanvas":"ਕੈਨਵਸ ਹਿਲਾਓ","cut":"ਕੱਟੋ","copy":"ਕਾਪੀ ਕਰੋ","copyAsPng":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyAsSvg":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ SVG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyText":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਪਾਠ ਵਜੋਂ ਕਾਪੀ ਕਰੋ","bringForward":"ਅੱਗੇ ਲਿਆਓ","sendToBack":"ਸਭ ਤੋਂ ਪਿੱਛੇ ਭੇਜੋ","bringToFront":"ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ","sendBackward":"ਪਿੱਛੇ ਭੇਜੋ","delete":"ਮਿਟਾਓ","copyStyles":"ਸਟਾਇਲ ਕਾਪੀ ਕਰੋ","pasteStyles":"ਸਟਾਇਲ ਪੇਸਟ ਕਰੋ","stroke":"ਰੇਖਾ","background":"ਬੈਕਗਰਾਉਂਡ","fill":"ਭਰਨਾ","strokeWidth":"ਰੇਖਾ ਦੀ ਚੌੜਾਈ","strokeStyle":"ਰੇਖਾ ਦਾ ਸਟਾਇਲ","strokeStyle_solid":"ਠੋਸ","strokeStyle_dashed":"ਡੈਸ਼ ਵਾਲੀ","strokeStyle_dotted":"ਬਿੰਦੀਆਂ ਵਾਲੀ","sloppiness":"ਬੇਤਰਤੀਬੀ","opacity":"ਅਪਾਰਦਰਸ਼ਤਾ","textAlign":"ਲਿਖਤ ਇਕਸਾਰਤਾ","edges":"ਕਿਨਾਰੇ","sharp":"ਤਿੱਖੇ","round":"ਗੋਲ","arrowheads":"ਤੀਰ ਦੇ ਸਿਰੇ","arrowhead_none":"ਕੋਈ ਨਹੀਂ","arrowhead_arrow":"ਤੀਰ","arrowhead_bar":"ਡੰਡੀ","arrowhead_dot":"ਬਿੰਦੀ","arrowhead_triangle":"ਤਿਕੋਣ","fontSize":"ਫੌਂਟ ਅਕਾਰ","fontFamily":"ਫੌਂਟ ਪਰਿਵਾਰ","addWatermark":"\\"Excalidraw ਨਾਲ ਬਣਾਇਆ\\" ਜੋੜੋ","handDrawn":"ਹੱਥਲਿਖਤ","normal":"ਆਮ","code":"ਕੋਡ","small":"ਛੋਟਾ","medium":"ਮੱਧਮ","large":"ਵੱਡਾ","veryLarge":"ਬਹੁਤ ਵੱਡਾ","solid":"ਠੋਸ","hachure":"ਤਿਰਛੀਆਂ ਗਰਿੱਲਾਂ","zigzag":"ਵਿੰਗ-ਤੜਿੰਗ","crossHatch":"ਜਾਲੀ","thin":"ਪਤਲੀ","bold":"ਮੋਟੀ","left":"ਖੱਬੇ","center":"ਵਿਚਕਾਰ","right":"ਸੱਜੇ","extraBold":"ਬਹੁਤ ਮੋਟੀ","architect":"ਭਵਨ ਨਿਰਮਾਣਕਾਰੀ","artist":"ਕਲਾਕਾਰ","cartoonist":"ਕਾਰਟੂਨਿਸਟ","fileTitle":"ਫਾਈਲ ਦਾ ਨਾਂ","colorPicker":"ਰੰਗ ਚੋਣਕਾਰ","canvasColors":"ਕੈਨਵਸ \'ਤੇ ਵਰਤਿਆ","canvasBackground":"ਕੈਨਵਸ ਦਾ ਬੈਕਗਰਾਉਂਡ","drawingCanvas":"ਡਰਾਇੰਗ ਕੈਨਵਸ","layers":"ਪਰਤਾਂ","actions":"ਕਾਰਵਾਈਆਂ","language":"ਭਾਸ਼ਾ","liveCollaboration":"ਲਾਇਵ ਸਹਿਯੋਗ...","duplicateSelection":"ਡੁਪਲੀਕੇਟ ਬਣਾਓ","untitled":"ਬੇ-ਸਿਰਨਾਵਾਂ","name":"ਨਾਂ","yourName":"ਤੁਹਾਡਾ ਨਾਂ","madeWithExcalidraw":"Excalidraw ਨਾਲ ਬਣਾਇਆ","group":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ","ungroup":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ","collaborators":"ਸਹਿਯੋਗੀ","showGrid":"ਜਾਲੀ ਦਿਖਾਓ","addToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ","removeFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ \'ਚੋਂ ਹਟਾਓ","libraryLoadingMessage":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…","libraries":"ਲਾਇਬ੍ਰੇਰੀਆਂ ਬਰਾਉਜ਼ ਕਰੋ","loadingScene":"ਦ੍ਰਿਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…","align":"ਇਕਸਾਰ","alignTop":"ਉੱਪਰ ਇਕਸਾਰ ਕਰੋ","alignBottom":"ਹੇਠਾਂ ਇਕਸਾਰ ਕਰੋ","alignLeft":"ਖੱਬੇ ਇਕਸਾਰ ਕਰੋ","alignRight":"ਸੱਜੇ ਇਕਸਾਰ ਕਰੋ","centerVertically":"ਲੇਟਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","centerHorizontally":"ਖੜ੍ਹਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","distributeHorizontally":"ਖੜ੍ਹਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","distributeVertically":"ਲੇਟਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","flipHorizontal":"ਲੇਟਵੇਂ ਪਾਸੇ ਪਲਟੋ","flipVertical":"ਖੜ੍ਹਵੇਂ ਪਾਸੇ ਪਲਟੋ","viewMode":"ਦੇਖਣ ਵਾਲਾ ਮੋਡ","share":"ਸਾਂਝਾ ਕਰੋ","showStroke":"ਰੇਖਾ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","showBackground":"ਬੈਕਗਰਾਉਂਡ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","toggleTheme":"ਥੀਮ ਬਦਲੋ","personalLib":"ਨਿੱਜੀ ਲਾਇਬ੍ਰੇਰੀ","excalidrawLib":"ਐਕਸਕਲੀਡਰਾਅ ਲਾਇਬ੍ਰੇਰੀ","decreaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਘਟਾਓ","increaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਵਧਾਓ","unbindText":"ਪਾਠ ਨੂੰ ਵੱਖ ਕਰੋ","bindText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਨਾਲ ਬੰਨ੍ਹੋ","createContainerFromText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ","link":{"edit":"ਕੜੀ ਸੋਧੋ","editEmbed":"","create":"ਕੜੀ ਬਣਾਓ","createEmbed":"","label":"ਕੜੀ","labelEmbed":"","empty":""},"lineEditor":{"edit":"ਪੰਕਤੀ ਸੋਧੋ","exit":"ਪੰਕਤੀ ਸੋਧਕ \'ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ"},"elementLock":{"lock":"ਲਾਕ ਕਰੋ","unlock":"ਅਨਲਾਕ ਕਰੋ","lockAll":"ਸਭ ਲਾਕ ਕਰੋ","unlockAll":"ਸਭ ਅਨਲਾਕ ਕਰੋ"},"statusPublished":"ਪ੍ਰਕਾਸ਼ਤ ਹੈ","sidebarLock":"ਸਾਈਡਬਾਰ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖੋ","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ਹਾਲੇ ਤੱਕ ਕੋਈ ਚੀਜ ਜੋੜੀ ਨਹੀਂ ਗਈ...","hint_emptyLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ, ਜਾਂ ਹੇਠਾਂ ਪਬਲਿਕ ਰਿਪਾਜ਼ੀਟਰੀ ‘ਚੋਂ ਲਾਇਬ੍ਰੇਰੀ ਸਥਾਪਤ ਕਰੋ।","hint_emptyPrivateLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ।"},"buttons":{"clearReset":"ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ","exportJSON":"ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportImage":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ...","export":"ਇਸ ਵਿੱਚ ਸਾਂਭੋ...","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕਰੋ","save":"ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","saveAs":"ਇਸ ਵਜੋਂ ਸਾਂਭੋ","load":"ਖੋਲ੍ਹੋ","getShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ","close":"ਬੰਦ ਕਰੋ","selectLanguage":"ਭਾਸ਼ਾ ਚੁਣੋ","scrollBackToContent":"ਸਮੱਗਰੀ \'ਤੇ ਵਾਪਸ ਸਕਰੋਲ ਕਰੋ","zoomIn":"ਜ਼ੂਮ ਵਧਾਓ","zoomOut":"ਜ਼ੂਮ ਘਟਾਓ","resetZoom":"ਜ਼ੂਮ ਰੀਸੈੱਟ ਕਰੋ","menu":"ਮੇਨੂ","done":"ਹੋ ਗਿਆ","edit":"ਸੋਧੋ","undo":"ਅਣਕੀਤਾ ਕਰੋ","redo":"ਮੁੜ-ਕਰੋ","resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","createNewRoom":"ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ","fullScreen":"ਪੂਰੀ ਸਕਰੀਨ","darkMode":"ਡਾਰਕ ਮੋਡ","lightMode":"ਲਾਇਟ ਮੋਡ","zenMode":"ਜ਼ੈੱਨ ਮੋਡ","objectsSnapMode":"","exitZenMode":"ਜ਼ੈੱਨ ਮੋਡ \'ਚੋਂ ਬਾਹਰ ਨਿਕਲੋ","cancel":"ਰੱਦ ਕਰੋ","clear":"ਸਾਫ਼ ਕਰੋ","remove":"ਹਟਾਓ","embed":"","publishLibrary":"ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","submit":"ਜਮ੍ਹਾ ਕਰਵਾਓ","confirm":"ਪੁਸ਼ਟੀ ਕਰੋ","embeddableInteractionButton":""},"alerts":{"clearReset":"ਇਹ ਸਾਰਾ ਕੈਨਵਸ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","couldNotCreateShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ।","couldNotCreateShareableLinkTooBig":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ: ਦ੍ਰਿਸ਼ ਬਹੁਤ ਵੱਡਾ ਹੈ","couldNotLoadInvalidFile":"ਨਜਾਇਜ਼ ਫਾਈਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕੇ","importBackendFailed":"ਬੈਕਐੱਨਡ ਤੋਂ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।","cannotExportEmptyCanvas":"ਖਾਲੀ ਕੈਨਵਸ ਨੂੰ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ।","couldNotCopyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।","decryptFailed":"ਡਾਟਾ ਡੀਕਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕੇ।","uploadedSecurly":"ਅੱਪਲੋਡ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤੀ ਹੋਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ Excalidraw ਸਰਵਰ ਅਤੇ ਤੀਜੀ ਧਿਰ ਦੇ ਬੰਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੇ।","loadSceneOverridePrompt":"ਬਾਹਰੀ ਡਰਾਇੰਗ ਨੂੰ ਲੋਡ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸਮੱਗਰੀ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?","collabStopOverridePrompt":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਪਿਛਲੀ ਲੋਕਲ ਸਾਂਭੀ ਡਰਾਇੰਗ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?\\n\\n(ਜੇ ਤੁਸੀਂ ਆਪਣੀ ਲੋਕਲ ਡਰਾਇੰਗ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਹ ਕਰਨ ਦੀ ਬਜਾਏ ਬੱਸ ਆਪਣਾ ਟੈਬ ਬੰਦ ਕਰ ਦਿਉ।)","errorAddingToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸਮੱਗਰੀ ਨਹੀਂ ਜੋੜ ਸਕੇ","errorRemovingFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਸਮੱਗਰੀ ਨਹੀਂ ਹਟਾ ਸਕੇ","confirmAddLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","imageDoesNotContainScene":"ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਤੁਸੀਂ ਨਿਰਯਾਤ ਕਰਦੇ ਸਮੇਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਮੜ੍ਹਣਾ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?","cannotRestoreFromImage":"ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ","invalidSceneUrl":"ਦਿੱਤੀ ਗਈ URL \'ਚੋਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ। ਇਹ ਜਾਂ ਤਾਂ ਖਰਾਬ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਾਇਜ਼ Excalidraw JSON ਡਾਟਾ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।","resetLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","removeItemsFromsLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ {{count}} ਚੀਜ਼(-ਜ਼ਾਂ) ਮਿਟਾਉਣੀਆਂ ਹਨ?","invalidEncryptionKey":"ਇਨਕਰਿਪਸ਼ਨ ਕੁੰਜੀ ‌‌22 ਅੱਖਰਾਂ ਦੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਲਾਇਵ ਸਹਿਯੋਗ ਬੰਦ ਹੈ।","collabOfflineWarning":"ਕੋਈ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ\\nਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੀਆਂ ਨਹੀਂ ਜਾਣਗੀਆਂ।"},"errors":{"unsupportedFileType":"ਫਾਈਲ ਦੀ ਕਿਸਮ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।","imageInsertError":"ਚਿੱਤਰ ਸ਼ਾਮਲ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ...","fileTooBig":"ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ। ਵੱਧ-ਤੋਂ-ਵੱਧ ਪ੍ਰਵਾਨਤ ਅਕਾਰ {{maxSize}} ਹੈ।","svgImageInsertError":"SVG ਤਸਵੀਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕਰ ਸਕੇ। SVG ਮਾਰਕ-ਅੱਪ ਨਜਾਇਜ਼ ਲੱਗ ਰਿਹਾ ਹੈ।","failedToFetchImage":"","invalidSVGString":"SVG ਨਜਾਇਜ਼ ਹੈ।","cannotResolveCollabServer":"","importLibraryError":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ਚੋਣਕਾਰ","image":"ਤਸਵੀਰ ਸ਼ਾਮਲ ਕਰੋ","rectangle":"ਆਇਤ","diamond":"ਹੀਰਾ","ellipse":"ਅੰਡਾਕਾਰ","arrow":"ਤੀਰ","line":"ਲਕੀਰ","freedraw":"ਵਾਹੋ","text":"ਪਾਠ","library":"ਲਾਇਬ੍ਰੇਰੀ","lock":"ਡਰਾਇੰਗ ਤੋਂ ਬਾਅਦ ਵੀ ਚੁਣੇ ਹੋਏ ਸੰਦ ਨੂੰ ਸਰਗਰਮ ਰੱਖੋ ","penMode":"ਪੈੱਨ ਮੋਡ - ਟੱਚ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ","link":"","eraser":"ਰਬੜ","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ਕੈਨਵਸ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","selectedShapeActions":"ਚੁਣੀ ਆਕ੍ਰਿਤੀ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","shapes":"ਆਕ੍ਰਿਤੀਆਂ"},"hints":{"canvasPanning":"","linearElement":"ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਬਿੰਦੂਆਂ ਲਈ ਕਲਿੱਕ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ, ਇਕਹਿਰੀ ਲਕੀਰ ਲਈ ਘਸੀਟੋ","freeDraw":"ਕਲਿੱਕ ਕਰਕੇ ਘਸੀਟੋ, ਪੂਰਾ ਹੋਣ \'ਤੇ ਛੱਡ ਦਿਉ","text":"ਨੁਸਖਾ: ਤੁਸੀਂ ਚੋਣਕਾਰ ਸੰਦ ਰਾਹੀਂ ਕਿਤੇ ਵੀ ਡਬਲ-ਕਲਿੱਕ ਕਰਕੇ ਵੀ ਪਾਠ ਜੋੜ ਸਕਦੇ ਹੋ","embeddable":"","text_selected":"ਪਾਠ ਨੂੰ ਸੋਧਣ ਲਈ ਡਬਲ-ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","text_editing":"ਸੋਧ ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਐਸਕੇਪ (Esc) ਜਾਂ Ctrl-ਜਾਂ-Cmd+ਐਂਟਰ (enter) ਦਬਾਓ","linearElementMulti":"ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਆਖਰੀ ਬਿੰਦੂ \'ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਇਸਕੇਪ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","lockAngle":"ਤੁਸੀਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","resize":"ਤੁਸੀਂ ਅਕਾਰ ਬਦਲਦੇ ਸਮੇਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਅਨੁਪਾਤ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ, ਵਿਚਕਾਰ ਤੋਂ ਅਕਾਰ ਬਦਲਣ ਲਈ ALT ਦਬਾਓ","resizeImage":"","rotate":"ਤੁਸੀਂ ਘੁਮਾਉਂਦੇ ਹੋਏ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ","bindTextToElement":"ਪਾਠ ਜੋੜਨ ਲਈ ਐੰਟਰ ਦਬਾਓ","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"ਝਲਕ ਨਹੀਂ ਦਿਖਾ ਸਕਦੇ","canvasTooBig":"ਸ਼ਾਇਦ ਕੈਨਵਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡਾ ਹੈ।","canvasTooBigTip":"ਨੁਸਖਾ: ਸਭ ਤੋਂ ਦੂਰ ਸਥਿੱਤ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਨੇੜੇ ਲਿਆ ਕੇ ਦੇਖੋ।"},"errorSplash":{"headingMain":"ਕੋਈ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ। ਕਰਕੇ ਦੇਖੋ।","clearCanvasMessage":"ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ ","clearCanvasCaveat":" ਇਹ ਸਾਰਾ ਕੰਮ ਗਵਾ ਦੇਵੇਗਾ ","trackedToSentry":"ਸੂਚਕ {{eventId}} ਵਾਲੀ ਸਮੱਸਿਆ ਸਾਡੇ ਸਿਸਟਮ \'ਤੇ ਟਰੈਕ ਕੀਤੀ ਗਈ ਸੀ।","openIssueMessage":"ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ \'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।","sceneContent":"ਦ੍ਰਿਸ਼ ਦੀ ਸਮੱਗਰੀ:"},"roomDialog":{"desc_intro":"ਤੁਸੀਂ ਲੋਕਾਂ ਨੂੰ ਆਪਣੇ ਨਾਲ ਮੌਜੂਦਾ ਦ੍ਰਿਸ਼ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਲਈ ਸੱਦਾ ਭੇਜ ਸਕਦੇ ਹੋ।","desc_privacy":"ਫਿਕਰ ਨਾ ਕਰੋ, ਇਜਲਾਸ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਵਰਤਦਾ ਹੈ, ਸੋ ਜੋ ਕੁਝ ਵੀ ਤੁਸੀਂ ਵਾਹੁੰਦੇ ਹੋ ਉਹ ਨਿੱਜੀ ਹੀ ਰਹਿੰਦਾ ਹੈ। ਇੱਥੋਂ ਤੱਕ ਕਿ ਸਾਡੇ ਸਰਵਰ ਵੀ ਨਹੀਂ ਜਾਣ ਸਕਣਗੇ ਕਿ ਤੁਸੀਂ ਕੀ ਬਣਾਇਆ ਹੈ।","button_startSession":"ਇਜਲਾਸ ਸ਼ੁਰੂ ਕਰੋ","button_stopSession":"ਇਜਲਾਸ ਰੋਕੋ","desc_inProgressIntro":"ਲਾਇਵ ਸਹਿਯੋਗ ਇਜਲਾਸ ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ।","desc_shareLink":"ਇਸ ਲਿੰਕ ਨੂੰ ਉਹਨਾਂ ਨਾਲ ਸਾਂਝਾ ਕਰੋ ਜਿਹਨਾਂ ਨਾਲ ਤੁਸੀਂ ਸਹਿਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ:","desc_exitSession":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਤੁਹਾਡਾ ਕਮਰੇ ਨਾਲੋਂ ਨਾਤਾ ਤੋੜ ਦੇਵੇਗਾ, ਪਰ ਤੁਸੀਂ ਸਥਾਨਕ ਪੱਧਰ \'ਤੇ ਦ੍ਰਿਸ਼ ਨਾਲ ਕੰਮ ਕਰਨਾ ਜਾਰੀ ਰੱਖ ਸਕੋਗੇ। ਇਹ ਧਿਆਨ \'ਚ ਰੱਖੋ ਕਿ ਇਹ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰੇਗਾ , ਅਤੇ ਉਹ ਹਾਲੇ ਵੀ ਆਪਣੇ ਸੰਸਕਰਨ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਦੇ ਕਾਬਲ ਹੋਣਗੇ।","shareTitle":"Excalidraw \'ਤੇ ਲਾਈਵ ਇਜਲਾਸ ਦਾ ਹਿੱਸਾ ਬਣੋ"},"errorDialog":{"title":"ਗਲਤੀ"},"exportDialog":{"disk_title":"ਡਿਸਕ ਵਿੱਚ ਸਾਂਭੋ","disk_details":"ਦ੍ਰਿਸ਼ ਦਾ ਡਾਟਾ ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ ਜਿੱਥੋਂ ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਆਯਾਤ ਕਰ ਸਕਦੇ ਹੋ।","disk_button":"ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","link_title":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ","link_details":"ਸਿਰਫ ਦੇਖੇ-ਜਾਣ ਵਾਲੀ ਲਿੰਕ ਵਜੋਂ ਨਿਰਯਾਤ ਕਰੋ।","link_button":"ਲਿੰਕ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_description":"ਆਪਣੇ ਦ੍ਰਿਸ਼ ਦੇ ਡਾਟੇ ਨੂੰ Excalidraw+ ਵਰਕਸਪੇਸ ਵਿੱਚ ਸਾਂਭੋ।","excalidrawplus_button":"ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_exportError":"ਇਸ ਸਮੇਂ Excalidraw+ ਵਿੱਚ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ..."},"helpDialog":{"blog":"ਸਾਡਾ ਬਲੌਗ ਪੜ੍ਹੋ","click":"ਕਲਿੱਕ","deepSelect":"","deepBoxSelect":"","curvedArrow":"ਵਿੰਗਾ ਤੀਰ","curvedLine":"ਵਿੰਗੀ ਲਕੀਰ","documentation":"ਕਾਗਜ਼ਾਤ","doubleClick":"ਡਬਲ-ਕਲਿੱਕ","drag":"ਘਸੀਟੋ","editor":"ਸੋਧਕ","editLineArrowPoints":"","editText":"","github":"ਕੋਈ ਸਮੱਸਿਆ ਲੱਭੀ? ਜਮ੍ਹਾਂ ਕਰਵਾਓ","howto":"ਸਾਡੀਆਂ ਗਾਈਡਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ","or":"ਜਾਂ","preventBinding":"ਤੀਰ ਬੱਝਣਾ ਰੋਕੋ","tools":"ਟੂਲ","shortcuts":"ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ","textFinish":"ਸੋਧਣਾ ਮੁਕੰਮਲ ਕਰੋ (ਪਾਠ ਸੋਧਕ)","textNewLine":"ਨਵੀਂ ਪੰਕਤੀ ਜੋੜੋ (ਪਾਠ ਸੋਧਕ)","title":"ਮਦਦ","view":"ਦਿੱਖ","zoomToFit":"ਸਾਰੇ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ","zoomToSelection":"ਚੋਣ ਤੱਕ ਜ਼ੂਮ ਕਰੋ","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"ਕੈਨਵਸ ਨੂੰ ਸਾਫ਼ ਕਰੋ"},"publishDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","itemName":"ਚੀਜ਼ ਦਾ ਨਾਂ","authorName":"ਲੇਖਕ ਦਾ ਨਾਂ","githubUsername":"ਗਿੱਟਹੱਬ ਵਰਤੋਂਕਾਰ ਨਾਂ","twitterUsername":"ਟਵਿੱਟਰ ਦਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ","website":"ਵੈੱਬਸਾਇਟ","placeholder":{"authorName":"ਤੁਹਾਡਾ ਨਾਂ ਜਾਂ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਤੁਹਾਡੀ ਲਾਇਬਰ੍ਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ ਤਾਂ ਜੋ ਲੋਕਾਂ ਨੂੰ ਇਸ ਤੋੰਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨ ਸਬੰਧੀ ਮਦਦ ਮਿਲ ਸਕੇ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"ਲੋੜੀਂਦਾ","website":"ਜਾਇਜ਼ URL ਭਰੋ"},"noteDescription":"ਹੋਰ ਲੋਕਾਂ ਵੱਲੋਂ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਵਰਤਣ ਲਈ ਸਕਣ ਇਸ ਲਈਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ ਵਿੱਚ ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਕਰਵਾਉਣ ਲਈ ਜਮ੍ਹਾ ਕਰਵਾਓ","noteGuidelines":"ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼","noteLicense":"MIT ਲਾਇਸੈਂਸ, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਜਮ੍ਹਾਂ ਕਰਵਾਈ","content":"ਧੰਨਵਾਦ {{authorName}} ਜੀਉ। ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਮੀਖਿਆ ਲਈ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਉਸਦੀ ਸਥਿਤੀ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ।"},"confirmDialog":{"resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","removeItemsFromLib":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ"},"imageExportDialog":{"header":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ","label":{"withBackground":"ਪਿਛੋਕੜ","onlySelected":"ਸਿਰਫ ਚੁਣੇ ਹੋਏ","darkMode":"ਡਾਰਕ ਮੋਡ","embedScene":"ਦ੍ਰਿਸ਼ ਮੜ੍ਹੋ","scale":"ਸਕੇਲ","padding":"ਪੈਡਿੰਗ"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportToSvg":"SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","copyPngToClipboard":"PNG ਨੂੰ ਕਲਿੱਪੋਬਰਡ ‘ਤੇ ਕਾਪੀ ਕਰੋ"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"ਗੱਤੇ \'ਤੇ ਕਾਪੀ ਕਰੋ"}},"encrypted":{"tooltip":"ਤੁਹਾਡੀ ਡਰਾਇੰਗਾਂ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਟ ਕੀਤੀਆਂ ਹੋਈਆਂ ਹਨ, ਇਸ ਲਈ Excalidraw ਦੇ ਸਰਵਰ ਉਹਨਾਂ ਨੂੰ ਕਦੇ ਵੀ ਨਹੀਂ ਦੇਖਣਗੇ।","link":"Excalidraw ਵਿੱਚ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕ੍ਰਿਪਸ਼ਨ \'ਤੇ ਬਲੌਗ ਸੰਪਾਦਨਾ"},"stats":{"angle":"ਕੋਣ","element":"ਐਲੀਮੈਂਟ","elements":"ਐਲੀਮੈਂਟ","height":"ਉਚਾਈ","scene":"ਦ੍ਰਿਸ਼","selected":"ਚੁਣੇ","storage":"ਸਟੋਰੇਜ","title":"ਪੜਾਕੂਆਂ ਲਈ ਅੰਕੜੇ","total":"ਕੁੱਲ","version":"ਸੰਸਕਰਨ","versionCopy":"ਕਾਪੀ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ","versionNotAvailable":"ਸੰਸਕਰਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ","width":"ਚੌੜਾਈ"},"toast":{"addedToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜਿਆ","copyStyles":"ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕੀਤਾ।","copyToClipboardAsPng":"{{exportSelection}} ਨੂੰ ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ ({{exportColorScheme}})","fileSaved":"ਫਾਈਲ ਸਾਂਭੀ ਗਈ।","fileSavedToFilename":"{filename} ਵਿੱਚ ਸਾਂਭੀ","canvas":"ਕੈਨਵਸ","selection":"ਚੋਣ","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ਪਾਰਦਰਸ਼ੀ","black":"ਕਾਲੀ","white":"ਸਫ਼ੈਦ","red":"ਲਾਲ","pink":"ਗੁਲਾਬੀ","grape":"ਅੰਗੂਰੀ","violet":"ਜਾਮਣੀ","gray":"ਸੁਰਮਈ","blue":"ਨੀਲਾ","cyan":"ਫਿਰੋਜੀ","teal":"ਟੀਲ","green":"ਹਰਾ","yellow":"ਪੀਲਾ","orange":"ਸੰਤਰੀ","bronze":"ਕਾਂਸੇਰੰਗਾ"},"welcomeScreen":{"app":{"center_heading":"ਤੁਹਾਡਾ ਸਾਰਾ ਡਾਟਾ ਤੁਹਾਡੇ ਲੋਕਲ ਬਰਾਉਜ਼ਰ ਵਿੱਚ ਸਾਂਭਿਆ ਹੋਇਆ ਹੈ।","center_heading_plus":"","menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਭਾਸ਼ਾਵਾਂ, …"},"defaults":{"menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਅਤੇ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ…","center_heading":"ਡਾਇਆਗ੍ਰਾਮਾਂ। ਕੀਤੀਆਂ। ਸੁਖਾਲੀਆਂ।","toolbarHint":"","helpHint":"ਸ਼ਾਰਟਕੱਟ ਤੇ ਮਦਦ"}},"colorPicker":{"mostUsedCustomColors":"ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕਸਟਮ ਰੰਗ","colors":"ਰੰਗ","shades":"ਸ਼ੇਡਾਂ","hexCode":"ਹੈਕਸ ਕੋਡ","noShades":"ਇਸ ਰੰਗ ਦੀ ਕੋਈ ਸ਼ੇਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js b/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js new file mode 100644 index 0000000..95a0f42 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3674],{3661:function(e){e.exports=JSON.parse('{"labels":{"paste":"Wklej","pasteAsPlaintext":"Wklej jako zwykły tekst","pasteCharts":"Wklej wykresy","selectAll":"Zaznacz wszystko","multiSelect":"Dodaj element do zaznaczenia","moveCanvas":"Przesuń obszar roboczy","cut":"Wytnij","copy":"Kopiuj","copyAsPng":"Skopiuj do schowka jako plik PNG","copyAsSvg":"Skopiuj do schowka jako plik SVG","copyText":"Skopiuj do schowka jako tekst","bringForward":"Przenieś wyżej","sendToBack":"Przenieś na spód","bringToFront":"Przenieś na wierzch","sendBackward":"Przenieś niżej","delete":"Usuń","copyStyles":"Kopiuj style","pasteStyles":"Wklej style","stroke":"Kolor obramowania","background":"Kolor wypełnienia","fill":"Wypełnienie","strokeWidth":"Grubość obramowania","strokeStyle":"Styl obrysu","strokeStyle_solid":"Pełny","strokeStyle_dashed":"Kreskowany","strokeStyle_dotted":"Kropkowany","sloppiness":"Styl kreski","opacity":"Przeźroczystość","textAlign":"Wyrównanie tekstu","edges":"Krawędzie","sharp":"Ostry","round":"Zaokrąglij","arrowheads":"Groty","arrowhead_none":"Brak","arrowhead_arrow":"Strzałka","arrowhead_bar":"Kreska","arrowhead_dot":"Kropka","arrowhead_triangle":"Trójkąt","fontSize":"Rozmiar tekstu","fontFamily":"Krój pisma","addWatermark":"Dodaj \\"Zrobione w Excalidraw\\"","handDrawn":"Odręczny","normal":"Normalny","code":"Kod","small":"Mały","medium":"Średni","large":"Duży","veryLarge":"Bardzo duży","solid":"Pełne","hachure":"Linie","zigzag":"Zygzak","crossHatch":"Zakreślone","thin":"Cienkie","bold":"Pogrubione","left":"Do lewej","center":"Do środka","right":"Do prawej","extraBold":"Ekstra pogrubione","architect":"Dokładny","artist":"Artystyczny","cartoonist":"Rysunkowy","fileTitle":"Nazwa pliku","colorPicker":"Paleta kolorów","canvasColors":"Używane na płótnie","canvasBackground":"Kolor dokumentu","drawingCanvas":"Obszar roboczy","layers":"Warstwy","actions":"Akcje","language":"Język","liveCollaboration":"Współpraca w czasie rzeczywistym...","duplicateSelection":"Powiel","untitled":"Bez tytułu","name":"Nazwa","yourName":"Twoje imię","madeWithExcalidraw":"Zrobione w Excalidraw","group":"Zgrupuj wybrane","ungroup":"Rozgrupuj wybrane","collaborators":"Współtwórcy","showGrid":"Pokaż siatkę","addToLibrary":"Dodaj do biblioteki","removeFromLibrary":"Usuń z biblioteki","libraryLoadingMessage":"Wczytywanie biblioteki…","libraries":"Przeglądaj biblioteki","loadingScene":"Wczytywanie sceny…","align":"Wyrównaj","alignTop":"Wyrównaj do góry","alignBottom":"Wyrównaj do dołu","alignLeft":"Wyrównaj do lewej","alignRight":"Wyrównaj do prawej","centerVertically":"Wyśrodkuj w pionie","centerHorizontally":"Wyśrodkuj w poziomie","distributeHorizontally":"Rozłóż poziomo","distributeVertically":"Rozłóż pionowo","flipHorizontal":"Odwróć w poziomie","flipVertical":"Odwróć w pionie","viewMode":"Tryb widoku","share":"Udostępnij","showStroke":"Pokaż próbnik kolorów obrysu","showBackground":"Pokaż próbnik koloru tła","toggleTheme":"Przełącz motyw","personalLib":"Biblioteka prywatna","excalidrawLib":"Biblioteka Excalidraw","decreaseFontSize":"Zmniejsz rozmiar czcionki","increaseFontSize":"Zwiększ rozmiar czcionki","unbindText":"Odłącz tekst od kontenera","bindText":"Połącz tekst z kontenerem","createContainerFromText":"Zawijaj tekst w kontenerze","link":{"edit":"Edytuj łącze","editEmbed":"Edytuj i osadź link","create":"Utwórz łącze","createEmbed":"Stwórz i osadź link","label":"Łącze","labelEmbed":"Podlinkuj i osadź","empty":"Brakujący link"},"lineEditor":{"edit":"Edytuj linię","exit":"Wyjdź z edytora linii"},"elementLock":{"lock":"Zablokuj","unlock":"Odblokuj","lockAll":"Zablokuj wszystko","unlockAll":"Odblokuj wszystko"},"statusPublished":"Opublikowano","sidebarLock":"Panel boczny zawsze otwarty","selectAllElementsInFrame":"Zaznacz wszystkie elementy w ramce","removeAllElementsFromFrame":"Usuń wszystkie elementy z ramki","eyeDropper":"Wybierz kolor z płótna"},"library":{"noItems":"Nie dodano jeszcze żadnych elementów...","hint_emptyLibrary":"Wybierz element na płótnie, aby go tutaj dodać, lub zainstaluj bibliotekę z poniższego publicznego repozytorium.","hint_emptyPrivateLibrary":"Wybierz element, aby dodać go tutaj."},"buttons":{"clearReset":"Wyczyść dokument i zresetuj kolor dokumentu","exportJSON":"Eksportuj do pliku","exportImage":"Eksportuj obraz...","export":"Zapisz jako...","copyToClipboard":"Skopiuj do schowka","save":"Zapisz do bieżącego pliku","saveAs":"Zapisz jako","load":"Otwórz","getShareableLink":"Udostępnij","close":"Zamknij","selectLanguage":"Wybierz język","scrollBackToContent":"Wróć do obszaru roboczego","zoomIn":"Powiększ","zoomOut":"Pomniejsz","resetZoom":"Zresetuj powiększenie","menu":"Menu","done":"Gotowe","edit":"Edytuj","undo":"Cofnij","redo":"Przywróć","resetLibrary":"Resetuj bibliotekę","createNewRoom":"Utwórz nowy pokój","fullScreen":"Pełny ekran","darkMode":"Ciemny motyw","lightMode":"Jasny motyw","zenMode":"Tryb Zen","objectsSnapMode":"Przyciąganie do obiektów","exitZenMode":"Wyjdź z trybu Zen","cancel":"Anuluj","clear":"Wyczyść","remove":"Usuń","embed":"Przełącz osadzenie","publishLibrary":"Opublikuj","submit":"Prześlij","confirm":"Zatwierdź","embeddableInteractionButton":"Kliknij, aby wejść w interakcję"},"alerts":{"clearReset":"To spowoduje usunięcie wszystkiego z dokumentu. Czy chcesz kontynuować?","couldNotCreateShareableLink":"Wystąpił błąd przy generowaniu linka do udostępniania.","couldNotCreateShareableLinkTooBig":"Nie można utworzyć linku do udostępnienia: scena jest za duża","couldNotLoadInvalidFile":"Nie udało się otworzyć pliku. Wybrany plik jest nieprawidłowy.","importBackendFailed":"Wystąpił błąd podczas importowania pliku.","cannotExportEmptyCanvas":"Najpierw musisz coś narysować, aby zapisać dokument.","couldNotCopyToClipboard":"Nie udało się skopiować do schowka.","decryptFailed":"Nie udało się odszyfrować danych.","uploadedSecurly":"By zapewnić Ci prywatność, udostępnianie projektu jest zabezpieczone szyfrowaniem end-to-end, co oznacza, że poza tobą i osobą z którą podzielisz się linkiem, nikt nie ma dostępu do tego co udostępniasz.","loadSceneOverridePrompt":"Wczytanie zewnętrznego rysunku zastąpi istniejącą zawartość. Czy chcesz kontynuować?","collabStopOverridePrompt":"Zatrzymanie sesji nadpisze poprzedni, zapisany lokalnie rysunek. Czy jesteś pewien?\\n\\n(Jeśli chcesz zachować swój lokalny rysunek, po prostu zamknij zakładkę przeglądarki.)","errorAddingToLibrary":"Nie udało się dodać elementu do biblioteki","errorRemovingFromLibrary":"Nie udało się usunąć elementu z biblioteki","confirmAddLibrary":"To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?","imageDoesNotContainScene":"Ten obraz nie zawiera żadnych informacji o scenie. Czy włączyłeś osadzanie sceny podczas eksportu?","cannotRestoreFromImage":"Scena nie mogła zostać przywrócona z pliku obrazu","invalidSceneUrl":"Nie udało się zaimportować sceny z podanego adresu URL. Jest ona wadliwa lub nie zawiera poprawnych danych Excalidraw w formacie JSON.","resetLibrary":"To wyczyści twoją bibliotekę. Jesteś pewien?","removeItemsFromsLibrary":"Usunąć {{count}} element(ów) z biblioteki?","invalidEncryptionKey":"Klucz szyfrowania musi składać się z 22 znaków. Współpraca na żywo jest wyłączona.","collabOfflineWarning":"Brak połączenia z Internetem.\\nTwoje zmiany nie zostaną zapisane!"},"errors":{"unsupportedFileType":"Nieobsługiwany typ pliku.","imageInsertError":"Nie udało się wstawić obrazu. Spróbuj ponownie później...","fileTooBig":"Plik jest zbyt duży. Maksymalny dozwolony rozmiar to {{maxSize}}.","svgImageInsertError":"Nie udało się wstawić obrazu SVG. Znacznik SVG wygląda na nieprawidłowy.","failedToFetchImage":"Nie udało się załadować obrazu.","invalidSVGString":"Nieprawidłowy SVG.","cannotResolveCollabServer":"Nie można połączyć się z serwerem współpracy w czasie rzeczywistym. Proszę odświeżyć stronę i spróbować ponownie.","importLibraryError":"Wystąpił błąd w trakcie ładowania biblioteki","collabSaveFailed":"Nie udało się zapisać w bazie danych. Jeśli problemy nie ustąpią, zapisz plik lokalnie, aby nie utracić swojej pracy.","collabSaveFailed_sizeExceeded":"Nie udało się zapisać w bazie danych — dokument jest za duży. Zapisz plik lokalnie, aby nie utracić swojej pracy.","brave_measure_text_error":{"line1":"Wygląda na to, że używasz przeglądarki Brave z włączonym ustawieniem Agressively Block Fingerprinting.","line2":"Może to doprowadzić do złamania elementów tekstu na rysunkach.","line3":"Zdecydowanie zalecamy wyłączenie tego ustawienia. Możesz wykonać te kroki, aby to zrobić.","line4":"Jeśli wyłączenie tego ustawienia nie naprawia wyświetlania elementów tekstowych, zgłoś problem na naszym GitHubie lub napisz do nas na Discordzie"},"libraryElementTypeError":{"embeddable":"Elementy osadzone nie mogą zostać dodane do biblioteki.","image":"Dodawania obrazów do biblioteki nadejdzie wkrótce!"}},"toolBar":{"selection":"Zaznaczenie","image":"Wstaw obraz","rectangle":"Prostokąt","diamond":"Romb","ellipse":"Elipsa","arrow":"Strzałka","line":"Linia","freedraw":"Rysuj","text":"Tekst","library":"Biblioteka","lock":"Zablokuj wybrane narzędzie","penMode":"Tryb pióra — zapobiegaj dotknięciom","link":"Dodaj/aktualizuj link dla wybranego kształtu","eraser":"Gumka","frame":"Ramka","embeddable":"Osadzenie z internetu","laser":"Wskaźnik laserowy","hand":"Ręka (narzędzie do przesuwania)","extraTools":"Więcej narzędzi"},"headings":{"canvasActions":"Narzędzia","selectedShapeActions":"Wybrane narzędzie","shapes":"Kształty"},"hints":{"canvasPanning":"Aby przesunąć płótno, przytrzymaj kółko myszy lub spację podczas przeciągania, albo użyj narzędzia ręki","linearElement":"Naciśnij, aby zrobić punkt, przeciągnij, aby narysować linię","freeDraw":"Naciśnij i przeciągnij by rysować, puść kiedy skończysz","text":"Wskazówka: możesz również dodać tekst klikając dwukrotnie gdziekolwiek za pomocą narzędzia zaznaczania","embeddable":"Kliknij i przeciągnij, aby stworzyć osadzenie strony","text_selected":"Kliknij dwukrotnie lub naciśnij ENTER, aby edytować tekst","text_editing":"Naciśnij Escape lub Ctrl (Cmd w macOS) + ENTER, aby zakończyć edycję","linearElementMulti":"Aby zakończyć krzywą, ponownie kliknij w ostatni punkt, bądź naciśnij Esc albo Enter","lockAngle":"Możesz ograniczyć kąt trzymając SHIFT","resize":"Możesz zachować proporcję trzymająć wcisnięty SHIFT, przytrzymaj ALT by zmienić rozmiar względem środka","resizeImage":"Możesz zmienić rozmiar swobodnie trzymając SHIFT,\\nprzytrzymaj ALT, aby przeskalować względem środka obiektu","rotate":"Możesz obracać element w równych odstępach trzymając wciśnięty SHIFT","lineEditor_info":"Przytrzymaj CtrlOrCmd i kliknij dwukrotnie lub naciśnij CtrlOrCmd + Enter, aby edytować punkty","lineEditor_pointSelected":"Naciśnij przycisk Delete, aby usunąć punkt. Ctrl/Cmd+D, aby go zduplikować. Przeciągnij, aby go przenieść","lineEditor_nothingSelected":"Wybierz punkt do edycji (przytrzymaj SHIFT, aby wybrać wiele),\\nlub przytrzymaj Alt i kliknij, aby dodać nowe punkty","placeImage":"Kliknij, aby umieścić obraz, lub kliknij i przeciągnij, aby ustawić jego rozmiar ręcznie","publishLibrary":"Opublikuj własną bibliotekę","bindTextToElement":"Wciśnij enter, aby dodać tekst","deepBoxSelect":"Przytrzymaj CtrlOrCmd, aby wybrać w obrębie grupy i uniknąć przeciągania","eraserRevert":"Przytrzymaj Alt, aby przywrócić elementy oznaczone do usunięcia","firefox_clipboard_write":"Ta funkcja może być włączona poprzez ustawienie flagi \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Aby zmienić flagi przeglądarki w Firefox, odwiedź stronę \\"about:config\\".","disableSnapping":"Przytrzymaj Ctrl lub Cmd, aby wyłączyć przyciąganie"},"canvasError":{"cannotShowPreview":"Nie można wyświetlić podglądu","canvasTooBig":"Obszar roboczy może być za duży.","canvasTooBigTip":"Wskazówka: spróbuj nieco zbliżyć najdalej wysunięte elementy."},"errorSplash":{"headingMain":"Wystąpił błąd. Spróbuj ","clearCanvasMessage":"Jeśli odświeżenie strony nie zadziałało, spróbuj ","clearCanvasCaveat":" Pamiętaj tylko, że spowoduje to utratę całej twojej pracy ","trackedToSentry":"Błąd o identyfikatorze {{eventId}} został zaraportowany w naszym systemie.","openIssueMessage":"Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.","sceneContent":"Zawartość dokumentu:"},"roomDialog":{"desc_intro":"Będziesz w stanie pracować wraz z osobami które zaprosisz do współpracy.","desc_privacy":"By zapewnić Ci prywatność, sesja współpracy na żywo jest zabezpieczona szyfrowaniem end-to-end, co oznacza, że poza tobą i osobami z którymi podzielisz się linkiem, nikt nie ma dostępu do tego co będziecie tworzyć.","button_startSession":"Rozpocznij sesję","button_stopSession":"Zakończ sesję","desc_inProgressIntro":"Sesja współpracy na żywo właśnie się rozpoczęła.","desc_shareLink":"Udostępnij ten link osobom, z którymi chcesz współpracować:","desc_exitSession":"Zakończenie sesji spowoduje odłączenie ciebie od pokoju, ale nadal będziesz mógł lokalnie kontynuować pracę. Zauważ, że osoby z którymi współpracowałeś nadal będą mogły współpracować.","shareTitle":"Dołącz do sesji współpracy na żywo w Excalidraw"},"errorDialog":{"title":"Wystąpił błąd"},"exportDialog":{"disk_title":"Zapisz na dysku","disk_details":"Eksportuj dane sceny do pliku, z którego możesz importować później.","disk_button":"Zapisz do pliku","link_title":"Link do udostępnienia","link_details":"Eksportuj jako link tylko do odczytu.","link_button":"Wygeneruj link","excalidrawplus_description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+.","excalidrawplus_button":"Eksportuj","excalidrawplus_exportError":"W tej chwili nie można wyeksportować do Excalidraw+..."},"helpDialog":{"blog":"Przeczytaj na naszym blogu","click":"kliknięcie","deepSelect":"Wybór w obrębie grupy","deepBoxSelect":"Wybór w obrębie grupy i unikanie przeciągania","curvedArrow":"Zakrzywiona strzałka","curvedLine":"Zakrzywiona linia","documentation":"Dokumentacja","doubleClick":"podwójne kliknięcie","drag":"przeciągnij","editor":"Edytor","editLineArrowPoints":"Edytuj punkty linii/strzałki","editText":"Edytuj tekst/dodaj etykietę","github":"Znalazłeś problem? Prześlij","howto":"Skorzystaj z instrukcji","or":"lub","preventBinding":"Zapobiegaj wiązaniu strzałek","tools":"Narzędzia","shortcuts":"Skróty klawiszowe","textFinish":"Zakończ edycję (edytor tekstu)","textNewLine":"Dodaj nowy wiersz (edytor tekstu)","title":"Pomoc","view":"Widok","zoomToFit":"Powiększ, aby wyświetlić wszystkie elementy","zoomToSelection":"Przybliż do zaznaczenia","toggleElementLock":"Zablokuj/odblokuj zaznaczenie","movePageUpDown":"Przesuń stronę w górę/w dół","movePageLeftRight":"Przenieś stronę w lewo/prawo"},"clearCanvasDialog":{"title":"Wyczyść płótno"},"publishDialog":{"title":"Opublikuj bibliotekę","itemName":"Nazwa elementu","authorName":"Nazwa autora","githubUsername":"Nazwa użytkownika na GitHubie","twitterUsername":"Nazwa użytkownika Twitter","libraryName":"Nazwa biblioteki","libraryDesc":"Opis biblioteki","website":"Strona internetowa","placeholder":{"authorName":"Twoje imię lub nazwa użytkownika","libraryName":"Nazwa twojej biblioteki","libraryDesc":"Opis twojej biblioteki, aby pomóc innym zrozumieć jej działanie","githubHandle":"Uchwyt GitHub (opcjonalny), dzięki czemu możesz edytować bibliotekę po przesłaniu do sprawdzenia","twitterHandle":"Nazwa użytkownika w serwisie Twitter (opcjonalna), aby wiedzieć kogo oznaczyć przy promowaniu na Twitterze","website":"Link do Twojej osobistej strony internetowej lub gdzie indziej (opcjonalnie)"},"errors":{"required":"Wymagane","website":"Wprowadź prawidłowy adres URL"},"noteDescription":"dla innych osób do wykorzystania w swoich rysunkach.","noteGuidelines":"Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj wytyczne","noteLicense":"Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod Licencja MIT, w skrócie, każdy może z nich korzystać bez ograniczeń.","noteItems":"Każdy element biblioteki musi mieć własną nazwę, aby był filtrowalny. Uwzględnione zostaną następujące elementy biblioteki:","atleastOneLibItem":"Proszę wybrać co najmniej jeden element biblioteki, by rozpocząć","republishWarning":"Uwaga: niektóre z wybranych elementów są oznaczone jako już opublikowane/wysłane. Powinieneś ponownie przesłać elementy tylko wtedy, gdy aktualizujesz istniejącą bibliotekę lub zgłoszenie."},"publishSuccessDialog":{"title":"Biblioteka została przesłana","content":"Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stantutaj"},"confirmDialog":{"resetLibrary":"Zresetuj Bibliotekę","removeItemsFromLib":"Usuń wybrane elementy z biblioteki"},"imageExportDialog":{"header":"Eksportuj obraz","label":{"withBackground":"Tło","onlySelected":"Tylko wybrane","darkMode":"Tryb ciemny","embedScene":"Osadź scenę","scale":"Skala","padding":"Dopełnienie"},"tooltip":{"embedScene":"Dane sceny zostaną zapisane w eksportowanym pliku PNG/SVG tak, aby scena mogła zostać z niego przywrócona.\\nZwiększy to rozmiar eksportowanego pliku."},"title":{"exportToPng":"Zapisz jako PNG","exportToSvg":"Zapisz jako SVG","copyPngToClipboard":"Skopiuj do schowka jako PNG"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Skopiuj do schowka"}},"encrypted":{"tooltip":"Twoje rysunki są zabezpieczone szyfrowaniem end-to-end, tak więc nawet w Excalidraw nie jesteśmy w stanie zobaczyć tego co tworzysz.","link":"Wpis na blogu dotyczący szyfrowania end-to-end w Excalidraw"},"stats":{"angle":"Kąt","element":"Element","elements":"Elementy","height":"Wysokość","scene":"Scena","selected":"Zaznaczenie","storage":"Pamięć","title":"Statystyki dla nerdów","total":"Łącznie","version":"Wersja","versionCopy":"Kliknij, aby skopiować","versionNotAvailable":"Wersja niedostępna","width":"Szerokość"},"toast":{"addedToLibrary":"Dodano do biblioteki","copyStyles":"Skopiowano style.","copyToClipboard":"Skopiowano do schowka.","copyToClipboardAsPng":"Skopiowano {{exportSelection}} do schowka jako PNG\\n({{exportColorScheme}})","fileSaved":"Zapisano plik.","fileSavedToFilename":"Zapisano jako {filename}","canvas":"płótno","selection":"zaznaczenie","pasteAsSingleElement":"Użyj {{shortcut}}, aby wkleić jako pojedynczy element,\\nlub wklej do istniejącego edytora tekstu","unableToEmbed":"Osadzenie tego linku jest obecnie niedozwolone. Zgłoś propozycję na portalu GitHub, aby dodać go do listy dozwolonych wyjątków","unrecognizedLinkFormat":"Osadzony link ma niewłaściwy format. Spróbuj wkleić całą zawartość pola \\"embed\\" z oryginalnej strony."},"colors":{"transparent":"Przezroczysty","black":"Czarny","white":"Biały","red":"Czerwony","pink":"Różowy","grape":"Winogronowy","violet":"Fioletowy","gray":"Szary","blue":"Niebieski","cyan":"Cyjanowy","teal":"Turkusowy","green":"Zielony","yellow":"Żółty","orange":"Pomarańczowy","bronze":"Brązowy"},"welcomeScreen":{"app":{"center_heading":"Wszystkie dane są zapisywane lokalnie w przeglądarce.","center_heading_plus":"Czy zamiast tego chcesz przejść do Excalidraw+?","menuHint":"Eksportuj, preferencje, języki..."},"defaults":{"menuHint":"Eksportuj, preferencje i więcej...","center_heading":"Schematy uproszczone.","toolbarHint":"Wybierz narzędzie i zacznij rysować!","helpHint":"Skróty klawiaturowe i pomoc"}},"colorPicker":{"mostUsedCustomColors":"Najczęściej używane kolory","colors":"Kolory","shades":"Odcienie","hexCode":"Kod HEX","noShades":"Brak dostępnych odcieni dla tego koloru"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksportuj jako obraz","button":"Eksportuj jako obraz","description":"Eksportuj zawartość sceny jako obraz z możliwością importowania."},"saveToDisk":{"title":"Zapisz na dysku","button":"Zapisz na dysku","description":"Eksportuj zawartość sceny jako plik z możliwością importowania."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksportuj do Excalidraw+","description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+."}},"modal":{"loadFromFile":{"title":"Wczytaj z pliku","button":"Wczytaj z pliku","description":"Wczytanie z pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."},"shareableLink":{"title":"Wczytaj z linku","button":"Nadpisz moją zawartość","description":"Wczytanie zewnętrznego pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js b/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js new file mode 100644 index 0000000..ca38d8c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3721],{8881:function(e){e.exports=JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto sem formatação","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Recortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para área de transferência como texto","bringForward":"Trazer para a frente","sendToBack":"Enviar para o fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contorno","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Precisão do traço","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Pontudo","round":"Arredondado","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fonte","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Hachura","zigzag":"Zigue-zague","crossHatch":"Hachura cruzada","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquiteto","artist":"Artista","cartoonist":"Cartunista","fileTitle":"Nome do arquivo","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da tela","drawingCanvas":"Tela de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"Seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grade","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"Carregando biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"Carregando cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar embaixo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centralizar verticalmente","centerHorizontally":"Centralizar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Compartilhar","showStroke":"Exibir seletor de cores do traço","showBackground":"Exibir seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Diminuir o tamanho da fonte","increaseFontSize":"Aumentar o tamanho da fonte","unbindText":"Desvincular texto","bindText":"Vincular texto ao contêiner","createContainerFromText":"Envolver texto em um contêiner","link":{"edit":"Editar link","editEmbed":"","create":"Criar link","createEmbed":"","label":"Link","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear tudo","unlockAll":"Desbloquear tudo"},"statusPublished":"Publicado","sidebarLock":"Manter barra lateral aberta","selectAllElementsInFrame":"Selecionar todos os elementos no quadro","removeAllElementsFromFrame":"Remover todos os elementos do quadro","eyeDropper":"Escolher cor da tela"},"library":{"noItems":"Nenhum item adicionado ainda...","hint_emptyLibrary":"Selecione um item na tela para adicioná-lo aqui, ou instale uma biblioteca do repositório público, abaixo.","hint_emptyPrivateLibrary":"Selecione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar o canvas e redefinir a cor de fundo","exportJSON":"Exportar arquivo","exportImage":"Exportar imagem...","export":"Salvar como...","copyToClipboard":"Copiar para o clipboard","save":"Salvar para o arquivo atual","saveAs":"Salvar como","load":"Abrir","getShareableLink":"Obter um link de compartilhamento","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar para o conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Redefinir biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Tela cheia","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a tela. Você tem certeza?","couldNotCreateShareableLink":"Não foi possível criar um link de compartilhamento.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link compartilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o arquivo inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar um canvas vazio.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível descriptografar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Carregar um desenho externo substituirá o seu conteúdo existente. Deseja continuar?","collabStopOverridePrompt":"Ao interromper a sessão, você substituirá seu desenho anterior, armazenado localmente. Você tem certeza?\\n\\n(Se você deseja manter seu desenho local, simplesmente feche a aba do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Você ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste arquivo de imagem","invalidSceneUrl":"Não foi possível importar a cena da URL fornecida. Ela está incompleta ou não contém dados JSON válidos do Excalidraw.","resetLibrary":"Isto limpará a sua biblioteca. Você tem certeza?","removeItemsFromsLibrary":"Excluir {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"A chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desabilitada.","collabOfflineWarning":"Sem conexão com a internet disponível.\\nSuas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de arquivo não suportado.","imageInsertError":"Não foi possível inserir imagem. Tente novamente mais tarde...","fileTooBig":"O arquivo é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG Inválido.","cannotResolveCollabServer":"Não foi possível conectar-se ao servidor colaborativo. Por favor, recarregue a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","brave_measure_text_error":{"line1":"Parece que você está usando o navegador Brave com a configuração Bloquear Impressões Digitais no modo agressivo.","line2":"Isso pode acabar quebrando Elementos de Texto em seus desenhos.","line3":"Recomendamos fortemente desativar essa configuração. Você pode acessar o passo a passo sobre como fazer isso.","line4":"Se desativar essa configuração não corrigir a exibição de elementos de texto, por favor abra uma issue em nosso GitHub, ou mande uma mensagem em nosso Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter ativa a ferramenta selecionada após desenhar","penMode":"Modo caneta — impede o toque","link":"Adicionar/Atualizar link para uma forma selecionada","eraser":"Borracha","frame":"Ferramenta de quadro","embeddable":"","laser":"","hand":"Mão (ferramenta de rolagem)","extraTools":"Mais ferramentas"},"headings":{"canvasActions":"Ações da tela","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, segure a roda do mouse ou a barra de espaço enquanto arrasta ou use a ferramenta de mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Toque e arraste, solte quando terminar","text":"Dica: você também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duplo ou tecle ENTER para editar o texto","text_editing":"Pressione Esc ou Ctrl/Cmd+ENTER para encerrar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Você pode restringir o ângulo segurando o SHIFT","resize":"Você pode restringir proporções segurando SHIFT enquanto redimensiona,\\nsegure ALT para redimensionar do centro","resizeImage":"Você pode redimensionar livremente segurando SHIFT,\\nsegure ALT para redimensionar a partir do centro","rotate":"Você pode restringir os ângulos segurando SHIFT enquanto gira","lineEditor_info":"Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos","lineEditor_pointSelected":"Pressione Delete para remover o(s) ponto(s),\\nCtrl/Cmd+D para duplicar ou arraste para mover","lineEditor_nothingSelected":"Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos","placeImage":"Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho","publishLibrary":"Publicar sua própria biblioteca","bindTextToElement":"Pressione Enter para adicionar o texto","deepBoxSelect":"Segure Ctrl/Cmd para seleção profunda e para evitar arrastar","eraserRevert":"Segure a tecla Alt para inverter os elementos marcados para exclusão","firefox_clipboard_write":"Esse recurso pode ser ativado configurando a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar pré-visualização","canvasTooBig":"A tela pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se recarregar a página não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Você pode convidar pessoas para sua cena atual para colaborar com você.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta a ponta; portanto, o que você desenhar permanecerá privado. Nem mesmo nosso servidor poderá ver o que você cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Compartilhe este link com qualquer pessoa com quem você queira colaborar:","desc_exitSession":"Interrompendo a sessão você irá se desconectar da sala, mas você poderá continuar trabalhando com a cena localmente. Observe que isso não afetará outras pessoas, e elas ainda poderão colaborar em suas versões.","shareTitle":"Participe de uma sessão ao vivo de colaboração no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Salvar no computador","disk_details":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde.","disk_button":"Salvar em um arquivo","link_title":"Link compartilhável","link_details":"Exportar como link de apenas leitura.","link_button":"Exportar link","excalidrawplus_description":"Salvar a cena na sua área de trabalho Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não é possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blog","click":"clicar","deepSelect":"Seleção profunda","deepBoxSelect":"Use a seleção profunda dentro da caixa para previnir arrastar","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar linha/ponta da seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Nos informe","howto":"Siga nossos guias","or":"ou","preventBinding":"Evitar fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Encerrar edição (editor de texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajudar","view":"Visualizar","zoomToFit":"Ampliar para encaixar todos os elementos","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Bloquear/desbloquear seleção","movePageUpDown":"Mover a página para cima/baixo","movePageLeftRight":"Mover a página para esquerda/direita"},"clearCanvasDialog":{"title":"Limpar a tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de usuário do GitHub","twitterUsername":"Nome de usuário do Twitter","libraryName":"Nome da Biblioteca","libraryDesc":"Descrição da biblioteca","website":"Site","placeholder":{"authorName":"Seu nome ou nome de usuário","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição para ajudar as pessoas a entenderem o uso da sua da sua biblioteca","githubHandle":"Identificador do GitHub (opcional), para que você possa editar a biblioteca depois de enviar para revisão","twitterHandle":"Nome de usuário do Twitter (opcional), para que saibamos quem deve ser creditado se promovermos no Twitter","website":"Link para o seu site pessoal ou outro lugar (opcional)"},"errors":{"required":"Obrigatório","website":"Informe uma URL válida"},"noteDescription":"Envie sua biblioteca para ser incluída no repositório de biblioteca públicapara outras pessoas usarem em seus desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o orientações antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário.","noteLicense":"Ao enviar, você concorda que a biblioteca será publicada sob a Licença MIT, o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições.","noteItems":"Cada item da biblioteca deve ter seu próprio nome para que seja filtrável. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, selecione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens selecionados estão marcados como já publicado/enviado. Você só deve reenviar itens ao atualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Redefinir biblioteca","removeItemsFromLib":"Remover itens selecionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"Fundo","onlySelected":"Somente selecionados","darkMode":"Modo escuro","embedScene":"Incorporar cena","scale":"Escala","padding":"Margem interna"},"tooltip":{"embedScene":"Os dados da cena serão salvos no arquivo PNG/SVG exportado para que a cena possa ser restaurada a partir dele.\\nIsso aumentará o tamanho do arquivo exportado."},"title":{"exportToPng":"Exportar como PNG","exportToSvg":"Exportar como SVG","copyPngToClipboard":"Copiar PNG para área de transferência"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar para a área de transferência"}},"encrypted":{"tooltip":"Seus desenhos são criptografados de ponta a ponta, então os servidores do Excalidraw nunca os verão.","link":"Publicação de blog com criptografia de ponta a ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Adicionado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG ({{exportColorScheme}})","fileSaved":"Arquivo salvo.","fileSavedToFilename":"Salvo em {filename}","canvas":"tela","selection":"seleção","pasteAsSingleElement":"Use {{shortcut}} para colar como um único elemento,\\nou cole em um editor de texto já existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"Ciano","teal":"Verde-azulado","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são salvos localmente no seu navegador.","center_heading_plus":"Você queria ir para o Excalidraw+ em vez disso?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e mais...","center_heading":"Diagramas, Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"Cores personalizadas mais usadas","colors":"Cores","shades":"Tons","hexCode":"Código hexadecimal","noShades":"Sem tons disponíveis para essa cor"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagem","button":"Exportar como imagem","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"saveToDisk":{"title":"Salvar no computador","button":"Salvar no computador","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar para Excalidraw+","description":"Salvar a cena na sua área de trabalho Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carregar de arquivo","button":"Carregar de arquivo","description":"Carregar de um arquivo irá substituir o conteúdo existente.

Você pode salvar seu desenho primeiro usando uma das opções abaixo."},"shareableLink":{"title":"Carregar de um link","button":"Substituir meu conteúdo","description":"Carregar um desenho externo irá substituir seu conteúdo existente.

Você pode salvar seu desenho antes utilizando uma das opções abaixo."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js b/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js new file mode 100644 index 0000000..1388a63 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5395],{125:function(e){e.exports=JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto simples","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para Área de Transferência como texto","bringForward":"Trazer para o primeiro plano","sendToBack":"Enviar para o plano de fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contornos","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Desleixo","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Aguçado","round":"Redondo","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Seta","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fontes","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Eclosão","zigzag":"ziguezague","crossHatch":"Sombreado","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricaturista","fileTitle":"Nome do ficheiro","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da área de desenho","drawingCanvas":"Área de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"O seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grelha","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"A carregar a biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"A carregar a cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar ao fundo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Partilhar","showStroke":"Mostrar seletor de cores do traço","showBackground":"Mostrar seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Reduzir o tamanho do tipo de letra","increaseFontSize":"Aumentar o tamanho do tipo de letra","unbindText":"Desvincular texto","bindText":"Ligar texto ao recipiente","createContainerFromText":"Envolver texto num recipiente","link":{"edit":"Editar ligação","editEmbed":"","create":"Criar ligação","createEmbed":"","label":"Ligação","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todos","unlockAll":"Desbloquear todos"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ainda não foram adicionados nenhuns itens...","hint_emptyLibrary":"Seleccione um item na tela para adicioná-lo aqui, ou então instale uma biblioteca do repositório público abaixo.","hint_emptyPrivateLibrary":"Seleccione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar a área de desenho e redefinir a cor de fundo","exportJSON":"Exportar para ficheiro","exportImage":"Exportar imagem...","export":"Guardar para...","copyToClipboard":"Copiar para o clipboard","save":"Guardar no ficheiro atual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obter um link de partilha","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar ao conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Repor a biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Ecrã inteiro","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a área de desenho. Tem a certeza?","couldNotCreateShareableLink":"Não foi possível criar um link partilhável.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link partilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o ficheiro inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar uma área de desenho vazia.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível desencriptar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Se carregar um desenho externo substituirá o conteúdo existente. Quer continuar?","collabStopOverridePrompt":"Ao interromper a sessão irá substituir o último desenho guardado. Tem a certeza?\\n\\n(Caso queira manter o último desenho, simplesmente feche a janela do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem a certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste ficheiro de imagem","invalidSceneUrl":"Não foi possível importar a cena a partir do URL fornecido. Ou está mal formado ou não contém dados JSON do Excalidraw válidos.","resetLibrary":"Isto irá limpar a sua biblioteca. Tem a certeza?","removeItemsFromsLibrary":"Apagar {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"Chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desativada.","collabOfflineWarning":"Sem ligação à internet disponível.\\nAs suas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de ficheiro não suportado.","imageInsertError":"Não foi possível inserir a imagem, tente novamente mais tarde...","fileTooBig":"O ficheiro é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta selecionada ativa após desenhar","penMode":"Modo caneta - impedir toque","link":"Acrescentar/ Adicionar ligação para uma forma seleccionada","eraser":"Borracha","frame":"","embeddable":"","laser":"","hand":"Mão (ferramenta de movimento da tela)","extraTools":""},"headings":{"canvasActions":"Ações da área de desenho","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, carregue na roda do rato ou na barra de espaço enquanto arrasta, ou use a ferramenta da mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Clique e arraste, large quando terminar","text":"Dica: também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duas vezes ou pressione a tecla Enter para editar o texto","text_editing":"Pressione a tecla Escape ou CtrlOrCmd+ENTER para terminar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Pode restringir o ângulo mantendo premida a tecla SHIFT","resize":"Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,\\nmantenha a tecla ALT premida para redimensionar a partir do centro","resizeImage":"Pode redimensionar livremente mantendo pressionada a tecla SHIFT,\\nmantenha pressionada a tecla ALT para redimensionar do centro","rotate":"Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda","lineEditor_info":"Pressione CtrlOrCmd e faça um duplo-clique ou pressione CtrlOrCmd + Enter para editar pontos","lineEditor_pointSelected":"Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover","lineEditor_nothingSelected":"Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),\\nou carregue em Alt e clique para acrescentar novos pontos","placeImage":"Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente","publishLibrary":"Publique a sua própria biblioteca","bindTextToElement":"Carregue Enter para acrescentar texto","deepBoxSelect":"Mantenha a tecla CtrlOrCmd carregada para selecção profunda, impedindo o arrastamento","eraserRevert":"Carregue também em Alt para reverter os elementos marcados para serem apagados","firefox_clipboard_write":"Esta função pode provavelmente ser ativada definindo a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar uma pré-visualização","canvasTooBig":"A área de desenho pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se a recarga não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Pode convidar pessoas para colaborarem na sua cena atual.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta-a-ponta, por isso o que desenhar permanecerá privado. Nem mesmo o nosso servidor poderá ver o que cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Partilhe este link com qualquer pessoa com quem queira colaborar:","desc_exitSession":"Interrompendo a sessão irá desconectar-se da sala, mas poderá continuar a trabalhar com a cena localmente. Note que isso não afetará outras pessoas e elas ainda poderão colaborar nas versões deles.","shareTitle":"Participe numa sessão de colaboração ao vivo no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Guardar no disco","disk_details":"Exportar os dados da cena para um ficheiro do qual poderá importar mais tarde.","disk_button":"Guardar num ficheiro","link_title":"Link partilhável","link_details":"Exportar como um link de apenas leitura.","link_button":"Exportar para link","excalidrawplus_description":"Guardar a cena no seu espaço de trabalho Excalidraw+","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não foi possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blogue","click":"clicar","deepSelect":"Selecção profunda","deepBoxSelect":"Selecção profunda dentro da caixa, impedindo que seja arrastada","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar pontos de linha/seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Informe-nos","howto":"Siga os nossos guias","or":"ou","preventBinding":"Prevenir fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Finalizar edição (editor texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajuda","view":"Visualizar","zoomToFit":"Ajustar para todos os elementos caberem","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Trancar/destrancar selecção","movePageUpDown":"Mover página para cima / baixo","movePageLeftRight":"Mover página para esquerda / direita"},"clearCanvasDialog":{"title":"Apagar tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de utilizador do GitHub","twitterUsername":"Nome de utilizador no Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrição da biblioteca","website":"Página web","placeholder":{"authorName":"Introduza o seu nome ou nome de utilizador","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição da sua biblioteca para ajudar as pessoas a entender a utilização dela","githubHandle":"Identificador do GitHub (opcional), para que possa editar a biblioteca depois desta ser enviada para revisão","twitterHandle":"Nome do Twitter (opcional), para que saibamos quem merece os créditos na promoção via Twitter","website":"Ligação para a sua página pessoal ou qualquer outra (opcional)"},"errors":{"required":"Obrigatório","website":"Introduza um URL válido"},"noteDescription":"Envie a sua biblioteca para ser incluída no repositório de bibliotecas públicaspara outras pessoas a poderem usar nos seus próprios desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia orientações antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.","noteLicense":"Ao enviar, concorda que a biblioteca será publicada sob a Licença MIT, o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.","noteItems":"Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, seleccione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Repor a biblioteca","removeItemsFromLib":"Remover os itens seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"Cena embutida","scale":"","padding":"Espaçamento"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar em PNG","exportToSvg":"Exportar em SVG","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"Os seus desenhos são encriptados de ponta-a-ponta, por isso os servidores do Excalidraw nunca os verão.","link":"Publicação de blogue na encriptação ponta-a-ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Acrescentado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para a área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro guardado.","fileSavedToFilename":"Guardado como {filename}","canvas":"área de desenho","selection":"seleção","pasteAsSingleElement":"Usar {{shortcut}} para colar como um único elemento,\\nou colar num editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são guardados no seu navegador local.","center_heading_plus":"Queria antes ir para o Excalidraw+?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e outros...","center_heading":"Diagramas. Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"Tons","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"Guardar no disco","button":"Guardar no disco","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"Carregar a partir de ficheiro","button":"Carregar a partir de ficheiro","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js b/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js new file mode 100644 index 0000000..9347769 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5089],{2013:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lipire","pasteAsPlaintext":"Inserare ca text simplu","pasteCharts":"Lipire diagrame","selectAll":"Selectare totală","multiSelect":"Adaugă element la selecție","moveCanvas":"Mutare pânză","cut":"Decupare","copy":"Copiere","copyAsPng":"Copiere în memoria temporară ca PNG","copyAsSvg":"Copiere în memoria temporară ca SVG","copyText":"Copiere în memoria temporară ca text","bringForward":"Aducere în plan apropiat","sendToBack":"Trimitere în ultimul plan","bringToFront":"Aducere în prim plan","sendBackward":"Trimitere în plan secundar","delete":"Ștergere","copyStyles":"Copiere stiluri","pasteStyles":"Lipire stiluri","stroke":"Contur","background":"Fundal","fill":"Umplere","strokeWidth":"Lățimea conturului","strokeStyle":"Stilul conturului","strokeStyle_solid":"Neîntrerupt","strokeStyle_dashed":"Liniuțe","strokeStyle_dotted":"Punctat","sloppiness":"Aspectul trasării","opacity":"Opacitate","textAlign":"Alinierea textului","edges":"Margini","sharp":"Ascuțite","round":"Rotunde","arrowheads":"Vârfuri de săgeată","arrowhead_none":"Niciunul","arrowhead_arrow":"Săgeată","arrowhead_bar":"Bară","arrowhead_dot":"Bulină","arrowhead_triangle":"Triunghi","fontSize":"Dimensiune font","fontFamily":"Familia de fonturi","addWatermark":"Adaugă „Realizat cu Excalidraw”","handDrawn":"Scris de mână","normal":"Normal","code":"Cod","small":"Mică","medium":"Medie","large":"Mare","veryLarge":"Foarte mare","solid":"Plină","hachure":"Hașură","zigzag":"Zigzag","crossHatch":"Hașură transversală","thin":"Subțire","bold":"Îngroșată","left":"Stânga","center":"Centru","right":"Dreapta","extraBold":"Extra îngroșată","architect":"Arhitect","artist":"Artist","cartoonist":"Caricaturist","fileTitle":"Nume de fișier","colorPicker":"Selector de culoare","canvasColors":"Folosite pe pânză","canvasBackground":"Fundalul pânzei","drawingCanvas":"Pânză pentru desenat","layers":"Straturi","actions":"Acțiuni","language":"Limbă","liveCollaboration":"Colaborare în direct...","duplicateSelection":"Duplicare","untitled":"Nedenumit","name":"Nume","yourName":"Numele tău","madeWithExcalidraw":"Realizat cu Excalidraw","group":"Grupare selecție","ungroup":"Degrupare selecție","collaborators":"Colaboratori","showGrid":"Afișare grilă","addToLibrary":"Adăugare la bibliotecă","removeFromLibrary":"Eliminare din bibliotecă","libraryLoadingMessage":"Se încarcă biblioteca…","libraries":"Răsfoiește bibliotecile","loadingScene":"Se încarcă scena…","align":"Aliniere","alignTop":"Aliniere sus","alignBottom":"Aliniere jos","alignLeft":"Aliniere la stânga","alignRight":"Aliniere la dreapta","centerVertically":"Centrare verticală","centerHorizontally":"Centrare orizontală","distributeHorizontally":"Distribuie orizontal","distributeVertically":"Distribuie vertical","flipHorizontal":"Răsturnare orizontală","flipVertical":"Răsturnare verticală","viewMode":"Mod de vizualizare","share":"Distribuie","showStroke":"Afișare selector culoare contur","showBackground":"Afișare selector culoare fundal","toggleTheme":"Comutare temă","personalLib":"Biblioteca personală","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Micșorează dimensiunea fontului","increaseFontSize":"Mărește dimensiunea fontului","unbindText":"Deconectare text","bindText":"Legare text de container","createContainerFromText":"Încadrare text într-un container","link":{"edit":"Editare URL","editEmbed":"Editare URL și încorporare","create":"Creare URL","createEmbed":"Creare URL și încorporare","label":"URL","labelEmbed":"URL și încorporare","empty":"Nu este setat niciun URL"},"lineEditor":{"edit":"Editare linie","exit":"Părăsire editor de linii"},"elementLock":{"lock":"Blocare","unlock":"Deblocare","lockAll":"Blocare toate","unlockAll":"Deblocare toate"},"statusPublished":"Publicat","sidebarLock":"Păstrează deschisă bara laterală","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Alegere culoare din pânză"},"library":{"noItems":"Niciun element adăugat încă...","hint_emptyLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici sau instalează o bibliotecă din depozitul public, de mai jos.","hint_emptyPrivateLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici."},"buttons":{"clearReset":"Resetare pânză","exportJSON":"Exportare la fișiere","exportImage":"Exportare imagine...","export":"Salvare în...","copyToClipboard":"Copiere în memoria temporară","save":"Salvare în fișierul curent","saveAs":"Salvare ca","load":"Deschidere","getShareableLink":"Obține URL partajabil","close":"Închidere","selectLanguage":"Selectare limbă","scrollBackToContent":"Derulare înapoi la conținut","zoomIn":"Apropiere","zoomOut":"Depărtare","resetZoom":"Resetare transfocare","menu":"Meniu","done":"Efectuat","edit":"Edit","undo":"Anulare","redo":"Refacere","resetLibrary":"Resetare bibliotecă","createNewRoom":"Creare cameră nouă","fullScreen":"Ecran complet","darkMode":"Mod întunecat","lightMode":"Mod luminos","zenMode":"Mod zen","objectsSnapMode":"Ancorare la obiecte","exitZenMode":"Ieșire din modul zen","cancel":"Anulare","clear":"Ștergere","remove":"Eliminare","embed":"Comutare încorporare","publishLibrary":"Publicare","submit":"Trimitere","confirm":"Confirmare","embeddableInteractionButton":"Clic pentru interacționare"},"alerts":{"clearReset":"Această opțiune va șterge întreaga pânză. Confirmi?","couldNotCreateShareableLink":"Nu s-a putut crea un URL partajabil.","couldNotCreateShareableLinkTooBig":"Nu s-a putut crea un URL partajabil: scena este prea mare","couldNotLoadInvalidFile":"Fișierul invalid nu a putut fi încărcat","importBackendFailed":"Importarea de la nivel de server a eșuat.","cannotExportEmptyCanvas":"Nu se poate exporta pânza goală.","couldNotCopyToClipboard":"Nu s-a putut copia în memoria temporară.","decryptFailed":"Datele nu au putut fi decriptate.","uploadedSecurly":"Încărcarea a fost securizată prin criptare integrală, însemnând că serverul Excalidraw și terții nu pot citi conținutul.","loadSceneOverridePrompt":"Încărcarea desenului extern va înlocui conținutul existent. Dorești să continui?","collabStopOverridePrompt":"Oprirea sesiunii va suprascrie desenul anterior stocat local. Confirmi alegerea?\\n\\n(Dacă vrei să păstrezi desenul local, pur și simplu închide fila navigatorului în schimb.)","errorAddingToLibrary":"Elementul nu a putut fi adăugat în bibliotecă","errorRemovingFromLibrary":"Elementul nu a putut fi eliminat din bibliotecă","confirmAddLibrary":"Această acțiune va adăuga {{numShapes}} formă(e) la biblioteca ta. Confirmi?","imageDoesNotContainScene":"Această imagine nu pare să conțină date de scenă. Ai activat încorporarea scenei în timpul exportului?","cannotRestoreFromImage":"Scena nu a putut fi restaurată din acest fișier de imagine","invalidSceneUrl":"Scena nu a putut fi importată din URL-ul furnizat. Este fie incorect formată, fie nu conține date JSON Excalidraw valide.","resetLibrary":"Această opțiune va elimina conținutul din bibliotecă. Confirmi?","removeItemsFromsLibrary":"Ștergi {{count}} element(e) din bibliotecă?","invalidEncryptionKey":"Cheia de criptare trebuie să aibă 22 de caractere. Colaborarea în direct este dezactivată.","collabOfflineWarning":"Nu este disponibilă nicio conexiune la internet.\\nModificările nu vor fi salvate!"},"errors":{"unsupportedFileType":"Tip de fișier neacceptat.","imageInsertError":"Imaginea nu a putut fi introdusă. Reîncearcă mai târziu...","fileTooBig":"Fișierul este prea mare. Dimensiunea maximă permisă este de {{maxSize}}.","svgImageInsertError":"Imaginea SVG nu a putut fi introdus. Marcajul SVG pare invalid.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Nu a putut fi realizată conexiunea la serverul de colaborare. Reîncarcă pagina și încearcă din nou.","importLibraryError":"Biblioteca nu a putut fi încărcată","collabSaveFailed":"Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","collabSaveFailed_sizeExceeded":"Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","brave_measure_text_error":{"line1":"Se pare că folosești navigatorul Brave cu opțiunea strictă pentru blocarea amprentării.","line2":"Acest lucru poate duce la întreruperea elementelor text din desene.","line3":"Îți recomandăm ferm să dezactivezi această setare. Poți urma acești pași pentru a face acest lucru.","line4":"Dacă dezactivarea acestei setări nu duce la remedierea afișării elementelor text, deschide un tichet de problemă pe pagina noastră de GitHub sau scrie-ne pe Discord"},"libraryElementTypeError":{"embeddable":"Elementele încorporabile nu pot fi adăugate la bibliotecă.","image":"În curând vor putea fi adăugate imagini în bibliotecă!"}},"toolBar":{"selection":"Selecție","image":"Introducere imagine","rectangle":"Dreptunghi","diamond":"Romb","ellipse":"Elipsă","arrow":"Săgeată","line":"Linie","freedraw":"Desenare","text":"Text","library":"Bibliotecă","lock":"Menține activ instrumentul selectat după desenare","penMode":"Mod stilou – împiedică atingerea","link":"Adăugare/actualizare URL pentru forma selectată","eraser":"Radieră","frame":"","embeddable":"Încorporare web","laser":"Indicator laser","hand":"Mână (instrument de panoramare)","extraTools":""},"headings":{"canvasActions":"Acțiuni pentru pânză","selectedShapeActions":"Acțiuni pentru forma selectată","shapes":"Forme"},"hints":{"canvasPanning":"Pentru a muta pânză, ține apăsată rotița mausului sau bara de spațiu sau folosește instrumentul în formă de mână","linearElement":"Dă clic pentru a crea mai multe puncte, glisează pentru a forma o singură linie","freeDraw":"Dă clic pe pânză și glisează cursorul, apoi eliberează-l când ai terminat","text":"Sfat: poți adăuga text și dând dublu clic oriunde cu instrumentul de selecție","embeddable":"Dă clic și trage pentru a crea un cod de încorporare de pagină web","text_selected":"Dă dublu clic sau apasă tasta Enter pentru a edita textul","text_editing":"Apasă tasta Escape sau Ctrl sau Cmd + Enter pentru a finaliza editarea","linearElementMulti":"Dă clic pe ultimul punct sau apasă tasta Escape sau tasta Enter pentru a termina","lockAngle":"Poți constrânge unghiul prin ținerea apăsată a tastei SHIFT","resize":"Poți constrânge proporțiile, ținând apăsată tasta SHIFT în timp ce redimensionezi,\\nține apăsată tasta ALT pentru a redimensiona de la centru","resizeImage":"Poți redimensiona liber ținând apăsată tasta SHIFT,\\nține apăsată tasta ALT pentru a redimensiona din centru","rotate":"Poți constrânge unghiurile, ținând apăsată tasta SHIFT în timp ce rotești","lineEditor_info":"Ține apăsată tasta Ctrl sau Cmd și dă dublu clic sau apasă tasta Ctrl sau Cmd + Enter pentru a edita puncte","lineEditor_pointSelected":"Apasă tasta Delete pentru a elimina punctele,\\ncombinația de taste Ctrl sau Cmd + D pentru a le duplica sau glisează-le pentru a le schimba poziția","lineEditor_nothingSelected":"Selectează un punct pentru a-l edita (ține apăsată tasta SHIFT pentru a selecta mai multe),\\nsau ține apăsată tasta Alt și dă clic pentru a adăuga puncte noi","placeImage":"Dă clic pentru a poziționa imaginea sau dă clic și glisează pentru a seta manual dimensiunea imaginii","publishLibrary":"Publică propria bibliotecă","bindTextToElement":"Apasă tasta Enter pentru a adăuga text","deepBoxSelect":"Ține apăsată tasta Ctrl sau Cmd pentru a efectua selectarea de adâncime și pentru a preveni glisarea","eraserRevert":"Ține apăsată tasta Alt pentru a anula elementele marcate pentru ștergere","firefox_clipboard_write":"Această caracteristică poate fi probabil activată prin setarea preferinței „dom.events.asyncClipboard.clipboardItem” ca „true”. Pentru a schimba preferințele navigatorului în Firefox, accesează pagina „about:config”.","disableSnapping":"Ține apăsat CtrlOrCmd pentru a dezactiva ancorarea"},"canvasError":{"cannotShowPreview":"Nu se poate afișa previzualizarea","canvasTooBig":"Pânza poate fi prea mare.","canvasTooBigTip":"Sfat: încearcă să apropii puțin mai mult elementele cele mai îndepărtate."},"errorSplash":{"headingMain":"A apărut o eroare. Încearcă .","clearCanvasMessage":"Dacă reîncărcarea nu funcționează, încearcă .","clearCanvasCaveat":" Acest lucru va duce la pierderea progresului ","trackedToSentry":"Eroarea cu identificatorul {{eventId}} a fost urmărită în sistemul nostru.","openIssueMessage":"Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, oferă-ne mai multe informații în . Include informațiile de mai jos copiindu-le și lipindu-le în tichetul cu problemă de pe GitHub.","sceneContent":"Conținutul scenei:"},"roomDialog":{"desc_intro":"Poți invita alte persoane pentru a colabora la scena actuală.","desc_privacy":"Nu te îngrijora. Sesiunea utilizează criptarea integrală, astfel încât orice desenezi va rămâne privat. Nici măcar serverul nostru nu va putea vedea pe ce ai lucrat.","button_startSession":"Pornire sesiune","button_stopSession":"Oprire sesiune","desc_inProgressIntro":"Sesiunea de colaborare în direct este în curs de desfășurare.","desc_shareLink":"Distribuie acest URL persoanelor cu care dorești să colaborezi:","desc_exitSession":"Oprirea sesiunii te va deconecta de la sală, însă vei putea lucra în continuare, pe plan local, cu scena. Reține că această opțiune nu va afecta alte persoane, iar acestea vor putea să colaboreze în continuare pe versiunea lor.","shareTitle":"Alătură-te unei sesiuni de colaborare în direct pe Excalidraw"},"errorDialog":{"title":"Eroare"},"exportDialog":{"disk_title":"Salvare pe disc","disk_details":"Exportă datele scenei pe un fișier din care poți importa mai târziu.","disk_button":"Salvare în fișier","link_title":"URL partajabil","link_details":"Exportă ca URL doar în citire.","link_button":"Exportare în URL","excalidrawplus_description":"Salvează scena în spațiul de lucru Excalidraw+.","excalidrawplus_button":"Exportare","excalidrawplus_exportError":"Excalidraw+ nu a putut fi exportat în acest moment..."},"helpDialog":{"blog":"Citește blogul nostru","click":"clic","deepSelect":"Selectare de adâncime","deepBoxSelect":"Selectare de adâncime în casetă și prevenire glisare","curvedArrow":"Săgeată curbată","curvedLine":"Linie curbată","documentation":"Documentație","doubleClick":"dublu clic","drag":"glisare","editor":"Editor","editLineArrowPoints":"Editare puncte de săgeată/rând","editText":"Editare text/adăugare etichetă","github":"Ai întâmpinat o problemă? Trimite un raport","howto":"Urmărește ghidurile noastre","or":"sau","preventBinding":"Împiedică legarea săgeții","tools":"Instrumente","shortcuts":"Comenzi rapide de la tastatură","textFinish":"Finalizează editarea (editor de text)","textNewLine":"Adaugă o linie nouă (editor de text)","title":"Ajutor","view":"Vizualizare","zoomToFit":"Transfocare pentru a cuprinde totul","zoomToSelection":"Transfocare la selecție","toggleElementLock":"Blocare/deblocare selecție","movePageUpDown":"Deplasare pagină sus/jos","movePageLeftRight":"Deplasare pagină stânga/dreapta"},"clearCanvasDialog":{"title":"Ștergere pânză"},"publishDialog":{"title":"Publicare bibliotecă","itemName":"Denumirea elementului","authorName":"Numele autorului","githubUsername":"Numele de utilizator GitHub","twitterUsername":"Numele de utilizator Twitter","libraryName":"Denumirea bibliotecii","libraryDesc":"Descrierea bibliotecii","website":"Pagină de internet","placeholder":{"authorName":"Numele sau numele tău de utilizator","libraryName":"Numele bibliotecii tale","libraryDesc":"Descrierea bibliotecii tale pentru a ajuta oamenii să înțeleagă utilizarea acesteia","githubHandle":"Numele de utilizator GitHub (opțional), pentru a putea edita biblioteca odată ce este trimisă spre revizuire","twitterHandle":"Numele de utilizator Twitter (opțional), pentru a indica sursa la promovarea pe Twitter","website":"Trimitere către pagina ta personală de internet sau altundeva (opțional)"},"errors":{"required":"Obligatoriu","website":"Introdu un URL valid"},"noteDescription":"Trimite-ți biblioteca pentru a fi inclusă în depozitul de biblioteci publice în vederea utilizării de către alte persoane în desenele lor.","noteGuidelines":"Biblioteca trebuie aprobată manual mai întâi. Citește orientările înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar.","noteLicense":"Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub Licența MIT, care, pe scurt, înseamnă că oricine o poate folosi fără restricții.","noteItems":"Fiecare element din bibliotecă trebuie să aibă propriul nume astfel încât să fie filtrabil. Următoarele elemente din bibliotecă vor fi incluse:","atleastOneLibItem":"Selectează cel puțin un element din bibliotecă pentru a începe","republishWarning":"Observație: unele dintre elementele selectate sunt marcate ca fiind deja publicate/trimise. Ar trebui să retrimiți elemente numai atunci când actualizezi o trimitere sau o bibliotecă existentă."},"publishSuccessDialog":{"title":"Bibliotecă trimisă","content":"Îți mulțumim, {{authorName}}. Biblioteca a fost trimisă spre revizuire. Poți urmări starea aici"},"confirmDialog":{"resetLibrary":"Resetare bibliotecă","removeItemsFromLib":"Elimină elementele selectate din bibliotecă"},"imageExportDialog":{"header":"Exportare imagine","label":{"withBackground":"Fundal","onlySelected":"Numai selecția","darkMode":"Mod întunecat","embedScene":"Încorporare scenă","scale":"Scală","padding":"Spațiere"},"tooltip":{"embedScene":"Datele scenei vor fi salvate în fișierul PNG/SVG exportat, astfel că scena va putea fi restaurată din acesta.\\nVa crește dimensiunea fișierului exportat."},"title":{"exportToPng":"Exportare ca PNG","exportToSvg":"Exportare ca SVG","copyPngToClipboard":"Copiere PNG în memoria temporară"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiere în memoria temporară"}},"encrypted":{"tooltip":"Desenele tale sunt criptate integral, astfel că serverele Excalidraw nu le vor vedea niciodată.","link":"Articol de blog pe criptarea integrală din Excalidraw"},"stats":{"angle":"Unghi","element":"Element","elements":"Elemente","height":"Înălțime","scene":"Scenă","selected":"Selectate","storage":"Stocare","title":"Statistici pentru pasionați","total":"Total","version":"Versiune","versionCopy":"Clic pentru copiere","versionNotAvailable":"Versiune indisponibilă","width":"Lățime"},"toast":{"addedToLibrary":"Adăugat în bibliotecă","copyStyles":"Stiluri copiate.","copyToClipboard":"Copiat în memoria temporară.","copyToClipboardAsPng":"S-a copiat {{exportSelection}} în memoria temporară sub formă de PNG\\n({{exportColorScheme}})","fileSaved":"Fișier salvat.","fileSavedToFilename":"Salvat în {filename}","canvas":"pânza","selection":"selecția","pasteAsSingleElement":"Folosește {{shortcut}} pentru a insera ca un singur element\\nsau insera într-un editor de text existent","unableToEmbed":"Încorporarea acestui URL nu este permisă momentan. Deschideți un tichet cu probleme pe GitHub pentru a solicita adăugarea acestui URL în lista albă","unrecognizedLinkFormat":"URL-ul pe care l-ai încorporat nu coincide cu formatul așteptat. Încearcă să lipești șirul „de încorporat” furnizat de pagina sursă"},"colors":{"transparent":"Transparent","black":"Negru","white":"Alb","red":"Roșu","pink":"Roz","grape":"Struguriu","violet":"Violet","gray":"Gri","blue":"Albastru","cyan":"Cyan","teal":"Cyan-verde","green":"Verde","yellow":"Galben","orange":"Portocaliu","bronze":"Bronz"},"welcomeScreen":{"app":{"center_heading":"Toate datele tale sunt salvate local în navigatorul tău.","center_heading_plus":"Ai vrut să mergi în schimb la Excalidraw+?","menuHint":"Exportare, preferințe, limbi, ..."},"defaults":{"menuHint":"Exportare, preferințe și mai multe...","center_heading":"Diagrame. Făcute. Simple.","toolbarHint":"Alege un instrument și începe să desenezi!","helpHint":"Comenzi rapide și ajutor"}},"colorPicker":{"mostUsedCustomColors":"Cele mai utilizate culori personalizate","colors":"Culori","shades":"Nuanțe","hexCode":"Cod hexa","noShades":"Nu este disponibilă nicio nuanță pentru această culoare"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportare ca imagine","button":"Exportare ca imagine","description":"Exportă datele scenei ca fișier din care poți importa mai târziu."},"saveToDisk":{"title":"Salvare pe disc","button":"Salvare pe disc","description":"Exportă datele scenei pe un fișier din care poți importa mai târziu."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportare în Excalidraw+","description":"Salvează scena în spațiul de lucru Excalidraw+."}},"modal":{"loadFromFile":{"title":"Încărcare din fișier","button":"Încărcare din fișier","description":"Încărcarea dintr-un fișier va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."},"shareableLink":{"title":"Încărcare din lnk","button":"Înlocuiește conținutul meu","description":"Încărcarea unui desen extern va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js b/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js new file mode 100644 index 0000000..c66bc7a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8124],{2253:function(e){e.exports=JSON.parse('{"labels":{"paste":"Вставить","pasteAsPlaintext":"Вставить как обычный текст","pasteCharts":"Вставить диаграммы","selectAll":"Выбрать всё","multiSelect":"Добавить элемент в выделенный фрагмент","moveCanvas":"Переместить холст","cut":"Вырезать","copy":"Копировать","copyAsPng":"Скопировать в буфер обмена как PNG","copyAsSvg":"Скопировать в буфер обмена как SVG","copyText":"Скопировать в буфер обмена как текст","bringForward":"Переместить вперед","sendToBack":"На задний план","bringToFront":"На передний план","sendBackward":"Переместить назад","delete":"Удалить","copyStyles":"Скопировать стили","pasteStyles":"Вставить стили","stroke":"Обводка","background":"Фон","fill":"Заливка","strokeWidth":"Толщина штриха","strokeStyle":"Стиль обводки","strokeStyle_solid":"Сплошная","strokeStyle_dashed":"Пунктирная","strokeStyle_dotted":"Точечная","sloppiness":"Стиль обводки","opacity":"Непрозрачность","textAlign":"Выравнивание текста","edges":"Края","sharp":"Острые","round":"Скругленные","arrowheads":"Стрелка","arrowhead_none":"Нет","arrowhead_arrow":"Cтрелка","arrowhead_bar":"Черта","arrowhead_dot":"Точка","arrowhead_triangle":"Треугольник","fontSize":"Размер шрифта","fontFamily":"Семейство шрифтов","addWatermark":"Добавить «Создано в Excalidraw»","handDrawn":"От руки","normal":"Обычный","code":"Код","small":"Малый","medium":"Средний","large":"Большой","veryLarge":"Очень большой","solid":"Однотонная","hachure":"Штрихованная","zigzag":"Зигзаг","crossHatch":"Перекрестная","thin":"Тонкая","bold":"Жирная","left":"Слева","center":"Центр","right":"Справа","extraBold":"Очень жирная","architect":"Архитектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Имя файла","colorPicker":"Выбор цвета","canvasColors":"Используется на холсте","canvasBackground":"Фон холста","drawingCanvas":"Полотно","layers":"Слои","actions":"Действия","language":"Язык","liveCollaboration":"Онлайн взаимодействие...","duplicateSelection":"Дубликат","untitled":"Безымянный","name":"Имя","yourName":"Ваше имя","madeWithExcalidraw":"Сделано в Excalidraw","group":"Сгруппировать выделение","ungroup":"Разделить выделение","collaborators":"Участники","showGrid":"Показать сетку","addToLibrary":"Добавить в библиотеку","removeFromLibrary":"Удалить из библиотеки","libraryLoadingMessage":"Загрузка библиотеки…","libraries":"Просмотреть библиотеки","loadingScene":"Загрузка сцены…","align":"Выровнять","alignTop":"Выровнять по верхнему краю","alignBottom":"Выровнять по нижнему краю","alignLeft":"Выровнять по левому краю","alignRight":"Выровнять по правому краю","centerVertically":"Центрировать по вертикали","centerHorizontally":"Центрировать по горизонтали","distributeHorizontally":"Распределить по горизонтали","distributeVertically":"Распределить по вертикали","flipHorizontal":"Переворот по горизонтали","flipVertical":"Переворот по вертикали","viewMode":"Вид","share":"Поделиться","showStroke":"Показать выбор цвета обводки","showBackground":"Показать выбор цвета фона","toggleTheme":"Переключить тему","personalLib":"Личная библиотека","excalidrawLib":"Библиотека Excalidraw","decreaseFontSize":"Уменьшить шрифт","increaseFontSize":"Увеличить шрифт","unbindText":"Отвязать текст","bindText":"Привязать текст к контейнеру","createContainerFromText":"Поместить текст в контейнер","link":{"edit":"Редактировать ссылку","editEmbed":"","create":"Создать ссылку","createEmbed":"","label":"Ссылка","labelEmbed":"","empty":""},"lineEditor":{"edit":"Редактирование строки","exit":"Выход из редактора строки"},"elementLock":{"lock":"Блокировать","unlock":"Разблокировать","lockAll":"Заблокировать все","unlockAll":"Разблокировать все"},"statusPublished":"Опубликовано","sidebarLock":"Держать боковую панель открытой","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Взять образец цвета с холста"},"library":{"noItems":"Пока ничего не добавлено...","hint_emptyLibrary":"Выберите объект на холсте, чтобы добавить его сюда, или установите библиотеку из публичного репозитория ниже.","hint_emptyPrivateLibrary":"Выберите объект на холсте, чтобы добавить его сюда."},"buttons":{"clearReset":"Очистить холст и сбросить цвет фона","exportJSON":"Сохранить в","exportImage":"Экспортировать изображение...","export":"Сохранить как...","copyToClipboard":"Скопировать в буфер обмена","save":"Сохранить в текущий файл","saveAs":"Сохранить как","load":"Открыть","getShareableLink":"Получить доступ по ссылке","close":"Закрыть","selectLanguage":"Выбрать язык","scrollBackToContent":"Вернуться к содержимому","zoomIn":"Увеличить","zoomOut":"Уменьшить","resetZoom":"Сбросить масштаб","menu":"Меню","done":"Готово","edit":"Изменить","undo":"Шаг назад","redo":"Шаг вперед","resetLibrary":"Сброс библиотеки","createNewRoom":"Создать новую комнату","fullScreen":"Полный экран","darkMode":"Темная тема","lightMode":"Светлая тема","zenMode":"Режим Дзен","objectsSnapMode":"Привязка к объектам","exitZenMode":"Выключить режим концентрации внимания","cancel":"Отменить","clear":"Очистить","remove":"Удалить","embed":"","publishLibrary":"Опубликовать","submit":"Отправить","confirm":"Подтвердить","embeddableInteractionButton":""},"alerts":{"clearReset":"Это очистит весь холст. Вы уверены?","couldNotCreateShareableLink":"Не удалось создать общедоступную ссылку.","couldNotCreateShareableLinkTooBig":"Нельзя создать ссылку, чтобы поделиться. Сцена слишком большая","couldNotLoadInvalidFile":"Не удалось загрузить недопустимый файл","importBackendFailed":"Не удалось импортировать из бэкэнда.","cannotExportEmptyCanvas":"Не может экспортировать пустой холст.","couldNotCopyToClipboard":"Не удалось скопировать в буфер обмена.","decryptFailed":"Не удалось расшифровать данные.","uploadedSecurly":"Загружаемые данные защищена сквозным шифрованием, что означает, что сервер Excalidraw и третьи стороны не могут прочитать содержимое.","loadSceneOverridePrompt":"Загрузка рисунка приведёт к замене имеющегося содержимого. Вы хотите продолжить?","collabStopOverridePrompt":"Остановка сессии перезапишет ваш предыдущий, локально сохранённый рисунок. Вы уверены? \\n\\n(Если вы хотите оставить ваш локальный рисунок, просто закройте вкладку браузера)","errorAddingToLibrary":"Не удалось добавить объект в библиотеку","errorRemovingFromLibrary":"Не удалось удалить объект из библиотеки","confirmAddLibrary":"Будет добавлено {{numShapes}} фигур в вашу библиотеку. Продолжить?","imageDoesNotContainScene":"Это изображение не содержит данных сцены. Вы включили встраивание сцены во время экспорта?","cannotRestoreFromImage":"Сцена не может быть восстановлена из этого изображения","invalidSceneUrl":"Невозможно импортировать сцену с предоставленного URL. Неверный формат, или не содержит верных Excalidraw JSON данных.","resetLibrary":"Это очистит вашу библиотеку. Вы уверены?","removeItemsFromsLibrary":"Удалить {{count}} объект(ов) из библиотеки?","invalidEncryptionKey":"Ключ шифрования должен состоять из 22 символов. Одновременное редактирование отключено.","collabOfflineWarning":"Отсутствует интернет-соединение.\\nВаши изменения не будут сохранены!"},"errors":{"unsupportedFileType":"Неподдерживаемый тип файла.","imageInsertError":"Не удалось вставить изображение. Попробуйте позже...","fileTooBig":"Очень большой файл. Максимально разрешенный размер {{maxSize}}.","svgImageInsertError":"Не удалось вставить изображение SVG. Разметка SVG выглядит недействительной.","failedToFetchImage":"Не удалось получить изображение.","invalidSVGString":"Некорректный SVG.","cannotResolveCollabServer":"Не удалось подключиться к серверу совместного редактирования. Перезагрузите страницу и повторите попытку.","importLibraryError":"Не удалось загрузить библиотеку","collabSaveFailed":"Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","collabSaveFailed_sizeExceeded":"Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","brave_measure_text_error":{"line1":"Похоже, вы используете браузер Brave с включенной опцией Агрессивно блокировать отслеживание.","line2":"Это может привести к поломке Текстовых объектов на рисунке.","line3":"Мы настоятельно рекомендуем отключить эту настройку. Для этого нужно выполнить эти шаги.","line4":"Если отключение этой настройки не исправит отображение текстовых объектов, создайте issue на нашем GitHub или напишите нам в Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Выделение области","image":"Вставить изображение","rectangle":"Прямоугольник","diamond":"Ромб","ellipse":"Эллипс","arrow":"Cтрелка","line":"Линия","freedraw":"Чертить","text":"Текст","library":"Библиотека","lock":"Сохранять выбранный инструмент активным после рисования","penMode":"Режим пера - предотвращение касания","link":"Добавить/обновить ссылку для выбранной фигуры","eraser":"Ластик","frame":"","embeddable":"","laser":"Лазерная указка","hand":"Рука (перемещение холста)","extraTools":""},"headings":{"canvasActions":"Операции холста","selectedShapeActions":"Операции выбранной фигуры","shapes":"Фигуры"},"hints":{"canvasPanning":"Чтобы двигать холст, удерживайте колесо мыши или пробел во время перетаскивания, или используйте инструмент \\"Рука\\"","linearElement":"Нажмите, чтобы начать несколько точек, перетащите для одной линии","freeDraw":"Нажмите и перетаскивайте, отпустите по завершении","text":"Совет: при выбранном инструменте выделения дважды щёлкните в любом месте, чтобы добавить текст","embeddable":"","text_selected":"Дважды щелкните мышью или нажмите ENTER, чтобы редактировать текст","text_editing":"Нажмите Escape либо Ctrl или Cmd + ENTER для завершения редактирования","linearElementMulti":"Кликните на последней точке или нажмите Escape или Enter чтобы закончить","lockAngle":"Вы можете ограничить угол удерживая SHIFT","resize":"Вы можете ограничить пропорции, удерживая SHIFT во время изменения размеров,\\nудерживайте ALT чтобы изменить размер из центра","resizeImage":"Вы можете свободно изменять размеры, удерживая кнопку SHIFT,\\nудерживайте кнопку ALT, чтобы изменять размер относительно центра","rotate":"Вы можете ограничить углы, удерживая SHIFT во время вращения","lineEditor_info":"Удерживайте CtrlOrCmd и дважды кликните или нажмите CtrlOrCmd + Enter для редактирования точек","lineEditor_pointSelected":"Нажмите Delete для удаления точки (точек),\\nCtrl+D или Cmd+D для дублирования, перетащите для перемещения","lineEditor_nothingSelected":"Выберите точку для редактирования (удерживайте SHIFT выбора нескольких точек),\\nили удерживайте Alt и кликните для добавления новых точек","placeImage":"Щелкните, чтобы разместить изображение, или нажмите и перетащите, чтобы установить его размер вручную","publishLibrary":"Опубликовать свою собственную библиотеку","bindTextToElement":"Нажмите Enter для добавления текста","deepBoxSelect":"Удерживайте Ctrl или Cmd для глубокого выделения, чтобы предотвратить перетаскивание","eraserRevert":"Удерживайте Alt, чтобы вернуть элементы, отмеченные для удаления","firefox_clipboard_write":"Эта функция может быть включена при изменении значения флага \\"dom.events.asyncClipboard.clipboardItem\\" на \\"true\\". Чтобы изменить флаги браузера в Firefox, посетите страницу \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не удается отобразить предпросмотр","canvasTooBig":"Сцена слишком большая.","canvasTooBigTip":"Совет: попробуйте сблизить элементы рисунка."},"errorSplash":{"headingMain":"Возникла ошибка. Попробуйте ","clearCanvasMessage":"Если перезагрузка страницы не помогла, попробуйте ","clearCanvasCaveat":" Текущая работа будет утеряна ","trackedToSentry":"Ошибка с идентификатором {{eventId}} отслеживается в нашей системе.","openIssueMessage":"Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.","sceneContent":"Содержание сцены:"},"roomDialog":{"desc_intro":"Вы можете пригласить людей в текущую сцену для совместной работы.","desc_privacy":"Не беспокойтесь — во время сеанса используется сквозное шифрование. Всё, что вы нарисуете, останется конфиденциальным и не будет доступно даже нашему серверу.","button_startSession":"Начать сеанс","button_stopSession":"Завершить сеанс","desc_inProgressIntro":"Сеанс совместной работы запущен.","desc_shareLink":"Поделитесь этой ссылкой со всеми участниками:","desc_exitSession":"Завершив сеанс, вы выйдете из комнаты, но сможете продолжить работать с документом локально. Это не повлияет на работу других пользователей — они смогут продолжить совместную работу с их версией документа.","shareTitle":"Присоединиться к активной совместной сессии на Excalidraw"},"errorDialog":{"title":"Ошибка"},"exportDialog":{"disk_title":"Сохранить на диск","disk_details":"Экспортировать данные сцены в файл, из которого можно импортировать позже.","disk_button":"Сохранить в файл","link_title":"Поделитесь ссылкой","link_details":"Экспорт ссылки только для чтения.","link_button":"Экспорт в ссылку","excalidrawplus_description":"Сохраните сцену в ваше рабочее пространство Excalidraw+.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Не удалось экспортировать в Excalidraw+ на данный момент..."},"helpDialog":{"blog":"Прочитайте наш блог","click":"нажать","deepSelect":"Глубокое выделение","deepBoxSelect":"Глубокое выделение рамкой, и предотвращение перетаскивания","curvedArrow":"Изогнутая стрелка","curvedLine":"Изогнутая линия","documentation":"Документация","doubleClick":"двойной клик","drag":"перетащить","editor":"Редактор","editLineArrowPoints":"Редактировать концы линий/стрелок","editText":"Редактировать текст / добавить метку","github":"Нашли проблему? Отправьте","howto":"Следуйте нашим инструкциям","or":"или","preventBinding":"Предотвращать привязку стрелок","tools":"Инструменты","shortcuts":"Горячие клавиши","textFinish":"Закончить редактирование (текстовый редактор)","textNewLine":"Добавить новую строку (текстовый редактор)","title":"Помощь","view":"Просмотр","zoomToFit":"Отмастштабировать, чтобы поместились все элементы","zoomToSelection":"Увеличить до выделенного","toggleElementLock":"Заблокировать/разблокировать выделение","movePageUpDown":"Сдвинуть страницу вверх/вниз","movePageLeftRight":"Сдвинуть страницу вправо/влево"},"clearCanvasDialog":{"title":"Очистить холст"},"publishDialog":{"title":"Опубликовать библиотеку","itemName":"Название объекта","authorName":"Имя автора","githubUsername":"Имя пользователя GitHub","twitterUsername":"Имя пользователя в Twitter","libraryName":"Название библиотеки","libraryDesc":"Описание библиотеки","website":"Веб-сайт","placeholder":{"authorName":"Ваше имя или имя пользователя","libraryName":"Название вашей библиотеки","libraryDesc":"Описание вашей библиотеки, которое поможет людям понять её назначение","githubHandle":"Имя пользователя GitHub (необязательно), чтобы вы смогли редактировать библиотеку после её отправки на проверку","twitterHandle":"Имя пользователя в Twitter (необязательно), чтобы мы знали, кого упомянуть при продвижении в Twitter","website":"Ссылка на ваш личный или какой-то другой сайт (необязательно)"},"errors":{"required":"Обязательно","website":"Введите допустимый URL-адрес"},"noteDescription":"Отправить вашу библиотеку для включения в хранилище публичных библиотек, чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках.","noteGuidelines":"Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите рекомендации перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно.","noteLicense":"Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под лицензией MIT, , что, вкратце, означает, что каждый может использовать её без ограничений.","noteItems":"Каждый объект в библиотеке должен иметь свое собственное имя, чтобы по нему можно было фильтровать. Следующие объекты библиотеки будут включены:","atleastOneLibItem":"Пожалуйста, выберите хотя бы один объект в библиотеке, чтобы начать","republishWarning":"Примечание: некоторые из выбранных элементов помечены как уже опубликованные/отправленные. Вы должны повторно отправить элементы только при обновлении существующей библиотеки или сдаче работы."},"publishSuccessDialog":{"title":"Библиотека отправлена","content":"Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статусздесь"},"confirmDialog":{"resetLibrary":"Сброс библиотеки","removeItemsFromLib":"Удалить выбранные объекты из библиотеки"},"imageExportDialog":{"header":"Экспортировать изображение","label":{"withBackground":"Фон","onlySelected":"Только выделенное","darkMode":"Темная тема","embedScene":"Встроить сцену","scale":"Масштаб","padding":"Отступ"},"tooltip":{"embedScene":"Сцена будет сохранена в PNG/SVG файл так, чтобы всю сцену можно будет восстановить из этого файла. Это увеличит размер файла."},"title":{"exportToPng":"Экспорт в PNG","exportToSvg":"Экспорт в SVG","copyPngToClipboard":"Скопировать PNG в буфер обмена"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Скопировать в буфер обмена"}},"encrypted":{"tooltip":"Ваши данные защищены сквозным (End-to-end) шифрованием. Серверы Excalidraw никогда не получат доступ к ним.","link":"Запись блога о сквозном шифровании в Excalidraw"},"stats":{"angle":"Угол","element":"Элемент","elements":"Элементы","height":"Высота","scene":"Сцены","selected":"Выбран","storage":"Хранилище","title":"Статистика для ботаников","total":"Всего","version":"Версия","versionCopy":"Копировать","versionNotAvailable":"Версия не доступна","width":"Ширина"},"toast":{"addedToLibrary":"Добавлено в библиотеку","copyStyles":"Скопированы стили.","copyToClipboard":"Скопировано в буфер обмена.","copyToClipboardAsPng":"{{exportSelection}} скопировано как PNG ({{exportColorScheme}})","fileSaved":"Файл сохранён.","fileSavedToFilename":"Сохранено в {filename}","canvas":"холст","selection":"выделение","pasteAsSingleElement":"Используйте {{shortcut}}, чтобы вставить один объект,\\nили вставьте в существующий текстовый редактор","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачный","black":"Чёрный","white":"Белый","red":"Красный","pink":"Розовый","grape":"Виноградный","violet":"Фиолетовый","gray":"Серый","blue":"Синий","cyan":"Голубой","teal":"Бирюзовый","green":"Зелёный","yellow":"Жёлтый","orange":"Оранжевый","bronze":"Бронзовый"},"welcomeScreen":{"app":{"center_heading":"Все ваши данные сохраняются локально в вашем браузере.","center_heading_plus":"Хотите перейти на Excalidraw+?","menuHint":"Экспорт, настройки, языки, ..."},"defaults":{"menuHint":"Экспорт, настройки и другое...","center_heading":"Диаграммы. Просто.","toolbarHint":"Выберите инструмент и начните рисовать!","helpHint":"Сочетания клавиш и помощь"}},"colorPicker":{"mostUsedCustomColors":"Часто используемые пользовательские цвета","colors":"Цвета","shades":"Оттенки","hexCode":"Шестнадцатеричный код","noShades":"Нет доступных оттенков для этого цвета"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Экспортировать как изображение","button":"Экспортировать как изображение","description":""},"saveToDisk":{"title":"Сохранить на диск","button":"Сохранить на диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Экспорт в Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Загрузить из файла","button":"Загрузить из файла","description":""},"shareableLink":{"title":"Загрузить по ссылке","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js b/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js new file mode 100644 index 0000000..909d7e6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1302],{5497:function(e){e.exports=JSON.parse('{"labels":{"paste":"අලවන්න","pasteAsPlaintext":"","pasteCharts":"ප්‍රස්ථාරය","selectAll":"සියල්ලම","multiSelect":"තෝරා ගැනීමට අංගය එකතු කරන්න","moveCanvas":"කැන්වසය චලනය කරන්න","cut":"කපන්න","copy":"පිටපත් කරන්න","copyAsPng":"PNG ලෙස පිටපත් කරන්න","copyAsSvg":"SVG ලෙස පිටපත් කරන්න","copyText":"","bringForward":"ඉදිරියට ගෙන්න","sendToBack":"පසුපසටම ගෙනියන්න","bringToFront":"ඉදිරියටම ගෙන්න","sendBackward":"පසුපසට ගෙනියන්න","delete":"මකන්න","copyStyles":"","pasteStyles":"","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"","arrowhead_bar":"","arrowhead_dot":"","arrowhead_triangle":"","fontSize":"","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"","small":"","medium":"","large":"","veryLarge":"ඉතා විශාල","solid":"විශාල","hachure":"මධ්‍යම","zigzag":"","crossHatch":"","thin":"කෙට්ටු","bold":"තද","left":"වම","center":"මැද","right":"දකුණ","extraBold":"ඉතා තද","architect":"වාස්තුවේදීයා","artist":"කලාකරු","cartoonist":"සැකිලිරූකරු","fileTitle":"ගොනු නාමය","colorPicker":"පාට තෝරකය","canvasColors":"","canvasBackground":"කැන්වස පසුබිම","drawingCanvas":"චිත්‍රක කැන්වසය","layers":"ලේයර","actions":"ක්‍රියාකාරකම","language":"භාෂාව ","liveCollaboration":"","duplicateSelection":"","untitled":"","name":"නම","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js b/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js new file mode 100644 index 0000000..3580f10 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8750],{4570:function(e){e.exports=JSON.parse('{"labels":{"paste":"Vložiť","pasteAsPlaintext":"Vložiť ako obyčajný text","pasteCharts":"Vložiť grafy","selectAll":"Vybrať všetko","multiSelect":"Pridať prvok do výberu","moveCanvas":"Pohyb plátna","cut":"Vystrihnúť","copy":"Kopírovať","copyAsPng":"Kopírovať do schránky ako PNG","copyAsSvg":"Kopírovať do schránky ako SVG","copyText":"Kopírovať do schránky ako text","bringForward":"Presunúť o úroveň dopredu","sendToBack":"Presunúť dozadu","bringToFront":"Presunúť dopredu","sendBackward":"Presunúť o úroveň dozadu","delete":"Vymazať","copyStyles":"Kopírovať štýly","pasteStyles":"Vložiť štýly","stroke":"Obrys","background":"Pozadie","fill":"Výplň","strokeWidth":"Hrúbka obrysu","strokeStyle":"Štýl obrysu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čiarkovaný","strokeStyle_dotted":"Bodkovaný","sloppiness":"Štylizácia","opacity":"Priehľadnosť","textAlign":"Zarovnanie textu","edges":"Okraje","sharp":"Ostré","round":"Zaokrúhlené","arrowheads":"Zakončenie šípky","arrowhead_none":"Žiadne","arrowhead_arrow":"Šípka","arrowhead_bar":"Čiara","arrowhead_dot":"Bod","arrowhead_triangle":"Trojuholník","fontSize":"Veľkosť písma","fontFamily":"Písmo","addWatermark":"Pridať \\"Vytvorené s Excalidraw\\"","handDrawn":"Ručne písané","normal":"Normálne","code":"Kód","small":"Malé","medium":"Stredné","large":"Veľké","veryLarge":"Veľmi veľké","solid":"Plná","hachure":"Šrafovaná","zigzag":"Cik-cak","crossHatch":"Mriežkovaná","thin":"Tenká","bold":"Hrubá","left":"Doľava","center":"Na stred","right":"Doprava","extraBold":"Veľmi hrubá","architect":"Architekt","artist":"Umelec","cartoonist":"Ilustrátor","fileTitle":"Názov súboru","colorPicker":"Výber farby","canvasColors":"Použité na plátne","canvasBackground":"Pozadie plátna","drawingCanvas":"Kresliace plátno","layers":"Vrstvy","actions":"Akcie","language":"Jazyk","liveCollaboration":"Živá spolupráca...","duplicateSelection":"Duplikovať","untitled":"Bez názvu","name":"Meno","yourName":"Vaše meno","madeWithExcalidraw":"Vytvorené s Excalidraw","group":"Zoskupiť","ungroup":"Zrušiť zoskupenie","collaborators":"Spolupracovníci","showGrid":"Zobraziť mriežku","addToLibrary":"Pridať do knižnice","removeFromLibrary":"Odstrániť z knižnice","libraryLoadingMessage":"Načítavanie knižnice…","libraries":"Prehliadať knižnice","loadingScene":"Načítavanie scény…","align":"Zarovnanie","alignTop":"Zarovnať nahor","alignBottom":"Zarovnať nadol","alignLeft":"Zarovnať doľava","alignRight":"Zarovnať doprava","centerVertically":"Zarovnať zvislo na stred","centerHorizontally":"Zarovnať vodorovne na stred","distributeHorizontally":"Rozmiestniť vodorovne","distributeVertically":"Rozmiestniť zvisle","flipHorizontal":"Prevrátiť vodorovne","flipVertical":"Prevrátiť zvislo","viewMode":"Režim zobrazenia","share":"Zdieľať","showStroke":"Zobraziť výber farby pre obrys","showBackground":"Zobraziť výber farby pre pozadie","toggleTheme":"Prepnúť tému","personalLib":"Moja knižnica","excalidrawLib":"Excalidraw knižnica","decreaseFontSize":"Zmenšiť veľkosť písma","increaseFontSize":"Zväčšiť veľkosť písma","unbindText":"Zrušiť previazanie textu","bindText":"Previazať text s kontajnerom","createContainerFromText":"Zabaliť text do kontajneru","link":{"edit":"Upraviť odkaz","editEmbed":"Editovať a zapustiť odkaz","create":"Vytvoriť odkaz","createEmbed":"Vytvoriť a zapustiť odkaz","label":"Odkaz","labelEmbed":"Zapustiť odkaz","empty":"Nie je nastavený žiaden odkaz"},"lineEditor":{"edit":"Upraviť čiaru","exit":"Ukončiť editovanie čiary"},"elementLock":{"lock":"Zamknúť","unlock":"Odomknúť","lockAll":"Zamknúť všetko","unlockAll":"Odomknúť všetko"},"statusPublished":"Zverejnené","sidebarLock":"Nechať bočný panel otvorený","selectAllElementsInFrame":"Vybrať všetky prvky v ráme","removeAllElementsFromFrame":"Odstrániť všetky prvky z rámu","eyeDropper":"Vybrať farbu z plátna"},"library":{"noItems":"Zatiaľ neboli pridané žiadne položky...","hint_emptyLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice alebo použite knižnicu z verejného zoznamu knižníc nižšie.","hint_emptyPrivateLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice."},"buttons":{"clearReset":"Obnoviť plátno","exportJSON":"Exportovať do súboru","exportImage":"Exportovať obrázok...","export":"Uložiť do...","copyToClipboard":"Kopírovať do schránky","save":"Uložiť do aktuálneho súboru","saveAs":"Uložiť ako","load":"Otvoriť","getShareableLink":"Získať odkaz na zdieľanie","close":"Zavrieť","selectLanguage":"Zvoliť jazyk","scrollBackToContent":"Vrátiť sa späť na obsah","zoomIn":"Priblížiť","zoomOut":"Oddialiť","resetZoom":"Obnoviť priblíženie","menu":"Ponuka","done":"Hotovo","edit":"Upraviť","undo":"Späť","redo":"Znova","resetLibrary":"Obnoviť knižnicu","createNewRoom":"Vytvoriť novú miestnosť","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Svetlý režim","zenMode":"Režim zen","objectsSnapMode":"Prichytiť k objektom","exitZenMode":"Zrušiť režim zen","cancel":"Zrušiť","clear":"Vymazať","remove":"Odstrániť","embed":"Prepnúť zapustenie","publishLibrary":"Uverejniť","submit":"Potvrdiť","confirm":"Potvrdiť","embeddableInteractionButton":"Kliknite pre interakciu"},"alerts":{"clearReset":"Týmto sa vyčistí celé plátno. Ste si istí?","couldNotCreateShareableLink":"Nepodarilo sa vytvoriť odkaz na zdieľanie.","couldNotCreateShareableLinkTooBig":"Nepodarilo sa vytvoriť odkaz na zdieľanie: scéna je príliš veľká","couldNotLoadInvalidFile":"Nepodarilo sa načítať nevalidný súbor","importBackendFailed":"Nepdarilo sa importovanie zo serveru.","cannotExportEmptyCanvas":"Nie je možné exportovať prázdne plátno.","couldNotCopyToClipboard":"Kopírovanie do schránky sa nepodarilo.","decryptFailed":"Nepodarilo sa rozšifrovať údaje.","uploadedSecurly":"Nahratie je zabezpečené end-to-end šifrovaním, takže Excalidraw server a tretie strany nedokážu prečítať jeho obsah.","loadSceneOverridePrompt":"Nahratie externej kresby nahradí existujúci obsah. Prajete si pokračovať?","collabStopOverridePrompt":"Ukončenie schôdze nahradí vašu predchádzajúcu lokálne uloženú scénu. Ste si istý?\\n\\n(Ak si chcete ponechať lokálnu scénu, jednoducho iba zavrite kartu prehliadača.)","errorAddingToLibrary":"Nepodarilo sa pridať položku do knižnice","errorRemovingFromLibrary":"Nepodarilo sa odstrániť položku z knižnice","confirmAddLibrary":"Týmto sa pridá {{numShapes}} tvar(ov) do vašej knižnice. Ste si istí?","imageDoesNotContainScene":"Tento obrázok neobsahuje žiadne údaje scény. Zvolili ste možnosť zahrnúť scénu počas exportu?","cannotRestoreFromImage":"Nepodarilo sa obnoviť scénu z tohto obrázkového súboru","invalidSceneUrl":"Nepodarilo sa načítať scénu z poskytnutej URL. Je nevalidná alebo neobsahuje žiadne validné Excalidraw JSON dáta.","resetLibrary":"Týmto vyprázdnite vašu knižnicu. Ste si istý?","removeItemsFromsLibrary":"Odstrániť {{count}} položiek z knižnice?","invalidEncryptionKey":"Šifrovací kľúč musí mať 22 znakov. Živá spolupráca je vypnutá.","collabOfflineWarning":"Internetové pripojenie nie je dostupné.\\nVaše zmeny nebudú uložené!"},"errors":{"unsupportedFileType":"Nepodporovaný typ súboru.","imageInsertError":"Nepodarilo sa vložiť obrázok. Skúste to znova neskôr...","fileTooBig":"Súbor je príliš veľký. Maximálna povolená veľkosť je {{maxSize}}.","svgImageInsertError":"Nepodarilo sa vložiť SVG obrázok. SVG formát je pravdepodobne nevalidný.","failedToFetchImage":"","invalidSVGString":"Nevalidné SVG.","cannotResolveCollabServer":"Nepodarilo sa pripojiť ku kolaboračnému serveru. Prosím obnovte stránku a skúste to znovu.","importLibraryError":"Nepodarilo sa načítať knižnicu","collabSaveFailed":"Uloženie do databázy sa nepodarilo. Ak tento problém pretrváva uložte si váš súbor lokálne aby ste nestratili vašu prácu.","collabSaveFailed_sizeExceeded":"Uloženie do databázy sa nepodarilo, pretože veľkosť plátna je príliš veľká. Uložte si váš súbor lokálne aby ste nestratili vašu prácu.","brave_measure_text_error":{"line1":"Vyzerá to, že používate prehliadač Brave so zapnutým nastavením pre agresívne blokovanie.","line2":"To môže spôsobiť nesprávne zobrazenie textových prvkov vo vašej kresbe.","line3":"Dôrazne odporúčame vypnutie toho nastavenia. Môžete tak spraviť vykonaním týchto krokov.","line4":"Ak vypnutie toho nastavenia nevyrieši problém so zobrazením textových prvkov, prosím ohláste problém na našom GitHub-e alebo nám napíšte na náš Discord"},"libraryElementTypeError":{"embeddable":"Zapustené prvky nie je možné pridať do knižnice.","image":"Podpora pre pridávanie obrázkov do knižnice bude dostupná už čoskoro!"}},"toolBar":{"selection":"Výber","image":"Vložiť obrázok","rectangle":"Obdĺžnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šípka","line":"Čiara","freedraw":"Kresliť","text":"Text","library":"Knižnica","lock":"Nechať zvolený nástroj aktívny po skončení kreslenia","penMode":"Režim pera – zabrániť dotyku","link":"Pridať/ Upraviť odkaz pre vybraný tvar","eraser":"Guma","frame":"Nástroj rám","embeddable":"Web Embed","laser":"","hand":"Ruka (nástroj pre pohyb plátna)","extraTools":"Ďalšie nástroje"},"headings":{"canvasActions":"Akcie plátna","selectedShapeActions":"Akcie tvarov z výberu","shapes":"Tvary"},"hints":{"canvasPanning":"Pre pohyb plátna podržte koliesko myši alebo medzerník počas ťahania, alebo použite nástroj ruka","linearElement":"Kliknite na vloženie viacerých bodov, potiahnite na vytvorenie jednej priamky","freeDraw":"Kliknite a ťahajte, pustite na ukončenie","text":"Tip: text môžete pridať aj dvojklikom kdekoľvek, ak je zvolený nástroj výber","embeddable":"Kliknite a ťahajte pre zapustenie webovej stránky","text_selected":"Použite dvojklik alebo stlačte Enter na editáciu textu","text_editing":"Stlačte Escape alebo CtrlOrCmd+ENTER na ukončenie editovania","linearElementMulti":"Kliknite na počiatočný bod alebo stlačte Escape alebo Enter na ukončenie","lockAngle":"Počas rotácie obmedzíte uhol podržaním SHIFT","resize":"Počas zmeny veľkosti zachováte proporcie podržaním SHIFT,\\\\npodržaním ALT meníte veľkosť so zachovaním stredu","resizeImage":"Podržte SHIFT pre voľnú zmenu veľkosti, podržte ALT pre zmenu veľkosti od stredu","rotate":"Počas rotácie obmedzíte uhol podržaním SHIFT","lineEditor_info":"Podržte CtrlOrCmd a kliknite dva krát alebo stlačte CtrlOrCmd + Enter pre editáciu bodov","lineEditor_pointSelected":"Stačte Delete na vymazanie bodu (bodov), CtrlOrCmd+D na duplikovanie, alebo potiahnite na presunutie","lineEditor_nothingSelected":"Zvoľte bod na upravovanie (podržte SHIFT pre zvolenie viacerých bodov) alebo podržte Alt a kliknite na pridanie nového bodu","placeImage":"Kliknite pre umiestnenie obrázka alebo kliknite a ťahajte pre zmenu jeho veľkosti","publishLibrary":"Uverejniť vašu knižnicu","bindTextToElement":"Stlačte enter na pridanie textu","deepBoxSelect":"Podržte CtrlOrCmd na výber v skupine alebo zamedzeniu poťiahnutia","eraserRevert":"Podržte Alt pre prehodenie položiek určených na vymazanie","firefox_clipboard_write":"Táto sa funkcionalita sa dá zapnúť nastavením \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Pre zmenu nastavení vo Firefox-e otvorte stránku \\"about:config\\".","disableSnapping":"Podržte CtrlOrCmd pre vypnutie prichytávania"},"canvasError":{"cannotShowPreview":"Nie je možné zobraziť náhľad plátna","canvasTooBig":"Plátno je možno príliš veľké.","canvasTooBigTip":"Tip: skúste presunúť najvzdialenejšie prvky bližšie k sebe."},"errorSplash":{"headingMain":"Nastala chyba. Vyskúšajte ","clearCanvasMessage":"Ak obnovenie stránky nepomáha, vyskúšajte ","clearCanvasCaveat":" To bude mať za následok stratu práce ","trackedToSentry":"Chyba s identifikátorom {{eventId}} bola zaznamenaná v našom systéme.","openIssueMessage":"Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Pozvite niekoho do svojej aktuálnej scény a pracujte spoločne.","desc_privacy":"Nemajte obavy, schôdza používa end-to-end šifrovanie, takže všetko čo nakreslíte je súkromné. Dokonca, ani náš server dedokáže prečítať, čo ste vytvorili.","button_startSession":"Začať schôdzu","button_stopSession":"Ukončiť schôdzu","desc_inProgressIntro":"Práve prebieha živá schôdza.","desc_shareLink":"Zdieľajte tento odkaz s osobou, s ktorou chcete spolupracovať:","desc_exitSession":"Ukončenie schôdze vás odpojí z miestnosti, avšak naďalej budete môcť pokračovať v práci na scéne lokálne. Toto neovplyvní ostatných spolupracovníkov a stále budú môcť spolupracovať na ich verzii.","shareTitle":"Pripojiť sa k živej schôdzi na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložiť na disk","disk_details":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované.","disk_button":"Uložiť do súboru","link_title":"Odkaz na zdieľanie","link_details":"Exportovať ako odkaz iba na čítanie.","link_button":"Exportovať ako odkaz","excalidrawplus_description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru.","excalidrawplus_button":"Exportovať","excalidrawplus_exportError":"Nepodarilo sa vykonať export do Excalidraw+..."},"helpDialog":{"blog":"Prečítajte si náš blog","click":"kliknutie","deepSelect":"Výber v skupine","deepBoxSelect":"Výber v skupine alebo zamedzenie poťiahnutia","curvedArrow":"Zakrivená šípka","curvedLine":"Zakrivená čiara","documentation":"Dokumentácia","doubleClick":"dvojklik","drag":"potiahnutie","editor":"Editovanie","editLineArrowPoints":"Editácia bodov čiary/šípky","editText":"Editácia textu / pridanie štítku","github":"Objavili ste problém? Nahláste ho","howto":"Postupujte podľa naších návodov","or":"alebo","preventBinding":"Zakázať pripájanie šípky","tools":"Nástroje","shortcuts":"Klávesové skratky","textFinish":"Ukončenie editovania (text editor)","textNewLine":"Vložiť nový riadok (text editor)","title":"Pomocník","view":"Zobrazenie","zoomToFit":"Priblížiť aby boli zahrnuté všetky prvky","zoomToSelection":"Priblížiť na výber","toggleElementLock":"Zamknúť/odomknúť vybrané","movePageUpDown":"Posunúť stranu hore/dole","movePageLeftRight":"Posunúť stranu doľava/doprava"},"clearCanvasDialog":{"title":"Vyčistiť plátno"},"publishDialog":{"title":"Uverejniť knižnicu","itemName":"Názov položky","authorName":"Meno autora","githubUsername":"Github užívateľské meno","twitterUsername":"Twitter užívateľské meno","libraryName":"Názov knižnice","libraryDesc":"Popis knižnice","website":"Webová stránka","placeholder":{"authorName":"Vaše meno alebo užívateľské meno","libraryName":"Názov vašej knižnice","libraryDesc":"Popis vašej knižnice, ktorý ostatným pomôže porozumieť jej vhodnému použitiu","githubHandle":"GitHub užívateľské meno (nepovinné), aby ste mohli robiť úpravy po tom, čo bude knižnica uverejnená na schválenie","twitterHandle":"Twitter užívateľské meno (nepovinné), aby sme vedeli komu pripísať zásluhu pri propagovaní cez Twitter","website":"Odkaz na vašu osobnú webovú stránku alebo niekam inam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadajte platnú adresu URL"},"noteDescription":"Uverejnite vašu knižnicu vo verejnom zozname knižnícaby ju aj ostatní mohli použiť v ich náčrtoch.","noteGuidelines":"Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si pokyny pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné.","noteLicense":"Potvrdením súhlasíte, že knižnica bude zverejnená s MIT licenciou, čo v skratke znamená, že ju môže použiť hocikto bez obmedzení.","noteItems":"Každá položka v knižnici musí mať svoje vlastné meno, aby sa dala vyhľadať. Súčasťou knižnice budú nasledujúce položky:","atleastOneLibItem":"Začnite prosím zvolením aspoň jednej položky z knižnice","republishWarning":"Poznámka: Niektoré z vybraných položiek sú už označené ako zverejnené. Ich znovu uverejnenie by ste mali vykovať iba vtedy ak aktualizujete už existujúcu knižnicu alebo požiadavku na uverejnenie."},"publishSuccessDialog":{"title":"Knižnica uverejnená","content":"Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovaťtu"},"confirmDialog":{"resetLibrary":"Obnoviť knižnicu","removeItemsFromLib":"Odstrániť zvolené položky z knižnice"},"imageExportDialog":{"header":"Exportovať obrázok","label":{"withBackground":"Pozadie","onlySelected":"Iba vybrané","darkMode":"Tmavý režim","embedScene":"Zahrnúť scénu","scale":"Mierka","padding":"Odsadenie"},"tooltip":{"embedScene":"Údaje scény budú uložené do exportovaného PNG/SVG súboru, takže scéna z neho môže byť opäť obnovená.\\nBude to mať za následok zvýšenie veľkosti súboru."},"title":{"exportToPng":"Exportovať do PNG","exportToSvg":"Exportovať do SVG","copyPngToClipboard":"Kopírovať PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovať do schránky"}},"encrypted":{"tooltip":"Vaše kresby používajú end-to-end šifrovanie, takže ich Excalidraw server nedokáže prečítať.","link":"Blog o end-to-end šifrovaní v Excalidraw"},"stats":{"angle":"Uhol","element":"Prvok","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybrané","storage":"Úložisko","title":"Štatistiky","total":"Celkom","version":"Verzia","versionCopy":"Kliknutím skopírujete","versionNotAvailable":"Verzia nie je k dispozícii","width":"Šírka"},"toast":{"addedToLibrary":"Pridané do knižnice","copyStyles":"Štýly skopírované.","copyToClipboard":"Skopírované do schránky.","copyToClipboardAsPng":"Kopírovanie {{exportSelection}} do schránky ako PNG prebehlo úspešne\\n({{exportColorScheme}})","fileSaved":"Súbor uložený.","fileSavedToFilename":"Uložený ako {filename}","canvas":"plátna","selection":"výberu","pasteAsSingleElement":"Použitím {{shortcut}} vložte ako samostatný prvok alebo vložte do existujúceho editovaného textu","unableToEmbed":"Zapustenie tejto URL nie je povolené. Vytvorte issue na GitHub-e a požiadajte povolenie tejto URL","unrecognizedLinkFormat":"Odkaz, ktorý sa snažíte zapustiť nie je v očakávanom formáte. Prosím skúste vložiť \'odkaz na zdieľanie\' poskytnutý zdrojovou webovou stránkou"},"colors":{"transparent":"Priehľadná","black":"Čierna","white":"Biela","red":"Červená","pink":"Ružová","grape":"Hroznová fialová","violet":"Fialová","gray":"Sivá","blue":"Modrá","cyan":"Azúrová","teal":"Modrozelená","green":"Zelená","yellow":"Žltá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všetky vaše dáta sú uložené lokálne vo vašom prehliadači.","center_heading_plus":"Chceli ste namiesto toho prejsť do Excalidraw+?","menuHint":"Exportovanie, nastavenia, jazyky, ..."},"defaults":{"menuHint":"Exportovanie, nastavenia a ďalšie...","center_heading":"Diagramy. Jednoducho.","toolbarHint":"Zvoľte nástroj a začnite kresliť!","helpHint":"Klávesové skratky a pomocník"}},"colorPicker":{"mostUsedCustomColors":"Najpoužívanejšie vlastné farby","colors":"Farby","shades":"Odtiene","hexCode":"Hex kód","noShades":"Pre túto farbu nie sú dostupné žiadne odtiene"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportovať ako obrázok","button":"Exportovať ako obrázok","description":"Exportovať údaje scény ako obrázok, z ktorého môžu byť neskôr importované."},"saveToDisk":{"title":"Uložiť na disk","button":"Uložiť na disk","description":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportovať ako Excalidraw+","description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru."}},"modal":{"loadFromFile":{"title":"Načítať zo súboru","button":"Načítať zo súboru","description":"Načítanie zo súboru nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."},"shareableLink":{"title":"Načítať z odkazu","button":"Nahradiť môj obsah","description":"Načítanie externej kresby nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js b/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js new file mode 100644 index 0000000..f9fd04f --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6071],{1984:function(e){e.exports=JSON.parse('{"labels":{"paste":"Prilepi","pasteAsPlaintext":"Prilepi kot navadno besedilo","pasteCharts":"Prilepi grafikone","selectAll":"Izberi vse","multiSelect":"Dodaj element v izbor","moveCanvas":"Premakni platno","cut":"Izreži","copy":"Kopiraj","copyAsPng":"Kopiraj v odložišče kot PNG","copyAsSvg":"Kopiraj v odložišče kot SVG","copyText":"Kopiraj v odložišče kot besedilo","bringForward":"Postavi naprej","sendToBack":"Pomakni v ozadje","bringToFront":"Pomakni v ospredje","sendBackward":"Pošlji nazaj","delete":"Izbriši","copyStyles":"Kopiraj slog","pasteStyles":"Prilepi slog","stroke":"Poteza","background":"Ozadje","fill":"Polnilo","strokeWidth":"Debelina poteze","strokeStyle":"Slog poteze","strokeStyle_solid":"Polna","strokeStyle_dashed":"Črtkana","strokeStyle_dotted":"Pikasta","sloppiness":"Površnost","opacity":"Prekrivnost","textAlign":"Poravnava besedila","edges":"Robovi","sharp":"Ostri","round":"Okrogli","arrowheads":"Puščice","arrowhead_none":"Brez","arrowhead_arrow":"Puščica","arrowhead_bar":"Palica","arrowhead_dot":"Pika","arrowhead_triangle":"Trikotnik","fontSize":"Velikost pisave","fontFamily":"Družina pisave","addWatermark":"Dodaj \\"Izdelano z Excalidraw\\"","handDrawn":"Ročno narisano","normal":"Običajno","code":"Koda","small":"Majhna","medium":"Srednja","large":"Velika","veryLarge":"Zelo velika","solid":"Polno","hachure":"Šrafura","zigzag":"Cikcak","crossHatch":"Križno","thin":"Tanko","bold":"Krepko","left":"Levo","center":"Sredina","right":"Desno","extraBold":"Ekstra krepko","architect":"Arhitekt","artist":"Umetnik","cartoonist":"Risar","fileTitle":"Ime datoteke","colorPicker":"Izbor barve","canvasColors":"Uporabljeno na platnu","canvasBackground":"Ozadje platna","drawingCanvas":"Platno za risanje","layers":"Plasti","actions":"Dejanja","language":"Jezik","liveCollaboration":"Sodelovanje v živo...","duplicateSelection":"Podvoji","untitled":"Neimenovana","name":"Ime","yourName":"Vaše ime","madeWithExcalidraw":"Izdelano z Excalidraw","group":"Združi izbor","ungroup":"Razdruži izbor","collaborators":"Sodelavci","showGrid":"Prikaži mrežo","addToLibrary":"Dodaj v knjižnico","removeFromLibrary":"Odstrani iz knjižnice","libraryLoadingMessage":"Nalaganje knjižnice ...","libraries":"Brskaj po knjižnicah","loadingScene":"Nalaganje scene...","align":"Poravnava","alignTop":"Poravnaj na vrh","alignBottom":"Poravnaj na dno","alignLeft":"Poravnaj levo","alignRight":"Poravnaj desno","centerVertically":"Navpično na sredini","centerHorizontally":"Vodoravno na sredini","distributeHorizontally":"Porazdeli vodoravno","distributeVertically":"Porazdeli navpično","flipHorizontal":"Obrni vodoravno","flipVertical":"Obrni navpično","viewMode":"Način ogleda","share":"Deli","showStroke":"Prikaži izbirnik barv poteze","showBackground":"Prikaži izbirnik barv ozadja","toggleTheme":"Obrni temo","personalLib":"Osebna knjižnica","excalidrawLib":"Knjižnica Excalidraw","decreaseFontSize":"Zmanjšaj velikost pisave","increaseFontSize":"Povečaj velikost pisave","unbindText":"Veži besedilo","bindText":"Veži besedilo na element","createContainerFromText":"Zavij besedilo v vsebnik","link":{"edit":"Uredi povezavo","editEmbed":"Uredi povezavo in vdelaj","create":"Ustvari povezavo","createEmbed":"Ustvari povezavo in vdelaj","label":"Povezava","labelEmbed":"Povezava in vdelovanje","empty":"Povezava ni nastavljena"},"lineEditor":{"edit":"Uredi črto","exit":"Zapri urejanje črte"},"elementLock":{"lock":"Zakleni","unlock":"Odkleni","lockAll":"Zakleni vse","unlockAll":"Odkleni vse"},"statusPublished":"Objavljeno","sidebarLock":"Obdrži stransko vrstico odprto","selectAllElementsInFrame":"Izberi vse elemente v okvirju","removeAllElementsFromFrame":"Izbriši vse elemente v okvirju","eyeDropper":"Izberi barvo s platna"},"library":{"noItems":"Dodan še ni noben element...","hint_emptyLibrary":"Izberite element na platnu, da ga dodate sem, ali namestite knjižnico iz javnega skladišča spodaj.","hint_emptyPrivateLibrary":"Izberite element na platnu, da ga dodate sem."},"buttons":{"clearReset":"Ponastavi platno","exportJSON":"Izvozi v datoteko","exportImage":"Izvozi sliko...","export":"Shrani v...","copyToClipboard":"Kopiraj v odložišče","save":"Shrani v trenutno datoteko","saveAs":"Shrani kot","load":"Odpri","getShareableLink":"Pridobi povezavo za deljenje","close":"Zapri","selectLanguage":"Izberi jezik","scrollBackToContent":"Pomakni se nazaj na vsebino","zoomIn":"Povečaj","zoomOut":"Pomanjšaj","resetZoom":"Ponastavi povečavo","menu":"Meni","done":"Končano","edit":"Uredi","undo":"Razveljavi","redo":"Ponovi","resetLibrary":"Ponastavi knjižnico","createNewRoom":"Ustvari novo sobo","fullScreen":"Celozaslonski način","darkMode":"Temni način","lightMode":"Svetli način","zenMode":"Način Zen","objectsSnapMode":"Pripenjanje na predmete","exitZenMode":"Zapri način Zen","cancel":"Prekliči","clear":"Počisti","remove":"Odstrani","embed":"Preklopi vdelavo","publishLibrary":"Objavi","submit":"Pošlji","confirm":"Potrdi","embeddableInteractionButton":"Kliknite za interakcijo"},"alerts":{"clearReset":"To bo počistilo celotno platno. Ali ste prepričani?","couldNotCreateShareableLink":"Povezave za deljenje ni bilo mogoče ustvariti.","couldNotCreateShareableLinkTooBig":"Povezave za deljenje ni bilo mogoče ustvariti: scena je prevelika","couldNotLoadInvalidFile":"Neveljavne datoteke ni bilo mogoče naložiti","importBackendFailed":"Uvoz iz zaledja ni uspel.","cannotExportEmptyCanvas":"Izvoz prazne scene ni mogoč.","couldNotCopyToClipboard":"Kopiranje v odložišče ni uspelo.","decryptFailed":"Dešifriranje podatkov ni uspelo.","uploadedSecurly":"Nalaganje je bilo zaščiteno s šifriranjem od konca do konca, kar pomeni, da strežnik Excalidraw in tretje osebe ne morejo brati vsebine.","loadSceneOverridePrompt":"Nalaganje zunanje risbe bo nadomestilo vašo obstoječo vsebino. Ali želite nadaljevati?","collabStopOverridePrompt":"Ustavitev seje bo prepisala vašo prejšnjo, lokalno shranjeno risbo. Ali ste prepričani?\\n\\n(Če želite obdržati lokalno risbo, preprosto zaprite zavihek brskalnika.)","errorAddingToLibrary":"Elementa ni bilo mogoče dodati v knjižnico","errorRemovingFromLibrary":"Elementa ni bilo mogoče izbrisati iz knjižnice","confirmAddLibrary":"S tem boste v vašo knjižnico dodali oblike ({{numShapes}}). Ali ste prepričani?","imageDoesNotContainScene":"Zdi se, da ta slika ne vsebuje podatkov o sceni. Ali ste med izvozom omogočili vdelavo scene?","cannotRestoreFromImage":"Scene ni bilo mogoče obnoviti iz te slikovne datoteke","invalidSceneUrl":"S priloženega URL-ja ni bilo mogoče uvoziti scene. Je napačno oblikovana ali pa ne vsebuje veljavnih podatkov Excalidraw JSON.","resetLibrary":"To bo počistilo vašo knjižnico. Ali ste prepričani?","removeItemsFromsLibrary":"Izbriši elemente ({{count}}) iz knjižnice?","invalidEncryptionKey":"Ključ za šifriranje mora vsebovati 22 znakov. Sodelovanje v živo je onemogočeno.","collabOfflineWarning":"Internetna povezava ni na voljo.\\nVaše spremembe ne bodo shranjene!"},"errors":{"unsupportedFileType":"Nepodprt tip datoteke.","imageInsertError":"Vstavljanje slike ni bilo uspešno. Poskusite ponovno kasneje...","fileTooBig":"Datoteka je prevelika. Največja dovoljena velikost je {{maxSize}}.","svgImageInsertError":"Vstavljanje slike SVG ni uspelo. Oznake SVG so videti neveljavne.","failedToFetchImage":"Pridobivanje slike ni uspelo.","invalidSVGString":"Neveljaven SVG.","cannotResolveCollabServer":"Povezave s strežnikom za sodelovanje ni bilo mogoče vzpostaviti. Ponovno naložite stran in poskusite znova.","importLibraryError":"Nalaganje knjižnice ni uspelo","collabSaveFailed":"Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.","collabSaveFailed_sizeExceeded":"Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela.","brave_measure_text_error":{"line1":"Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo Agresivno blokiranje prstnih odtisov.","line2":"To bi lahko povzročilo motnje v obnašanju besedilnih elementov v vaših risbah.","line3":"Močno priporočamo, da onemogočite to nastavitev. Sledite tem korakom, kako to storiti.","line4":"Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite vprašanje na našem GitHubu ali nam pišite na Discord"},"libraryElementTypeError":{"embeddable":"Vdelani elementi ne morejo biti dodani v knjižnico.","image":"Podpora za dodajanje slik v knjižnico prihaja kmalu!"}},"toolBar":{"selection":"Izbor","image":"Vstavi sliko","rectangle":"Pravokotnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Puščica","line":"Črta","freedraw":"Risanje","text":"Besedilo","library":"Knjižnica","lock":"Ohrani izbrano orodje aktivno po risanju","penMode":"Način peresa - prepreči dotik","link":"Dodaj/posodobi povezavo za izbrano obliko","eraser":"Radirka","frame":"Okvir","embeddable":"Spletna vdelava","laser":"Laserski kazalec","hand":"Roka (orodje za premikanje)","extraTools":"Več orodij"},"headings":{"canvasActions":"Dejanja za platno","selectedShapeActions":"Dejanja za izbrane oblike","shapes":"Oblike"},"hints":{"canvasPanning":"Za premikanje platna med vlečenjem držite kolesce miške ali preslednico ali uporabite orodje roka","linearElement":"Kliknite za začetek več točk, povlecite za posamezno črto","freeDraw":"Kliknite in povlecite, spustite, ko končate","text":"Namig: besedilo lahko dodate tudi z dvoklikom kjer koli z orodjem za izbiro","embeddable":"Kliknite in povlecite, da ustvarite spletno vdelavo","text_selected":"Dvokliknite ali pritisnite tipko Enter, da uredite besedilo","text_editing":"Pritisnite tipko Escape ali CtrlOrCmd+Enter za zaključek urejanja","linearElementMulti":"Kliknite zadnjo točko ali pritisnite Escape ali Enter, da končate","lockAngle":"Kot lahko omejite tako, da držite tipko Shift","resize":"Razmerja lahko omejite tako, da držite tipko Shift med spreminjanjem velikosti. Držite tipko Alt, da spremenite velikost od središča","resizeImage":"Velikost lahko prosto spreminjate tako, da držite tipko Shift. Držite tipko Alt, da spremenite velikost od središča","rotate":"Kote lahko omejite tako, da med vrtenjem držite tipko Shift","lineEditor_info":"Držite CtrlOrCmd in dvokliknite ali pritisnite CtrlOrCmd + Enter za urejanje točk","lineEditor_pointSelected":"Pritisnite tipko Delete, da odstranite točko(e), CtrlOrCmd+D za podvojitev ali povlecite za premikanje","lineEditor_nothingSelected":"Izberite točko za urejanje (pridržite tipko Shift za izbiro več točk), ali držite tipko Alt in kliknite za dodajanje novih točk","placeImage":"Kliknite, da postavite sliko, ali kliknite in povlecite, da ročno nastavite njeno velikost","publishLibrary":"Objavi svojo knjižnico","bindTextToElement":"Pritisnite tipko Enter za dodajanje besedila","deepBoxSelect":"Držite tipko CtrlOrCmd za globoko izbiro in preprečitev vlečenja","eraserRevert":"Pridržite tipko Alt, da razveljavite elemente, označene za brisanje","firefox_clipboard_write":"To funkcijo lahko verjetno omogočite z nastavitvijo zastavice \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Če želite spremeniti zastavice brskalnika v Firefoxu, obiščite stran \\"about:config\\".","disableSnapping":"Držite CtrlOrCmd, da onemogočite pripenjanje"},"canvasError":{"cannotShowPreview":"Predogleda ni bilo mogoče prikazati","canvasTooBig":"Morda je platno preveliko.","canvasTooBigTip":"Nasvet: poskusite premakniti najbolj oddaljene elemente nekoliko bližje skupaj."},"errorSplash":{"headingMain":"Prišlo je do napake. Poskusite ","clearCanvasMessage":"Če ponovno nalaganje ne deluje, poskusite ","clearCanvasCaveat":" To bo povzročilo izgubo dela ","trackedToSentry":"Napaka z identifikatorjem {{eventId}} smo zabeležili v naš sistem.","openIssueMessage":"Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.","sceneContent":"Vsebina scene:"},"roomDialog":{"desc_intro":"Na vašo trenutno sceno lahko povabite osebe, ki bodo sodelovale z vami.","desc_privacy":"Brez skrbi. Seja uporablja šifriranje od konca do konca, tako da bo vse, kar narišete, ostalo zasebno. Niti naš strežnik ne bo mogel videti, kaj si izmislite.","button_startSession":"Začni sejo","button_stopSession":"Ustavi sejo","desc_inProgressIntro":"Seja sodelovanja v živo je v teku.","desc_shareLink":"Delite to povezavo z vsemi, s katerimi želite sodelovati:","desc_exitSession":"Ustavitev seje vas bo odklopila od sobe, vendar boste lahko lokalno nadaljevali delo s sceno. To pa ne bo vplivalo na druge osebe. Druge osebe bodo še vedno lahko sodelovale v svoji različici.","shareTitle":"Pridruži se seji sodelovanja v živo na Excalidraw"},"errorDialog":{"title":"Napaka"},"exportDialog":{"disk_title":"Shrani na disk","disk_details":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite.","disk_button":"Shrani v datoteko","link_title":"Povezava za deljenje","link_details":"Izvoz kot povezava samo za branje.","link_button":"Izvoz kot povezava","excalidrawplus_description":"Shrani sceno v svoj delovni prostor Excalidraw+.","excalidrawplus_button":"Izvoz","excalidrawplus_exportError":"Trenutno ni bilo mogoče izvoziti v Excalidraw+..."},"helpDialog":{"blog":"Preberite naš blog","click":"klik","deepSelect":"Globoka izbira","deepBoxSelect":"Globoka izbira znotraj polja in preprečitev vlečenja","curvedArrow":"Ukrivljena puščica","curvedLine":"Ukrivljena črta","documentation":"Dokumentacija","doubleClick":"dvojni klik","drag":"vleci","editor":"Urejevalnik","editLineArrowPoints":"Uredi črto/točke puščice","editText":"Uredi besedilo / dodaj oznako","github":"Ste našli težavo? Pošljite","howto":"Sledite našim vodičem","or":"ali","preventBinding":"Prepreči vezanje puščice","tools":"Orodja","shortcuts":"Bližnjice na tipkovnici","textFinish":"Zaključi urejanje (urejevalnik besedila)","textNewLine":"Dodaj novo vrstico (urejevalnik besedila)","title":"Pomoč","view":"Pogled","zoomToFit":"Približaj na vse elemente","zoomToSelection":"Približaj na izbor","toggleElementLock":"Zakleni/odkleni izbor","movePageUpDown":"Premakni stran gor/dol","movePageLeftRight":"Premakni stran levo/desno"},"clearCanvasDialog":{"title":"Počisti platno"},"publishDialog":{"title":"Objavi knjižnico","itemName":"Ime elementa","authorName":"Ime avtorja","githubUsername":"GitHub uporabniško ime","twitterUsername":"Twitter uporabniško ime","libraryName":"Ime knjižnice","libraryDesc":"Opis knijžnice","website":"Spletna stran","placeholder":{"authorName":"Vaše ime ali uporabniško ime","libraryName":"Ime vaše knjižnice","libraryDesc":"Opis vaše knjižnice, da bodo ljudje lažje razumeli njeno uporabo","githubHandle":"GitHub uporabniško ime (neobvezno), tako da lahko urejate knjižnico potem, ko jo pošljete v pregled","twitterHandle":"Twitter uporabniško ime (neobvezno), tako da vemo, koga omeniti pri promociji prek Twitterja","website":"Povezava na vašo osebno spletno stran ali drugam (neobvezno)"},"errors":{"required":"Obvezno","website":"Vnesite veljaven URL"},"noteDescription":"Predložite svojo knjižnico, da bo vključena v javno skladišče knjižnic,da jih drugi lahko uporabljajo v svojih risbah.","noteGuidelines":"Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše smernice.Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno.","noteLicense":"Z oddajo se strinjate, da bo knjižnica objavljena pod licenco MIT, kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev.","noteItems":"Vsak element knjižnice mora imeti svoje ime, tako da ga je mogoče filtrirati. Vključeni bodo naslednji elementi knjižnice:","atleastOneLibItem":"Za začetek izberite vsaj en element knjižnice","republishWarning":"Opomba: nekateri izbrani predmeti so označeni kot že objavljeni/oddani. Elemente lahko znova oddate samo, ko posodabljate obstoječo knjižnico ali oddajo."},"publishSuccessDialog":{"title":"Knjižnica oddana","content":"{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljatetukaj"},"confirmDialog":{"resetLibrary":"Ponastavi knjižnico","removeItemsFromLib":"Odstran izbrane elemente iz knjižnice"},"imageExportDialog":{"header":"Izvozi sliko","label":{"withBackground":"Ozadje","onlySelected":"Samo izbor","darkMode":"Temni način","embedScene":"Vdelaj sceno","scale":"Povečava","padding":"Odmik"},"tooltip":{"embedScene":"Podatki o sceni bodo shranjeni v izvoženo datoteko PNG/SVG, tako da bo sceno mogoče obnoviti iz nje.\\nTo bo povečalo velikost izvožene datoteke."},"title":{"exportToPng":"Izvozi v PNG","exportToSvg":"Izvozi v SVG","copyPngToClipboard":"Kopiraj PNG v odložišče"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiraj v odložišče"}},"encrypted":{"tooltip":"Vaše risbe so šifrirane od konca do konca, tako da jih strežniki Excalidraw nikoli ne bodo videli.","link":"Blog objava o šifriranju od konca do konca v Excalidraw"},"stats":{"angle":"Kot","element":"Element","elements":"Elementi","height":"Višina","scene":"Scena","selected":"Izbrano","storage":"Shramba","title":"Statistika za napredne uporabnike","total":"Skupaj","version":"Različica","versionCopy":"Kliknite za kopiranje","versionNotAvailable":"Različica ni na voljo","width":"Širina"},"toast":{"addedToLibrary":"Dodano v knjižnico","copyStyles":"Slogi kopirani.","copyToClipboard":"Kopirano v odložišče.","copyToClipboardAsPng":"Kopirano v odložišče kot PNG ({{exportSelection}}, {{exportColorScheme}})","fileSaved":"Datoteka shranjena.","fileSavedToFilename":"Shranjeno v {filename}","canvas":"platno","selection":"izbor","pasteAsSingleElement":"Uporabite {{shortcut}}, da prilepite kot en element,\\n ali prilepite v obstoječ urejevalnik besedil","unableToEmbed":"Vdelava tega URL-ja trenutno ni dovoljena. Ustvarite vprašanje na GitHub-u in prosite za vmestitev URL-ja na seznam dovoljenih","unrecognizedLinkFormat":"Povezava, ki ste jo vdelali, se ne ujema s pričakovano obliko. Poskusite prilepiti niz za vdelavo, ki ste ga prejeli na izvorni strani"},"colors":{"transparent":"Prosojno","black":"Črna","white":"Bela","red":"Rdeča","pink":"Roza","grape":"Grozdje","violet":"Vijolična","gray":"Siva","blue":"Modra","cyan":"Cijan","teal":"Turkizna","green":"Zelena","yellow":"Rumena","orange":"Oranžna","bronze":"Bronasta"},"welcomeScreen":{"app":{"center_heading":"Vsi vaši podatki so shranjeni lokalno v vašem brskalniku.","center_heading_plus":"Ste namesto tega želeli odpreti Excalidraw+?","menuHint":"Izvoz, nastavitve, jeziki, ..."},"defaults":{"menuHint":"Izvoz, nastavitve in več ...","center_heading":"Diagrami. Enostavno.","toolbarHint":"Izberi orodje in začni z risanjem!","helpHint":"Bližnjice in pomoč"}},"colorPicker":{"mostUsedCustomColors":"Najpogosteje uporabljene barve po meri","colors":"Barve","shades":"Odtenki","hexCode":"Hex koda","noShades":"Odtenki za to barvo niso na voljo"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Izvozi kot sliko","button":"Izvozi kot sliko","description":"Izvozite podatke scene kot sliko, iz katere jo lahko pozneje uvozite."},"saveToDisk":{"title":"Shrani na disk","button":"Shrani na disk","description":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite."},"excalidrawPlus":{"title":"Excalidraw+","button":"Izvozi v Excalidraw+","description":"Shrani sceno v svoj delovni prostor Excalidraw+."}},"modal":{"loadFromFile":{"title":"Naloži iz datoteke","button":"Naloži iz datoteke","description":"Nalaganje iz datoteke bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."},"shareableLink":{"title":"Naloži iz povezave","button":"Zamenjaj mojo vsebino","description":"Nalaganje zunanje risbe bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js b/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js new file mode 100644 index 0000000..d77174f --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8534],{976:function(e){e.exports=JSON.parse('{"labels":{"paste":"Klistra in","pasteAsPlaintext":"Klistra som oformaterad text","pasteCharts":"Klistra in diagram","selectAll":"Markera alla","multiSelect":"Lägg till element till markering","moveCanvas":"Flytta canvas","cut":"Klipp ut","copy":"Kopiera","copyAsPng":"Kopiera till urklipp som PNG","copyAsSvg":"Kopiera till urklipp som SVG","copyText":"Kopiera till urklipp som text","bringForward":"Flytta framåt","sendToBack":"Flytta underst","bringToFront":"Flytta främst","sendBackward":"Skicka bakåt","delete":"Ta bort","copyStyles":"Kopiera stil","pasteStyles":"Klistra in stil","stroke":"Linje","background":"Bakgrund","fill":"Fyllnad","strokeWidth":"Linjebredd","strokeStyle":"Linjestil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Streckad","strokeStyle_dotted":"Punktad","sloppiness":"Slarvighet","opacity":"Genomskinlighet","textAlign":"Textjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhuvuden","arrowhead_none":"Inga","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Punkt","arrowhead_triangle":"Triangel","fontSize":"Teckenstorlek","fontFamily":"Teckensnitt","addWatermark":"Lägg till \\"Skapad med Excalidraw\\"","handDrawn":"Handritad","normal":"Normal","code":"Kod","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Mycket stor","solid":"Solid","hachure":"Skraffering","zigzag":"Sicksack","crossHatch":"Skraffera med kors","thin":"Tunn","bold":"Fet","left":"Vänster","center":"Centrera","right":"Höger","extraBold":"Extra fet","architect":"Arkitekt","artist":"Artist","cartoonist":"Serietecknare","fileTitle":"Filnamn","colorPicker":"Färgväljare","canvasColors":"Används på canvas","canvasBackground":"Canvas-bakgrund","drawingCanvas":"Ritar canvas","layers":"Lager","actions":"Åtgärder","language":"Språk","liveCollaboration":"Samarbeta live...","duplicateSelection":"Duplicera","untitled":"Namnlös","name":"Namn","yourName":"Ditt namn","madeWithExcalidraw":"Skapad med Excalidraw","group":"Gruppera markering","ungroup":"Avgruppera markering","collaborators":"Medarbetare","showGrid":"Visa rutnät","addToLibrary":"Lägg till i biblioteket","removeFromLibrary":"Ta bort från bibliotek","libraryLoadingMessage":"Laddar bibliotek…","libraries":"Bläddra i bibliotek","loadingScene":"Laddar skiss…","align":"Justera","alignTop":"Justera överkant","alignBottom":"Justera underkant","alignLeft":"Justera vänster","alignRight":"Justera höger","centerVertically":"Centrera vertikalt","centerHorizontally":"Centrera horisontellt","distributeHorizontally":"Fördela horisontellt","distributeVertically":"Fördela vertikalt","flipHorizontal":"Vänd horisontellt","flipVertical":"Vänd vertikalt","viewMode":"Visningsläge","share":"Dela","showStroke":"Visa färgväljare för linjefärg","showBackground":"Visa färgväljare för bakgrundsfärg","toggleTheme":"Växla tema","personalLib":"Personligt bibliotek","excalidrawLib":"Excalidraw bibliotek","decreaseFontSize":"Minska fontstorleken","increaseFontSize":"Öka fontstorleken","unbindText":"Koppla bort text","bindText":"Bind texten till behållaren","createContainerFromText":"Radbryt text i en avgränsad yta","link":{"edit":"Redigera länk","editEmbed":"Redigera länk & bädda in","create":"Skapa länk","createEmbed":"Skapa länk & bädda in","label":"Länk","labelEmbed":"Länka & bädda in","empty":"Ingen länk är angiven"},"lineEditor":{"edit":"Redigera linje","exit":"Avsluta linjeredigerare"},"elementLock":{"lock":"Lås","unlock":"Lås upp","lockAll":"Lås alla","unlockAll":"Lås upp alla"},"statusPublished":"Publicerad","sidebarLock":"Håll sidofältet öppet","selectAllElementsInFrame":"Markera alla element i rutan","removeAllElementsFromFrame":"Ta bort alla element från rutan","eyeDropper":"Välj färg från canvas"},"library":{"noItems":"Inga objekt tillagda ännu...","hint_emptyLibrary":"Välj ett objekt på canvasen för att lägga till det här, eller installera ett bibliotek från det publika arkivet, nedan.","hint_emptyPrivateLibrary":"Välj ett objekt på canvasen för att lägga till det här."},"buttons":{"clearReset":"Återställ canvasen","exportJSON":"Exportera till fil","exportImage":"Exportera bild...","export":"Spara till...","copyToClipboard":"Kopiera till urklipp","save":"Spara till aktuell fil","saveAs":"Spara som","load":"Öppna","getShareableLink":"Hämta delbar länk","close":"Stäng","selectLanguage":"Välj språk","scrollBackToContent":"Bläddra tillbaka till innehållet","zoomIn":"Zooma in","zoomOut":"Zooma ut","resetZoom":"Återställ zoom","menu":"Meny","done":"Klart","edit":"Redigera","undo":"Ångra","redo":"Gör om","resetLibrary":"Återställ bibliotek","createNewRoom":"Skapa ett nytt rum","fullScreen":"Helskärm","darkMode":"Mörkt läge","lightMode":"Ljust läge","zenMode":"Zen-läge","objectsSnapMode":"Fäst mot objekt","exitZenMode":"Gå ur zen-läge","cancel":"Avbryt","clear":"Rensa","remove":"Ta bort","embed":"Växla inbäddning","publishLibrary":"Publicera","submit":"Skicka","confirm":"Bekräfta","embeddableInteractionButton":"Klicka för att interagera"},"alerts":{"clearReset":"Detta rensar hela canvasen. Är du säker?","couldNotCreateShareableLink":"Kunde inte skapa delbar länk.","couldNotCreateShareableLinkTooBig":"Kunde inte skapa delbar länk: skissen är för stor","couldNotLoadInvalidFile":"Kunde inte ladda ogiltig fil","importBackendFailed":"Importering från backend misslyckades.","cannotExportEmptyCanvas":"Kan inte exportera tom canvas.","couldNotCopyToClipboard":"Kunde inte kopiera till urklipp.","decryptFailed":"Kunde inte avkryptera data.","uploadedSecurly":"Uppladdning har säkrats med kryptering från ände till ände. vilket innebär att Excalidraw server och tredje part inte kan läsa innehållet.","loadSceneOverridePrompt":"Laddning av extern skiss kommer att ersätta ditt befintliga innehåll. Vill du fortsätta?","collabStopOverridePrompt":"Att stoppa sessionen kommer att skriva över din föregående, lokalt lagrade skiss. Är du säker?\\n\\n(Om du vill behålla din lokala skiss, stäng bara webbläsarfliken istället.)","errorAddingToLibrary":"Kunde inte lägga till objekt i biblioteket","errorRemovingFromLibrary":"Kunde inte ta bort objekt från biblioteket","confirmAddLibrary":"Detta kommer att lägga till {{numShapes}} form(er) till ditt bibliotek. Är du säker?","imageDoesNotContainScene":"Den här bilden verkar inte innehålla någon skissdata. Har du aktiverat inbäddning av skiss under export?","cannotRestoreFromImage":"Skiss kunde inte återställas från denna bildfil","invalidSceneUrl":"Det gick inte att importera skiss från den angivna webbadressen. Antingen har den fel format, eller så innehåller den ingen giltig Excalidraw JSON data.","resetLibrary":"Detta kommer att rensa ditt bibliotek. Är du säker?","removeItemsFromsLibrary":"Ta bort {{count}} objekt från biblioteket?","invalidEncryptionKey":"Krypteringsnyckeln måste vara 22 tecken. Livesamarbetet är inaktiverat.","collabOfflineWarning":"Ingen internetanslutning tillgänglig.\\nDina ändringar kommer inte att sparas!"},"errors":{"unsupportedFileType":"Filtypen stöds inte.","imageInsertError":"Kunde inte infoga bild. Försök igen senare...","fileTooBig":"Filen är för stor. Maximal tillåten storlek är {{maxSize}}.","svgImageInsertError":"Kunde inte infoga SVG-bild. SVG-koden ser ogiltig ut.","failedToFetchImage":"Kunde inte hämta bilden.","invalidSVGString":"Ogiltig SVG.","cannotResolveCollabServer":"Det gick inte att ansluta till samarbets-servern. Ladda om sidan och försök igen.","importLibraryError":"Kunde inte ladda bibliotek","collabSaveFailed":"Det gick inte att spara i backend-databasen. Om problemen kvarstår bör du spara filen lokalt för att se till att du inte förlorar ditt arbete.","collabSaveFailed_sizeExceeded":"Det gick inte att spara till backend-databasen, whiteboarden verkar vara för stor. Du bör spara filen lokalt för att du inte ska förlora ditt arbete.","brave_measure_text_error":{"line1":"Det ser ut som om du använder Brave-webbläsaren med Aggressivt Blockera fingeravtryck inställningen aktiverad.","line2":"Detta kan resultera i trasiga Textelement i dina ritningar.","line3":"Vi rekommenderar starkt att du inaktiverar den här inställningen. Du kan följa dessa steg för att inaktivera den.","line4":"Om inaktivering av denna inställning inte åtgärdar visningen av textelement, öppna ett ärende på vår GitHub, eller skriv till oss på Discord"},"libraryElementTypeError":{"embeddable":"Inbäddbara element kan inte läggas till i biblioteket.","image":"Stöd för att lägga till bilder till biblioteket kommer snart!"}},"toolBar":{"selection":"Markering","image":"Infoga bild","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellips","arrow":"Pil","line":"Linje","freedraw":"Rita","text":"Text","library":"Bibliotek","lock":"Håll valt verktyg aktivt efter ritande","penMode":"Pennläge - förhindra touch","link":"Lägg till / Uppdatera länk för en vald form","eraser":"Radergummi","frame":"Rutverktyg","embeddable":"Bädda in (web)","laser":"Laserpekare","hand":"Hand (panoreringsverktyg)","extraTools":"Fler verktyg"},"headings":{"canvasActions":"Canvas-åtgärder","selectedShapeActions":"Valda formåtgärder","shapes":"Former"},"hints":{"canvasPanning":"För att flytta whiteboarden, håll mushjulet eller mellanslagstangenten medan du drar eller använd handverktyget","linearElement":"Klicka för att starta flera punkter, dra för en linje","freeDraw":"Klicka och dra, släpp när du är klar","text":"Tips: du kan också lägga till text genom att dubbelklicka var som helst med markeringsverktyget","embeddable":"Klicka-dra för att skapa en webbplats-inbäddning","text_selected":"Dubbelklicka eller tryck ENTER för att redigera text","text_editing":"Tryck Escape eller CtrlOrCmd + ENTER för att slutföra redigeringen","linearElementMulti":"Klicka på sista punkten eller tryck Escape eller Enter för att avsluta","lockAngle":"Du kan begränsa vinkeln genom att hålla SKIFT","resize":"Du kan behålla proportioner genom att hålla SHIFT medan du ändrar storlek,\\nhåller du ALT ändras storlek relativt mitten","resizeImage":"Du kan ändra storlek fritt genom att hålla SHIFT,\\nhåll ALT för att ändra storlek från mitten","rotate":"Du kan begränsa vinklar genom att hålla SHIFT medan du roterar","lineEditor_info":"Håll Ctrl/Cmd och dubbelklicka eller tryck på Ctrl/Cmd + Enter för att redigera punkter","lineEditor_pointSelected":"Tryck på Ta bort för att ta bort punkt(er), Ctrl + D eller Cmd + D för att duplicera, eller dra för att flytta","lineEditor_nothingSelected":"Välj en punkt att redigera (håll SHIFT för att välja flera),\\neller håll ned Alt och klicka för att lägga till nya punkter","placeImage":"Klicka för att placera bilden, eller klicka och dra för att ställa in dess storlek manuellt","publishLibrary":"Publicera ditt eget bibliotek","bindTextToElement":"Tryck på Enter för att lägga till text","deepBoxSelect":"Håll Ctrl eller Cmd för att djupvälja, och för att förhindra att dra","eraserRevert":"Håll Alt för att återställa de element som är markerade för borttagning","firefox_clipboard_write":"Denna funktion kan sannolikt aktiveras genom att ställa in \\"dom.events.asyncClipboard.clipboardItem\\" flaggan till \\"true\\". För att ändra webbläsarens flaggor i Firefox, besök \\"about:config\\" sidan.","disableSnapping":"Håll Ctrl eller Cmd för att inaktivera fästning"},"canvasError":{"cannotShowPreview":"Kan inte visa förhandsgranskning","canvasTooBig":"Canvasen kan vara för stor.","canvasTooBigTip":"Tips: prova att flytta de mest avlägsna elementen lite närmare varandra."},"errorSplash":{"headingMain":"Ett fel uppstod. Försök ","clearCanvasMessage":"Om omladdning inte fungerar, försök ","clearCanvasCaveat":" Detta kommer att leda till förlust av arbete ","trackedToSentry":"Felet med identifieraren {{eventId}} spårades på vårt system.","openIssueMessage":"Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.","sceneContent":"Skissinnehåll:"},"roomDialog":{"desc_intro":"Du kan bjuda in personer till din nuvarande skiss för att samarbeta med dig.","desc_privacy":"Oroa dig inte, sessionen använder kryptering från ände till ände, så vad du än ritar kommer att förbli privat. Inte ens vår server kommer att kunna se vad du skissar.","button_startSession":"Starta sessionen","button_stopSession":"Stoppa session","desc_inProgressIntro":"Nu pågår en live-samarbetssession.","desc_shareLink":"Dela denna länk med någon du vill samarbeta med:","desc_exitSession":"Att avbryta sessionen kommer att koppla bort dig från rummet, men du kommer att kunna fortsätta arbeta med skissen, lokalt. Observera att detta inte påverkar andra människor, och de kommer fortfarande att kunna samarbeta på deras version.","shareTitle":"Delta i en live-samarbetssession på Excalidraw"},"errorDialog":{"title":"Fel"},"exportDialog":{"disk_title":"Spara till disk","disk_details":"Exportera skissdata till en fil som du kan importera från senare.","disk_button":"Spara till fil","link_title":"Delbar länk","link_details":"Exportera som en skrivskyddad länk.","link_button":"Exportera till länk","excalidrawplus_description":"Spara skissen till din Excalidraw+ arbetsyta.","excalidrawplus_button":"Exportera","excalidrawplus_exportError":"Det gick inte att exportera till Excalidraw+ just nu..."},"helpDialog":{"blog":"Läs vår blogg","click":"klicka","deepSelect":"Djupval","deepBoxSelect":"Djupval inom boxen, och förhindra att dra","curvedArrow":"Böjd pil","curvedLine":"Böjd linje","documentation":"Dokumentation","doubleClick":"dubbelklicka","drag":"dra","editor":"Redigerare","editLineArrowPoints":"Redigera linje-/pilpunkter","editText":"Redigera text / lägg till etikett","github":"Hittat ett problem? Rapportera","howto":"Följ våra guider","or":"eller","preventBinding":"Förhindra pilbindning","tools":"Verktyg","shortcuts":"Tangentbordsgenvägar","textFinish":"Slutför redigering (text)","textNewLine":"Lägg till ny rad (text)","title":"Hjälp","view":"Visa","zoomToFit":"Zooma för att rymma alla element","zoomToSelection":"Zooma till markering","toggleElementLock":"Lås/Lås upp valda","movePageUpDown":"Flytta sida upp/ner","movePageLeftRight":"Flytta sida vänster/höger"},"clearCanvasDialog":{"title":"Rensa canvas"},"publishDialog":{"title":"Publicera bibliotek","itemName":"Objektnamn","authorName":"Upphovsmannens namn","githubUsername":"GitHub-användarnamn","twitterUsername":"Twitter-användarnamn","libraryName":"Biblioteksnamn","libraryDesc":"Biblioteksbeskrivning","website":"Webbplats","placeholder":{"authorName":"Ditt namn eller användarnamn","libraryName":"Namn på ditt bibliotek","libraryDesc":"Beskrivning av ditt bibliotek för att hjälpa människor att förstå dess användning","githubHandle":"Github-användarnamn (valfritt), så att du kan redigera biblioteket när du har skickat in det för granskning","twitterHandle":"Twitter-användarnamn (valfritt), så vi vet vem att kreditera när du marknadsför på Twitter","website":"Länk till din personliga webbplats eller någon annan (valfritt)"},"errors":{"required":"Obligatoriskt","website":"Ange en giltig URL"},"noteDescription":"Skicka ditt bibliotek för att inkluderas i det offentliga bibliotekets arkivför andra människor att använda i sina skisser.","noteGuidelines":"Biblioteket måste godkännas manuellt först. Vänligen läs riktlinjerna innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte.","noteLicense":"Genom att skicka in godkänner du att biblioteket kommer att publiceras under MIT-licens, vilket kort sagt betyder att vem som helst kan använda det utan restriktioner.","noteItems":"Varje objekt måste ha sitt eget namn så att det är filtrerbart. Följande objekt kommer att inkluderas:","atleastOneLibItem":"Välj minst ett biblioteksobjekt för att komma igång","republishWarning":"Obs: några av de markerade objekten är redan markerade som publicerade/skickade. Du bör endast skicka objekt igen när du uppdaterar ett befintligt bibliotek eller inlämning."},"publishSuccessDialog":{"title":"Bibliotek inskickat","content":"Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa statushär"},"confirmDialog":{"resetLibrary":"Återställ bibliotek","removeItemsFromLib":"Ta bort markerade objekt från biblioteket"},"imageExportDialog":{"header":"Exportera bild","label":{"withBackground":"Bakgrund","onlySelected":"Endast markerade","darkMode":"Mörkt läge","embedScene":"Bädda in skiss","scale":"Skala","padding":"Utfyllnad"},"tooltip":{"embedScene":"Skissdata kommer att sparas i den exporterade PNG/SVG-filen så att skissen kan återställas från den.\\nKommer att öka exporterad filstorlek."},"title":{"exportToPng":"Exportera till PNG","exportToSvg":"Exportera till SVG","copyPngToClipboard":"Kopiera PNG till urklipp"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiera till urklipp"}},"encrypted":{"tooltip":"Dina skisser är krypterade från ände till ände så Excalidraws servrar kommer aldrig att se dem.","link":"Blogginlägg om kryptering från ände till ände i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Höjd","scene":"Skiss","selected":"Valda","storage":"Lagring","title":"Statistik för nördar","total":"Totalt","version":"Version","versionCopy":"Klicka för att kopiera","versionNotAvailable":"Versionen är inte tillgänglig","width":"Bredd"},"toast":{"addedToLibrary":"Tillagd i biblioteket","copyStyles":"Kopierade stilar.","copyToClipboard":"Kopierad till urklipp.","copyToClipboardAsPng":"Kopierade {{exportSelection}} till urklipp som PNG\\n({{exportColorScheme}})","fileSaved":"Fil sparad.","fileSavedToFilename":"Sparad till {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"Använd {{shortcut}} för att klistra in som ett enda element,\\neller klistra in i en befintlig textredigerare","unableToEmbed":"Att bädda in denna webbadress är för närvarande inte tillåtet. Skapa en problemrapport på GitHub för att begära att webbadressen vitlistas.","unrecognizedLinkFormat":"Länken du bäddade in matchar inte det förväntade formatet. Försök klistra in \'embed\'-strängen som tillhandahålls av källwebbplatsen"},"colors":{"transparent":"Genomskinlig","black":"Svart","white":"Vit","red":"Röd","pink":"Rosa","grape":"Lila","violet":"Violett","gray":"Grå","blue":"Blå","cyan":"Turkos","teal":"Blågrön","green":"Grön","yellow":"Gul","orange":"Orange","bronze":"Brons"},"welcomeScreen":{"app":{"center_heading":"All data sparas lokalt i din webbläsare.","center_heading_plus":"Ville du gå till Excalidraw+ istället?","menuHint":"Exportera, inställningar, språk, ..."},"defaults":{"menuHint":"Exportera, inställningar och mer...","center_heading":"Förenklade. Diagram.","toolbarHint":"Välj ett verktyg & börja rita!","helpHint":"Genvägar & hjälp"}},"colorPicker":{"mostUsedCustomColors":"Mest frekvent använda anpassade färger","colors":"Färger","shades":"Nyanser","hexCode":"Hex-kod","noShades":"Inga nyanser tillgängliga för denna färg"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportera som bild","button":"Exportera som bild","description":"Exportera scendata som en bild från vilken du kan importera senare."},"saveToDisk":{"title":"Spara till disk","button":"Spara till disk","description":"Exportera scendata till en fil från vilken du kan importera senare."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportera till Excalidraw+","description":"Spara skissen till din Excalidraw+ arbetsyta."}},"modal":{"loadFromFile":{"title":"Läs in från fil","button":"Läs in från fil","description":"Laddar från en fil kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först med hjälp av ett av alternativen nedan."},"shareableLink":{"title":"Läs in från länk","button":"Ersätt mitt innehåll","description":"Inläsning av en extern ritning kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först genom att använda ett av alternativen nedan."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js b/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js new file mode 100644 index 0000000..8e70eea --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2404],{3952:function(e){e.exports=JSON.parse('{"labels":{"paste":"ஒட்டு","pasteAsPlaintext":"அலங்காரமின்றி ஒட்டு","pasteCharts":"விளக்கப்படங்களை ஒட்டு","selectAll":"எல்லாம் தேர்ந்தெடு","multiSelect":"உறுப்பைத் தெரிவில் சேர்","moveCanvas":"கித்தானை நகர்த்து","cut":"வெட்டு","copy":"நகலெடு","copyAsPng":"நகலகத்திற்கு PNG ஆக நகலெடு","copyAsSvg":"நகலகத்திற்கு SVG ஆக நகலெடு","copyText":"நகலகத்திற்கு உரையாக நகலெடு","bringForward":"முன்நோக்கி கொண்டுவா","sendToBack":"பின்னே அனுப்பு","bringToFront":"முன்னே கொண்டுவா","sendBackward":"பின்நோக்கி அனுப்பு","delete":"அழி","copyStyles":"ஒயில்களை நகலெடு","pasteStyles":"ஒயில்களை ஒட்டு","stroke":"கீறல்","background":"பின்புலம்","fill":"நிரப்பல்","strokeWidth":"கீறல் அகலம்","strokeStyle":"கீறல் ஒயில்","strokeStyle_solid":"திடமான","strokeStyle_dashed":"கோடிட்ட","strokeStyle_dotted":"புள்ளியிட்ட","sloppiness":"அசட்டுத்தனம்","opacity":"ஒளிபுகாவியல்பு","textAlign":"உரைச் சீரமைப்பு","edges":"விளிம்புகள்","sharp":"கூர்மை","round":"வட்டம்","arrowheads":"அம்புத்தலைகள்","arrowhead_none":"ஏதுமில்லை","arrowhead_arrow":"அம்பு","arrowhead_bar":"பட்டை","arrowhead_dot":"புள்ளி","arrowhead_triangle":"முக்கோணம்","fontSize":"எழுத்துரு அளவு","fontFamily":"எழுத்துரு குடும்பம்","addWatermark":"\\"எக்ஸ்கேலிட்ரா கொண்டு ஆனது\\"-ஐச் சேர்","handDrawn":"கையால்-வரைந்த","normal":"இயல்பு","code":"குறியீடு","small":"சிறிய","medium":"நடுத்தரமான","large":"பெரிய","veryLarge":"மிகப் பெரிய","solid":"திடமான","hachure":"மலைக்குறிக்கோடு","zigzag":"கோணல்மாணல்","crossHatch":"குறுக்குகதவு","thin":"மெல்லிய","bold":"பட்டை","left":"இடது","center":"மையம்","right":"வலது","extraBold":"கூடுதல் பட்டை","architect":"கட்டடக்கலைஞர்","artist":"கலைஞர்","cartoonist":"கேலிச்சித்திர ஓவியர்","fileTitle":"கோப்புப் பெயர்","colorPicker":"நிறத் தேர்வி","canvasColors":"கித்தானில் பயன்படுத்தப்பட்டது","canvasBackground":"கித்தான் பின்னணி","drawingCanvas":"கித்தான் வரைகிறது","layers":"அடுக்குகள்","actions":"செயல்கள்","language":"மொழி","liveCollaboration":"நேரடி கூட்டுப்பணி...","duplicateSelection":"நகலாக்கு","untitled":"தலைப்பற்றது","name":"பெயர்","yourName":"உங்கள் பெயர்","madeWithExcalidraw":"எக்ஸ்கேலிட்ரா கொண்டு ஆனது","group":"தேர்ந்ததை ஒன்றிணை","ungroup":"தேர்ந்ததைப் பிரி","collaborators":"கூட்டுப்பணியினர்","showGrid":"கட்டதைக் காட்டு","addToLibrary":"நூலகத்தில் சேர்","removeFromLibrary":"நூலகத்திலிருந்து நீக்கு","libraryLoadingMessage":"நூலகத்தை ஏற்றுகிறது…","libraries":"நூலகங்களை உலாவு","loadingScene":"காட்சியை ஏற்றுகிறது…","align":"சீரமை","alignTop":"மேலே சீரமை","alignBottom":"கீழே சீரமை","alignLeft":"இடதில் சீரமை","alignRight":"வலதில் சீரமை","centerVertically":"செங்குத்தாக மையப்படுத்து","centerHorizontally":"கிடைமட்டமாக மையப்படுத்து","distributeHorizontally":"கிடைமட்டமாக விநியோகி","distributeVertically":"செங்குத்தாக விநியோகி","flipHorizontal":"கிடைமட்டமாக புரட்டு","flipVertical":"செங்குத்தாக புரட்டு","viewMode":"பார்வை பயன்முறை","share":"பகிர்","showStroke":"கீறல் நிற எடுப்பானைக் காட்டு","showBackground":"பின்னணி நிற எடுப்பானைக் காட்டு","toggleTheme":"தோற்றத்தை நிலைமாற்று","personalLib":"தனக்குரிய நூலகம்","excalidrawLib":"எக்ஸ்கேலிட்ரா நூலகம்","decreaseFontSize":"எழுத்துரு அளவைக் குறை","increaseFontSize":"எழுத்துரு அளவை அதிகரி","unbindText":"உரையைப் பிணைவவிழ்","bindText":"உரையைக் கொள்கலனுக்குப் பிணை","createContainerFromText":"உரையைக் கொள்கலனுள் சுருட்டு","link":{"edit":"தொடுப்பைத் திருத்து","editEmbed":"","create":"தொடுப்பைப் படை","createEmbed":"","label":"தொடுப்பு","labelEmbed":"","empty":""},"lineEditor":{"edit":"தொடுப்பைத் திருத்து","exit":"வரி திருத்தியிலிருந்து வெளியேறு"},"elementLock":{"lock":"பூட்டு","unlock":"பூட்டவிழ்","lockAll":"எல்லாம் பூட்டு","unlockAll":"எல்லாம் பூட்டவிழ்"},"statusPublished":"வெளியிடப்பட்டது","sidebarLock":"பக்கப்பட்டையைத் திறந்தே வை","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"கித்தானிலிருந்து நிறம் தேர்ந்தெடு"},"library":{"noItems":"இதுவரை உருப்படிகள் சேரக்கப்படவில்லை...","hint_emptyLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு, அல்லது கீழுள்ள பொது களஞ்சியத்திலிருந்து நூலகத்தை நிறுவு.","hint_emptyPrivateLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு."},"buttons":{"clearReset":"கித்தானை அகரமாக்கு","exportJSON":"கோப்புக்கு ஏற்றுமதிசெய்","exportImage":"படத்தை ஏற்றுமதிசெய்...","export":"இதில் சேமி...","copyToClipboard":"நகலகத்திற்கு நகலெடு","save":"தற்போதைய கோப்புக்குச் சேமி","saveAs":"இப்படி சேமி","load":"திற","getShareableLink":"பகிரக்கூடிய தொடுப்பைப் பெறு","close":"மூடு","selectLanguage":"மொழியைத் தேர்ந்தெடு","scrollBackToContent":"உருட்டி உள்ளடக்கத்துக்குத் திரும்பு","zoomIn":"பெரிதாக்கு","zoomOut":"சிறிதாக்கு","resetZoom":"உருவளவை அகரமாக்கு","menu":"சிறுபட்டி","done":"முடிந்தது","edit":"திருத்து","undo":"செயல்தவிர்","redo":"மீண்டும்செய்","resetLibrary":"நூலகத்தை அகரமாக்கு","createNewRoom":"புதிய அறையை உருவாக்கு","fullScreen":"முழுத் திரை","darkMode":"கருமை பயன்முறை","lightMode":"வெளிர்ந்த பயன்முறை","zenMode":"ஜென் பயன்முறை","objectsSnapMode":"","exitZenMode":"ஜென் பயன்முறையை விலகு","cancel":"ரத்துசெய்","clear":"துடை","remove":"நீக்கு","embed":"","publishLibrary":"பிரசுரி","submit":"சமர்ப்பி","confirm":"உறுதிசெய்","embeddableInteractionButton":""},"alerts":{"clearReset":"இது முழு கித்தானையும் துடைக்கும். நீங்கள் உறுதியா?","couldNotCreateShareableLink":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை.","couldNotCreateShareableLinkTooBig":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை: காட்சி மிகப்பெரிதாக உள்ளது","couldNotLoadInvalidFile":"செல்லாத கோப்பை ஏற்ற முடியவில்லை","importBackendFailed":"தேகத்திலிருந்து இறக்குமதி தோல்வி.","cannotExportEmptyCanvas":"காலியான கித்தானை ஏற்றுமதிசெய்ய முடியாது.","couldNotCopyToClipboard":"நகலகத்திற்கு நகலெடுக்க முடியவில்லை.","decryptFailed":"தரவை மறைநீக்க முடியவில்லை.","uploadedSecurly":"பதிவேற்றம் இருமுனை மறையாகத்தால் பாதுகாக்கப்பட்டுள்ளது, எனவே எக்ஸ்கேலிட்ரா சேவையகமும் மூன்றாம் தரப்பினரும் உள்ளடக்கத்தை வாசிக்கமுடியாது.","loadSceneOverridePrompt":"வெளிப்புறச்சித்திரமேற்றல் இருக்கிற உள்ளடக்கத்தை இடங்கொள்ளும். தொடர விருப்பமா?","collabStopOverridePrompt":"அமர்வை நிறுத்துதல் முன்னர் அகமாக தேக்கிய உம் சித்திரத்தை மேலெழுதும். நீங்கள் உறுதியா?\\n\\n(உம் அக சித்திரத்தை வைக்கவேண்டுமெனில், சும்மா உலாவி தாவலை மூடுக அதற்குபதிலாக.)","errorAddingToLibrary":"உருப்படியை நூலகத்தில் சேர்க்க இயலா","errorRemovingFromLibrary":"உருப்படியை நூலகத்திலிருந்து நீக்க இயலா","confirmAddLibrary":"இதனால் {{numShapes}} வடிவம்(கள்) உம் நூலகத்தில் சேரும். நீங்கள் உறுதியா?","imageDoesNotContainScene":"இப்படத்தில் காட்சி தரவு ஏதும் இருப்பதுபோல் தெரியவில்லை. ஏற்றுமதியின்போது காட்சி உட்பதிதலை இயக்கினீரா?","cannotRestoreFromImage":"இப்படக்கோப்பிலிருந்து காட்சி மீட்டெடுக்கப்பட முடியாது","invalidSceneUrl":"வழங்கப்பட்ட உரலியிலிருந்து காட்சியை இறக்கவியலா. இது தவறான வடிவத்தில் உள்ளது, அ செல்லத்தக்க எக்ஸ்கேலிட்ரா JSON தரவைக் கொண்டில்லை.","resetLibrary":"இது உங்கள் நுலகத்தைத் துடைக்கும். நீங்கள் உறுதியா?","removeItemsFromsLibrary":"{{count}} உருப்படி(கள்)-ஐ உம் நூலகத்திலிருந்து அழிக்கவா?","invalidEncryptionKey":"மறையாக்க விசை 22 வரியுருக்கள் கொண்டிருக்கவேண்டும். நேரடி கூட்டுப்பணி முடக்கப்பட்டது.","collabOfflineWarning":"இணைய இணைப்பு இல்லை.\\nஉமது மாற்றங்கள் சேமிக்கப்படா!"},"errors":{"unsupportedFileType":"ஆதரிக்கப்படா கோப்பு வகை.","imageInsertError":"படத்தைப் புகுத்தவியலா. பிறகு மீண்டும் முயலவும்...","fileTooBig":"கோப்பு மிகப்பெரிது. அனுமதிக்கப்பட்ட அதிகபட்ச அளவு {{maxSize}}.","svgImageInsertError":"எஸ்விஜி படத்தைப் புகுத்தவியலா. எஸ்விஜியின் மார்க்அப் செல்லாததாக தெரிகிறது.","failedToFetchImage":"","invalidSVGString":"செல்லாத SVG.","cannotResolveCollabServer":"கூட்டுப்பணிச் சேவையகத்துடன் இணைக்க முடியவில்லை. பக்கத்தை மீளேற்றி மீண்டும் முயலவும்.","importLibraryError":"நூலகத்தை ஏற்ற முடியவில்லை","collabSaveFailed":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை. சிக்கல்கள் நீடித்தால், உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","collabSaveFailed_sizeExceeded":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை, கித்தான் மிகப்பெரிதாகத் தெரிகிறது. உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"தெரிவு","image":"படத்தைப் புகுத்து","rectangle":"செவ்வகம்","diamond":"வைரம்","ellipse":"நீள்வட்டம்","arrow":"அம்பு","line":"வரி","freedraw":"வரை","text":"உரை","library":"நூலகம்","lock":"தேர்ந்த கருவியை வரைந்த பின்பும் வைத்திரு","penMode":"பேனா - தடுப்பு தொடுதல்","link":"தேர்தெடுத்த வடிவத்திற்குத் தொடுப்பைச் சேர்/ புதுப்பி","eraser":"அழிப்பி","frame":"சட்டகம் கருவி","embeddable":"","laser":"","hand":"கை (பார்வை நகர்கும் கருவி)","extraTools":"மற்ற கருவிகள்"},"headings":{"canvasActions":"கித்தான் செயல்கள்","selectedShapeActions":"தேர்ந்த வடிவம் செயல்கள்","shapes":"வடிவங்கள்"},"hints":{"canvasPanning":"","linearElement":"பல புள்ளிகளைத் துவக்க சொடுக்கு, ஒற்றை வரிக்கு பிடித்திழு","freeDraw":"சொடுக்கி பிடித்திழு, முடித்ததும் விடுவி","text":"துணுக்குதவி: தெரிவு கருவி கொண்டு எங்காவது இரு-சொடுக்கி உரையைச் சேர்க்கலாம்","embeddable":"","text_selected":"உரையைத் திருத்த இரு-சொடுக்கு அ ENTERஐ அழுத்து","text_editing":"திருத்துவதை முடிக்க Escape அ CtrlOrCmd+ENTERஐ அழுத்து","linearElementMulti":"கடைசி புள்ளியில் சொடுக்கு அ முடிக்க Escape அ Enter அழுத்து","lockAngle":"SHIFTஐ அழுத்திப்பிடித்து கோணத்தை வற்புறுத்தலாம்","resize":"மறுஅளவிடுகையில் SHIFTஐ அழுத்திப்பிடித்து விகிதசமத்தை வற்புறுத்தலாம்,\\nமையத்திலிருந்து மறுஅளவிட ALTஐ அழுத்திப்பிடி","resizeImage":"SHIFTஐ நீண்டழுத்தி கட்டற்று அளவுமாற்றலாம்,\\nமையத்திலிருந்து அளவுமாற்ற ALTஐ நீண்டழுத்துக","rotate":"சுழற்றுகையில் SHIFTஐ அழுத்திப்பிடித்து கோணங்களை வற்புறுத்தலாம்","lineEditor_info":"","lineEditor_pointSelected":"புள்ளி(கள்)ஐ நீக்க Deleteஐ அழுத்து,\\nநகலாக்க CtrlOrCmd+D, அ நகர்த்த பிடித்திழு","lineEditor_nothingSelected":"திருத்த புள்ளியைத் தேர்ந்தெடு (பலவற்றை தேர SHIFTஐ அழுத்திப்பிடி),\\nஅ புதிய புள்ளிகளைச் சேர்க்க Altஐ அழுத்திப்பிடித்துச் சொடுக்கு","placeImage":"படத்தை வைக்கச் சொடுக்கு, அ கைமுறையாக அளவு அமைக்க சொடுக்கி பிடித்திழு","publishLibrary":"உம் சொந்த நூலகத்தைப் பிரசுரி","bindTextToElement":"உரையைச் சேர்க்க enterஐ அழுத்து","deepBoxSelect":"ஆழ்ந்துத் தேரவும் பிடித்திழுத்தலைத் தவிர்க்கவும் CtrlOrCmdஐ அழுத்திப்பிடி","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"முன்னோட்டம் காட்ட இயலவில்லை","canvasTooBig":"கித்தான் மிகப்பெரிதாக இருக்கலாம்.","canvasTooBigTip":"துணுக்குதவி: தூரத்திலுள்ள உறுப்புகளைப் நெருக்கமாக நகர்த்தப்பார்."},"errorSplash":{"headingMain":"பிழையைச் சந்தித்தீரா. முயலவும் ","clearCanvasMessage":"மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி ","clearCanvasCaveat":" இது வேலையை இழக்கக்கூடும் ","trackedToSentry":"இனங்காணியில் பிழை {{eventId}} எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.","openIssueMessage":"பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.","sceneContent":"காட்சி உள்ளடக்கம்:"},"roomDialog":{"desc_intro":"உம்முடன் கூட்டுப்பணிசெய்ய மக்களை தற்போதைய காட்சிக்கு அழைப்பிடலாம்.","desc_privacy":"வருந்தாதீர், அமர்வு இருமுனை மறையகத்தைப் பயன்படுத்துகிறது, ஆக நீங்கள் வரைவது எதுவும் தனிப்பட்டதாக இருக்கும். எங்கள் சேவையகத்தால் கூட நீங்கள் என்ன செய்ததைப் பார்க்கவியலாது.","button_startSession":"அமர்வைத் துவக்கு","button_stopSession":"அமர்வை நிறுத்து","desc_inProgressIntro":"நேரடி-கூட்டுப்பணி அமர்வு தற்போது செயலிலுள்ளது.","desc_shareLink":"கூட்டுப்பணிபுரிய விரும்பும் எவருனும் இத்தொடுப்பைப் பகிர்க:","desc_exitSession":"அமர்வை நிறுத்தல் உம்மை அறையிலிருந்து துண்டிக்கும், ஆனால் காட்சியுடன் தொடர்ந்து பணிபுரிய உம்மாலியலும், அகமாக. இது பிற மக்களைப் பாதிக்காதென்பதைக் குறி, மற்றும் அவர்களாலவர்களுடைய பதிப்பில் இன்னும் கூட்டுப்பணிபுரியவியலும்.","shareTitle":"எக்ஸ்கேலிட்ராவில் நேரடி கூட்டுப்பணி அமர்வில் சேர்"},"errorDialog":{"title":"பிழை"},"exportDialog":{"disk_title":"வட்டில் சேமி","disk_details":"காட்சித் தரவை நீங்கள் பின்னர் இறக்குமதி செய்யக்கூடிய ஒரு கோப்பிற்கு ஏற்றுமதிசெய்க.","disk_button":"கோப்பில் சேமி","link_title":"பகிரக்கூடிய தொடுப்பு","link_details":"வாசிக்க-மட்டும் தொடுப்பாக ஏற்றுமதிசெய்.","link_button":"தொடுப்புக்கு ஏற்றுமதிசெய்","excalidrawplus_description":"காட்சியை உன் எக்ஸ்கேலிட்ரா பணியிடத்தில் சேமி.","excalidrawplus_button":"ஏற்றுமதி","excalidrawplus_exportError":"இத்தருணத்தில் எக்ஸ்கேலிட்ரா+ க்கு ஏற்றுமதிசெய்ய முடியவில்லை..."},"helpDialog":{"blog":"எமது வலைப்பூவை வாசி","click":"சொடுக்கு","deepSelect":"ஆழ்ந்துத் தேர்","deepBoxSelect":"பெட்டியினுள் ஆழ்ந்துத் தேர், மற்றும் பிடித்திழுத்தலைத் தவிர்","curvedArrow":"வளைந்த அம்பு","curvedLine":"வளைந்த வரி","documentation":"ஆவணமாக்கல்","doubleClick":"இரு-சொடுக்கு","drag":"பிடித்திழு","editor":"திருத்தி","editLineArrowPoints":"","editText":"","github":"சிக்கலைக் கண்டீரா? சமர்ப்பி","howto":"எங்கள் கையேடுகளைப் பின்பற்றுக","or":"அ","preventBinding":"அம்பு பிணைதலைத் தவிர்","tools":"கருவிகள்","shortcuts":"விசைப்பலகை குறுக்குவழிகள்","textFinish":"திருத்துதலை முடி (உரை திருத்தி)","textNewLine":"புதிய வரியைச் சேர் (உரை திருத்தி)","title":"உதவி","view":"பார்","zoomToFit":"அனைத்துறுப்புகளும் பொருந்தும்படி விரிவாக்கு","zoomToSelection":"தெரிவுக்கு விரிவாக்கு","toggleElementLock":"தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்","movePageUpDown":"மேலே/கீழே நகர்த்தவும்","movePageLeftRight":"இடது/வலது பக்கம் நகர்த்தவும்"},"clearCanvasDialog":{"title":"கித்தானைத் துடை"},"publishDialog":{"title":"நூலகத்தைப் பிரசுரி","itemName":"உருப்படியின் பெயர்","authorName":"ஆசிரியர் பெயர்","githubUsername":"GitHub பயனர்பெயர்","twitterUsername":"டுவிட்டர் பயனர்பெயர்","libraryName":"நூலக பெயர்","libraryDesc":"நூலக விவரிப்பு","website":"வலைத்தளம்","placeholder":{"authorName":"உம் பெயர் அ பயனர்பெயர்","libraryName":"உம் நூலகத்தின் பெயர்","libraryDesc":"உம் நூலகத்தின் விவரிப்பு இதன் பயன்பாட்டை மக்கள் புரிந்துகொள்ளவுதவ","githubHandle":"GitHub கைப்பிடி (விரும்பினால்), ஆதலால் நீங்கள் நூலகத்தை மதிப்பாய்விற்காக சமர்ப்பித்தவுடன் திருத்தமுடியும்","twitterHandle":"டுவிட்டர் பயனர்பெயர் (விரும்பினால்), ஆதலால் டுவிட்டரில் முன்னிறுத்தும்போது யாமெவரைப் புகழ்வதென்றறிவோம்","website":"உமக்குரிய வலைத்தளத்திற்கு அ வேறெங்கிற்குமான தொடுப்பு (விரும்பினால்)"},"errors":{"required":"தேவைப்டுகிறது","website":"செல்லத்தக்க உரலியை உள்ளிடு"},"noteDescription":"உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு பொது நூலக களஞ்சியத்தில்பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த.","noteGuidelines":"நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் வழிகாட்டுதல்களைச் சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல.","noteLicense":"சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் MIT உரிமம், சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது.","noteItems":"வடிக்கட்டக்கூடியதாகவிருக்க ஒவ்வொரு நூலகவுருப்படிக்கும் சொந்த பெயர் இருக்கவேண்டும். பின்வரும் நூலகவுருப்படிகள் உள்ளடக்கப்படும்:","atleastOneLibItem":"ஆரம்பிக்க ஒரு நூலக உருப்படியையாவது தேர்ந்தெடுக்கவும்","republishWarning":""},"publishSuccessDialog":{"title":"நூலகம் சமர்ப்பிக்கப்பட்டது","content":"நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்இங்கே"},"confirmDialog":{"resetLibrary":"நூலகத்தை அகரமாக்கு","removeItemsFromLib":"நூலகத்திலிருந்து தேர்ந்தெடுத்த உருப்படிகளை நீக்கு"},"imageExportDialog":{"header":"படத்தை ஏற்றுமதிதல","label":{"withBackground":"பின்னணி","onlySelected":"தேர்ந்ததை மட்டும்","darkMode":"இருள் பயன்முறை","embedScene":"காட்சியை உட்பொதி","scale":"அளவுகோல்","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNGக்கு ஏற்றுமதிசெய்","exportToSvg":"SVGக்கு ஏற்றுமதிசெய்","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"உம் சித்திரங்கள் இருமுனை மறையாக்கம் செய்யப்பட்டவையாதலால் எக்ஸ்கேலிட்ராவின் சேவையகங்கள் அவற்றை ஒருபோதும் பார்க்கா.","link":"எக்ஸ்கேலிட்ராவில் இருமுனை மறையாக்கம் மீதான வலைப்பூ இடுகை"},"stats":{"angle":"கோணம்","element":"உறுப்பு","elements":"உறுப்புகள்","height":"உயரம்","scene":"காட்சி","selected":"தேர்ந்தவை","storage":"சேமிப்பகம்","title":"மேதாவிகளுக்கான புள்ளிவிவரங்கள்","total":"மொத்தம்","version":"பதிப்பு","versionCopy":"நகலெடுக்க சொடுக்கு","versionNotAvailable":"பதிப்பு கிடைக்கவில்லை","width":"அகலம்"},"toast":{"addedToLibrary":"நூலகத்தில் சேர்க்கப்பட்டது","copyStyles":"ஒயில்கள் நகலெடுக்கப்பட்டன.","copyToClipboard":"நகலகத்திற்கு நகலெடுக்கப்பட்டது.","copyToClipboardAsPng":"{{exportSelection}}-ஐ நகலகத்திற்கு PNG ஆக நகலெடுத்தது\\n({{exportColorScheme}})","fileSaved":"கோப்பு சேமிக்கப்பட்டது.","fileSavedToFilename":"{filename}-க்கு சேமிக்கப்பட்டது","canvas":"கித்தான்","selection":"தெரிவு","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ஒளிபுகுத்தன்மை","black":"கருப்பு","white":"வெள்ளை","red":"சிவப்பு","pink":"இளஞ்சிவப்பு","grape":"திராட்சை","violet":"ஊதா","gray":"சாம்பல்","blue":"நீலம்","cyan":"மயில்நிறம்","teal":"டீல்","green":"பச்சை","yellow":"மஞ்சள்","orange":"ஆரஞ்சு","bronze":"வெண்கலம்"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"எளிமையாக வரைபடங்கள் உருவாக்க!","toolbarHint":"கருவியைத் தேர்ந்தெடு & வரை!","helpHint":"குறுக்குவழிகள் & உதவி"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js b/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js new file mode 100644 index 0000000..db32fa1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[537],{2596:function(e){e.exports=JSON.parse('{"labels":{"paste":"วาง","pasteAsPlaintext":"วางโดยไม่มีการจัดรูปแบบ","pasteCharts":"วางแผนภูมิ","selectAll":"เลือกทั้งหมด","multiSelect":"","moveCanvas":"","cut":"ตัด","copy":"คัดลอก","copyAsPng":"คัดลองไปยังคลิปบอร์ดเป็น PNG","copyAsSvg":"คัดลองไปยังคลิปบอร์ดเป็น SVG","copyText":"คัดลองไปยังคลิปบอร์ดเป็นข้อความ","bringForward":"นำขึ้นข้างบน","sendToBack":"ย้ายไปข้างล่าง","bringToFront":"นำขึ้นข้างหน้า","sendBackward":"ย้ายไปข้างหลัง","delete":"ลบ","copyStyles":"คัดลอกรูปแบบ","pasteStyles":"วางรูปแบบ","stroke":"เส้นขอบ","background":"พื้นหลัง","fill":"เติมสี","strokeWidth":"น้ำหนักเส้นขอบ","strokeStyle":"รูปแบบเส้น","strokeStyle_solid":"เส้นทึบ","strokeStyle_dashed":"เส้นประ","strokeStyle_dotted":"จุด","sloppiness":"ความเลอะเทอะ","opacity":"ความทึบแสง","textAlign":"จัดข้อความ","edges":"ขอบ","sharp":"","round":"","arrowheads":"หัวลูกศร","arrowhead_none":"ไม่มี","arrowhead_arrow":"ลูกศร","arrowhead_bar":"แถบ","arrowhead_dot":"จุด","arrowhead_triangle":"สามเหลี่ยม","fontSize":"ขนาดตัวอักษร","fontFamily":"แบบตัวอักษร","addWatermark":"เพิ่มลายน้ำ \\"สร้างด้วย Excalidraw\\"","handDrawn":"ลายมือ","normal":"ปกติ","code":"โค้ด","small":"เล็ก","medium":"กลาง","large":"ใหญ่","veryLarge":"ใหญ่มาก","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"บาง","bold":"หนา","left":"ซ้าย","center":"กลาง","right":"ขวา","extraBold":"หนาพิเศษ","architect":"","artist":"ศิลปิน","cartoonist":"","fileTitle":"ชื่อไฟล์","colorPicker":"เลือกสีที่กำหนดเอง","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"การกระทำ","language":"ภาษา","liveCollaboration":"","duplicateSelection":"ทำสำเนา","untitled":"ไม่มีชื่อ","name":"ชื่อ","yourName":"ชื่อของคุณ","madeWithExcalidraw":"","group":"จัดกลุ่ม","ungroup":"ยกเลิกการจัดกลุ่ม","collaborators":"","showGrid":"แสดงเส้นตาราง","addToLibrary":"เพิ่มไปในคลัง","removeFromLibrary":"นำออกจากคลัง","libraryLoadingMessage":"กำลังโหลดคลัง...","libraries":"","loadingScene":"กำลังโหลดฉาก","align":"จัดตำแหน่ง","alignTop":"จัดชิดด้านบน","alignBottom":"จัดชิดด้านล่าง","alignLeft":"จัดชิดซ้าย","alignRight":"จัดชิดขวา","centerVertically":"กึ่งกลางแนวตั้ง","centerHorizontally":"กึ่งกลางแนวนอน","distributeHorizontally":"กระจายแนวนอน","distributeVertically":"กระจายแนวตั้ง","flipHorizontal":"พลิกแนวนอน","flipVertical":"พลิกแนวตั้ง","viewMode":"โหมดมุมมอง","share":"แชร์","showStroke":"","showBackground":"","toggleTheme":"สลับธีม","personalLib":"คลังของฉัน","excalidrawLib":"คลังของ Excalidraw","decreaseFontSize":"ลดขนาดตัวอักษร","increaseFontSize":"เพิ่มขนาดตัวอักษร","unbindText":"ยกเลิกการผูกติด","bindText":"","createContainerFromText":"","link":{"edit":"แก้ไขลิงก์","editEmbed":"แก้ไขลิงค์และการฝัง","create":"สร้างลิงค์","createEmbed":"สร้างลิงค์และการฝัง","label":"ลิงค์","labelEmbed":"ลิงค์และการฝัง","empty":"ไม่ได้ใส่ลิงค์"},"lineEditor":{"edit":"แก้ไขเส้น","exit":""},"elementLock":{"lock":"ล็อก","unlock":"ปลดล็อก","lockAll":"ล็อกทั้งหมด","unlockAll":"ปลดล็อกทั้งหมด"},"statusPublished":"เผยแพร่","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ยังไม่มีรายการที่เพิ่มเข้าไปได้","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"รีเซ็ทผืนผ้าใบ","exportJSON":"ส่งออกไปยังไฟล์","exportImage":"ส่งออกเป็นรูปภาพ","export":"บันทึกไปยัง","copyToClipboard":"คัดลอกไปยังคลิปบอร์ด","save":"บันทึกเป็นไฟล์ปัจจุบัน","saveAs":"บันทึกเป็น","load":"เปิด","getShareableLink":"สร้างลิงค์ที่แชร์ได้","close":"ปิด","selectLanguage":"เลือกภาษา","scrollBackToContent":"เลื่อนกลับไปด้านบน","zoomIn":"ซูมเข้า","zoomOut":"ซูมออก","resetZoom":"รีเซ็ตการซูม","menu":"เมนู","done":"เสร็จสิ้น","edit":"แก้ไข","undo":"เลิกทำ","redo":"ทำซ้ำ","resetLibrary":"รีเซ็ตคลัง","createNewRoom":"สร้างห้องใหม่","fullScreen":"เต็มหน้าจอ","darkMode":"โหมดกลางคืน","lightMode":"โหมดกลางวัน","zenMode":"โหมด Zen","objectsSnapMode":"","exitZenMode":"ออกจากโหมด Zen","cancel":"ยกเลิก","clear":"เคลียร์","remove":"ลบ","embed":"สลับการฝัง","publishLibrary":"เผยแพร่","submit":"ตกลง","confirm":"ยืนยัน","embeddableInteractionButton":"คลิกเพื่อปฏิสัมพันธ์"},"alerts":{"clearReset":"","couldNotCreateShareableLink":"ไม่สามารถสร้างลิงค์ได้","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"ไม่สามารถโหลดไฟล์ที่ผิดพลาดได้","importBackendFailed":"เกิดข้อผิดพลาดจากการนำเข้าจากระบบหลังบ้าน","cannotExportEmptyCanvas":"ไม่สามารถนำออกจากผืนผ้าใบที่ว่างเปล่าได้","couldNotCopyToClipboard":"ไม่สามารถคัดลอกไปยังคลิปบอร์ดได้","decryptFailed":"ไม่สามารถถอดรหัสข้อมูลได้","uploadedSecurly":"การอัพโหลดได้ถูกเข้ารหัสแบบ end-to-end หมายความว่าเซิร์ฟเวอร์ของ Excalidraw และบุคคลอื่นไม่สามารถอ่านข้อมูลได้","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"ไม่สามารถเพิ่มรายการเข้าไปในคลังได้","errorRemovingFromLibrary":"ไม่สามารถลบรายการนี้ออกจากคลังได้","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"ไม่รองรับชนิดของไฟล์นี้","imageInsertError":"ไม่สามารถเพิ่มรูปภาพได้ ลองอีกครั้งในภายหลัง","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"ไฟล์ SVG ผิดพลาด","cannotResolveCollabServer":"ไม่สามารถเชื่อต่อกับ collab เซิร์ฟเวอร์ได้ โปรดลองโหลดหน้านี้ใหม่และลองอีกครั้ง","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"การเพิ่มองค์ประกอบที่ฝังยังไม่สามารถเพิ่มเข้าไปในไลบลารีได้","image":"การสนับสนุนสำหรับเพิ่มรูปภาพลงในไลบลารีจะมาในเร็ว ๆ นี้"}},"toolBar":{"selection":"","image":"","rectangle":"สี่เหลี่ยมผืนผ้า","diamond":"","ellipse":"วงรี","arrow":"ลูกศร","line":"","freedraw":"","text":"ข้อความ","library":"คลัง","lock":"","penMode":"","link":"","eraser":"ยางลบ","frame":"","embeddable":"ฝังเว็บ","laser":"","hand":"","extraTools":"เครื่องมืออื่นๆ"},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"รูปร่าง"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"คลิกและลากเพื่อสร้างการฝังสำหรับเว็บไซต์","text_selected":"คลิกสองครั้งหรือกด ENTER เพื่อแก้ไขข้อความ","text_editing":"กดปุ่ม Esc หรือกด Ctrl, Cmd + Enter เพื่อเสร็จการแก้ไข","linearElementMulti":"คลิกที่จุดสุดท้ายหรือกด Escape หรือ Enter เพื่อเสร็จสิ้น","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"กดปุ่ม Delete เพื่อลบจุด\\nกด Ctrl หรือ Cmd + D เพื่อทำซ้ำหรือลากเพื่อเคลื่อนย้าย","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"ถ้าโหลดไม่ได้ ให้ลอง ","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"เริ่มเซสชัน","button_stopSession":"หยุดเซสชัน","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":"ไม่สามารถส่งออกไปที่ Excalidraw+ ได้ในขณะนี้"},"helpDialog":{"blog":"อ่านบล็อกของพวกเรา","click":"คลิก","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"ดับเบิลคลิก","drag":"ลาก","editor":"","editLineArrowPoints":"","editText":"แก้ไขข้อความ / เพิ่มข้อความ","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"ช่วยเหลือ","view":"ดู","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":"ย้ายหน้าไปด้าน ซ้าย/ขวา"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"ชื่อเจ้าของ","githubUsername":"ชื่อผู้ใช้ GitHub","twitterUsername":"ชื่อผู้ใช้ Twitter","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"โหมดกลางคืน","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"ส่งออกไปเป็น SVG","exportToSvg":"ส่งออกไปเป็น SVG","copyPngToClipboard":"คัดลอก PNG ไปยังคลิปบอร์ด"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"คัดลอกไปยังคลิปบอร์ด"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"ฟ้าน้ำทะเล","green":"เขียว","yellow":"เหลือง","orange":"ส้ม","bronze":"ทองแดง"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js b/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js new file mode 100644 index 0000000..7e7473a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4977],{7315:function(e){e.exports=JSON.parse('{"labels":{"paste":"Yapıştır","pasteAsPlaintext":"Düz metin olarak yapıştır","pasteCharts":"Grafikleri yapıştır","selectAll":"Tümünü seç","multiSelect":"Seçime öge ekle","moveCanvas":"Tuvali taşı","cut":"Kes","copy":"Kopyala","copyAsPng":"Panoya PNG olarak kopyala","copyAsSvg":"Panoya SVG olarak kopyala","copyText":"Panoya metin olarak kopyala","bringForward":"Bir öne getir","sendToBack":"Arkaya gönder","bringToFront":"En öne getir","sendBackward":"Bir geriye gönder","delete":"Sil","copyStyles":"Stilleri kopyala","pasteStyles":"Stilleri yapıştır","stroke":"Vurgu","background":"Arka plan","fill":"Doldur","strokeWidth":"Kontur genişliği","strokeStyle":"Kontur stili","strokeStyle_solid":"Dolu","strokeStyle_dashed":"Kesik çizgili","strokeStyle_dotted":"Noktalı","sloppiness":"Üstün körülük","opacity":"Opaklık","textAlign":"Metin hizala","edges":"Kenarlar","sharp":"Keskin","round":"Yuvarlak","arrowheads":"Ok uçları","arrowhead_none":"Yok","arrowhead_arrow":"Ok","arrowhead_bar":"Çizgi","arrowhead_dot":"Nokta","arrowhead_triangle":"Üçgen","fontSize":"Yazı tipi boyutu","fontFamily":"Yazı tipi ailesi","addWatermark":"\\"Excalidraw ile yapıldı\\" yazısını ekle","handDrawn":"El-yazısı","normal":"Normal","code":"Kod","small":"Küçük","medium":"Orta","large":"Büyük","veryLarge":"Çok geniş","solid":"Dolu","hachure":"Taralı","zigzag":"Zikzak","crossHatch":"Çapraz-taralı","thin":"İnce","bold":"Kalın","left":"Sol","center":"Ortala","right":"Sağ","extraBold":"Ekstra kalın","architect":"Mimar","artist":"Sanatçı","cartoonist":"Karikatürist","fileTitle":"Dosya adı","colorPicker":"Renk seçici","canvasColors":"Tuvalin üzerinde kullanıldı","canvasBackground":"Tuval arka planı","drawingCanvas":"Çizim tuvali","layers":"Katmanlar","actions":"Eylemler","language":"Dil","liveCollaboration":"Canlı ortak çalışma alanı...","duplicateSelection":"Çoğalt","untitled":"Adsız","name":"İsim","yourName":"İsminiz","madeWithExcalidraw":"Excalidraw ile yapıldı","group":"Seçimi grup yap","ungroup":"Seçilen grubu dağıt","collaborators":"Ortaklar","showGrid":"Izgarayı göster","addToLibrary":"Kütüphaneye ekle","removeFromLibrary":"Kütüphaneden kaldır","libraryLoadingMessage":"Kütüphane yükleniyor…","libraries":"Kütüphanelere gözat","loadingScene":"Sahne yükleniyor…","align":"Hizala","alignTop":"Yukarı hizala","alignBottom":"Aşağı hizala","alignLeft":"Sola hizala","alignRight":"Sağa hizala","centerVertically":"Dikeyde ortala","centerHorizontally":"Yatayda ortala","distributeHorizontally":"Yatay dağıt","distributeVertically":"Dikey dağıt","flipHorizontal":"Yatay döndür","flipVertical":"Dikey döndür","viewMode":"Görünüm modu","share":"Paylaş","showStroke":"Kontur için renk seçiciyi göster","showBackground":"Arkaplan için renk seçiciyi göster","toggleTheme":"Temayı etkinleştir/devre dışı bırak","personalLib":"Kişisel Kitaplık","excalidrawLib":"Excalidraw Kitaplığı","decreaseFontSize":"Yazı Tipi Boyutunu Küçült","increaseFontSize":"Yazı Tipi Boyutunu Büyült","unbindText":"Metni çöz","bindText":"Metni taşıyıcıya bağla","createContainerFromText":"Metni bileşen içinde sar","link":{"edit":"Bağlantıyı düzenle","editEmbed":"Bağlantıyı düzenle & yerleştir","create":"Bağlantı oluştur","createEmbed":"Bağlantı oluştur & yerleştir","label":"Bağlantı","labelEmbed":"Bağlantı & yerleştirme","empty":"Herhangi bir bağlantı oluşturulmadı"},"lineEditor":{"edit":"Çizgiyi düzenle","exit":"Çizgi düzenlemeden çık"},"elementLock":{"lock":"Kilitle","unlock":"Kilidi Kaldır","lockAll":"Hepsini kilitle","unlockAll":"Hepsinin kilidini kaldır"},"statusPublished":"Yayınlandı","sidebarLock":"Kenar çubuğu açık kalsın","selectAllElementsInFrame":"Çerçevedeki tüm bileşenleri seç","removeAllElementsFromFrame":"Çerçevedeki tüm bileşenleri sil","eyeDropper":"Tuvalden renk seç"},"library":{"noItems":"Öğe eklenmedi...","hint_emptyLibrary":"Öğelerden birini eklemek için öğeyi seçiniz veya aşağıdaki genel kütüphaneden öğeleri ekleyin.","hint_emptyPrivateLibrary":"Tuvalden bir eleman seçerek sayfaya ekleyin."},"buttons":{"clearReset":"Tuvali sıfırla","exportJSON":"Dosyaya aktar","exportImage":"Resimleri dışa aktar...","export":"Şuraya kaydet...","copyToClipboard":"Panoya kopyala","save":"Geçerli dosyaya kaydet","saveAs":"Farklı kaydet","load":"Aç","getShareableLink":"Paylaşılabilir bağlantı al","close":"Kapat","selectLanguage":"Dil seçin","scrollBackToContent":"İçeriğe geri dön","zoomIn":"Yakınlaştır","zoomOut":"Uzaklaştır","resetZoom":"Yakınlaştırmayı sıfırla","menu":"Menü","done":"Tamam","edit":"Düzenle","undo":"Geri Al","redo":"Yeniden yap","resetLibrary":"Kütüphaneyi sıfırla","createNewRoom":"Yeni oda oluştur","fullScreen":"Tam ekran","darkMode":"Koyu tema","lightMode":"Açık tema","zenMode":"Zen modu","objectsSnapMode":"Nesnelere hizala","exitZenMode":"Zen modundan çık","cancel":"İptal","clear":"Temizle","remove":"Kaldır","embed":"","publishLibrary":"Yayınla","submit":"Gönder","confirm":"Onayla","embeddableInteractionButton":"Etkileşime girmek için tıkla"},"alerts":{"clearReset":"Tuvalin tamamı temizlenecek. Emin misiniz?","couldNotCreateShareableLink":"Paylaşılabilir bağlantı oluşturulamadı.","couldNotCreateShareableLinkTooBig":"Paylaşılabilir bağlantı oluşturulamadı: sahne çok büyük","couldNotLoadInvalidFile":"Bilinmeyen dosya yüklenemiyor","importBackendFailed":"Sunucudan içe aktarma başarısız.","cannotExportEmptyCanvas":"Boş tuval dışarıya aktarılamaz.","couldNotCopyToClipboard":"Panoya kopyalanamıyor.","decryptFailed":"Şifrelenmiş veri çözümlenemedi.","uploadedSecurly":"Yükleme uçtan uca şifreleme ile korunmaktadır. Excalidraw sunucusu ve üçüncül şahıslar içeriği okuyamayacaktır.","loadSceneOverridePrompt":"Harici çizimler yüklemek mevcut olan içeriği değiştirecektir. Devam etmek istiyor musunuz?","collabStopOverridePrompt":"Oturumu sonlandırmak daha önceki, yerel olarak kaydedilmiş çizimin üzerine kaydedilmesine sebep olacak. Emin misiniz?\\n\\n(Yerel çiziminizi kaybetmemek için tarayıcı sekmesini kapatabilirsiniz.)","errorAddingToLibrary":"Öğe kütüphaneye eklenemedi","errorRemovingFromLibrary":"Öğe kütüphaneden silinemedi","confirmAddLibrary":"Bu, kitaplığınıza {{numShapes}} tane şekil ekleyecek. Emin misiniz?","imageDoesNotContainScene":"Bu görüntü herhangi bir sahne verisi içermiyor gibi görünüyor. Dışa aktarma sırasında sahne yerleştirmeyi etkinleştirdiniz mi?","cannotRestoreFromImage":"Sahne bu resim dosyasından geri yüklenemedi","invalidSceneUrl":"Verilen bağlantıdan çalışma alanı yüklenemedi. Dosya bozuk olabilir veya geçerli bir Excalidraw JSON verisi bulundurmuyor olabilir.","resetLibrary":"Bu işlem kütüphanenizi sıfırlayacak. Emin misiniz?","removeItemsFromsLibrary":"{{count}} öğe(ler) kitaplıktan kaldırılsın mı?","invalidEncryptionKey":"Şifreleme anahtarı 22 karakter olmalı. Canlı işbirliği devre dışı bırakıldı.","collabOfflineWarning":"İnternet bağlantısı bulunamadı. Değişiklikleriniz kaydedilmeyecek!"},"errors":{"unsupportedFileType":"Desteklenmeyen dosya türü.","imageInsertError":"Görsel eklenemedi. Daha sonra tekrar deneyin...","fileTooBig":"Dosya çok büyük. İzin verilen maksimum boyut {{maxSize}}.","svgImageInsertError":"SVG resmi eklenemedi. SVG işaretlemesi geçersiz görünüyor.","failedToFetchImage":"","invalidSVGString":"Geçersiz SVG.","cannotResolveCollabServer":"İş birliği sunucusuna bağlanılamıyor. Lütfen sayfayı yenileyip tekrar deneyin.","importLibraryError":"Kütüphane yüklenemedi","collabSaveFailed":"Backend veritabanına kaydedilemedi. Eğer problem devam ederse, çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","collabSaveFailed_sizeExceeded":"Backend veritabanına kaydedilemedi; tuval çok büyük. Çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":"Resimleri kütüphaneye ekleme desteği yakında geliyor!"}},"toolBar":{"selection":"Seçme","image":"Görsel ekle","rectangle":"Dikdörtgen","diamond":"Elmas","ellipse":"Elips","arrow":"Ok","line":"Çizgi","freedraw":"Çiz","text":"Yazı","library":"Kütüphane","lock":"Seçilen aracı çizimden sonra aktif tut","penMode":"Kalem modu - dokunmayı engelle","link":"Seçilen şekil için bağlantı Ekle/Güncelle","eraser":"Silgi","frame":"Çerçeve aracı","embeddable":"Web Yerleştirme","laser":"Lazer işaretçisi","hand":"","extraTools":"Daha fazla araç"},"headings":{"canvasActions":"Tuval eylemleri","selectedShapeActions":"Seçilen şekil aksiyonları","shapes":"Şekiller"},"hints":{"canvasPanning":"","linearElement":"Birden fazla nokta için tıklayın, tek çizgi için sürükleyin","freeDraw":"Tıkla ve sürükle, bitirdiğinde serbest bırak","text":"İpucu: seçme aracıyla herhangi bir yere çift tıklayarak da yazı ekleyebilirsin","embeddable":"Web sitesi yerleştirmek için sürükle bırak","text_selected":"Metni düzenlemek için çift tıklayın veya ENTER\'a basın","text_editing":"Düzenlemeyi bitirmek için ESC veya Ctrl/Cmd+ENTER tuşlarına basın","linearElementMulti":"Bitirmek için son noktaya tıklayın ya da Escape veya Enter tuşuna basın","lockAngle":"SHIFT tuşuna basılı tutarak açıyı koruyabilirsiniz","resize":"Yeniden boyutlandırırken SHIFT tuşunu basılı tutarak oranları sınırlayabilirsiniz,\\nmerkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","resizeImage":"SHIFT\'e basılı tutarak serbestçe yeniden boyutlandırabilirsiniz, merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","rotate":"Döndürürken SHIFT tuşuna basılı tutarak açıları koruyabilirsiniz","lineEditor_info":"Puanları düzenlemek için ctrl veya cmd tuşuna basılı tutup çift tıklayın veya enter tuşuna basın","lineEditor_pointSelected":"Sil tuşuna basarak noktaları silin,\\nCtrl/Cmd + D ile çoğaltın, ya da sürükleyerek taşıyın","lineEditor_nothingSelected":"Düzenlemek için bir nokta seçin (birden fazla seçmek için SHIFT tuşunu basılı tutun),\\nveya Alt tuşunu basılı tutun ve yeni noktalar eklemek için tıklayın","placeImage":"Resmi yerleştirmek için tıklayın ya da boyutunu manuel olarak ayarlamak için tıklayıp sürükleyin","publishLibrary":"Kendi kitaplığınızı yayınlayın","bindTextToElement":"Enter tuşuna basarak metin ekleyin","deepBoxSelect":"Ctrl/Cmd tuşuna basılı tutarak derin seçim yapın ya da sürüklemeyi engelleyin","eraserRevert":"Alt tuşuna basılı tutarak silinme için işaretlenmiş ögeleri tersine çevirin","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Önizleme gösterilemiyor","canvasTooBig":"Kanvas çok büyük olabilir.","canvasTooBigTip":"İpucu: En uzaktaki elemanları birbirine yakınlaştırmayı deneyin."},"errorSplash":{"headingMain":"Hata oluştu. Lütfen ","clearCanvasMessage":"Yenileme sonrası sorun devam ediyorsa, lütfen ","clearCanvasCaveat":" Bu, yaptığınız değişiklikleri sıfırlayacak ","trackedToSentry":"Tanımlayıcı ile ilgili hata {{eventId}} sistemimize yakalandı.","openIssueMessage":"Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.","sceneContent":"Sahne içeriği:"},"roomDialog":{"desc_intro":"Çalışma alanınıza, sizinle birlikte çalışabilmeleri için başkalarını da ekleyebilirsiniz.","desc_privacy":"Çalışma ortamında yaptıklarınız ve çizimleriniz uçtan uca şifrelemeyle saklanmaktadır. Sunucularımız dahi bu verileri şifrelenmemiş haliyle göremez.","button_startSession":"Oturumu başlat","button_stopSession":"Oturumu sonlandır","desc_inProgressIntro":"Ortak çalışma ortamı oluşturuldu.","desc_shareLink":"Bu bağlantıyı birlikte çalışacağınız kişilerle paylaşabilirsiniz:","desc_exitSession":"Çalışma ortamını kapattığınızda ortak çalışmadan ayrılmış olursunuz ancak kendi versiyonunuzda çalışmaya devam edebilirsiniz. Bu durumda ortak çalıştığınız diğer kişiler etkilenmeyecek, çalışma ortamındaki versiyon üzerinden çalışmaya devam edebilecekler.","shareTitle":"Excalidraw\'da canlı ortak calışma oturumuna katıl"},"errorDialog":{"title":"Hata"},"exportDialog":{"disk_title":"Belleğe kaydet","disk_details":"Sahne verilerini daha sonra içe aktarabileceğiniz bir dosyaya aktarın.","disk_button":"Dosyaya kaydet","link_title":"Paylaşılabilir bağlantı","link_details":"Salt okunur bir bağlantı olarak dışa aktarın.","link_button":"Bağlantı olarak dışa aktar","excalidrawplus_description":"Sahneyi Excalidraw+ çalışma alanınıza kaydedin.","excalidrawplus_button":"Dışa aktar","excalidrawplus_exportError":"Şu anda Excalidraw+\'a aktarılamadı..."},"helpDialog":{"blog":"Blog\'umuzu okuyun","click":"tıkla","deepSelect":"Derin seçim","deepBoxSelect":"Kutu içerisinde derin seçim yapın, sürüklemeyi engelleyin","curvedArrow":"Eğri ok","curvedLine":"Eğri çizgi","documentation":"Dokümantasyon","doubleClick":"çift-tıklama","drag":"sürükle","editor":"Düzenleyici","editLineArrowPoints":"Çizgi/ok noktalarını düzenle","editText":"Etiket / metin düzenle","github":"Bir hata mı buldun? Bildir","howto":"Rehberlerimizi takip edin","or":"veya","preventBinding":"Ok bağlamayı önleyin","tools":"Araçlar","shortcuts":"Klavye kısayolları","textFinish":"Düzenlemeyi bitir (metin düzenleyici)","textNewLine":"Yeni satır ekle (metin düzenleyici)","title":"Yardım","view":"Görünüm","zoomToFit":"Tüm öğeleri sığdırmak için yakınlaştır","zoomToSelection":"Seçime yakınlaş","toggleElementLock":"Seçimi Kilitle/çöz","movePageUpDown":"Sayfayı yukarı/aşağı kaydır","movePageLeftRight":"Sayfayı sola/sağa kaydır"},"clearCanvasDialog":{"title":"Tuvali temizle"},"publishDialog":{"title":"Kitaplığı yayınla","itemName":"Öğe adı","authorName":"Yazar adı","githubUsername":"GıtHub kullanıcı adı","twitterUsername":"Twitter kullanıcı adı","libraryName":"Kitaplık adı","libraryDesc":"Kitaplık açıklaması","website":"Web sitesi","placeholder":{"authorName":"Adınız ya da kullanıcı adınız","libraryName":"Kitaplığınızın adı","libraryDesc":"İnsanların kullanımını anlamasına yardımcı olmak için kitaplığınızın açıklaması","githubHandle":"Github bağlantısı ( tercihe bağlı), kütüphane gözden geçirme için onaylandığında düzenleyebiliesiniz diye","twitterHandle":"Twitter kullanıcı adı ( tercihe bağlı), bu sayede Twitter üzerinde paylaşıren çalışmanızı size atfedebiliriz","website":"Kişisel web sayfanızı ya da başka bir yeri bağlayın (tercihe bağlı)"},"errors":{"required":"Gerekli","website":"Geçerli bir URL girin"},"noteDescription":"Submit your library to be included in the genel kütüphane reposudiğer insanlar çizimlerinde kullanabilsin diye.","noteGuidelines":"Önce kütüphane elle onaylanmalı. şunu okuyun yönergeler onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil.","noteLicense":"Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz MIT Lisans, ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir.","noteItems":"Her kütüphane kendi ismine sahip olmalı ki tarama yapabilelim. Şu kütüphane ögeleri dahil edilecek:","atleastOneLibItem":"Lütfen başlamak için en az bir tane kütüphane ögesi seçin","republishWarning":"Not: seçilen ögelerden bir kısmı zaten yayınlanmış/gönderilmiş. Yalnızca mevcut kütüphane ve gönderileri güncellerken yeniden gönderme işlemi yapmalısınız."},"publishSuccessDialog":{"title":"Kütüphane gönderildi","content":"Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsinizburada"},"confirmDialog":{"resetLibrary":"Kütüphaneyi sıfırla","removeItemsFromLib":"Seçilen ögeleri kütüphaneden kaldır"},"imageExportDialog":{"header":"Resmi dışa aktar","label":{"withBackground":"Arka plan","onlySelected":"Sadece seçilen","darkMode":"Karanlık mod","embedScene":"Sahne yerleştir","scale":"Ölçeklendir","padding":"Dış boşluk"},"tooltip":{"embedScene":"Sahne verisi, sahnenin geri yüklenebilmesi için dışarı aktarılan PNG/SVG dosyasına kaydedilecektir. Bu, dışa aktarılan dosya boyutunu arttıracaktır."},"title":{"exportToPng":"PNG olarak dışa aktar","exportToSvg":"SVG olarak dışa aktar","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Panoya kopyala"}},"encrypted":{"tooltip":"Çizimleriniz uçtan-uca şifrelenmiştir, Excalidraw\'ın sunucuları bile onları göremez.","link":"Excalidraw\'da uçtan uca şifreleme hakkında blog yazısı"},"stats":{"angle":"Açı","element":"Bileşen","elements":"Bileşenler","height":"Yükseklik","scene":"Sahne","selected":"Seçili","storage":"Depolama","title":"İnekler için istatistikler","total":"Toplam","version":"Sürüm","versionCopy":"Kopyalamak için tıkla","versionNotAvailable":"Sürüm mevcut değil","width":"Genişlik"},"toast":{"addedToLibrary":"Kütüphaneye eklendi","copyStyles":"Stiller kopyalandı.","copyToClipboard":"Panoya kopyalandı.","copyToClipboardAsPng":"{{exportSelection}} panoya PNG olarak\\n({{exportColorScheme}}) kopyalandı","fileSaved":"Dosya kaydedildi.","fileSavedToFilename":"{filename} kaydedildi","canvas":"tuval","selection":"seçim","pasteAsSingleElement":"Tekil obje olarak yapıştırmak için veya var olan bir metin editörüne yapıştırmak için {{shortcut}} kullanın","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Şeffaf","black":"Siyah","white":"Beyaz","red":"Kırmızı","pink":"Pembe","grape":"Koyu Mor","violet":"Menekşe rengi","gray":"Gri","blue":"Mavi","cyan":"Camgöbeği","teal":"Deniz mavisi","green":"Yeşil","yellow":"Sarı","orange":"Turuncu","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"Ecalidraw+\'a mı gitmek istediniz?","menuHint":"Dışa aktar, seçenekler, diller, ..."},"defaults":{"menuHint":"Dışa aktar, seçenekler, ve daha fazlası...","center_heading":"","toolbarHint":"Bir araç seçin ve çizime başlayın!","helpHint":"Kısayollar & yardım"}},"colorPicker":{"mostUsedCustomColors":"En çok kullanılan özel renkler","colors":"Renkler","shades":"","hexCode":"Hex kodu","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"Diske Kaydet","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js b/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js new file mode 100644 index 0000000..452d457 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7759],{3458:function(e){e.exports=JSON.parse('{"labels":{"paste":"Вставити","pasteAsPlaintext":"Вставити як простий текст","pasteCharts":"Вставити діаграми","selectAll":"Вибрати все","multiSelect":"Додати елемент до вибраного","moveCanvas":"Перемістити полотно","cut":"Вирізати","copy":"Копіювати","copyAsPng":"Копіювати як PNG","copyAsSvg":"Копіювати як SVG","copyText":"Копіювати в буфер обміну як текст","bringForward":"Перемістити вперед","sendToBack":"На задній план","bringToFront":"На передній план","sendBackward":"Перемістити назад","delete":"Видалити","copyStyles":"Копіювати стилі","pasteStyles":"Вставити стилі","stroke":"Контур","background":"Тло","fill":"Заповнити","strokeWidth":"Товщина контуру","strokeStyle":"Стиль контуру","strokeStyle_solid":"Суцільний","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Крапки","sloppiness":"Охайність","opacity":"Прозорість","textAlign":"Вирівнювання тексту","edges":"Краї","sharp":"Гострі","round":"Круглі","arrowheads":"Закінчення стрілки","arrowhead_none":"Жоден","arrowhead_arrow":"Стрілка","arrowhead_bar":"Колона","arrowhead_dot":"Точка","arrowhead_triangle":"Трикутник","fontSize":"Розмір шрифту","fontFamily":"Шрифт","addWatermark":"Додати «Накреслене в Excalidraw»","handDrawn":"Ручний апарат","normal":"Звичайний","code":"Код","small":"Малий","medium":"Середній","large":"Великий","veryLarge":"Дуже великий","solid":"Суцільна","hachure":"Штриховка","zigzag":"Зиґзаґ","crossHatch":"Перехресна штриховка","thin":"Тонкий","bold":"Жирний","left":"Зліва","center":"По центру","right":"Справа","extraBold":"Товстий","architect":"Архітектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Назва файла","colorPicker":"Палітра кольорів","canvasColors":"Використовується на полотні","canvasBackground":"Тло полотна","drawingCanvas":"Полотно","layers":"Шари","actions":"Дії","language":"Мова","liveCollaboration":"Спільна робота наживо...","duplicateSelection":"Дублювати","untitled":"Без назви","name":"Ім’я","yourName":"Ваше ім’я","madeWithExcalidraw":"Накреслене в Excalidraw","group":"Групувати виділене","ungroup":"Розгрупувати виділене","collaborators":"Співавтори","showGrid":"Показати сітку","addToLibrary":"Додати до бібліотеки","removeFromLibrary":"Видалити з бібліотеки","libraryLoadingMessage":"Завантажити бібліотеку…","libraries":"Всі бібліотеки","loadingScene":"Завантаження сцени…","align":"Вирівнювання","alignTop":"Вирівняти по верхньому краю","alignBottom":"Вирівняти по нижньому краю","alignLeft":"Вирівняти по лівому краю","alignRight":"Вирівнювання по правому краю","centerVertically":"Центрувати по вертикалі","centerHorizontally":"Центрувати по горизонталі","distributeHorizontally":"Розподілити по горизонталі","distributeVertically":"Розподілити вертикально","flipHorizontal":"Віддзеркалити горизонтально","flipVertical":"Віддзеркалити вертикально","viewMode":"Режим перегляду","share":"Поділитися","showStroke":"Показати палітру для контура","showBackground":"Показати палітру для фону","toggleTheme":"Перемкнути тему","personalLib":"Персональна бібліотека","excalidrawLib":"Бібліотека Excalidraw","decreaseFontSize":"Зменшити розмір шрифту","increaseFontSize":"Збільшити розмір шрифту","unbindText":"Відв\'язати текст","bindText":"Прив’язати текст до контейнера","createContainerFromText":"Огорнути текст у контейнер","link":{"edit":"Редагування посилання","editEmbed":"Редагування посилання і вкладення","create":"Створити посилання","createEmbed":"Створити посилання і вкладення","label":"Посилання","labelEmbed":"Посилання і вкладення","empty":"Посилання відсутнє"},"lineEditor":{"edit":"Редагувати лінію","exit":"Закінчити редагування лінії"},"elementLock":{"lock":"Блокувати","unlock":"Розблокувати","lockAll":"Заблокувати все","unlockAll":"Розблокувати все"},"statusPublished":"Опубліковано","sidebarLock":"Не закривати бокове меню","selectAllElementsInFrame":"Обрати всі елементи у фреймі","removeAllElementsFromFrame":"Видалити всі елементи з фрейму","eyeDropper":"Вибрати колір з полотна"},"library":{"noItems":"Тут поки пусто...","hint_emptyLibrary":"Виберіть об\'єкт на полотні, щоб додати його сюди або встановіть бібліотеку з публічного репозиторію, що нижче.","hint_emptyPrivateLibrary":"Виберіть елемент на полотні, щоб додати його сюди."},"buttons":{"clearReset":"Очистити полотно","exportJSON":"Експорт у файл","exportImage":"Експорт зображення...","export":"Зберегти як...","copyToClipboard":"Скопіювати до буферу обміну","save":"Зберегти до поточного файлу","saveAs":"Зберегти як","load":"Відкрити","getShareableLink":"Отримати посилання","close":"Закрити","selectLanguage":"Обрати мову","scrollBackToContent":"Повернутися до вмісту","zoomIn":"Збільшити","zoomOut":"Зменшити","resetZoom":"Скинути масштаб","menu":"Меню","done":"Готово","edit":"Редагувати","undo":"Відмінити","redo":"Повторити","resetLibrary":"Очистити бібліотеку","createNewRoom":"Створити нову кімнату","fullScreen":"Повноекранний режим","darkMode":"Темна тема","lightMode":"Світла тема","zenMode":"Режим Дзен","objectsSnapMode":"","exitZenMode":"Вийти з дзен-режиму","cancel":"Скасувати","clear":"Очистити","remove":"Видалити","embed":"Перемкнути вкладення","publishLibrary":"Опублікувати","submit":"Надіслати","confirm":"Підтвердити","embeddableInteractionButton":"Натисніть для взаємодії"},"alerts":{"clearReset":"Це очистить все полотно. Впевнені?","couldNotCreateShareableLink":"Не вдалося створити посилання.","couldNotCreateShareableLinkTooBig":"Не вдалося створити посилання для обміну: сцена занадто велика","couldNotLoadInvalidFile":"Файл з помилками не відкрився","importBackendFailed":"Імпортування невдале.","cannotExportEmptyCanvas":"Не вийшло експортувати пусте полотно.","couldNotCopyToClipboard":"Не вдалося скопіювати до буфера обміну.","decryptFailed":"Не вдалося розшифрувати дані.","uploadedSecurly":"Це завантаження було захищене наскрізним шифруванням, а це означає що сервер Excalidraw та інші не зможуть прочитати вміст.","loadSceneOverridePrompt":"Завантаження зовнішнього креслення замінить ваш наявний контент. Продовжити?","collabStopOverridePrompt":"Зупинка сесії перезапише ваш попередній, локально збережений малюнок. Ви впевнені?\\n\\n(Якщо ви хочете зберегти локальний малюнок, просто закрийте замість нього вкладку браузера.)","errorAddingToLibrary":"Не вдалося додати елемент до бібліотеки","errorRemovingFromLibrary":"Не вдалося видалити елемент з бібліотеки","confirmAddLibrary":"Це призведе до додавання {{numShapes}} фігур до вашої бібліотеки. Ви впевнені?","imageDoesNotContainScene":"Виглядає ніби зображення не містить корисної інформації. Ви увімкнули вбудовування сцени при експорті?","cannotRestoreFromImage":"Сцена не може бути відновлена з цього файлу зображення","invalidSceneUrl":"Не вдалося імпортувати сцену з наданого URL. Він або недоформований, або не містить дійсних даних Excalidraw JSON.","resetLibrary":"Це призведе до очищення бібліотеки. Ви впевнені?","removeItemsFromsLibrary":"Видалити {{count}} елемент(ів) з бібліотеки?","invalidEncryptionKey":"Ключ шифрування повинен бути довжиною до 22 символів. Спільну роботу вимкнено.","collabOfflineWarning":"Немає підключення до Інтернету.\\nВаші зміни не будуть збережені!"},"errors":{"unsupportedFileType":"Непідтримуваний тип файлу.","imageInsertError":"Не вдалося вставити зображення. Повторіть спробу пізніше...","fileTooBig":"Занадто великий розмір файлу, максимальний розмір файлу {{maxSize}}.","svgImageInsertError":"Не вдалося вставити SVG-зображення. Помилка розмітки SVG.","failedToFetchImage":"","invalidSVGString":"Недійсний SVG.","cannotResolveCollabServer":"Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.","importLibraryError":"Не вдалося завантажити бібліотеку","collabSaveFailed":"Не вдалося зберегти у базу даних сервера. Якщо проблеми не зникнуть, Вам слід зберегти файл локально, щоб не втратити роботу.","collabSaveFailed_sizeExceeded":"Полотно завелике! Не вдалося зберегти у базу даних сервера. Вам слід зберегти файл локально, щоб не втратити свою роботу.","brave_measure_text_error":{"line1":"Ви використовуєте браузер Brave з увімкненим налаштуванням Агресивного Блокування Розпізнавання Пристрою.","line2":"Це може нашкодити текстовим елементам у ваших малюнках.","line3":"Ми наполегливо рекомендуємо вимкнути це налаштування. Виконайте наступні кроки, щоб виправити це.","line4":"Якщо вимкнення цього параметра не вирішує показ текстових елементів, тоді створіть, будь ласка, запит на розв\'язання проблеми на нашому GitHub або напишіть нам у Discord"},"libraryElementTypeError":{"embeddable":"Вбудовані елементи не можна додати в бібліотеку.","image":"Підтримка додавання зображень в бібліотеку найближчим часом!"}},"toolBar":{"selection":"Виділення","image":"Вставити зображення","rectangle":"Прямокутник","diamond":"Ромб","ellipse":"Еліпс","arrow":"Стрілка","line":"Лінія","freedraw":"Малювати","text":"Текст","library":"Бібліотека","lock":"Залишити обраний інструмент після креслення","penMode":"Режим пера - запобігання дотику","link":"Додати/Оновити посилання для вибраної форми","eraser":"Очищувач","frame":"Інструмент фрейму","embeddable":"Веб вкладення","laser":"","hand":"Рука (інструмент для панорамування)","extraTools":"Інші інструменти"},"headings":{"canvasActions":"Дії з полотном","selectedShapeActions":"Вибрані дії з фігурою","shapes":"Фігури"},"hints":{"canvasPanning":"Щоб перемістити полотно, утримуйте коліщатко миші або пробіл під час перетягування, або скористайтеся інструментом Рука","linearElement":"Натисніть щоб додати кілька точок. Перетягніть щоб намалювати одну лінію","freeDraw":"Натисніть і потягніть, відпустіть коли завершите","text":"Порада: можна також додати текст, двічі клацнувши по будь-якому місці інструментом вибору","embeddable":"Клікніть та перетягніть для створення вбудованого вебсайту","text_selected":"Подвійний клік або натисніть клавішу ENTER, щоб редагувати текст","text_editing":"Натисніть клавішу Escape або Ctrl/Cmd+ENTER, щоб завершити редагування","linearElementMulti":"Натисніть на останню точку, клацніть Esc або Enter щоб завершити","lockAngle":"Ви можете обмежити кут, утримуюючи SHIFT","resize":"Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,\\nутримуйте ALT для змінення розміру від центру","resizeImage":"Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру","rotate":"Ви можете обмежити кути, утримуючи SHIFT під час обертання","lineEditor_info":"Утримуйте CtrlOrCmd і двічі клацніть або натисніть CtrlOrCmd + Enter, щоб редагувати цятки","lineEditor_pointSelected":"Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично","lineEditor_nothingSelected":"Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок","placeImage":"Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір","publishLibrary":"Опублікувати свою власну бібліотеку","bindTextToElement":"Натисніть Enter, щоб додати текст","deepBoxSelect":"Втримуйте Ctrl/Cmd для глибокого виділення та щоб попередити перетягування","eraserRevert":"Втримуйте клавішу Alt, щоб повернути елементи позначені для видалення","firefox_clipboard_write":"Цю функцію можна ввімкнути, встановивши значення \\"true\\" для налаштування \\"dom.events.asyncClipboard.clipboardItem\\". Перейдіть на сторінку «about:config», щоб змінити налаштування браузера у Firefox.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не вдається показати попередній перегляд","canvasTooBig":"Полотно може бути завеликим.","canvasTooBigTip":"Порада: спробуйте підсунути найвіддаленіші елементи ближче один до одного."},"errorSplash":{"headingMain":"Сталася помилка. Спробуйте ","clearCanvasMessage":"Якщо перезавантаження не допоможе, спробуйте ","clearCanvasCaveat":" Це призведе до втрати роботи ","trackedToSentry":"Помилка з ідентифікатором {{eventId}} було відслідковано в нашій системі.","openIssueMessage":"Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.","sceneContent":"Вміст сцени:"},"roomDialog":{"desc_intro":"Ви можете запросити людей для спільної роботи.","desc_privacy":"Не хвилюйтеся, сесія захищена наскрізним шифруванням, тому ваше креслення залишиться приватним. Навіть наш сервер не побачить вашу роботу.","button_startSession":"Почати сесію","button_stopSession":"Закрити сесію","desc_inProgressIntro":"Сесія спільної роботи над кресленням триває.","desc_shareLink":"Поділіться цим посиланням з будь-ким для спільної роботи:","desc_exitSession":"Зупинка сесії відключить вас від кімнати, але ви зможете продовжити роботу з полотном локально. Зверніть увагу, що це не вплине на інших людей, і вони все одно зможуть працювати над їх версією.","shareTitle":"Приєднатися до сеансу спільної роботи на Excalidraw"},"errorDialog":{"title":"Помилка"},"exportDialog":{"disk_title":"Зберегти на диск","disk_details":"Експорт даних сцени в файл, з якого можна імпортувати пізніше.","disk_button":"Зберегти до файлу","link_title":"Доступ за посиланням","link_details":"Експортувати як посилання тільки для читання.","link_button":"Експортувати у посилання","excalidrawplus_description":"Збережіть сцену у вашому обліковому записі Excalidraw+.","excalidrawplus_button":"Експортувати","excalidrawplus_exportError":"Не вдалося експортувати у Excalidraw+..."},"helpDialog":{"blog":"Наш блог","click":"натиснути","deepSelect":"Глибокий вибір","deepBoxSelect":"Глибоке виділення в межах рамки, та обмеження перетягування","curvedArrow":"Крива стрілка","curvedLine":"Крива лінія","documentation":"Документація","doubleClick":"подвійний клік","drag":"перетягнути","editor":"Редактор","editLineArrowPoints":"Редагувати лінію/стрілки","editText":"Редагувати текст / додати позначку","github":"Знайшли помилку? Повідомте","howto":"Дотримуйтесь наших інструкцій","or":"або","preventBinding":"Запобігти зв\'язування зі стрілками","tools":"Інструменти","shortcuts":"Гарячі клавіші","textFinish":"Завершити редагування (текстовий редактор)","textNewLine":"Додати новий рядок (текстовий редактор)","title":"Допомога","view":"Вигляд","zoomToFit":"Збільшити щоб умістити всі елементи","zoomToSelection":"Наблизити вибране","toggleElementLock":"Заблокувати/розблокувати вибране","movePageUpDown":"Пересунути сторінку вгору/вниз","movePageLeftRight":"Пересунути сторінку вліво/вправо"},"clearCanvasDialog":{"title":"Очистити полотно"},"publishDialog":{"title":"Опублікувати бібліотеку","itemName":"Назва елементу","authorName":"Ім\'я автора","githubUsername":"Ім\'я користувача Github","twitterUsername":"Ім\'я користувача Твитер","libraryName":"Назва бібліотеки","libraryDesc":"Опис бібліотеки","website":"Вебсайт","placeholder":{"authorName":"Ваше ім\'я або ім\'я користувача","libraryName":"Назва вашої бібліотеки","libraryDesc":"Опис вашої бібліотеки, щоб допомогти людям зрозуміти її використання","githubHandle":"Ім\'я користувача в GitHub (необов\'язково), щоб ви могли редагувати бібліотеку під час перевірки","twitterHandle":"Ім\'я користувача у Twitter (необов\'язково), щоб ми могли згадати вас під час промоції у Twitter","website":"Посилання на ваш особистий сайт або інший сайт (опціонально)"},"errors":{"required":"Обов’язково","website":"Введіть дійсну URL-адресу"},"noteDescription":"Подати бібліотеку, щоб вона була включена до публічного репозиторія бібліотекдля інших людей, для використання у їхніх полотнах.","noteGuidelines":"Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте настанови перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов\'язково.","noteLicense":"Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під Ліцензія MIT, , простими словами, це означає що нею зможе користуватися будь-хто без обмежень.","noteItems":"Кожен об\'єкт в бібліотеці повинен мати назву, це потрібно для пошуку та фільтрування. Наступні об\'єкти бібліотеки будуть включені:","atleastOneLibItem":"Будь ласка, виберіть принаймні один елемент бібліотеки, щоб почати","republishWarning":"Зауважте, деякі з вибраних елементів позначені як вже опубліковані/надіслані. Ви повинні повторно надсилати елементи тільки при оновленні вже опублікованої бібліотеки чи при публікації бібліотеки."},"publishSuccessDialog":{"title":"Бібліотека відправлена","content":"Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статустут"},"confirmDialog":{"resetLibrary":"Очистити бібліотеку","removeItemsFromLib":"Видалити вибрані елементи з бібліотеки"},"imageExportDialog":{"header":"Експортувати зображення","label":{"withBackground":"Тло","onlySelected":"Тільки вибране","darkMode":"Темний режим","embedScene":"Вбудована сцена","scale":"Масштабування","padding":"Відступ"},"tooltip":{"embedScene":"Дані сцени будуть збережені в експортований файл PNG/SVG. Ця сцена може бути відновлена з нього, однак це збільшить розмір експортованого файлу."},"title":{"exportToPng":"Експортувати в PNG","exportToSvg":"Експортувати у SVG","copyPngToClipboard":"Скопіювати PNG в буфер обміну"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копіювати в буфер обміну"}},"encrypted":{"tooltip":"Ваші креслення захищені наскрізним шифруванням — сервери Excalidraw ніколи їх не побачать.","link":"Допис у блозі на наскрізному шифруванні в Excalidraw"},"stats":{"angle":"Кут","element":"Елемент","elements":"Елементи","height":"Висота","scene":"Сцена","selected":"Обрано","storage":"Сховище","title":"Статистика","total":"Всього","version":"Версія","versionCopy":"Натисніть, щоб скопіювати","versionNotAvailable":"Версія недоступна","width":"Ширина"},"toast":{"addedToLibrary":"Додано до бібліотеки","copyStyles":"Скопійовані стилі.","copyToClipboard":"Скопіювати до буферу обміну.","copyToClipboardAsPng":"Скопійовано {{exportSelection}} до буфера обміну як PNG\\n({{exportColorScheme}})","fileSaved":"Файл збережено.","fileSavedToFilename":"Збережено в {filename}","canvas":"полотно","selection":"виділення","pasteAsSingleElement":"Використайте {{shortcut}} для вставки самостійного зразка або використайте в текстовому редакторі","unableToEmbed":"Вбудування цієї url на даний час не допускається. Підніміть питання на GitHub, щоб попросити внести URL-адресу до білого списку","unrecognizedLinkFormat":"Посилання, яке ви вставили, не відповідає очікуваному формату. Будь ласка, спробуйте вставити рядок \\"embed\\", наданий сайтом-джерелом"},"colors":{"transparent":"Прозорий","black":"Чорний","white":"Білий","red":"Червоний","pink":"Рожевий","grape":"Виноградний","violet":"Фіолетовий","gray":"Сірий","blue":"Синій","cyan":"Ціан","teal":"Бірюзовий","green":"Зелений","yellow":"Жовтий","orange":"Помаранчевий","bronze":"Бронзовий"},"welcomeScreen":{"app":{"center_heading":"Всі ваші дані збережено локально у Вашому браузері.","center_heading_plus":"Чи бажаєте перейти до Excalidraw+?","menuHint":"Експорт, налаштування, мови, ..."},"defaults":{"menuHint":"Експорт, налаштування та багато іншого...","center_heading":"Діаграми. Робити. Просто.","toolbarHint":"Оберіть інструмент і почніть малювати!","helpHint":"Гарячі клавіші і допомога"}},"colorPicker":{"mostUsedCustomColors":"Найбільш використовувані користувацькі кольори","colors":"Кольори","shades":"Тіні","hexCode":"Hex-код","noShades":"Немає доступних відтінків цього кольору"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Експортувати як зображення","button":"Експортувати як зображення","description":"Експорт даних сцени у вигляді зображення, з якого можна імпортувати пізніше."},"saveToDisk":{"title":"Зберегти на диск","button":"Зберегти на диск","description":"Експорт даних сцени в файл, з якого можна імпортувати пізніше."},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортувати до Excalidraw+","description":"Зберегти сцену до робочого простору Excalidraw+."}},"modal":{"loadFromFile":{"title":"Завантажити з файлу","button":"Завантажити з файлу","description":"Завантаження з файлу замінить наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."},"shareableLink":{"title":"Завантажити з посилання","button":"Замінити мій контент","description":"Завантаження зовнішнього малюнка замінить ваш наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js b/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js new file mode 100644 index 0000000..f4f8288 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4e3],{456:function(n){n.exports=JSON.parse('{"labels":{"paste":"Dán","pasteAsPlaintext":"Dán kiểu văn bản thuần","pasteCharts":"Dán biểu đồ","selectAll":"Chọn tất cả","multiSelect":"Thêm mới vào Select","moveCanvas":"Di chuyển canvas","cut":"Cắt","copy":"Sao chép","copyAsPng":"Sao chép vào bộ nhớ tạm dưới dạng PNG","copyAsSvg":"Sao chép vào bộ nhớ tạm dưới dạng SVG","copyText":"Sao chép vào bộ nhớ tạm dưới dạng chữ","bringForward":"Đưa ra trước","sendToBack":"Hạ xuống dưới","bringToFront":"Đưa ra đầu tiên","sendBackward":"Hạ xuống cuối","delete":"Xóa","copyStyles":"Sao chép định dạng","pasteStyles":"Dán định dạng","stroke":"Nét","background":"Nền","fill":"Fill","strokeWidth":"Độ dày nét","strokeStyle":"Kiểu nét","strokeStyle_solid":"Khối","strokeStyle_dashed":"Gạch ngang","strokeStyle_dotted":"Nhiều chấm","sloppiness":"Hoa văn nét","opacity":"Độ trong suốt","textAlign":"Căn chỉnh văn bản","edges":"Cạnh","sharp":"Nhọn","round":"Tròn","arrowheads":"Đầu mũi tên","arrowhead_none":"Không","arrowhead_arrow":"Mũi tên","arrowhead_bar":"Thanh","arrowhead_dot":"Chấm","arrowhead_triangle":"Tam giác","fontSize":"Cỡ chữ","fontFamily":"Phông chữ","addWatermark":"Làm với Excalidraw\\"","handDrawn":"Vẽ tay","normal":"Bình thường","code":"Mã","small":"Nhỏ","medium":"Vừa","large":"Lớn","veryLarge":"Rất lớn","solid":"Đặc","hachure":"Nét gạch gạch","zigzag":"Zigzag","crossHatch":"Nét gạch chéo","thin":"Mỏng","bold":"In đậm","left":"Trái","center":"Giữa","right":"Phải","extraBold":"Nét siêu đậm","architect":"Kiến trúc sư","artist":"Nghệ sỹ","cartoonist":"Hoạt hình","fileTitle":"Tên tập tin","colorPicker":"Chọn màu","canvasColors":"Đã dùng trên canvas","canvasBackground":"Nền canvas","drawingCanvas":"Canvas vẽ","layers":"Lớp","actions":"Chức năng","language":"Ngôn ngữ","liveCollaboration":"Hợp tác trực tiếp...","duplicateSelection":"Tạo bản sao","untitled":"Không có tiêu đề","name":"Tên","yourName":"Tên của bạn","madeWithExcalidraw":"Làm với Excalidraw","group":"Gộp nhóm lại lựa chọn","ungroup":"Tách nhóm lựa chọn","collaborators":"Cộng tác viên","showGrid":"Hiển thị lưới","addToLibrary":"Thêm vào thư viện","removeFromLibrary":"Xóa khỏi thư viện","libraryLoadingMessage":"Đang tải thư viện…","libraries":"Xem thư viện","loadingScene":"Đang tải về…","align":"Căn chỉnh","alignTop":"Căn trên","alignBottom":"Căn dưới","alignLeft":"Canh trái","alignRight":"Canh phải","centerVertically":"Giữa theo chiều dọc","centerHorizontally":"Giữa theo chiều ngang","distributeHorizontally":"Phân bố theo chiều ngang","distributeVertically":"Phân bố theo chiều dọc","flipHorizontal":"Lật ngang","flipVertical":"Lật dọc","viewMode":"Chế độ xem","share":"Chia sẻ","showStroke":"Hiển thị chọn màu","showBackground":"Hiện thị chọn màu nền","toggleTheme":"","personalLib":"Thư viện cá nhân","excalidrawLib":"Thư viện Excalidraw","decreaseFontSize":"Giảm cỡ chữ","increaseFontSize":"Tăng cỡ chữ","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Sửa liên kết","editEmbed":"","create":"Tạo liên kết","createEmbed":"","label":"Liên kết","labelEmbed":"","empty":""},"lineEditor":{"edit":"Điều chỉnh nét","exit":"Thoát chỉnh nét"},"elementLock":{"lock":"Khoá","unlock":"Mở khoá","lockAll":"Khóa tất cả","unlockAll":"Mở khóa tất cả"},"statusPublished":"Đã đăng tải","sidebarLock":"Giữ thanh bên luôn mở","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Chưa có món nào...","hint_emptyLibrary":"Chọn một món trên canvas để thêm nó vào đây, hoặc cài đặt thư viện từ kho lưu trữ công cộng, ở bên dưới.","hint_emptyPrivateLibrary":"Chọn một món trên canvas để thêm nó vào đây."},"buttons":{"clearReset":"Reset canvas","exportJSON":"Xuất ra tập tin","exportImage":"Xuất file ảnh...","export":"Lưu vào...","copyToClipboard":"Sao chép vào bộ nhớ tạm","save":"Lưu vào tập tin hiện tại","saveAs":"Lưu thành","load":"Mở","getShareableLink":"Tạo liên kết để chia sẻ","close":"Đóng","selectLanguage":"Chọn ngôn ngữ","scrollBackToContent":"Cuộn về nội dung chính","zoomIn":"Phóng to","zoomOut":"Thu nhỏ","resetZoom":"Đặt lại thu phóng","menu":"Bảng chọn","done":"Xong","edit":"Chỉnh sửa","undo":"Hoàn tác","redo":"Làm lại","resetLibrary":"","createNewRoom":"Tạo phòng mới","fullScreen":"Toàn màn hình","darkMode":"Chế độ tối","lightMode":"Chế độ sáng","zenMode":"Chế độ zen","objectsSnapMode":"","exitZenMode":"Thoát chể độ zen","cancel":"Hủy","clear":"Làm sạch","remove":"Xóa","embed":"","publishLibrary":"Đăng tải","submit":"Gửi","confirm":"Xác nhận","embeddableInteractionButton":""},"alerts":{"clearReset":"Điều này sẽ dọn hết canvas. Bạn có chắc không?","couldNotCreateShareableLink":"Không thể tạo đường dẫn chia sẻ.","couldNotCreateShareableLinkTooBig":"Không thể tạo đường dẫn chia sẻ: bản vẽ quá lớn","couldNotLoadInvalidFile":"Không thể load tập tin không hợp lệ","importBackendFailed":"","cannotExportEmptyCanvas":"Không thể xuất canvas trống.","couldNotCopyToClipboard":"","decryptFailed":"Không thể giải mã dữ liệu.","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?\\n\\n(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)","errorAddingToLibrary":"Không thể thêm món vào thư viện","errorRemovingFromLibrary":"Không thể xoá món khỏi thư viện","confirmAddLibrary":"Hình {{numShapes}} sẽ được thêm vào thư viện. Bạn chắc chứ?","imageDoesNotContainScene":"Hình ảnh này dường như không chứa bất kỳ dữ liệu cảnh nào. Bạn đã bật tính năng nhúng cảnh khi xuất chưa?","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Xoá {{count}} món từ thư viện?","invalidEncryptionKey":"Khóa mã hóa phải có 22 ký tự. Hợp tác trực tiếp bị vô hiệu hóa.","collabOfflineWarning":"Không có kết nối internet.\\nThay đổi của bạn sẽ không được lưu!"},"errors":{"unsupportedFileType":"Loại tập tin không được hỗ trợ.","imageInsertError":"Không thể thêm ảnh. Hãy thử lại sau...","fileTooBig":"Tệp tin quá lớn. Dung lượng tối đa cho phép là {{maxSize}}.","svgImageInsertError":"Không thể thêm ảnh SVG. Mã SVG có vẻ sai.","failedToFetchImage":"","invalidSVGString":"SVG không hợp lệ.","cannotResolveCollabServer":"Không thể kết nối với máy chủ hợp tác. Hãy tải lại trang và thử lại.","importLibraryError":"Không thể tải thư viện","collabSaveFailed":"Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.","collabSaveFailed_sizeExceeded":"Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Lựa chọn","image":"Chèn ảnh","rectangle":"Hình chữ nhật","diamond":"Kim cương","ellipse":"Hình elíp","arrow":"Mũi tên","line":"Đường kẻ","freedraw":"Vẽ","text":"Văn bản","library":"Thư viện","lock":"Giữ dụng cũ hiện tại sau khi vẽ","penMode":"Chế độ bút vẽ - ngăn ngừa chạm nhầm","link":"Thêm/ Chỉnh sửa liên kết cho hình được chọn","eraser":"Xóa","frame":"","embeddable":"","laser":"","hand":"Tay kéo","extraTools":""},"headings":{"canvasActions":"Hành động canvas","selectedShapeActions":"Các hành động cho hình dạng đã chọn","shapes":"Các hình khối"},"hints":{"canvasPanning":"Để di chuyển canvas, giữ con lăn chuột hoặc phím cách trong khi kéo, hoặc sử dụng công cụ cầm tay","linearElement":"Ấn để bắt đầu nhiểm điểm vẽ, kéo để vẽ một đường thẳng","freeDraw":"Ấn bà kéo, thả khi bạn xong","text":"Mẹo: bạn có thể thêm văn bản tại bất cứ đâu bằng cách ấn hai lần bằng tool lựa chọn","embeddable":"","text_selected":"Ấn 2 lần hoặc nhấn ENTER để chỉnh văn bản","text_editing":"Nhấn Escape hoặc Ctrl/Cmd+ENTER để hoàn thành chỉnh sửa","linearElementMulti":"Nhấn vào điểm cuối hoặc nhấn Escape hoặc Enter để kết thúc","lockAngle":"Bạn có thể chỉnh lại góc bằng cách giữ phím SHIFT","resize":"Bạn có thể chỉnh tỷ lệ bằng cách giữ SHIFT khi chỉnh kích cỡ,\\ngiữ ALT để chỉnh kích cỡ từ trung tâm","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"Tính năng này có thể được bật bằng cách đặt cờ \\"dom.events.asyncClipboard.clipboardItem\\" thành \\"true\\". Để thay đổi cờ trình duyệt trong Firefox, hãy truy cập trang \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Không thể xem trước","canvasTooBig":"Canvas này có thể hơi lớn.","canvasTooBigTip":"Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút."},"errorSplash":{"headingMain":"","clearCanvasMessage":"Nếu không tải lại được, hãy thử ","clearCanvasCaveat":" Điều này sẽ dẫn đến mất dữ liệu bạn đã làm ","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Dọn canvas"},"publishDialog":{"title":"","itemName":"Tên món","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:","atleastOneLibItem":"Vui lòng chọn ít nhất một món thư viện để bắt đầu","republishWarning":"Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi."},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":"Xóa món đã chọn khỏi thư viện"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"canvas","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js b/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js new file mode 100644 index 0000000..2399766 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4680],{1037:function(e){e.exports=JSON.parse('{"labels":{"paste":"粘贴","pasteAsPlaintext":"粘贴为纯文本","pasteCharts":"粘贴图表","selectAll":"全部选中","multiSelect":"添加元素到选区","moveCanvas":"移动画布","cut":"剪切","copy":"拷贝","copyAsPng":"复制为 PNG 到剪贴板","copyAsSvg":"复制为 SVG 到剪贴板","copyText":"复制文本到剪贴板","bringForward":"上移一层","sendToBack":"置于底层","bringToFront":"置于顶层","sendBackward":"下移一层","delete":"删除","copyStyles":"拷贝样式","pasteStyles":"粘贴样式","stroke":"描边","background":"背景","fill":"填充","strokeWidth":"描边宽度","strokeStyle":"边框样式","strokeStyle_solid":"实线","strokeStyle_dashed":"虚线","strokeStyle_dotted":"点虚线","sloppiness":"线条风格","opacity":"透明度","textAlign":"文本对齐","edges":"边角","sharp":"尖锐","round":"圆润","arrowheads":"端点","arrowhead_none":"无","arrowhead_arrow":"箭头","arrowhead_bar":"条状","arrowhead_dot":"圆点","arrowhead_triangle":"三角箭头","fontSize":"字体大小","fontFamily":"字体","addWatermark":"添加 “使用 Excalidraw 创建” 水印","handDrawn":"手写","normal":"普通","code":"代码","small":"小","medium":"中","large":"大","veryLarge":"加大","solid":"实心","hachure":"线条","zigzag":"之字形折线","crossHatch":"交叉线条","thin":"细","bold":"粗","left":"左对齐","center":"居中","right":"右对齐","extraBold":"特粗","architect":"朴素","artist":"艺术","cartoonist":"漫画家","fileTitle":"文件名","colorPicker":"取色器","canvasColors":"画布上的","canvasBackground":"画布背景","drawingCanvas":"绘制 Canvas","layers":"图层","actions":"操作","language":"语言","liveCollaboration":"实时协作...","duplicateSelection":"复制","untitled":"无标题","name":"名字","yourName":"您的姓名","madeWithExcalidraw":"使用 Excalidraw 创建","group":"编组","ungroup":"解除编组","collaborators":"协作者","showGrid":"显示网格","addToLibrary":"添加到素材库中","removeFromLibrary":"从素材库中移除","libraryLoadingMessage":"正在加载素材库…","libraries":"浏览素材库","loadingScene":"正在加载绘图…","align":"对齐","alignTop":"顶部对齐","alignBottom":"底端对齐","alignLeft":"左对齐","alignRight":"右对齐","centerVertically":"垂直居中","centerHorizontally":"水平居中","distributeHorizontally":"水平等距分布","distributeVertically":"垂直等距分布","flipHorizontal":"水平翻转","flipVertical":"垂直翻转","viewMode":"查看模式","share":"分享","showStroke":"显示描边颜色选择器","showBackground":"显示背景颜色选择器","toggleTheme":"切换主题","personalLib":"个人素材库","excalidrawLib":"Excalidraw 素材库","decreaseFontSize":"缩小字体大小","increaseFontSize":"放大字体大小","unbindText":"取消文本绑定","bindText":"将文本绑定到容器","createContainerFromText":"将文本包围在容器中","link":{"edit":"编辑链接","editEmbed":"编辑链接与嵌入","create":"新建链接","createEmbed":"创建链接与嵌入","label":"链接","labelEmbed":"链接与嵌入","empty":"未设定链接"},"lineEditor":{"edit":"编辑线条","exit":"退出线条编辑"},"elementLock":{"lock":"锁定","unlock":"解除锁定","lockAll":"全部锁定","unlockAll":"全部解锁"},"statusPublished":"已发布","sidebarLock":"侧边栏常驻","selectAllElementsInFrame":"选择画框中的所有元素","removeAllElementsFromFrame":"分离出画框中的所有元素","eyeDropper":"从画布上取色"},"library":{"noItems":"尚未添加任何项目……","hint_emptyLibrary":"选中画布上的项目添加到此处,或从下方的公共素材库中导入。","hint_emptyPrivateLibrary":"选中画布上的项目添加到此处。"},"buttons":{"clearReset":"重置画布","exportJSON":"导出为文件","exportImage":"导出图片...","export":"保存到...","copyToClipboard":"复制到剪贴板","save":"保存至当前文件","saveAs":"保存为","load":"打开","getShareableLink":"获取共享链接","close":"关闭","selectLanguage":"选择语言","scrollBackToContent":"滚动回到内容","zoomIn":"放大","zoomOut":"缩小","resetZoom":"重置缩放","menu":"菜单","done":"完成","edit":"编辑","undo":"撤销","redo":"重做","resetLibrary":"重置素材库","createNewRoom":"新建会议室","fullScreen":"全屏","darkMode":"深色模式","lightMode":"浅色模式","zenMode":"禅模式","objectsSnapMode":"吸附至对象","exitZenMode":"退出禅模式","cancel":"取消","clear":"清除","remove":"删除","embed":"切换嵌入","publishLibrary":"发布","submit":"提交","confirm":"确定","embeddableInteractionButton":"点击以开始交互"},"alerts":{"clearReset":"这将会清除整个画布。您是否要继续?","couldNotCreateShareableLink":"无法创建共享链接","couldNotCreateShareableLinkTooBig":"无法创建可共享链接:画布过大","couldNotLoadInvalidFile":"无法加载无效的文件","importBackendFailed":"从后端导入失败。","cannotExportEmptyCanvas":"无法导出空白画布。","couldNotCopyToClipboard":"无法复制到剪贴板。","decryptFailed":"无法解密数据。","uploadedSecurly":"上传已被端到端加密保护,这意味着 Excalidraw 的服务器和第三方都无法读取内容。","loadSceneOverridePrompt":"加载外部绘图将取代您现有的内容。您想要继续吗?","collabStopOverridePrompt":"停止会话将覆盖您先前本地存储的绘图。 您确定吗?\\n\\n(如果您想保持本地绘图,只需关闭浏览器选项卡。)","errorAddingToLibrary":"无法将项目添加到素材库中","errorRemovingFromLibrary":"无法从素材库中移除项目","confirmAddLibrary":"这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗?","imageDoesNotContainScene":"此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能?","cannotRestoreFromImage":"无法从此图像文件恢复画布","invalidSceneUrl":"无法从提供的 URL 导入场景。它或者格式不正确,或者不包含有效的 Excalidraw JSON 数据。","resetLibrary":"这将会清除你的素材库。你确定要这么做吗?","removeItemsFromsLibrary":"确定要从素材库中删除 {{count}} 个项目吗?","invalidEncryptionKey":"密钥必须包含22个字符。实时协作已被禁用。","collabOfflineWarning":"无网络连接。\\n您的改动将不会被保存!"},"errors":{"unsupportedFileType":"不支持的文件格式。","imageInsertError":"无法插入图像。请稍后再试……","fileTooBig":"文件过大。最大允许的大小为 {{maxSize}}。","svgImageInsertError":"无法插入 SVG 图像。该 SVG 标记似乎是无效的。","failedToFetchImage":"","invalidSVGString":"无效的 SVG。","cannotResolveCollabServer":"无法连接到实时协作服务器。请重新加载页面并重试。","importLibraryError":"无法加载素材库","collabSaveFailed":"无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。","collabSaveFailed_sizeExceeded":"无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。","brave_measure_text_error":{"line1":"您似乎正在使用 Brave 浏览器并启用了积极阻止指纹识别的设置。","line2":"这可能会破坏绘图中的 文本元素。","line3":"我们强烈建议禁用此设置。您可以按照这些步骤来设置。","line4":"如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 issue ,或者在 Discord 上反馈"},"libraryElementTypeError":{"embeddable":"嵌入元素不能添加到素材库。","image":"我们不久将支持添加图片到素材库"}},"toolBar":{"selection":"选择","image":"插入图像","rectangle":"矩形","diamond":"菱形","ellipse":"椭圆","arrow":"箭头","line":"线条","freedraw":"自由书写","text":"文字","library":"素材库","lock":"绘制后保持所选的工具栏状态","penMode":"笔模式 – 避免误触","link":"为选中的形状添加/更新链接","eraser":"橡皮","frame":"画框工具","embeddable":"嵌入网页","laser":"激光笔","hand":"抓手(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"画布动作","selectedShapeActions":"选定形状操作","shapes":"形状"},"hints":{"canvasPanning":"要移动画布,请按住鼠标滚轮或空格键同时拖拽鼠标,或使用抓手工具。","linearElement":"点击创建多个点 拖动创建直线","freeDraw":"点击并拖动,完成时松开","text":"提示:您也可以使用选择工具双击任意位置来添加文字","embeddable":"点击并拖动以创建嵌入网页","text_selected":"双击或按回车键以编辑文本","text_editing":"按下 Escape 或 CtrlOrCmd+ENTER 完成编辑","linearElementMulti":"点击最后一个点或按下 Esc/Enter 来完成","lockAngle":"可以按住 Shift 来约束角度","resize":"您可以按住SHIFT来限制比例大小,\\n按住ALT来调整中心大小","resizeImage":"按住SHIFT可以自由缩放,\\n按住ALT可以从中间缩放","rotate":"旋转时可以按住 Shift 来约束角度","lineEditor_info":"按住 CtrlOrCmd 并双击或按 CtrlOrCmd + Enter 来编辑点","lineEditor_pointSelected":"按下 Delete 移除点,CtrlOrCmd+D 以复制,拖动以移动","lineEditor_nothingSelected":"选择要编辑的点 (按住 SHIFT 选择多个),\\n或按住 Alt 并点击以添加新点","placeImage":"点击放置图像,或者点击并拖动以手动设置图像大小","publishLibrary":"发布您自己的素材库","bindTextToElement":"按下 Enter 以添加文本","deepBoxSelect":"按住 CtrlOrCmd 以深度选择,并避免拖拽","eraserRevert":"按住 Alt 以反选被标记删除的元素","firefox_clipboard_write":"将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项,请前往“about:config”页面。","disableSnapping":"按住 CtrlOrCmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"无法显示预览","canvasTooBig":"画布可能过大。","canvasTooBigTip":"提示:尝试将最远的元素移动到和其它元素更近一些。"},"errorSplash":{"headingMain":"遇到异常。请尝试。","clearCanvasMessage":"如果重新加载页面无效,请尝试。","clearCanvasCaveat":"这会造成当前工作丢失","trackedToSentry":"标识符为{{eventId}}的错误已在我们的系统中被记录","openIssueMessage":"我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。","sceneContent":"画布内容:"},"roomDialog":{"desc_intro":"你可以邀请其他人到目前的画面中与你协作。","desc_privacy":"别担心,该会话使用端到端加密,无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。","button_startSession":"开始会话","button_stopSession":"结束会话","desc_inProgressIntro":"实时协作会话进行中。","desc_shareLink":"分享此链接给你要协作的用户","desc_exitSession":"停止会话将中断您与房间的连接,但您依然可以在本地继续使用画布。请注意,这不会影响到其他用户,他们仍可以在他们的版本上继续协作。","shareTitle":"加入 Excalidraw 实时协作会话"},"errorDialog":{"title":"错误"},"exportDialog":{"disk_title":"保存到本地","disk_details":"将画布数据导出为文件,以便以后导入","disk_button":"保存为文件","link_title":"分享链接","link_details":"导出为只读链接。","link_button":"导出链接","excalidrawplus_description":"将画布保存到您的 Excalidraw+ 工作区。","excalidrawplus_button":"导出","excalidrawplus_exportError":"暂时无法导出到 Excalidraw+ ..."},"helpDialog":{"blog":"浏览我们的博客","click":"单击","deepSelect":"深度选择","deepBoxSelect":"在方框内深度选择并避免拖拽","curvedArrow":"曲线箭头","curvedLine":"曲线","documentation":"文档","doubleClick":"双击","drag":"拖动","editor":"编辑器","editLineArrowPoints":"编辑线条或箭头的点","editText":"添加或编辑文本","github":"提交问题","howto":"帮助文档","or":"或","preventBinding":"禁用箭头吸附","tools":"工具","shortcuts":"快捷键列表","textFinish":"完成编辑 (文本编辑器)","textNewLine":"添加新行(文本编辑器)","title":"帮助","view":"视图","zoomToFit":"缩放以适应所有元素","zoomToSelection":"缩放到选区","toggleElementLock":"锁定/解锁","movePageUpDown":"上下移动页面","movePageLeftRight":"左右移动页面"},"clearCanvasDialog":{"title":"清除画布"},"publishDialog":{"title":"发布素材库","itemName":"项目名称","authorName":"作者名","githubUsername":"GitHub 用户名","twitterUsername":"Twitter 用户名","libraryName":"名称","libraryDesc":"简介","website":"网址","placeholder":{"authorName":"您的名字或用户名","libraryName":"素材库名称","libraryDesc":"介绍您的素材库,让人们了解其用途","githubHandle":"GitHub 用户名(可选),填写后,您可以编辑已提交待审的素材库","twitterHandle":"Twitter 用户名(可选),填写后,当我们在Twitter发布推广信息时便可提及您","website":"您个人网站的或任意的链接(可选)"},"errors":{"required":"必填","website":"输入一个有效的URL"},"noteDescription":"提交后,您的素材库将被包含在公共素材库广场以供其他人在绘图中使用。","noteGuidelines":"提交的素材库需先经人工审核。在提交之前,请先阅读指南 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。","noteLicense":"提交即表明您已同意素材库将遵循 MIT 许可证,简而言之,任何人都可以不受限制地使用它们。","noteItems":"素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:","atleastOneLibItem":"请选择至少一个素材库以开始","republishWarning":"注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。"},"publishSuccessDialog":{"title":"素材库已提交","content":"谢谢你 {{authorName}}。您的素材库已被提交审核。请点击此处跟进此次提交的状态"},"confirmDialog":{"resetLibrary":"重置素材库","removeItemsFromLib":"从素材库中删除选中的项目"},"imageExportDialog":{"header":"导出图片","label":{"withBackground":"背景","onlySelected":"仅选中","darkMode":"深色模式","embedScene":"包含画布数据","scale":"缩放比例","padding":"内边距"},"tooltip":{"embedScene":"画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。\\n将会增加导出文件的大小。"},"title":{"exportToPng":"导出为 PNG","exportToSvg":"导出为 SVG","copyPngToClipboard":"复制 PNG 到剪切板"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"复制到剪贴板"}},"encrypted":{"tooltip":"您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。","link":"Excalidraw 中关于端到端加密的博客"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"画布","selected":"选中","storage":"存储","title":"详细统计信息","total":"总计","version":"版本","versionCopy":"点击复制","versionNotAvailable":"版本不可用","width":"宽度"},"toast":{"addedToLibrary":"添加到素材库中","copyStyles":"样式已拷贝。","copyToClipboard":"已复制到剪切板。","copyToClipboardAsPng":"已将 {{exportSelection}} 作为 PNG 复制到剪贴板\\n({{exportColorScheme}})","fileSaved":"文件已保存。","fileSavedToFilename":"保存到 {filename}","canvas":"画布","selection":"所选项","pasteAsSingleElement":"使用 {{shortcut}} 粘贴为单个元素,\\n或粘贴到现有的文本编辑器里","unableToEmbed":"目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单","unrecognizedLinkFormat":"您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"红","pink":"粉红","grape":"紫红","violet":"蓝紫","gray":"灰","blue":"蓝","cyan":"青","teal":"蓝绿","green":"绿","yellow":"黄","orange":"橙","bronze":"古铜"},"welcomeScreen":{"app":{"center_heading":"您的所有数据都储存在浏览器本地。","center_heading_plus":"是否前往 Excalidraw+ ?","menuHint":"导出、首选项、语言……"},"defaults":{"menuHint":"导出、首选项……","center_heading":"图,化繁为简。","toolbarHint":"选择工具并开始绘图!","helpHint":"快捷键和帮助"}},"colorPicker":{"mostUsedCustomColors":"常用自定义颜色","colors":"颜色","shades":"色调明暗","hexCode":"十六进制值","noShades":"此颜色没有可用的明暗变化"},"overwriteConfirm":{"action":{"exportToImage":{"title":"导出为图片","button":"导出为图片","description":"将画布数据导出为图片,以便以后导入。"},"saveToDisk":{"title":"保存到本地","button":"保存到本地","description":"将画布数据导出为文件,以便以后导入。"},"excalidrawPlus":{"title":"Excalidraw+","button":"导出到 Excalidraw+","description":"将画布保存到您的 Excalidraw+ 工作区。"}},"modal":{"loadFromFile":{"title":"从文件加载","button":"从文件加载","description":"从文件加载将替换您现有的内容

您可以先使用下列方式备份您的绘图。"},"shareableLink":{"title":"从链接加载","button":"替换我的内容","description":"加载外部绘图将替换您现有的内容

您可以先使用下列方式备份您的绘图。"}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js b/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js new file mode 100644 index 0000000..81c186c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7920],{5334:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"多重選取","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以 PNG 格式複製","copyAsSvg":"以 SVG 格式複製","copyText":"","bringForward":"往上一層移動","sendToBack":"移到最底層","bringToFront":"移到最上層","sendBackward":"往下一層移動","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"套用樣式","stroke":"筆跡顏色","background":"填充顏色","fill":"背景樣式","strokeWidth":"筆跡寬度","strokeStyle":"筆跡線條","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線(較密)","strokeStyle_dotted":"虛線(較疏)","sloppiness":"筆跡風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊角樣式","sharp":"銳角","round":"圓角","arrowheads":"箭嘴","arrowhead_none":"無箭嘴","arrowhead_arrow":"普通箭嘴","arrowhead_bar":"平頭條狀","arrowhead_dot":"圓點","arrowhead_triangle":"三角箭嘴","fontSize":"字型大小","fontFamily":"字體","addWatermark":"加入「使用 Excalidraw 製圖」水印","handDrawn":"手繪體","normal":"電腦字體","code":"等寬體","small":"細","medium":"中","large":"大","veryLarge":"勁大","solid":"實心","hachure":"斜線","zigzag":"","crossHatch":"交叉格仔","thin":"幼","bold":"粗","left":"靠左對齊","center":"置中對齊","right":"靠右對齊","extraBold":"勁粗","architect":"手繪風格","artist":"藝術家風格","cartoonist":"卡通風格","fileTitle":"檔案名稱","colorPicker":"","canvasColors":"","canvasBackground":"畫布背景顏色","drawingCanvas":"畫布","layers":"圖層","actions":"動作","language":"🌏 語言","liveCollaboration":"","duplicateSelection":"製作副本","untitled":"未命名的作品","name":"","yourName":"你的名稱","madeWithExcalidraw":"使用 Excalidraw 製圖","group":"建立物件群組","ungroup":"取消物件群組","collaborators":"已連線的協作者","showGrid":"顯示網格","addToLibrary":"加入作品庫","removeFromLibrary":"從作品庫中移除","libraryLoadingMessage":"正在載入作品庫…","libraries":"瀏覽作品庫","loadingScene":"載入畫布中…","align":"物件對齊","alignTop":"水平置頂","alignBottom":"水平置底","alignLeft":"垂直靠左對齊","alignRight":"垂直靠右對齊","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"左右等距","distributeVertically":"上下等距","flipHorizontal":"左右反轉","flipVertical":"上下反轉","viewMode":"唯讀模式","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"清空畫布","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"【‼️ 警告 ‼️ 無法復原的動作】你確定要清空呢塊畫布嗎?","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"無嘢可以匯出喎~畫吓嘢先?","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"畫布動作","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"塊畫布太大啦,縮細啲先啦?","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"如果重新整理頁面都係睇唔到,你可以","clearCanvasCaveat":"(注意:呢個動作會直接丟棄你嘅作品,並且無法復原)","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"畫布","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js b/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js new file mode 100644 index 0000000..4922c6b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3421],{931:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"以純文字貼上","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"將物件加入選取範圍","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以PNG格式儲存到剪貼板","copyAsSvg":"以SVG格式複製到剪貼板","copyText":"以文字格式複製至剪貼簿","bringForward":"上移一層","sendToBack":"移到最底層","bringToFront":"置於最頂層","sendBackward":"往後移一層","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"貼上樣式","stroke":"筆畫","background":"背景","fill":"填滿","strokeWidth":"筆跡寬度","strokeStyle":"筆畫樣式","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線","strokeStyle_dotted":"點線","sloppiness":"線條風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊緣","sharp":"尖銳","round":"平滑","arrowheads":"箭頭","arrowhead_none":"無","arrowhead_arrow":"箭頭","arrowhead_bar":"條狀箭頭","arrowhead_dot":"點箭頭","arrowhead_triangle":"三角形","fontSize":"字型大小","fontFamily":"字體集","addWatermark":"加上 \\"Made with Excalidraw\\" 浮水印","handDrawn":"手寫","normal":"一般","code":"代碼","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"實心","hachure":"斜線筆觸","zigzag":"Z字形","crossHatch":"交叉筆觸","thin":"細","bold":"粗","left":"左側","center":"置中","right":"右側","extraBold":"極粗","architect":"精確","artist":"藝術","cartoonist":"卡通","fileTitle":"檔案名稱","colorPicker":"色彩選擇工具","canvasColors":"使用於畫布","canvasBackground":"Canvas 背景","drawingCanvas":"繪圖 canvas","layers":"圖層","actions":"動作","language":"語言","liveCollaboration":"即時協作...","duplicateSelection":"複製","untitled":"無標題","name":"名稱","yourName":"你的名稱","madeWithExcalidraw":"以 Excalidraw 製作","group":"建立群組","ungroup":"取消群組","collaborators":"協作者","showGrid":"顯示格線","addToLibrary":"加入資料庫","removeFromLibrary":"從資料庫中移除","libraryLoadingMessage":"資料庫讀取中…","libraries":"瀏覽資料庫","loadingScene":"場景讀取中…","align":"對齊","alignTop":"對齊頂部","alignBottom":"對齊底部","alignLeft":"對齊左側","alignRight":"對齊右側","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"水平分布","distributeVertically":"垂直分布","flipHorizontal":"水平翻轉","flipVertical":"垂直翻轉","viewMode":"檢視模式","share":"共享","showStroke":"顯示線條檢色器","showBackground":"顯示背景檢色器","toggleTheme":"切換主題","personalLib":"個人資料庫","excalidrawLib":"Excalidraw 資料庫","decreaseFontSize":"縮小文字","increaseFontSize":"放大文字","unbindText":"取消綁定文字","bindText":"結合文字至容器","createContainerFromText":"將文字包於容器中","link":{"edit":"編輯連結","editEmbed":"編輯連結&嵌入","create":"建立連結","createEmbed":"建立連結&嵌入","label":"連結","labelEmbed":"連結&嵌入","empty":"未設定連結"},"lineEditor":{"edit":"編輯線條","exit":"結束線條編輯"},"elementLock":{"lock":"鎖定","unlock":"解鎖","lockAll":"全部鎖定","unlockAll":"全部解鎖"},"statusPublished":"已發布","sidebarLock":"側欄維持開啟","selectAllElementsInFrame":"選取框架內的所有元素","removeAllElementsFromFrame":"從框架內移除所有元素","eyeDropper":"從畫布中選取顏色"},"library":{"noItems":"尚未加入任何物件...","hint_emptyLibrary":"選取畫布上的物件以加入,或從下方的公開 repository 中安裝資料庫","hint_emptyPrivateLibrary":"選擇畫布上的物件以在此加入"},"buttons":{"clearReset":"重置 canvas","exportJSON":"匯出至檔案","exportImage":"匯出圖片","export":"儲存至...","copyToClipboard":"複製至剪貼簿","save":"儲存目前檔案","saveAs":"儲存為","load":"開啟","getShareableLink":"取得共享連結","close":"關閉","selectLanguage":"選擇語言","scrollBackToContent":"捲動回到內容","zoomIn":"放大","zoomOut":"縮小","resetZoom":"重設縮放","menu":"選單","done":"完成","edit":"編輯","undo":"復原","redo":"重做","resetLibrary":"重設資料庫","createNewRoom":"建立新協作會議室","fullScreen":"全螢幕","darkMode":"深色模式","lightMode":"淺色模式","zenMode":"專注模式","objectsSnapMode":"吸附至物件","exitZenMode":"離開專注模式","cancel":"取消","clear":"清除","remove":"刪除","embed":"切換嵌入","publishLibrary":"發布","submit":"送出","confirm":"確認","embeddableInteractionButton":"點擊以互動"},"alerts":{"clearReset":"這將會清除整個 canvas。你確定嗎?","couldNotCreateShareableLink":"無法建立共享連結。","couldNotCreateShareableLinkTooBig":"無法建立共享連結:場景太大","couldNotLoadInvalidFile":"無法讀取失效的檔案。","importBackendFailed":"後端讀取失敗。","cannotExportEmptyCanvas":"無法輸出空白的 canvas。","couldNotCopyToClipboard":"無法複製到剪貼簿","decryptFailed":"無法解密資料。","uploadedSecurly":"上傳已通過 end-to-end 加密,Excalidraw 伺服器和第三方無法皆讀取其內容。","loadSceneOverridePrompt":"讀取外部圖樣將取代目前的內容。是否要繼續?","collabStopOverridePrompt":"停止連線將覆蓋您先前於本機儲存的繪圖進度,是否確認?\\n\\n(如要保留原有的本機繪圖進度,直接關閉瀏覽器分頁即可。)","errorAddingToLibrary":"無法於此資料庫加入項目","errorRemovingFromLibrary":"無法由此資料庫移除項目","confirmAddLibrary":"這將會將 {{numShapes}} 個圖形加入你的資料庫,你確定嗎?","imageDoesNotContainScene":"此圖檔中未包含場景資料。輸出檔案時是否有包含場景資料?","cannotRestoreFromImage":"無法由此檔案回復場景。","invalidSceneUrl":"無法由提供的 URL 匯入場景。可能是發生異常,或未包含有效的 Excalidraw JSON 資料。","resetLibrary":"這會清除您的資料庫,是否確定?","removeItemsFromsLibrary":"從資料庫刪除 {{count}} 項?","invalidEncryptionKey":"加密鍵必須為22字元。即時協作已停用。","collabOfflineWarning":"沒有可用的網路連線。\\n變更無法儲存!"},"errors":{"unsupportedFileType":"不支援的檔案類型。","imageInsertError":"無法插入圖片。請稍後再試…","fileTooBig":"檔案過大。可接受的最大尺寸為 {{maxSize}} 。","svgImageInsertError":"無法插入 SVG 圖片。此 SVG 檔案有問題。","failedToFetchImage":"無法獲取圖片。","invalidSVGString":"無效的 SVG。","cannotResolveCollabServer":"無法連結至 collab 伺服器。請重新整理後再試一次。","importLibraryError":"無法載入資料庫","collabSaveFailed":"無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。","collabSaveFailed_sizeExceeded":"無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。","brave_measure_text_error":{"line1":"看起來您開啟了 Brave 瀏覽器的 Aggressively Block Fingerprinting 設定。","line2":"這可能造成您畫布中 文字元素 的異常。","line3":"我們強烈建議您關閉此設定。您可以依照 這些步驟 來進行。","line4":"若關閉此設定並未修復文字元素的顯示問題,請回報於我們 GitHub 上的 issue,或在 Discord 上告訴我們。"},"libraryElementTypeError":{"embeddable":"可嵌入元素無法加入資料庫","image":"即將支援加入圖片至資料庫!"}},"toolBar":{"selection":"選取","image":"插入圖片","rectangle":"長方形","diamond":"菱形","ellipse":"橢圓","arrow":"箭頭","line":"線條","freedraw":"繪圖","text":"文字","library":"資料庫","lock":"可連續使用選取的工具","penMode":"筆模式 - 避免觸摸","link":"為所選的形狀增加\\b/更新連結","eraser":"橡皮擦","frame":"框架工具","embeddable":"嵌入網站","laser":"雷射筆","hand":"手形(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"canvas 動作","selectedShapeActions":"選取圖形動作","shapes":"形狀"},"hints":{"canvasPanning":"若要移動畫布,請在拖曳時按住滑鼠滾輪或空白鍵,或使用手形工具","linearElement":"點擊以繪製多點曲線;或拖曳以繪製直線","freeDraw":"點擊並拖曳來繪圖,放開即結束","text":"提示:亦可使用選取工具在任何地方雙擊來加入文字","embeddable":"點擊並拖移以建立嵌入網站","text_selected":"雙擊滑鼠或按 Enter 以編輯文字","text_editing":"按跳脫鍵或 Ctrl 或 Cmd + Enter 以結束編輯","linearElementMulti":"按下 Escape 或 Enter 以結束繪製","lockAngle":"按住 SHIFT 可限制旋轉角度","resize":"縮放時按住 Shift 可保持原比例縮放;\\\\n按住 Alt 可由中心點進行縮放","resizeImage":"按住 SHIFT 可任意縮放,按住 ALT 可由中央縮放。","rotate":"旋轉時按住 Shift 可限制旋轉角度","lineEditor_info":"按住 Ctrl 或 Cmd 並雙擊或按住 Ctrl 或 Cmd + Enter 來編輯控制點","lineEditor_pointSelected":"按下 Delete 可移除錨點;Ctrl 或 Cmd + D 可複製;或可拖曳來移動","lineEditor_nothingSelected":"選擇要編輯的錨點(按住 SHIFT 可多選),\\n或按住 Alt 並點擊以增加新錨點。","placeImage":"點擊以放置圖片,或點擊並拖曳以手動調整其尺寸。","publishLibrary":"發布個人資料庫","bindTextToElement":"按下 Enter 以加入文字。","deepBoxSelect":"按住 Ctrl 或 Cmd 以深度選取並避免拖曳","eraserRevert":"按住 Alt 以反選取已標記待刪除的元素","firefox_clipboard_write":"此功能有機會透過將 \\"dom.events.asyncClipboard.clipboardItem\\" 設定為 \\"true\\" 來開啟。\\n若要變更 Firefox 瀏覽器的此設定值,請至 \\"about:config\\" 頁面。","disableSnapping":"按住 Ctrl 或 Cmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"畫布可能過大","canvasTooBigTip":"提示:可嘗試將最遠的元素移動至較集中的位置"},"errorSplash":{"headingMain":"發生錯誤,嘗試","clearCanvasMessage":"若重新載入仍無法解決問題,嘗試","clearCanvasCaveat":"此動作將造成目前的作品被移除。","trackedToSentry":"此錯誤與其識別碼{{eventId}}將由系統記錄。","openIssueMessage":"我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的請將下列資訊複製貼上至 GitHub issue 中。","sceneContent":"作品內容:"},"roomDialog":{"desc_intro":"你可以邀請其他人一起協作目前的作品。","desc_privacy":"連線使用 end-to-end 加密故無須擔心作品的安全性。即使是我們的伺服器也無法取得其內容。","button_startSession":"開始連線","button_stopSession":"停止連線","desc_inProgressIntro":"即時協作連線正在進行中。","desc_shareLink":"將此連結分享給欲協作的對象:","desc_exitSession":"停止連線將中斷你與協作會議室的連結,但你仍可於本機編輯此作品。意指停止連線後你的編輯不會被先前共同協作的人看見,且他們可繼續共同協作另一個版本。","shareTitle":"加入 Excalidraw 上的即時協作會議室"},"errorDialog":{"title":"錯誤"},"exportDialog":{"disk_title":"儲存至硬碟","disk_details":"將場景匯出為可供匯入之檔案","disk_button":"儲存至檔案","link_title":"可共享連結","link_details":"匯出為唯讀連結","link_button":"匯出為連結","excalidrawplus_description":"將此場景儲存至你的 Excalidraw+ 工作區","excalidrawplus_button":"輸出","excalidrawplus_exportError":"目前無法輸出至 Excalidraw+"},"helpDialog":{"blog":"閱讀部落格","click":"點擊","deepSelect":"深度選取","deepBoxSelect":"在容器內深度選取並避免拖曳","curvedArrow":"曲箭頭","curvedLine":"曲線","documentation":"文件","doubleClick":"雙擊","drag":"拖曳","editor":"編輯器","editLineArrowPoints":"編輯線/箭頭控制點","editText":"編輯文字/增加標籤","github":"發現異常?回報問題","howto":"參照我們的說明","or":"或","preventBinding":"避免箭號連結","tools":"工具","shortcuts":"鍵盤快速鍵","textFinish":"完成編輯(文字編輯器)","textNewLine":"換行(文字編輯器)","title":"說明","view":"檢視","zoomToFit":"放大至填滿畫面","zoomToSelection":"縮放至選取區","toggleElementLock":"鎖定/解鎖已選的項目","movePageUpDown":"向上/下移動頁面","movePageLeftRight":"向左/右移動頁面"},"clearCanvasDialog":{"title":"清除畫布"},"publishDialog":{"title":"發布資料庫","itemName":"項目名稱","authorName":"作者名稱","githubUsername":"GitHub 帳號","twitterUsername":"Twitter 帳號","libraryName":"資料庫名稱","libraryDesc":"資料庫說明","website":"網站","placeholder":{"authorName":"您的名稱或帳號","libraryName":"您的資料庫名稱","libraryDesc":"提供您的資料庫說明以利他人理解其用途","githubHandle":"Github handle(選填),填寫後您可編輯已送出待審查的資料庫","twitterHandle":"Twitter 帳號(選填),填寫後若我們在 Twitter 推廣時可提及您","website":"您個人網站或其他網站的連結(選填)"},"errors":{"required":"必填","website":"請輸入有效的 URL"},"noteDescription":"送出您的資料庫後將被包含於公開資料庫 repository以利他人在其繪圖中使用。","noteGuidelines":"資料庫需先經人工審查。請閱讀說明文件再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。","noteLicense":"送出即代表您同意此資料庫將發布時使用 MIT 授權,簡單來說是指任何人都能不受限制的使用。","noteItems":"每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目:","atleastOneLibItem":"請選擇至少一項資料庫項目","republishWarning":"注意:部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。"},"publishSuccessDialog":{"title":"資料庫已送出","content":"感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態在此"},"confirmDialog":{"resetLibrary":"重設資料庫","removeItemsFromLib":"從資料庫移除所選的項目"},"imageExportDialog":{"header":"匯出圖片","label":{"withBackground":"背景","onlySelected":"僅選取物件","darkMode":"深色模式","embedScene":"嵌入場景","scale":"縮放比例","padding":"內間距"},"tooltip":{"embedScene":"用於回復場景的場景資料會被包含在輸出的 PNG/SVG 檔案中。\\n會增加輸出的檔案大小。"},"title":{"exportToPng":"輸出成 PNG","exportToSvg":"輸出成 SVG","copyPngToClipboard":"複製 PNG 至剪貼簿"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"複製至剪貼簿"}},"encrypted":{"tooltip":"你的作品已使用 end-to-end 方式加密,Excalidraw 的伺服器也無法取得其內容。","link":"Excalidraw 端到端加密的相關部落格文章"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"場景","selected":"已選","storage":"儲存","title":"詳細統計","total":"合計","version":"版本","versionCopy":"點擊複製","versionNotAvailable":"無法取得版本","width":"寬度"},"toast":{"addedToLibrary":"加入資料庫","copyStyles":"已複製樣式","copyToClipboard":"複製至剪貼簿。","copyToClipboardAsPng":"以 PNG 格式將 {{exportSelection}} 複製至剪貼簿\\n({{exportColorScheme}})","fileSaved":"已儲存檔案。","fileSavedToFilename":"儲存為 {filename}","canvas":"畫布","selection":"已選項目","pasteAsSingleElement":"使用 {{shortcut}} 以做為單一物件貼上,\\n或貼上至現有的文字編輯器","unableToEmbed":"目前不允許嵌入此網址。您可至 GitHub 提出 issue 以要求將此網址加入合格名單。","unrecognizedLinkFormat":"您嵌入的連結格式不符。請嘗試貼入原網站所提供的「嵌入」字串。"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"紅","pink":"粉紅","grape":"深紫","violet":"藍紫","gray":"灰","blue":"藍","cyan":"青","teal":"藍綠","green":"綠","yellow":"黃","orange":"橘","bronze":"銅"},"welcomeScreen":{"app":{"center_heading":"所有資料皆已在瀏覽器中儲存於本機","center_heading_plus":"您是否是要前往 Excalidraw+ ?","menuHint":"輸出、偏好設定、語言..."},"defaults":{"menuHint":"輸出、偏好設定及其他...","center_heading":"圖表。製作。超簡單。","toolbarHint":"選個工具開始畫圖吧!","helpHint":"快速鍵與說明"}},"colorPicker":{"mostUsedCustomColors":"最常使用的自訂顏色","colors":"顏色","shades":"漸變色","hexCode":"Hex 碼","noShades":"沒有此顏色的漸變色"},"overwriteConfirm":{"action":{"exportToImage":{"title":"匯出為圖片","button":"匯出為圖片","description":"將場景匯出為可供匯入的圖片檔案"},"saveToDisk":{"title":"儲存至硬碟","button":"儲存至硬碟","description":"將場景匯出為可供匯入的檔案"},"excalidrawPlus":{"title":"Excalidraw+","button":"匯出至 Excalidraw+","description":"將此場景儲存至您的 Excalidraw+ 工作區"}},"modal":{"loadFromFile":{"title":"從檔案載入","button":"從檔案載入","description":"從檔案載入將取代您目前的內容

可先使用下方的選項備份您的繪圖。"},"shareableLink":{"title":"從連結載入","button":"取代我的內容","description":"載入外部繪圖將取代您目前的內容

可先使用下方的選項備份您的繪圖。"}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js new file mode 100644 index 0000000..e83c037 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js @@ -0,0 +1,2 @@ +/*! For license information please see vendor-677e88ca78c86bddf13d.js.LICENSE.txt */ +(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4736],{5030:function(t,e){"use strict";e.K=void 0;e.K=function(t,e){void 0===e&&(e={listUnicodeChar:""}),(e=e||{}).listUnicodeChar=!!e.hasOwnProperty("listUnicodeChar")&&e.listUnicodeChar,e.stripListLeaders=!e.hasOwnProperty("stripListLeaders")||e.stripListLeaders,e.gfm=!e.hasOwnProperty("gfm")||e.gfm,e.useImgAltText=!e.hasOwnProperty("useImgAltText")||e.useImgAltText,e.preserveLinks=!!e.hasOwnProperty("preserveLinks")&&e.preserveLinks;var n=t||"";n=n.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*$/gm,"");try{e.stripListLeaders&&(n=e.listUnicodeChar?n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,e.listUnicodeChar+" $1"):n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,"$1")),e.gfm&&(n=n.replace(/\n={2,}/g,"\n").replace(/~{3}.*\n/g,"").replace(/~~/g,"").replace(/`{3}.*\n/g,"")),e.preserveLinks&&(n=n.replace(/\[(.*?)\][\[\(](.*?)[\]\)]/g,"$1 ($2)")),n=n.replace(/<[^>]*>/g,"").replace(/^[=\-]{2,}\s*$/g,"").replace(/\[\^.+?\](\: .*?$)?/g,"").replace(/\s{0,2}\[.*?\]: .*?$/g,"").replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g,e.useImgAltText?"$1":"").replace(/\[(.*?)\][\[\(].*?[\]\)]/g,"$1").replace(/^\s{0,3}>\s?/g,"").replace(/(^|\n)\s{0,3}>\s?/g,"\n\n").replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g,"").replace(/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/gm,"$1$2$3").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/(`{3,})(.*?)\1/gm,"$2").replace(/`(.+?)`/g,"$1").replace(/\n{2,}/g,"\n\n")}catch(e){return console.error(e),t}return n}},7122:function(t,e,n){var i;i=function(t){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(e,n){e.exports=t},function(t,e,n){"use strict";var i=n(0).FDLayoutConstants;function r(){}for(var a in i)r[a]=i[a];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=r},function(t,e,n){"use strict";var i=n(0).FDLayoutEdge;function r(t,e,n){i.call(this,t,e,n)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).LGraph;function r(t,e,n){i.call(this,t,e,n)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).LGraphManager;function r(t){i.call(this,t)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).FDLayoutNode,r=n(0).IMath;function a(t,e,n,r){i.call(this,t,e,n,r)}for(var o in a.prototype=Object.create(i.prototype),i)a[o]=i[o];a.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},a.prototype.propogateDisplacementToChildren=function(t,e){for(var n,i=this.getChild().getNodes(),r=0;r0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter((function(t){return e.has(t)}));this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},m.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%u.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter((function(e){return t.has(e)}));this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,i=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,i),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},m.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},n=0;n1)for(s=0;si&&(i=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new f(l.WORLD_CENTER_X-o.x/2,l.WORLD_CENTER_Y-o.y/2))},m.radialLayout=function(t,e,n){var i=Math.max(this.maxDiagonalInTree(t),c.DEFAULT_RADIAL_SEPARATION);m.branchRadialLayout(e,null,0,359,0,i);var r=b.calculateBounds(t),a=new w;a.setDeviceOrgX(r.getMinX()),a.setDeviceOrgY(r.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var w=b[0];b.splice(0,1);var y=l.indexOf(w);y>=0&&l.splice(y,1),g--,h--}f=null!=e?(l.indexOf(b[0])+1)%g:0;for(var v=Math.abs(i-n)/h,x=f;d!=h;x=++x%g){var k=l[x].getOtherEnd(t);if(k!=e){var _=(n+d*v)%360,A=(_+v)%360;m.branchRadialLayout(k,t,_,A,r+a,a),d++}}},m.maxDiagonalInTree=function(t){for(var e=g.MIN_VALUE,n=0;ne&&(e=i)}return e},m.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},m.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var n=[],i=this.graphManager.getAllNodes(),r=0;r1){var i="DummyCompound_"+n;t.memberGroups[i]=e[n];var r=e[n][0].getParent(),a=new o(t.graphManager);a.id=i,a.paddingLeft=r.paddingLeft||0,a.paddingRight=r.paddingRight||0,a.paddingBottom=r.paddingBottom||0,a.paddingTop=r.paddingTop||0,t.idToDummyNode[i]=a;var s=t.getGraphManager().add(t.newGraph(),a),c=r.getChild();c.add(a);for(var u=0;u=0;t--){var e=this.compoundOrder[t],n=e.id,i=e.paddingLeft,r=e.paddingTop;this.adjustLocations(this.tiledMemberPack[n],e.rect.x,e.rect.y,i,r)}},m.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach((function(n){var i=t.idToDummyNode[n],r=i.paddingLeft,a=i.paddingTop;t.adjustLocations(e[n],i.rect.x,i.rect.y,r,a)}))},m.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var n=t.getChild();if(null==n)return this.toBeTiled[e]=!1,!1;for(var i=n.getNodes(),r=0;r0)return this.toBeTiled[e]=!1,!1;if(null!=a.getChild()){if(!this.getToBeTiled(a))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[a.id]=!1}return this.toBeTiled[e]=!0,!0},m.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),n=0,i=0;ic&&(c=l.rect.height)}n+=c+t.verticalPadding}},m.prototype.tileCompoundMembers=function(t,e){var n=this;this.tiledMemberPack=[],Object.keys(t).forEach((function(i){var r=e[i];n.tiledMemberPack[i]=n.tileNodes(t[i],r.paddingLeft+r.paddingRight),r.rect.width=n.tiledMemberPack[i].width,r.rect.height=n.tiledMemberPack[i].height}))},m.prototype.tileNodes=function(t,e){var n={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:c.TILING_PADDING_VERTICAL,horizontalPadding:c.TILING_PADDING_HORIZONTAL};t.sort((function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height0&&(a+=t.horizontalPadding),t.rowWidth[n]=a,t.width0&&(o+=t.verticalPadding);var s=0;o>t.rowHeight[n]&&(s=t.rowHeight[n],t.rowHeight[n]=o,s=t.rowHeight[n]-s),t.height+=s,t.rows[n].push(e)},m.prototype.getShortestRowIndex=function(t){for(var e=-1,n=Number.MAX_VALUE,i=0;in&&(e=i,n=t.rowWidth[i]);return e},m.prototype.canAddHorizontal=function(t,e,n){var i=this.getShortestRowIndex(t);if(i<0)return!0;var r=t.rowWidth[i];if(r+t.horizontalPadding+e<=t.width)return!0;var a,o,s=0;return t.rowHeight[i]0&&(s=n+t.verticalPadding-t.rowHeight[i]),a=t.width-r>=e+t.horizontalPadding?(t.height+s)/(r+e+t.horizontalPadding):(t.height+s)/t.width,s=n+t.verticalPadding,(o=t.widtha&&e!=n){i.splice(-1,1),t.rows[n].push(r),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[n]=t.rowWidth[n]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var o=Number.MIN_VALUE,s=0;so&&(o=i[s].height);e>0&&(o+=t.verticalPadding);var c=t.rowHeight[e]+t.rowHeight[n];t.rowHeight[e]=o,t.rowHeight[n]0)for(var l=r;l<=a;l++)c[0]+=this.grid[l][o-1].length+this.grid[l][o].length-1;if(a0)for(l=o;l<=s;l++)c[3]+=this.grid[r-1][l].length+this.grid[r][l].length-1;for(var h,f,d=g.MAX_VALUE,p=0;p0&&(o=n.getGraphManager().add(n.newGraph(),a),this.processChildrenList(o,h,n))}},h.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",h)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=i(n(7122))},87:function(t,e,n){t.exports=function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);ne?1:0},V=function(t,e){return-1*X(t,e)},Q=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments,n=1;n1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}var l=new RegExp("^"+Y+"$").exec(t);if(l){if((n=parseInt(l[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(i=parseFloat(l[2]))<0||i>100)return;if(i/=100,(r=parseFloat(l[3]))<0||r>100)return;if(r/=100,void 0!==(a=l[4])&&((a=parseFloat(a))<0||a>1))return;if(0===i)o=s=c=Math.round(255*r);else{var h=r<.5?r*(1+i):r+i-r*i,f=2*r-h;o=Math.round(255*u(f,h,n+1/3)),s=Math.round(255*u(f,h,n)),c=Math.round(255*u(f,h,n-1/3))}e=[o,s,c,a]}return e},et=function(t){var e,n=new RegExp("^"+U+"$").exec(t);if(n){e=[];for(var i=[],r=1;r<=3;r++){var a=n[r];if("%"===a[a.length-1]&&(i[r]=!0),a=parseFloat(a),i[r]&&(a=a/100*255),a<0||a>255)return;e.push(Math.floor(a))}var o=i[1]||i[2]||i[3],s=i[1]&&i[2]&&i[3];if(o&&!s)return;var c=n[4];if(void 0!==c){if((c=parseFloat(c))<0||c>1)return;e.push(c)}}return e},nt=function(t){return rt[t.toLowerCase()]},it=function(t){return(x(t)?t:null)||nt(t)||J(t)||et(t)||tt(t)},rt={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},at=function(t){for(var e=t.map,n=t.keys,i=n.length,r=0;r=e||n<0||h&&t-u>=a}function w(){var t=gt();if(b(t))return m(t);s=setTimeout(w,p(t))}function m(t){return s=void 0,f&&i?d(t):(i=r=void 0,o)}function y(){void 0!==s&&clearTimeout(s),u=0,i=c=r=s=void 0}function v(){return void 0===s?o:m(gt())}function x(){var t=gt(),n=b(t);if(i=arguments,r=this,c=t,n){if(void 0===s)return g(c);if(h)return clearTimeout(s),s=setTimeout(w,e),d(c)}return void 0===s&&(s=setTimeout(w,e)),o}return e=Zt(e)||0,ct(n)&&(l=!!n.leading,a=(h="maxWait"in n)?Kt(Zt(n.maxWait)||0,e):a,f="trailing"in n?!!n.trailing:f),x.cancel=y,x.flush=v,x}var Qt=Vt,Jt=f?f.performance:null,te=Jt&&Jt.now?function(){return Jt.now()}:function(){return Date.now()},ee=function(){if(f){if(f.requestAnimationFrame)return function(t){f.requestAnimationFrame(t)};if(f.mozRequestAnimationFrame)return function(t){f.mozRequestAnimationFrame(t)};if(f.webkitRequestAnimationFrame)return function(t){f.webkitRequestAnimationFrame(t)};if(f.msRequestAnimationFrame)return function(t){f.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout((function(){t(te())}),1e3/60)}}(),ne=function(t){return ee(t)},ie=te,re=9261,ae=65599,oe=5381,se=function(t){for(var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:re;!(e=t.next()).done;)n=n*ae+e.value|0;return n},ce=function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:re)*ae+t|0},ue=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe;return(e<<5)+e+t|0},le=function(t,e){return 2097152*t+e},he=function(t){return 2097152*t[0]+t[1]},fe=function(t,e){return[ce(t[0],e[0]),ue(t[1],e[1])]},de=function(t,e){var n={value:0,done:!1},i=0,r=t.length;return se({next:function(){return i=0&&(t[i]!==e||(t.splice(i,1),!n));i--);},Be=function(t){t.splice(0,t.length)},Fe=function(t,e){for(var n=0;n2&&void 0!==arguments[2])||arguments[2];if(void 0!==t&&void 0!==e&&M(t)){var i=e.group;if(null==i&&(i=e.data&&null!=e.data.source&&null!=e.data.target?"edges":"nodes"),"nodes"===i||"edges"===i){this.length=1,this[0]=this;var r=this._private={cy:t,single:!0,data:e.data||{},position:e.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!e.selected,selectable:void 0===e.selectable||!!e.selectable,locked:!!e.locked,grabbed:!1,grabbable:void 0===e.grabbable||!!e.grabbable,pannable:void 0===e.pannable?"edges"===i:!!e.pannable,active:!1,classes:new Ue,animation:{current:[],queue:[]},rscratch:{},scratch:e.scratch||{},edges:[],children:[],parent:e.parent&&e.parent.isNode()?e.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==r.position.x&&(r.position.x=0),null==r.position.y&&(r.position.y=0),e.renderedPosition){var a=e.renderedPosition,o=t.pan(),s=t.zoom();r.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}var c=[];x(e.classes)?c=e.classes:y(e.classes)&&(c=e.classes.split(/\s+/));for(var u=0,l=c.length;ue?1:0},u=function(t,e,r,a,o){var s;if(null==r&&(r=0),null==o&&(o=n),r<0)throw new Error("lo must be non-negative");for(null==a&&(a=t.length);rn;0<=n?e++:e--)u.push(e);return u}.apply(this).reverse()).length;ap;0<=p?++f:--f)b.push(a(t,i));return b},g=function(t,e,i,r){var a,o,s;for(null==r&&(r=n),a=t[i];i>e&&r(a,o=t[s=i-1>>1])<0;)t[i]=o,i=s;return t[i]=a},p=function(t,e,i){var r,a,o,s,c;for(null==i&&(i=n),a=t.length,c=e,o=t[e],r=2*e+1;r0;){var _=w.pop(),A=p(_),E=_.id();if(h[E]=A,A!==1/0)for(var T=_.neighborhood().intersect(d),C=0;C0)for(n.unshift(e);l[r];){var a=l[r];n.unshift(a.edge),n.unshift(a.node),r=(i=a.node).id()}return o.spawn(n)}}}},Qe={kruskal:function(t){t=t||function(t){return 1};for(var e=this.byGroup(),n=e.nodes,i=e.edges,r=n.length,a=new Array(r),o=n,s=function(t){for(var e=0;e0;){if(v(),k++,u===h){for(var _=[],A=r,E=h,T=m[E];_.unshift(A),null!=T&&_.unshift(T),null!=(A=w[E]);)T=m[E=A.id()];return{found:!0,distance:f[u],path:this.spawn(_),steps:k}}g[u]=!0;for(var C=c._private.edges,S=0;SC&&(d[T]=C,w[T]=E,m[T]=x),!r){var S=E*u+A;!r&&d[S]>C&&(d[S]=C,w[S]=A,m[S]=x)}}}for(var I=0;I1&&void 0!==arguments[1]?arguments[1]:a,i=[],r=m(t);;){if(null==r)return e.spawn();var o=w(r),c=o.edge,u=o.pred;if(i.unshift(r[0]),r.same(n)&&i.length>0)break;null!=c&&i.unshift(c),r=u}return s.spawn(i)},k=0;k=0;u--){var l=c[u],h=l[1],f=l[2];(e[h]===o&&e[f]===s||e[h]===s&&e[f]===o)&&c.splice(u,1)}for(var d=0;di;){var r=Math.floor(Math.random()*e.length);e=sn(r,t,e),n--}return e},un={kargerStein:function(){var t=this,e=this.byGroup(),n=e.nodes,i=e.edges;i.unmergeBy((function(t){return t.isLoop()}));var r=n.length,a=i.length,o=Math.ceil(Math.pow(Math.log(r)/Math.LN2,2)),s=Math.floor(r/on);if(!(r<2)){for(var c=[],u=0;u1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=1/0,r=e;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=-1/0,r=e;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=0,r=0,a=e;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&t.splice(0,e)):t=t.slice(e,n);for(var a=0,o=t.length-1;o>=0;o--){var s=t[o];r?isFinite(s)||(t[o]=-1/0,a++):t.splice(o,1)}i&&t.sort((function(t,e){return t-e}));var c=t.length,u=Math.floor(c/2);return c%2!=0?t[u+1+a]:(t[u-1+a]+t[u+a])/2},mn=function(t){return Math.PI*t/180},yn=function(t,e){return Math.atan2(e,t)-Math.PI/2},vn=Math.log2||function(t){return Math.log(t)/Math.log(2)},xn=function(t){return t>0?1:t<0?-1:0},kn=function(t,e){return Math.sqrt(_n(t,e))},_n=function(t,e){var n=e.x-t.x,i=e.y-t.y;return n*n+i*i},An=function(t){for(var e=t.length,n=0,i=0;i=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(null!=t.w&&null!=t.h&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},Mn=function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},Dn=function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},On=function(t,e){t.x1=Math.min(t.x1,e.x1),t.x2=Math.max(t.x2,e.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,e.y1),t.y2=Math.max(t.y2,e.y2),t.h=t.y2-t.y1},Ln=function(t,e,n){t.x1=Math.min(t.x1,e),t.x2=Math.max(t.x2,e),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,n),t.y2=Math.max(t.y2,n),t.h=t.y2-t.y1},Nn=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.x1-=e,t.x2+=e,t.y1-=e,t.y2+=e,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},Pn=function(t){var e,n,i,r,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===a.length)e=n=i=r=a[0];else if(2===a.length)e=i=a[0],r=n=a[1];else if(4===a.length){var s=o(a,4);e=s[0],n=s[1],i=s[2],r=s[3]}return t.x1-=r,t.x2+=n,t.y1-=e,t.y2+=i,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},Bn=function(t,e){t.x1=e.x1,t.y1=e.y1,t.x2=e.x2,t.y2=e.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},Fn=function(t,e){return!(t.x1>e.x2||e.x1>t.x2||t.x2e.y2||e.y1>t.y2)},Rn=function(t,e,n){return t.x1<=e&&e<=t.x2&&t.y1<=n&&n<=t.y2},jn=function(t,e){return Rn(t,e.x,e.y)},$n=function(t,e){return Rn(t,e.x1,e.y1)&&Rn(t,e.x2,e.y2)},zn=function(t,e,n,i,r,a,o){var s,c=li(r,a),u=r/2,l=a/2,h=i-l-o;if((s=ii(t,e,n,i,n-u+c-o,h,n+u-c+o,h,!1)).length>0)return s;var f=n+u+o;if((s=ii(t,e,n,i,f,i-l+c-o,f,i+l-c+o,!1)).length>0)return s;var d=i+l+o;if((s=ii(t,e,n,i,n-u+c-o,d,n+u-c+o,d,!1)).length>0)return s;var g,p=n-u-o;if((s=ii(t,e,n,i,p,i-l+c-o,p,i+l-c+o,!1)).length>0)return s;var b=n-u+c,w=i-l+c;if((g=ei(t,e,n,i,b,w,c+o)).length>0&&g[0]<=b&&g[1]<=w)return[g[0],g[1]];var m=n+u-c,y=i-l+c;if((g=ei(t,e,n,i,m,y,c+o)).length>0&&g[0]>=m&&g[1]<=y)return[g[0],g[1]];var v=n+u-c,x=i+l-c;if((g=ei(t,e,n,i,v,x,c+o)).length>0&&g[0]>=v&&g[1]>=x)return[g[0],g[1]];var k=n-u+c,_=i+l-c;return(g=ei(t,e,n,i,k,_,c+o)).length>0&&g[0]<=k&&g[1]>=_?[g[0],g[1]]:[]},qn=function(t,e,n,i,r,a,o){var s=o,c=Math.min(n,r),u=Math.max(n,r),l=Math.min(i,a),h=Math.max(i,a);return c-s<=t&&t<=u+s&&l-s<=e&&e<=h+s},Hn=function(t,e,n,i,r,a,o,s,c){var u={x1:Math.min(n,o,r)-c,x2:Math.max(n,o,r)+c,y1:Math.min(i,s,a)-c,y2:Math.max(i,s,a)+c};return!(tu.x2||eu.y2)},Un=function(t,e,n,i){var r=e*e-4*t*(n-=i);if(r<0)return[];var a=Math.sqrt(r),o=2*t;return[(-e+a)/o,(-e-a)/o]},Gn=function(t,e,n,i,r){var a,o,s,c,u,l,h,f;return 0===t&&(t=1e-5),s=-27*(i/=t)+(e/=t)*(9*(n/=t)-e*e*2),a=(o=(3*n-e*e)/9)*o*o+(s/=54)*s,r[1]=0,h=e/3,a>0?(u=(u=s+Math.sqrt(a))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),l=(l=s-Math.sqrt(a))<0?-Math.pow(-l,1/3):Math.pow(l,1/3),r[0]=-h+u+l,h+=(u+l)/2,r[4]=r[2]=-h,h=Math.sqrt(3)*(-l+u)/2,r[3]=h,void(r[5]=-h)):(r[5]=r[3]=0,0===a?(f=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),r[0]=2*f-h,void(r[4]=r[2]=-(f+h))):(c=(o=-o)*o*o,c=Math.acos(s/Math.sqrt(c)),f=2*Math.sqrt(o),r[0]=-h+f*Math.cos(c/3),r[2]=-h+f*Math.cos((c+2*Math.PI)/3),void(r[4]=-h+f*Math.cos((c+4*Math.PI)/3))))},Yn=function(t,e,n,i,r,a,o,s){var c=[];Gn(1*n*n-4*n*r+2*n*o+4*r*r-4*r*o+o*o+i*i-4*i*a+2*i*s+4*a*a-4*a*s+s*s,9*n*r-3*n*n-3*n*o-6*r*r+3*r*o+9*i*a-3*i*i-3*i*s-6*a*a+3*a*s,3*n*n-6*n*r+n*o-n*t+2*r*r+2*r*t-o*t+3*i*i-6*i*a+i*s-i*e+2*a*a+2*a*e-s*e,1*n*r-n*n+n*t-r*t+i*a-i*i+i*e-a*e,c);for(var u=1e-7,l=[],h=0;h<6;h+=2)Math.abs(c[h+1])=0&&c[h]<=1&&l.push(c[h]);l.push(1),l.push(0);for(var f,d,g,p=-1,b=0;b=0?gc?(t-r)*(t-r)+(e-a)*(e-a):u-h},Wn=function(t,e,n){for(var i,r,a,o,s=0,c=0;c=t&&t>=a||i<=t&&t<=a))continue;(t-i)/(a-i)*(o-r)+r>e&&s++}return s%2!=0},Kn=function(t,e,n,i,r,a,o,s,c){var u,l=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var h,f=Math.cos(-u),d=Math.sin(-u),g=0;g0){var p=Qn(l,-c);h=Vn(p)}else h=l;return Wn(t,e,h)},Xn=function(t,e,n,i,r,a,o){for(var s=new Array(n.length),c=a/2,u=o/2,l=hi(a,o),h=l*l,f=0;f=0&&g<=1&&b.push(g),p>=0&&p<=1&&b.push(p),0===b.length)return[];var w=b[0]*s[0]+t,m=b[0]*s[1]+e;return b.length>1?b[0]==b[1]?[w,m]:[w,m,b[1]*s[0]+t,b[1]*s[1]+e]:[w,m]},ni=function(t,e,n){return e<=t&&t<=n||n<=t&&t<=e?t:t<=e&&e<=n||n<=e&&e<=t?e:n},ii=function(t,e,n,i,r,a,o,s,c){var u=t-r,l=n-t,h=o-r,f=e-a,d=i-e,g=s-a,p=h*f-g*u,b=l*f-d*u,w=g*l-h*d;if(0!==w){var m=p/w,y=b/w,v=.001,x=0-v,k=1+v;return x<=m&&m<=k&&x<=y&&y<=k||c?[t+m*l,e+m*d]:[]}return 0===p||0===b?ni(t,n,o)===o?[o,s]:ni(t,n,r)===r?[r,a]:ni(r,o,n)===n?[n,i]:[]:[]},ri=function(t,e,n,i,r,a,o,s){var c,u,l,h,f,d,g=[],p=new Array(n.length),b=!0;if(null==a&&(b=!1),b){for(var w=0;w0){var m=Qn(p,-s);u=Vn(m)}else u=p}else u=n;for(var y=0;y2){for(var S=[u[0],u[1]],I=Math.pow(S[0]-t,2)+Math.pow(S[1]-e,2),M=1;Mu&&(u=e)},get:function(t){return c[t]}},h=0;h0?m.edgesTo(w)[0]:w.edgesTo(m)[0];var v=i(y);w=w.id(),h[w]>h[p]+v&&(h[w]=h[p]+v,f.nodes.indexOf(w)<0?f.push(w):f.updateItem(w),u[w]=0,c[w]=[]),h[w]==h[p]+v&&(u[w]=u[w]+u[p],c[w].push(p))}else for(var x=0;x0;){for(var E=n.pop(),T=0;T0&&o.push(n[s]);0!==o.length&&r.push(i.collection(o))}return r},Li=function(t,e){for(var n=0;n5&&void 0!==arguments[5]?arguments[5]:Fi,o=i,s=0;s=2?Hi(t,e,n,0,$i,zi):Hi(t,e,n,0,ji)},squaredEuclidean:function(t,e,n){return Hi(t,e,n,0,$i)},manhattan:function(t,e,n){return Hi(t,e,n,0,ji)},max:function(t,e,n){return Hi(t,e,n,-1/0,qi)}};function Gi(t,e,n,i,r,a){var o;return o=v(t)?t:Ui[t]||Ui.euclidean,0===e&&v(t)?o(r,a):o(e,n,i,r,a)}Ui["squared-euclidean"]=Ui.squaredEuclidean,Ui.squaredeuclidean=Ui.squaredEuclidean;var Yi=Ne({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),Zi=function(t){return Yi(t)},Wi=function(t,e,n,i,r){var a="kMedoids"!==r?function(t){return n[t]}:function(t){return i[t](n)},o=function(t){return i[t](e)},s=n,c=e;return Gi(t,i.length,a,o,s,c)},Ki=function(t,e,n){for(var i=n.length,r=new Array(i),a=new Array(i),o=new Array(e),s=null,c=0;cn)return!1;return!0},tr=function(t,e,n){for(var i=0;ir&&(r=e[c][u],a=u);o[a].push(t[c])}for(var l=0;l=r.threshold||"dendrogram"===r.mode&&1===t.length)return!1;var d,g=e[o],p=e[i[o]];d="dendrogram"===r.mode?{left:g,right:p,key:g.key}:{value:g.value.concat(p.value),key:g.key},t[g.index]=d,t.splice(p.index,1),e[g.key]=d;for(var b=0;bn[p.key][w.key]&&(a=n[p.key][w.key])):"max"===r.linkage?(a=n[g.key][w.key],n[g.key][w.key]0&&i.push(r);return i},_r=function(t,e,n){for(var i=[],r=0;ro&&(a=c,o=e[r*t+c])}a>0&&i.push(a)}for(var u=0;uc&&(s=u,c=l)}n[r]=a[s]}return i=_r(t,e,n)},Er=function(t){for(var e,n,i,r,a,o,s=this.cy(),c=this.nodes(),u=yr(t),l={},h=0;h=T?(C=T,T=I,S=M):I>C&&(C=I);for(var D=0;D0?1:0;_[k%u.minIterations*e+F]=R,B+=R}if(B>0&&(k>=u.minIterations-1||k==u.maxIterations-1)){for(var j=0,$=0;$1||o>1)&&(u=!0),l[e]=[],t.outgoers().forEach((function(t){t.isEdge()&&l[e].push(t.id())}))}else h[e]=[void 0,t.target().id()]})):c.forEach((function(t){var e=t.id();t.isNode()?(t.degree(!0)%2&&(n?i?u=!0:i=e:n=e),l[e]=[],t.connectedEdges().forEach((function(t){return l[e].push(t.id())}))):h[e]=[t.source().id(),t.target().id()]}));var f={found:!1,trail:void 0};if(u)return f;if(i&&n)if(s){if(r&&i!=r)return f;r=i}else{if(r&&i!=r&&n!=r)return f;r||(r=i)}else r||(r=c[0].id());var d=function(t){for(var e,n,i,r=t,a=[t];l[r].length;)e=l[r].shift(),n=h[e][0],r!=(i=h[e][1])?(l[i]=l[i].filter((function(t){return t!=e})),r=i):s||r==n||(l[n]=l[n].filter((function(t){return t!=e})),r=n),a.unshift(e),a.unshift(r);return a},g=[],p=[];for(p=d(r);1!=p.length;)0==l[p[0]].length?(g.unshift(c.getElementById(p.shift())),g.unshift(c.getElementById(p.shift()))):p=d(p.shift()).concat(p);for(var b in g.unshift(c.getElementById(p.shift())),l)if(l[b].length)return f;return f.found=!0,f.trail=this.spawn(g,!0),f}},Ir=function(){var t=this,e={},n=0,i=0,r=[],a=[],o={},s=function(n,i){for(var o=a.length-1,s=[],c=t.spawn();a[o].x!=n||a[o].y!=i;)s.push(a.pop().edge),o--;s.push(a.pop().edge),s.forEach((function(n){var i=n.connectedNodes().intersection(t);c.merge(n),i.forEach((function(n){var i=n.id(),r=n.connectedEdges().intersection(t);c.merge(n),e[i].cutVertex?c.merge(r.filter((function(t){return t.isLoop()}))):c.merge(r)}))})),r.push(c)},c=function c(u,l,h){u===h&&(i+=1),e[l]={id:n,low:n++,cutVertex:!1};var f,d,g,p,b=t.getElementById(l).connectedEdges().intersection(t);0===b.size()?r.push(t.spawn(t.getElementById(l))):b.forEach((function(t){f=t.source().id(),d=t.target().id(),(g=f===l?d:f)!==h&&(p=t.id(),o[p]||(o[p]=!0,a.push({x:l,y:g,edge:t})),g in e?e[l].low=Math.min(e[l].low,e[g].id):(c(u,g,l),e[l].low=Math.min(e[l].low,e[g].low),e[l].id<=e[g].low&&(e[l].cutVertex=!0,s(l,g))))}))};t.forEach((function(t){if(t.isNode()){var n=t.id();n in e||(i=0,c(n,n),e[n].cutVertex=i>1)}}));var u=Object.keys(e).filter((function(t){return e[t].cutVertex})).map((function(e){return t.getElementById(e)}));return{cut:t.spawn(u),components:r}},Mr=function(){var t=this,e={},n=0,i=[],r=[],a=t.spawn(t),o=function o(s){if(r.push(s),e[s]={index:n,low:n++,explored:!1},t.getElementById(s).connectedEdges().intersection(t).forEach((function(t){var n=t.target().id();n!==s&&(n in e||o(n),e[n].explored||(e[s].low=Math.min(e[s].low,e[n].low)))})),e[s].index===e[s].low){for(var c=t.spawn();;){var u=r.pop();if(c.merge(t.getElementById(u)),e[u].low=e[s].index,e[u].explored=!0,u===s)break}var l=c.edgesWith(c),h=c.merge(l);i.push(h),a=a.difference(h)}};return t.forEach((function(t){if(t.isNode()){var n=t.id();n in e||o(n)}})),{cut:a,components:i}},Dr={};[Ze,Ve,Qe,tn,nn,an,un,bi,mi,vi,ki,Bi,cr,wr,Tr,Sr,{hopcroftTarjanBiconnected:Ir,htbc:Ir,htb:Ir,hopcroftTarjanBiconnectedComponents:Ir},{tarjanStronglyConnected:Mr,tsc:Mr,tscc:Mr,tarjanStronglyConnectedComponents:Mr}].forEach((function(t){Q(Dr,t)}));var Or=0,Lr=1,Nr=2,Pr=function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Or,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Pr.prototype={fulfill:function(t){return Br(this,Lr,"fulfillValue",t)},reject:function(t){return Br(this,Nr,"rejectReason",t)},then:function(t,e){var n=this,i=new Pr;return n.onFulfilled.push(jr(t,i,"fulfill")),n.onRejected.push(jr(e,i,"reject")),Fr(n),i.proxy}};var Br=function(t,e,n,i){return t.state===Or&&(t.state=e,t[n]=i,Fr(t)),t},Fr=function(t){t.state===Lr?Rr(t,"onFulfilled",t.fulfillValue):t.state===Nr&&Rr(t,"onRejected",t.rejectReason)},Rr=function(t,e,n){if(0!==t[e].length){var i=t[e];t[e]=[];var r=function(){for(var t=0;t0:void 0}},clearQueue:function(){return function(){var t=this,e=void 0!==t.length?t:[t];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}var Qa=Va;function Ja(t,e){var n=this.__data__,i=Ga(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}var to=Ja;function eo(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t0&&this.spawn(i).updateStyle().emit("class"),e},addClass:function(t){return this.toggleClass(t,!0)},hasClass:function(t){var e=this[0];return null!=e&&e._private.classes.has(t)},toggleClass:function(t,e){x(t)||(t=t.match(/\S+/g)||[]);for(var n=this,i=void 0===e,r=[],a=0,o=n.length;a0&&this.spawn(r).updateStyle().emit("class"),n},removeClass:function(t){return this.toggleClass(t,!1)},flashClass:function(t,e){var n=this;if(null==e)e=250;else if(0===e)return n;return n.addClass(t),setTimeout((function(){n.removeClass(t)}),e),n}};bs.className=bs.classNames=bs.classes;var ws={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:H,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ws.variable="(?:[\\w-.]|(?:\\\\"+ws.metaChar+"))+",ws.className="(?:[\\w-]|(?:\\\\"+ws.metaChar+"))+",ws.value=ws.string+"|"+ws.number,ws.id=ws.variable,function(){var t,e,n;for(t=ws.comparatorOp.split("|"),n=0;n=0||"="!==e&&(ws.comparatorOp+="|\\!"+e)}();var ms=function(){return{checks:[]}},ys={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},vs=[{selector:":selected",matches:function(t){return t.selected()}},{selector:":unselected",matches:function(t){return!t.selected()}},{selector:":selectable",matches:function(t){return t.selectable()}},{selector:":unselectable",matches:function(t){return!t.selectable()}},{selector:":locked",matches:function(t){return t.locked()}},{selector:":unlocked",matches:function(t){return!t.locked()}},{selector:":visible",matches:function(t){return t.visible()}},{selector:":hidden",matches:function(t){return!t.visible()}},{selector:":transparent",matches:function(t){return t.transparent()}},{selector:":grabbed",matches:function(t){return t.grabbed()}},{selector:":free",matches:function(t){return!t.grabbed()}},{selector:":removed",matches:function(t){return t.removed()}},{selector:":inside",matches:function(t){return!t.removed()}},{selector:":grabbable",matches:function(t){return t.grabbable()}},{selector:":ungrabbable",matches:function(t){return!t.grabbable()}},{selector:":animated",matches:function(t){return t.animated()}},{selector:":unanimated",matches:function(t){return!t.animated()}},{selector:":parent",matches:function(t){return t.isParent()}},{selector:":childless",matches:function(t){return t.isChildless()}},{selector:":child",matches:function(t){return t.isChild()}},{selector:":orphan",matches:function(t){return t.isOrphan()}},{selector:":nonorphan",matches:function(t){return t.isChild()}},{selector:":compound",matches:function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()}},{selector:":loop",matches:function(t){return t.isLoop()}},{selector:":simple",matches:function(t){return t.isSimple()}},{selector:":active",matches:function(t){return t.active()}},{selector:":inactive",matches:function(t){return!t.active()}},{selector:":backgrounding",matches:function(t){return t.backgrounding()}},{selector:":nonbackgrounding",matches:function(t){return!t.backgrounding()}}].sort((function(t,e){return V(t.selector,e.selector)})),xs=function(){for(var t,e={},n=0;n0&&u.edgeCount>0)return Ce("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return Ce("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&Ce("The selector `"+t+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Ms=function(){if(null!=this.toStringCache)return this.toStringCache;for(var t=function(t){return null==t?"":t},e=function(e){return y(e)?'"'+e+'"':t(e)},n=function(t){return" "+t+" "},i=function(i,a){var o=i.type,s=i.value;switch(o){case ys.GROUP:var c=t(s);return c.substring(0,c.length-1);case ys.DATA_COMPARE:var u=i.field,l=i.operator;return"["+u+n(t(l))+e(s)+"]";case ys.DATA_BOOL:var h=i.operator,f=i.field;return"["+t(h)+f+"]";case ys.DATA_EXIST:return"["+i.field+"]";case ys.META_COMPARE:var d=i.operator;return"[["+i.field+n(t(d))+e(s)+"]]";case ys.STATE:return s;case ys.ID:return"#"+s;case ys.CLASS:return"."+s;case ys.PARENT:case ys.CHILD:return r(i.parent,a)+n(">")+r(i.child,a);case ys.ANCESTOR:case ys.DESCENDANT:return r(i.ancestor,a)+" "+r(i.descendant,a);case ys.COMPOUND_SPLIT:var g=r(i.left,a),p=r(i.subject,a),b=r(i.right,a);return g+(g.length>0?" ":"")+p+b;case ys.TRUE:return""}},r=function(t,e){return t.checks.reduce((function(n,r,a){return n+(e===t&&0===a?"$":"")+i(r,e)}),"")},a="",o=0;o1&&o=0&&(e=e.replace("!",""),l=!0),e.indexOf("@")>=0&&(e=e.replace("@",""),u=!0),(o||c||u)&&(r=o||s?""+t:"",a=""+n),u&&(t=r=r.toLowerCase(),n=a=a.toLowerCase()),e){case"*=":i=r.indexOf(a)>=0;break;case"$=":i=r.indexOf(a,r.length-a.length)>=0;break;case"^=":i=0===r.indexOf(a);break;case"=":i=t===n;break;case">":h=!0,i=t>n;break;case">=":h=!0,i=t>=n;break;case"<":h=!0,i=t0;){var u=r.shift();e(u),a.add(u.id()),o&&i(r,a,u)}return t}function Ks(t,e,n){if(n.isParent())for(var i=n._private.children,r=0;r1&&void 0!==arguments[1])||arguments[1],Ks)},Zs.forEachUp=function(t){return Ws(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Xs)},Zs.forEachUpAndDown=function(t){return Ws(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Vs)},Zs.ancestors=Zs.parents,(Us=Gs={data:gs.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:gs.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:gs.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:gs.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:gs.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:gs.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var t=this[0];if(t)return t._private.data.id}}).attr=Us.data,Us.removeAttr=Us.removeData;var Qs,Js,tc=Gs,ec={};function nc(t){return function(e){var n=this;if(void 0===e&&(e=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var i=0,r=n[0],a=r._private.edges,o=0;oe})),minIndegree:ic("indegree",(function(t,e){return te})),minOutdegree:ic("outdegree",(function(t,e){return te}))}),Q(ec,{totalDegree:function(t){for(var e=0,n=this.nodes(),i=0;i0,l=u;u&&(c=c[0]);var h=l?c.position():{x:0,y:0};return r={x:s.x-h.x,y:s.y-h.y},void 0===t?r:r[t]}for(var f=0;f0,b=p;p&&(g=g[0]);var w=b?g.position():{x:0,y:0};void 0!==e?d.position(t,e+w[t]):void 0!==r&&d.position({x:r.x+w.x,y:r.y+w.y})}}else if(!a)return;return this}},Qs.modelPosition=Qs.point=Qs.position,Qs.modelPositions=Qs.points=Qs.positions,Qs.renderedPoint=Qs.renderedPosition,Qs.relativePoint=Qs.relativePosition;var oc,sc,cc=Js;oc=sc={},sc.renderedBoundingBox=function(t){var e=this.boundingBox(t),n=this.cy(),i=n.zoom(),r=n.pan(),a=e.x1*i+r.x,o=e.x2*i+r.x,s=e.y1*i+r.y,c=e.y2*i+r.y;return{x1:a,x2:o,y1:s,y2:c,w:o-a,h:c-s}},sc.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.cy();return e.styleEnabled()&&e.hasCompoundNodes()?(this.forEachUp((function(e){if(e.isParent()){var n=e._private;n.compoundBoundsClean=!1,n.bbCache=null,t||e.emitAndNotify("bounds")}})),this):this},sc.updateCompoundBounds=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function n(t){if(t.isParent()){var e=t._private,n=t.children(),i="include"===t.pstyle("compound-sizing-wrt-labels").value,r={width:{val:t.pstyle("min-width").pfValue,left:t.pstyle("min-width-bias-left"),right:t.pstyle("min-width-bias-right")},height:{val:t.pstyle("min-height").pfValue,top:t.pstyle("min-height-bias-top"),bottom:t.pstyle("min-height-bias-bottom")}},a=n.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),o=e.position;0!==a.w&&0!==a.h||((a={w:t.pstyle("width").pfValue,h:t.pstyle("height").pfValue}).x1=o.x-a.w/2,a.x2=o.x+a.w/2,a.y1=o.y-a.h/2,a.y2=o.y+a.h/2);var s=r.width.left.value;"px"===r.width.left.units&&r.width.val>0&&(s=100*s/r.width.val);var c=r.width.right.value;"px"===r.width.right.units&&r.width.val>0&&(c=100*c/r.width.val);var u=r.height.top.value;"px"===r.height.top.units&&r.height.val>0&&(u=100*u/r.height.val);var l=r.height.bottom.value;"px"===r.height.bottom.units&&r.height.val>0&&(l=100*l/r.height.val);var h=w(r.width.val-a.w,s,c),f=h.biasDiff,d=h.biasComplementDiff,g=w(r.height.val-a.h,u,l),p=g.biasDiff,b=g.biasComplementDiff;e.autoPadding=m(a.w,a.h,t.pstyle("padding"),t.pstyle("padding-relative-to").value),e.autoWidth=Math.max(a.w,r.width.val),o.x=(-f+a.x1+a.x2+d)/2,e.autoHeight=Math.max(a.h,r.height.val),o.y=(-p+a.y1+a.y2+b)/2}function w(t,e,n){var i=0,r=0,a=e+n;return t>0&&a>0&&(i=e/a*t,r=n/a*t),{biasDiff:i,biasComplementDiff:r}}function m(t,e,n,i){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(i){case"width":return t>0?n.pfValue*t:0;case"height":return e>0?n.pfValue*e:0;case"average":return t>0&&e>0?n.pfValue*(t+e)/2:0;case"min":return t>0&&e>0?t>e?n.pfValue*e:n.pfValue*t:0;case"max":return t>0&&e>0?t>e?n.pfValue*t:n.pfValue*e:0;default:return 0}}}for(var i=0;it.x2?i:t.x2,t.y1=nt.y2?r:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},hc=function(t,e){return null==e?t:lc(t,e.x1,e.y1,e.x2,e.y2)},fc=function(t,e,n){return Re(t,e,n)},dc=function(t,e,n){if(!e.cy().headless()){var i,r,a=e._private,o=a.rstyle,s=o.arrowWidth/2;if("none"!==e.pstyle(n+"-arrow-shape").value){"source"===n?(i=o.srcX,r=o.srcY):"target"===n?(i=o.tgtX,r=o.tgtY):(i=o.midX,r=o.midY);var c=a.arrowBounds=a.arrowBounds||{},u=c[n]=c[n]||{};u.x1=i-s,u.y1=r-s,u.x2=i+s,u.y2=r+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,Nn(u,1),lc(t,u.x1,u.y1,u.x2,u.y2)}}},gc=function(t,e,n){if(!e.cy().headless()){var i;i=n?n+"-":"";var r=e._private,a=r.rstyle;if(e.pstyle(i+"label").strValue){var o,s,c,u,l=e.pstyle("text-halign"),h=e.pstyle("text-valign"),f=fc(a,"labelWidth",n),d=fc(a,"labelHeight",n),g=fc(a,"labelX",n),p=fc(a,"labelY",n),b=e.pstyle(i+"text-margin-x").pfValue,w=e.pstyle(i+"text-margin-y").pfValue,m=e.isEdge(),y=e.pstyle(i+"text-rotation"),v=e.pstyle("text-outline-width").pfValue,x=e.pstyle("text-border-width").pfValue/2,k=e.pstyle("text-background-padding").pfValue,_=2,A=d,E=f,T=E/2,C=A/2;if(m)o=g-T,s=g+T,c=p-C,u=p+C;else{switch(l.value){case"left":o=g-E,s=g;break;case"center":o=g-T,s=g+T;break;case"right":o=g,s=g+E}switch(h.value){case"top":c=p-A,u=p;break;case"center":c=p-C,u=p+C;break;case"bottom":c=p,u=p+A}}o+=b-Math.max(v,x)-k-_,s+=b+Math.max(v,x)+k+_,c+=w-Math.max(v,x)-k-_,u+=w+Math.max(v,x)+k+_;var S=n||"main",I=r.labelBounds,M=I[S]=I[S]||{};M.x1=o,M.y1=c,M.x2=s,M.y2=u,M.w=s-o,M.h=u-c;var D=m&&"autorotate"===y.strValue,O=null!=y.pfValue&&0!==y.pfValue;if(D||O){var L=D?fc(r.rstyle,"labelAngle",n):y.pfValue,N=Math.cos(L),P=Math.sin(L),B=(o+s)/2,F=(c+u)/2;if(!m){switch(l.value){case"left":B=s;break;case"right":B=o}switch(h.value){case"top":F=u;break;case"bottom":F=c}}var R=function(t,e){return{x:(t-=B)*N-(e-=F)*P+B,y:t*P+e*N+F}},j=R(o,c),$=R(o,u),z=R(s,c),q=R(s,u);o=Math.min(j.x,$.x,z.x,q.x),s=Math.max(j.x,$.x,z.x,q.x),c=Math.min(j.y,$.y,z.y,q.y),u=Math.max(j.y,$.y,z.y,q.y)}var H=S+"Rot",U=I[H]=I[H]||{};U.x1=o,U.y1=c,U.x2=s,U.y2=u,U.w=s-o,U.h=u-c,lc(t,o,c,s,u),lc(r.labelBounds.all,o,c,s,u)}return t}},pc=function(t,e){var n,i,r,a,o,s,c=t._private.cy,u=c.styleEnabled(),l=c.headless(),h=In(),f=t._private,d=t.isNode(),g=t.isEdge(),p=f.rstyle,b=d&&u?t.pstyle("bounds-expansion").pfValue:[0],w=function(t){return"none"!==t.pstyle("display").value},m=!u||w(t)&&(!g||w(t.source())&&w(t.target()));if(m){var y=0;u&&e.includeOverlays&&0!==t.pstyle("overlay-opacity").value&&(y=t.pstyle("overlay-padding").value);var v=0;u&&e.includeUnderlays&&0!==t.pstyle("underlay-opacity").value&&(v=t.pstyle("underlay-padding").value);var x=Math.max(y,v),k=0;if(u&&(k=t.pstyle("width").pfValue/2),d&&e.includeNodes){var _=t.position();o=_.x,s=_.y;var A=t.outerWidth()/2,E=t.outerHeight()/2;lc(h,n=o-A,r=s-E,i=o+A,a=s+E)}else if(g&&e.includeEdges)if(u&&!l){var T=t.pstyle("curve-style").strValue;if(n=Math.min(p.srcX,p.midX,p.tgtX),i=Math.max(p.srcX,p.midX,p.tgtX),r=Math.min(p.srcY,p.midY,p.tgtY),a=Math.max(p.srcY,p.midY,p.tgtY),lc(h,n-=k,r-=k,i+=k,a+=k),"haystack"===T){var C=p.haystackPts;if(C&&2===C.length){if(n=C[0].x,r=C[0].y,n>(i=C[1].x)){var S=n;n=i,i=S}if(r>(a=C[1].y)){var I=r;r=a,a=I}lc(h,n-k,r-k,i+k,a+k)}}else if("bezier"===T||"unbundled-bezier"===T||"segments"===T||"taxi"===T){var M;switch(T){case"bezier":case"unbundled-bezier":M=p.bezierPts;break;case"segments":case"taxi":M=p.linePts}if(null!=M)for(var D=0;D(i=N.x)){var P=n;n=i,i=P}if((r=L.y)>(a=N.y)){var B=r;r=a,a=B}lc(h,n-=k,r-=k,i+=k,a+=k)}if(u&&e.includeEdges&&g&&(dc(h,t,"mid-source"),dc(h,t,"mid-target"),dc(h,t,"source"),dc(h,t,"target")),u&&"yes"===t.pstyle("ghost").value){var F=t.pstyle("ghost-offset-x").pfValue,R=t.pstyle("ghost-offset-y").pfValue;lc(h,h.x1+F,h.y1+R,h.x2+F,h.y2+R)}var j=f.bodyBounds=f.bodyBounds||{};Bn(j,h),Pn(j,b),Nn(j,1),u&&(n=h.x1,i=h.x2,r=h.y1,a=h.y2,lc(h,n-x,r-x,i+x,a+x));var $=f.overlayBounds=f.overlayBounds||{};Bn($,h),Pn($,b),Nn($,1);var z=f.labelBounds=f.labelBounds||{};null!=z.all?Dn(z.all):z.all=In(),u&&e.includeLabels&&(e.includeMainLabels&&gc(h,t,null),g&&(e.includeSourceLabels&&gc(h,t,"source"),e.includeTargetLabels&&gc(h,t,"target")))}return h.x1=uc(h.x1),h.y1=uc(h.y1),h.x2=uc(h.x2),h.y2=uc(h.y2),h.w=uc(h.x2-h.x1),h.h=uc(h.y2-h.y1),h.w>0&&h.h>0&&m&&(Pn(h,b),Nn(h,1)),h},bc=function(t){var e=0,n=function(t){return(t?1:0)<0&&void 0!==arguments[0]?arguments[0]:zc,e=arguments.length>1?arguments[1]:void 0,n=0;n<$c.length;n++){var i=$c[n];this[i]=t[i]||jc[i]}this.context=e||this.context,this.listeners=[],this.emitting=0}var Hc=qc.prototype,Uc=function(t,e,n,i,r,a,o){v(i)&&(r=i,i=null),o&&(a=null==a?o:Q({},a,o));for(var s=x(n)?n:n.split(/\s+/),c=0;c=0;s--)o(s);return this},Hc.removeAllListeners=function(){return this.removeListener("*")},Hc.emit=Hc.trigger=function(t,e,n){var i=this.listeners,r=i.length;return this.emitting++,x(e)||(e=[e]),Yc(this,(function(t,a){null!=n&&(i=[{event:a.event,type:a.type,namespace:a.namespace,callback:n}],r=i.length);for(var o=function(n){var r=i[n];if(r.type===a.type&&(!r.namespace||r.namespace===a.namespace||r.namespace===Rc)&&t.eventMatches(t.context,r,a)){var o=[a];null!=e&&Fe(o,e),t.beforeEmit(t.context,r,a),r.conf&&r.conf.one&&(t.listeners=t.listeners.filter((function(t){return t!==r})));var s=t.callbackContext(t.context,r,a),c=r.callback.apply(s,o);t.afterEmit(t.context,r,a),!1===c&&(a.stopPropagation(),a.preventDefault())}},s=0;s1&&!i){var r=this.length-1,a=this[r],o=a._private.data.id;this[r]=void 0,this[t]=a,n.set(o,{ele:a,index:t})}return this.length--,this},unmergeOne:function(t){t=t[0];var e=this._private,n=t._private.data.id,i=e.map.get(n);if(!i)return this;var r=i.index;return this.unmergeAt(r),this},unmerge:function(t){var e=this._private.cy;if(!t)return this;if(t&&y(t)){var n=t;t=e.mutableElements().filter(n)}for(var i=0;i=0;e--)t(this[e])&&this.unmergeAt(e);return this},map:function(t,e){for(var n=[],i=this,r=0;ri&&(i=s,n=o)}return{value:i,ele:n}},min:function(t,e){for(var n,i=1/0,r=this,a=0;a=0&&r1&&void 0!==arguments[1])||arguments[1],n=this[0],i=n.cy();if(i.styleEnabled()&&n){this.cleanStyle();var r=n._private.style[t];return null!=r?r:e?i.style().getDefaultProperty(t):null}},numericStyle:function(t){var e=this[0];if(e.cy().styleEnabled()&&e){var n=e.pstyle(t);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(t){var e=this[0];if(e.cy().styleEnabled())return e?e.pstyle(t).units:void 0},renderedStyle:function(t){var e=this.cy();if(!e.styleEnabled())return this;var n=this[0];return n?e.style().getRenderedStyle(n,t):void 0},style:function(t,e){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,r=n.style();if(k(t)){var a=t;r.applyBypass(this,a,i),this.emitAndNotify("style")}else if(y(t)){if(void 0===e){var o=this[0];return o?r.getStylePropertyValue(o,t):void 0}r.applyBypass(this,t,e,i),this.emitAndNotify("style")}else if(void 0===t){var s=this[0];return s?r.getRawStyle(s):void 0}return this},removeStyle:function(t){var e=this.cy();if(!e.styleEnabled())return this;var n=!1,i=e.style(),r=this;if(void 0===t)for(var a=0;a0&&e.push(l[0]),e.push(s[0])}return this.spawn(e,!0).filter(t)}),"neighborhood"),closedNeighborhood:function(t){return this.neighborhood().add(this).filter(t)},openNeighborhood:function(t){return this.neighborhood(t)}}),mu.neighbourhood=mu.neighborhood,mu.closedNeighbourhood=mu.closedNeighborhood,mu.openNeighbourhood=mu.openNeighborhood,Q(mu,{source:Ys((function(t){var e,n=this[0];return n&&(e=n._private.source||n.cy().collection()),e&&t?e.filter(t):e}),"source"),target:Ys((function(t){var e,n=this[0];return n&&(e=n._private.target||n.cy().collection()),e&&t?e.filter(t):e}),"target"),sources:ku({attr:"source"}),targets:ku({attr:"target"})}),Q(mu,{edgesWith:Ys(_u(),"edgesWith"),edgesTo:Ys(_u({thisIsSrc:!0}),"edgesTo")}),Q(mu,{connectedEdges:Ys((function(t){for(var e=[],n=this,i=0;i0);return a},component:function(){var t=this[0];return t.cy().mutableElements().components(t)[0]}}),mu.componentsOf=mu.components;var Eu=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==t){var r=new ze,a=!1;if(e){if(e.length>0&&k(e[0])&&!S(e[0])){a=!0;for(var o=[],s=new Ue,c=0,u=e.length;c0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this,a=r.cy(),o=a._private,s=[],c=[],u=0,l=r.length;u0){for(var F=t.length===r.length?r:new Eu(a,t),R=0;R0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,i=[],r={},a=n._private.cy;function o(t){for(var e=t._private.edges,n=0;n0&&(t?E.emitAndNotify("remove"):e&&E.emit("remove"));for(var T=0;T0?r=c:i=c}while(Math.abs(a)>o&&++u=a?m(e,s):0===l?s:v(e,i,i+u)}var k=!1;function _(){k=!0,t===e&&n===i||y()}var A=function(r){return k||_(),t===e&&n===i?r:0===r?0:1===r?1:b(x(r),e,i)};A.getControlPoints=function(){return[{x:t,y:e},{x:n,y:i}]};var E="generateBezier("+[t,e,n,i]+")";return A.toString=function(){return E},A}var Iu=function(){function t(t){return-t.tension*t.x-t.friction*t.v}function e(e,n,i){var r={x:e.x+i.dx*n,v:e.v+i.dv*n,tension:e.tension,friction:e.friction};return{dx:r.v,dv:t(r)}}function n(n,i){var r={dx:n.v,dv:t(n)},a=e(n,.5*i,r),o=e(n,.5*i,a),s=e(n,i,o),c=1/6*(r.dx+2*(a.dx+o.dx)+s.dx),u=1/6*(r.dv+2*(a.dv+o.dv)+s.dv);return n.x=n.x+c*i,n.v=n.v+u*i,n}return function t(e,i,r){var a,o,s,c={x:-1,v:0,tension:null,friction:null},u=[0],l=0,h=1e-4,f=.016;for(e=parseFloat(e)||500,i=parseFloat(i)||20,r=r||null,c.tension=e,c.friction=i,o=(a=null!==r)?(l=t(e,i))/r*f:f;s=n(s||c,o),u.push(1+s.x),l+=16,Math.abs(s.x)>h&&Math.abs(s.v)>h;);return a?function(t){return u[t*(u.length-1)|0]}:l}}(),Mu=function(t,e,n,i){var r=Su(t,e,n,i);return function(t,e,n){return t+(e-t)*r(n)}},Du={linear:function(t,e,n){return t+(e-t)*n},ease:Mu(.25,.1,.25,1),"ease-in":Mu(.42,0,1,1),"ease-out":Mu(0,0,.58,1),"ease-in-out":Mu(.42,0,.58,1),"ease-in-sine":Mu(.47,0,.745,.715),"ease-out-sine":Mu(.39,.575,.565,1),"ease-in-out-sine":Mu(.445,.05,.55,.95),"ease-in-quad":Mu(.55,.085,.68,.53),"ease-out-quad":Mu(.25,.46,.45,.94),"ease-in-out-quad":Mu(.455,.03,.515,.955),"ease-in-cubic":Mu(.55,.055,.675,.19),"ease-out-cubic":Mu(.215,.61,.355,1),"ease-in-out-cubic":Mu(.645,.045,.355,1),"ease-in-quart":Mu(.895,.03,.685,.22),"ease-out-quart":Mu(.165,.84,.44,1),"ease-in-out-quart":Mu(.77,0,.175,1),"ease-in-quint":Mu(.755,.05,.855,.06),"ease-out-quint":Mu(.23,1,.32,1),"ease-in-out-quint":Mu(.86,0,.07,1),"ease-in-expo":Mu(.95,.05,.795,.035),"ease-out-expo":Mu(.19,1,.22,1),"ease-in-out-expo":Mu(1,0,0,1),"ease-in-circ":Mu(.6,.04,.98,.335),"ease-out-circ":Mu(.075,.82,.165,1),"ease-in-out-circ":Mu(.785,.135,.15,.86),spring:function(t,e,n){if(0===n)return Du.linear;var i=Iu(t,e,n);return function(t,e,n){return t+(e-t)*i(n)}},"cubic-bezier":Mu};function Ou(t,e,n,i,r){if(1===i)return n;if(e===n)return n;var a=r(e,n,i);return null==t||((t.roundValue||t.color)&&(a=Math.round(a)),void 0!==t.min&&(a=Math.max(a,t.min)),void 0!==t.max&&(a=Math.min(a,t.max))),a}function Lu(t,e){return null!=t.pfValue||null!=t.value?null==t.pfValue||null!=e&&"%"===e.type.units?t.value:t.pfValue:t}function Nu(t,e,n,i,r){var a=null!=r?r.type:null;n<0?n=0:n>1&&(n=1);var o=Lu(t,r),s=Lu(e,r);if(A(o)&&A(s))return Ou(a,o,s,n,i);if(x(o)&&x(s)){for(var c=[],u=0;u0?("spring"===h&&f.push(o.duration),o.easingImpl=Du[h].apply(null,f)):o.easingImpl=Du[h]}var d,g=o.easingImpl;if(d=0===o.duration?1:(n-c)/o.duration,o.applying&&(d=o.progress),d<0?d=0:d>1&&(d=1),null==o.delay){var p=o.startPosition,b=o.position;if(b&&r&&!t.locked()){var w={};Bu(p.x,b.x)&&(w.x=Nu(p.x,b.x,d,g)),Bu(p.y,b.y)&&(w.y=Nu(p.y,b.y,d,g)),t.position(w)}var m=o.startPan,v=o.pan,x=a.pan,k=null!=v&&i;k&&(Bu(m.x,v.x)&&(x.x=Nu(m.x,v.x,d,g)),Bu(m.y,v.y)&&(x.y=Nu(m.y,v.y,d,g)),t.emit("pan"));var _=o.startZoom,A=o.zoom,E=null!=A&&i;E&&(Bu(_,A)&&(a.zoom=Sn(a.minZoom,Nu(_,A,d,g),a.maxZoom)),t.emit("zoom")),(k||E)&&t.emit("viewport");var T=o.style;if(T&&T.length>0&&r){for(var C=0;C=0;e--)(0,t[e])();t.splice(0,t.length)},l=a.length-1;l>=0;l--){var h=a[l],f=h._private;f.stopped?(a.splice(l,1),f.hooked=!1,f.playing=!1,f.started=!1,u(f.frames)):(f.playing||f.applying)&&(f.playing&&f.applying&&(f.applying=!1),f.started||Fu(e,h,t),Pu(e,h,t,n),f.applying&&(f.applying=!1),u(f.frames),null!=f.step&&f.step(t),h.completed()&&(a.splice(l,1),f.hooked=!1,f.playing=!1,f.started=!1,u(f.completes)),s=!0)}return n||0!==a.length||0!==o.length||i.push(e),s}for(var a=!1,o=0;o0?e.notify("draw",n):e.notify("draw")),n.unmerge(i),e.emit("step")}var ju={animate:gs.animate(),animation:gs.animation(),animated:gs.animated(),clearQueue:gs.clearQueue(),delay:gs.delay(),delayAnimation:gs.delayAnimation(),stop:gs.stop(),addToAnimationPool:function(t){var e=this;e.styleEnabled()&&e._private.aniEles.merge(t)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var t=this;if(t._private.animationsRunning=!0,t.styleEnabled()){var e=t.renderer();e&&e.beforeRender?e.beforeRender((function(e,n){Ru(n,t)}),e.beforeRenderPriorities.animations):n()}function n(){t._private.animationsRunning&&ne((function(e){Ru(e,t),n()}))}}},$u={qualifierCompare:function(t,e){return null==t||null==e?null==t&&null==e:t.sameText(e)},eventMatches:function(t,e,n){var i=e.qualifier;return null==i||t!==n.target&&S(n.target)&&i.matches(n.target)},addEventFields:function(t,e){e.cy=t,e.target=t},callbackContext:function(t,e,n){return null!=e.qualifier?n.target:t}},zu=function(t){return y(t)?new zs(t):t},qu={createEmitter:function(){var t=this._private;return t.emitter||(t.emitter=new qc($u,this)),this},emitter:function(){return this._private.emitter},on:function(t,e,n){return this.emitter().on(t,zu(e),n),this},removeListener:function(t,e,n){return this.emitter().removeListener(t,zu(e),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(t,e,n){return this.emitter().one(t,zu(e),n),this},once:function(t,e,n){return this.emitter().one(t,zu(e),n),this},emit:function(t,e){return this.emitter().emit(t,e),this},emitAndNotify:function(t,e){return this.emit(t),this.notify(t,e),this}};gs.eventAliasesOn(qu);var Hu={png:function(t){return t=t||{},this._private.renderer.png(t)},jpg:function(t){var e=this._private.renderer;return(t=t||{}).bg=t.bg||"#fff",e.jpg(t)}};Hu.jpeg=Hu.jpg;var Uu={layout:function(t){var e=this;if(null!=t)if(null!=t.name){var n=t.name,i=e.extension("layout",n);if(null!=i){var r;r=y(t.eles)?e.$(t.eles):null!=t.eles?t.eles:e.$();var a=new i(Q({},t,{cy:e,eles:r}));return a}Ee("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ee("A `name` must be specified to make a layout");else Ee("Layout options must be specified to make a layout")}};Uu.createLayout=Uu.makeLayout=Uu.layout;var Gu={notify:function(t,e){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[t]=n.batchNotifications[t]||this.collection();null!=e&&i.merge(e)}else if(n.notificationsEnabled){var r=this.renderer();!this.destroyed()&&r&&r.notify(t,e)}},notifications:function(t){var e=this._private;return void 0===t?e.notificationsEnabled:(e.notificationsEnabled=!!t,this)},noNotifications:function(t){this.notifications(!1),t(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var t=this._private;return null==t.batchCount&&(t.batchCount=0),0===t.batchCount&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},endBatch:function(){var t=this._private;if(0===t.batchCount)return this;if(t.batchCount--,0===t.batchCount){t.batchStyleEles.updateStyle();var e=this.renderer();Object.keys(t.batchNotifications).forEach((function(n){var i=t.batchNotifications[n];i.empty()?e.notify(n):e.notify(n,i)}))}return this},batch:function(t){return this.startBatch(),t(),this.endBatch(),this},batchData:function(t){var e=this;return this.batch((function(){for(var n=Object.keys(t),i=0;i0;)e.removeChild(e.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach((function(t){var e=t._private;e.rscratch={},e.rstyle={},e.animation.current=[],e.animation.queue=[]}))},onRender:function(t){return this.on("render",t)},offRender:function(t){return this.off("render",t)}};Zu.invalidateDimensions=Zu.resize;var Wu={collection:function(t,e){return y(t)?this.$(t):C(t)?t.collection():x(t)?(e||(e={}),new Eu(this,t,e.unique,e.removed)):new Eu(this)},nodes:function(t){var e=this.$((function(t){return t.isNode()}));return t?e.filter(t):e},edges:function(t){var e=this.$((function(t){return t.isEdge()}));return t?e.filter(t):e},$:function(t){var e=this._private.elements;return t?e.filter(t):e.spawnSelf()},mutableElements:function(){return this._private.elements}};Wu.elements=Wu.filter=Wu.$;var Ku={},Xu="t",Vu="f";Ku.apply=function(t){for(var e=this,n=e._private.cy.collection(),i=0;i0;if(f||h&&d){var g=void 0;f&&d||f?g=u.properties:d&&(g=u.mappedProperties);for(var p=0;p1&&(b=1),s.color){var x=r.valueMin[0],k=r.valueMax[0],_=r.valueMin[1],E=r.valueMax[1],T=r.valueMin[2],C=r.valueMax[2],S=null==r.valueMin[3]?1:r.valueMin[3],I=null==r.valueMax[3]?1:r.valueMax[3],M=[Math.round(x+(k-x)*b),Math.round(_+(E-_)*b),Math.round(T+(C-T)*b),Math.round(S+(I-S)*b)];n={bypass:r.bypass,name:r.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else{if(!s.number)return!1;var D=r.valueMin+(r.valueMax-r.valueMin)*b;n=this.parse(r.name,D,r.bypass,f)}if(!n)return p(),!1;n.mapping=r,r=n;break;case o.data:for(var O=r.field.split("."),L=h.data,N=0;N0&&a>0){for(var s={},c=!1,u=0;u0?t.delayAnimation(o).play().promise().then(e):e()})).then((function(){return t.animation({style:s,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(t,r),t.emitAndNotify("style"),i.transitioning=!1}))}else i.transitioning&&(this.removeBypasses(t,r),t.emitAndNotify("style"),i.transitioning=!1)},Ku.checkTrigger=function(t,e,n,i,r,a){var o=this.properties[e],s=r(o);null!=s&&s(n,i)&&a(o)},Ku.checkZOrderTrigger=function(t,e,n,i){var r=this;this.checkTrigger(t,e,n,i,(function(t){return t.triggersZOrder}),(function(){r._private.cy.notify("zorder",t)}))},Ku.checkBoundsTrigger=function(t,e,n,i){this.checkTrigger(t,e,n,i,(function(t){return t.triggersBounds}),(function(r){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),!r.triggersBoundsOfParallelBeziers||("curve-style"!==e||"bezier"!==n&&"bezier"!==i)&&("display"!==e||"none"!==n&&"none"!==i)||t.parallelEdges().forEach((function(t){t.isBundledBezier()&&t.dirtyBoundingBoxCache()}))}))},Ku.checkTriggers=function(t,e,n,i){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,n,i),this.checkBoundsTrigger(t,e,n,i)};var Qu={applyBypass:function(t,e,n,i){var r=this,a=[],o=!0;if("*"===e||"**"===e){if(void 0!==n)for(var s=0;se.length?o.substr(e.length):""}function c(){n=n.length>i.length?n.substr(i.length):""}for(o=o.replace(/[/][*](\s|.)+?[*][/]/g,"");!o.match(/^\s*$/);){var u=o.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!u){Ce("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+o);break}e=u[0];var l=u[1];if("core"!==l&&new zs(l).invalid)Ce("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),s();else{var h=u[2],f=!1;n=h;for(var d=[];!n.match(/^\s*$/);){var g=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){Ce("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+h),f=!0;break}i=g[0];var p=g[1],b=g[2];r.properties[p]?a.parse(p,b)?(d.push({name:p,val:b}),c()):(Ce("Skipping property: Invalid property definition in: "+i),c()):(Ce("Skipping property: Invalid property name in: "+i),c())}if(f){s();break}a.selector(l);for(var w=0;w=7&&"d"===e[0]&&(u=new RegExp(s.data.regex).exec(e))){if(n)return!1;var f=s.data;return{name:t,value:u,strValue:""+e,mapped:f,field:u[1],bypass:n}}if(e.length>=10&&"m"===e[0]&&(l=new RegExp(s.mapData.regex).exec(e))){if(n)return!1;if(h.multiple)return!1;var d=s.mapData;if(!h.color&&!h.number)return!1;var g=this.parse(t,l[4]);if(!g||g.mapped)return!1;var p=this.parse(t,l[5]);if(!p||p.mapped)return!1;if(g.pfValue===p.pfValue||g.strValue===p.strValue)return Ce("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var b=g.value,w=p.value;if(!(b[0]!==w[0]||b[1]!==w[1]||b[2]!==w[2]||b[3]!==w[3]&&(null!=b[3]&&1!==b[3]||null!=w[3]&&1!==w[3])))return!1}return{name:t,value:l,strValue:""+e,mapped:d,field:l[1],fieldMin:parseFloat(l[2]),fieldMax:parseFloat(l[3]),valueMin:g.value,valueMax:p.value,bypass:n}}}if(h.multiple&&"multiple"!==i){var m;if(m=c?e.split(/\s+/):x(e)?e:[e],h.evenMultiple&&m.length%2!=0)return null;for(var k=[],_=[],A=[],T="",C=!1,S=0;S0?" ":"")+I.strValue}return h.validate&&!h.validate(k,_)?null:h.singleEnum&&C?1===k.length&&y(k[0])?{name:t,value:k[0],strValue:k[0],bypass:n}:null:{name:t,value:k,pfValue:A,strValue:T,bypass:n,units:_}}var M=function(){for(var i=0;ih.max||h.strictMax&&e===h.max))return null;var P={name:t,value:e,strValue:""+e+(D||""),units:D,bypass:n};return h.unitless||"px"!==D&&"em"!==D?P.pfValue=e:P.pfValue="px"!==D&&D?this.getEmSizeInPixels()*e:e,"ms"!==D&&"s"!==D||(P.pfValue="ms"===D?e:1e3*e),"deg"!==D&&"rad"!==D||(P.pfValue="rad"===D?e:mn(e)),"%"===D&&(P.pfValue=e/100),P}if(h.propList){var B=[],F=""+e;if("none"===F);else{for(var R=F.split(/\s*,\s*|\s+/),$=0;$0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:a=(a=(a=Math.min((o-2*e)/n.w,(s-2*e)/n.h))>this._private.maxZoom?this._private.maxZoom:a)=n.minZoom&&(n.maxZoom=e),this},minZoom:function(t){return void 0===t?this._private.minZoom:this.zoomRange({min:t})},maxZoom:function(t){return void 0===t?this._private.maxZoom:this.zoomRange({max:t})},getZoomedViewport:function(t){var e,n,i=this._private,r=i.pan,a=i.zoom,o=!1;if(i.zoomingEnabled||(o=!0),A(t)?n=t:k(t)&&(n=t.level,null!=t.position?e=hn(t.position,a,r):null!=t.renderedPosition&&(e=t.renderedPosition),null==e||i.panningEnabled||(o=!0)),n=(n=n>i.maxZoom?i.maxZoom:n)e.maxZoom||!e.zoomingEnabled?a=!0:(e.zoom=s,r.push("zoom"))}if(i&&(!a||!t.cancelOnFailedZoom)&&e.panningEnabled){var c=t.pan;A(c.x)&&(e.pan.x=c.x,o=!1),A(c.y)&&(e.pan.y=c.y,o=!1),o||r.push("pan")}return r.length>0&&(r.push("viewport"),this.emit(r.join(" ")),this.notify("viewport")),this},center:function(t){var e=this.getCenterPan(t);return e&&(this._private.pan=e,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(t,e){if(this._private.panningEnabled){if(y(t)){var n=t;t=this.mutableElements().filter(n)}else C(t)||(t=this.mutableElements());if(0!==t.length){var i=t.boundingBox(),r=this.width(),a=this.height();return{x:(r-(e=void 0===e?this._private.zoom:e)*(i.x1+i.x2))/2,y:(a-e*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var t,e,n=this._private,i=n.container,r=this;return n.sizeCache=n.sizeCache||(i?(t=r.window().getComputedStyle(i),e=function(e){return parseFloat(t.getPropertyValue(e))},{width:i.clientWidth-e("padding-left")-e("padding-right"),height:i.clientHeight-e("padding-top")-e("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var t=this._private.pan,e=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-t.x)/e,x2:(n.x2-t.x)/e,y1:(n.y1-t.y)/e,y2:(n.y2-t.y)/e};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},renderedExtent:function(){var t=this.width(),e=this.height();return{x1:0,y1:0,x2:t,y2:e,w:t,h:e}},multiClickDebounceTime:function(t){return t?(this._private.multiClickDebounceTime=t,this):this._private.multiClickDebounceTime}};ul.centre=ul.center,ul.autolockNodes=ul.autolock,ul.autoungrabifyNodes=ul.autoungrabify;var ll={data:gs.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:gs.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:gs.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:gs.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ll.attr=ll.data,ll.removeAttr=ll.removeData;var hl=function(t){var e=this,n=(t=Q({},t)).container;n&&!T(n)&&T(n[0])&&(n=n[0]);var i=n?n._cyreg:null;(i=i||{})&&i.cy&&(i.cy.destroy(),i={});var r=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=e;var a=void 0!==f&&void 0!==n&&!t.headless,o=t;o.layout=Q({name:a?"grid":"null"},o.layout),o.renderer=Q({name:a?"canvas":"null"},o.renderer);var s=function(t,e,n){return void 0!==e?e:void 0!==n?n:t},c=this._private={container:n,ready:!1,options:o,elements:new Eu(this),listeners:[],aniEles:new Eu(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?a:o.styleEnabled,zoom:A(o.zoom)?o.zoom:1,pan:{x:k(o.pan)&&A(o.pan.x)?o.pan.x:0,y:k(o.pan)&&A(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var u=function(t,e){if(t.some(B))return zr.all(t).then(e);e(t)};c.styleEnabled&&e.setStyle([]);var l=Q({},o,o.renderer);e.initRenderer(l);var h=function(t,n,i){e.notifications(!1);var r=e.mutableElements();r.length>0&&r.remove(),null!=t&&(k(t)||x(t))&&e.add(t),e.one("layoutready",(function(t){e.notifications(!0),e.emit(t),e.one("load",n),e.emitAndNotify("load")})).one("layoutstop",(function(){e.one("done",i),e.emit("done")}));var a=Q({},e._private.options.layout);a.eles=e.elements(),e.layout(a).run()};u([o.style,o.elements],(function(t){var n=t[0],a=t[1];c.styleEnabled&&e.style().append(n),h(a,(function(){e.startAnimationLoop(),c.ready=!0,v(o.ready)&&e.on("ready",o.ready);for(var t=0;t0,u=In(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()});if(C(n.roots))t=n.roots;else if(x(n.roots)){for(var l=[],h=0;h0;){var N=L(),P=I(N,D);if(P)N.outgoers().filter((function(t){return t.isNode()&&r.has(t)})).forEach(O);else if(null===P){Ce("Detected double maximal shift for node `"+N.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}S();var B=0;if(n.avoidOverlap)for(var F=0;F0&&w[0].length<=3?c/2:0),h=2*Math.PI/w[i].length*r;return 0===i&&1===w[0].length&&(l=1),{x:K.x+l*Math.cos(h),y:K.y+l*Math.sin(h)}}return{x:K.x+(r+1-(a+1)/2)*o,y:(i+1)*s}};return r.nodes().layoutPositions(this,n,Q),this};var ml={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function yl(t){this.options=Q({},ml,t)}yl.prototype.run=function(){var t=this.options,e=t,n=t.cy,i=e.eles,r=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,a=i.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var o,s=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),c={x:s.x1+s.w/2,y:s.y1+s.h/2},u=(void 0===e.sweep?2*Math.PI-2*Math.PI/a.length:e.sweep)/Math.max(1,a.length-1),l=0,h=0;h1&&e.avoidOverlap){l*=1.75;var p=Math.cos(u)-Math.cos(0),b=Math.sin(u)-Math.sin(0),w=Math.sqrt(l*l/(p*p+b*b));o=Math.max(w,o)}var m=function(t,n){var i=e.startAngle+n*u*(r?1:-1),a=o*Math.cos(i),s=o*Math.sin(i);return{x:c.x+a,y:c.y+s}};return i.nodes().layoutPositions(this,e,m),this};var vl,xl={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(t){return t.degree()},levelWidth:function(t){return t.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function kl(t){this.options=Q({},xl,t)}kl.prototype.run=function(){for(var t=this.options,e=t,n=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,i=t.cy,r=e.eles,a=r.nodes().not(":parent"),o=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},c=[],u=0,l=0;l0&&Math.abs(w[0].value-y.value)>=p&&(w=[],b.push(w)),w.push(y)}var v=u+e.minNodeSpacing;if(!e.avoidOverlap){var x=b.length>0&&b[0].length>1,k=(Math.min(o.w,o.h)/2-v)/(b.length+x?1:0);v=Math.min(v,k)}for(var _=0,A=0;A1&&e.avoidOverlap){var S=Math.cos(C)-Math.cos(0),I=Math.sin(C)-Math.sin(0),M=Math.sqrt(v*v/(S*S+I*I));_=Math.max(M,_)}E.r=_,_+=v}if(e.equidistant){for(var D=0,O=0,L=0;L=t.numIter||(Ol(i,t),i.temperature=i.temperature*t.coolingFactor,i.temperature=t.animationThreshold&&a(),ne(e)):(Ul(i,t),s())}();else{for(;u;)u=o(c),c++;Ul(i,t),s()}return this},Al.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Al.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var El,Tl=function(t,e,n){for(var i=n.eles.edges(),r=n.eles.nodes(),a=In(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),o={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:r.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:a.w,clientHeight:a.h,boundingBox:a},s=n.eles.components(),c={},u=0;u0)for(o.graphSet.push(k),u=0;ui.count?0:i.graph},Sl=function t(e,n,i,r){var a=r.graphSet[i];if(-10)var c=(l=i.nodeOverlap*s)*r/(b=Math.sqrt(r*r+a*a)),u=l*a/b;else{var l,h=Fl(t,r,a),f=Fl(e,-1*r,-1*a),d=f.x-h.x,g=f.y-h.y,p=d*d+g*g,b=Math.sqrt(p);c=(l=(t.nodeRepulsion+e.nodeRepulsion)/p)*d/b,u=l*g/b}t.isLocked||(t.offsetX-=c,t.offsetY-=u),e.isLocked||(e.offsetX+=c,e.offsetY+=u)}},Bl=function(t,e,n,i){if(n>0)var r=t.maxX-e.minX;else r=e.maxX-t.minX;if(i>0)var a=t.maxY-e.minY;else a=e.maxY-t.minY;return r>=0&&a>=0?Math.sqrt(r*r+a*a):0},Fl=function(t,e,n){var i=t.positionX,r=t.positionY,a=t.height||1,o=t.width||1,s=n/e,c=a/o,u={};return 0===e&&0n?(u.x=i,u.y=r+a/2,u):0e&&-1*c<=s&&s<=c?(u.x=i-o/2,u.y=r-o*n/2/e,u):0=c)?(u.x=i+a*e/2/n,u.y=r+a/2,u):0>n&&(s<=-1*c||s>=c)?(u.x=i-a*e/2/n,u.y=r-a/2,u):u},Rl=function(t,e){for(var n=0;nn){var p=e.gravity*f/g,b=e.gravity*d/g;h.offsetX+=p,h.offsetY+=b}}}}},$l=function(t,e){var n=[],i=0,r=-1;for(n.push.apply(n,t.graphSet[0]),r+=t.graphSet[0].length;i<=r;){var a=n[i++],o=t.idToIndex[a],s=t.layoutNodes[o],c=s.children;if(0n)var r={x:n*t/i,y:n*e/i};else r={x:t,y:e};return r},Hl=function t(e,n){var i=e.parentId;if(null!=i){var r=n.layoutNodes[n.idToIndex[i]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopg&&(h+=d+e.componentSpacing,l=0,f=0,d=0)}}},Gl={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(t){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function Yl(t){this.options=Q({},Gl,t)}Yl.prototype.run=function(){var t=this.options,e=t,n=t.cy,i=e.eles,r=i.nodes().not(":parent");e.sort&&(r=r.sort(e.sort));var a=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===a.h||0===a.w)i.nodes().layoutPositions(this,e,(function(t){return{x:a.x1,y:a.y1}}));else{var o=r.size(),s=Math.sqrt(o*a.h/a.w),c=Math.round(s),u=Math.round(a.w/a.h*s),l=function(t){if(null==t)return Math.min(c,u);Math.min(c,u)==c?c=t:u=t},h=function(t){if(null==t)return Math.max(c,u);Math.max(c,u)==c?c=t:u=t},f=e.rows,d=null!=e.cols?e.cols:e.columns;if(null!=f&&null!=d)c=f,u=d;else if(null!=f&&null==d)c=f,u=Math.ceil(o/c);else if(null==f&&null!=d)u=d,c=Math.ceil(o/u);else if(u*c>o){var g=l(),p=h();(g-1)*p>=o?l(g-1):(p-1)*g>=o&&h(p-1)}else for(;u*c=o?h(w+1):l(b+1)}var m=a.w/u,y=a.h/c;if(e.condense&&(m=0,y=0),e.avoidOverlap)for(var v=0;v=u&&(D=0,M++)},L={},N=0;N(i=Zn(t,e,v[x],v[x+1],v[x+2],v[x+3])))return b(n,i),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(v=a.allpts,x=0;x+5(i=Yn(t,e,v[x],v[x+1],v[x+2],v[x+3],v[x+4],v[x+5])))return b(n,i),!0;m=m||r.source,y=y||r.target;var k=o.getArrowWidth(c,l),_=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(x=0;x<_.length;x++){var A=_[x],E=s.arrowShapes[n.pstyle(A.name+"-arrow-shape").value],T=n.pstyle("width").pfValue;if(E.roughCollide(t,e,k,A.angle,{x:A.x,y:A.y},T,f)&&E.collide(t,e,k,A.angle,{x:A.x,y:A.y},T,f))return b(n),!0}h&&u.length>0&&(w(m),w(y))}function y(t,e,n){return Re(t,e,n)}function v(n,i){var r,a=n._private,o=g;r=i?i+"-":"",n.boundingBox();var s=a.labelBounds[i||"main"],c=n.pstyle(r+"label").value;if("yes"===n.pstyle("text-events").strValue&&c){var u=y(a.rscratch,"labelX",i),l=y(a.rscratch,"labelY",i),h=y(a.rscratch,"labelAngle",i),f=n.pstyle(r+"text-margin-x").pfValue,d=n.pstyle(r+"text-margin-y").pfValue,p=s.x1-o-f,w=s.x2+o-f,m=s.y1-o-d,v=s.y2+o-d;if(h){var x=Math.cos(h),k=Math.sin(h),_=function(t,e){return{x:(t-=u)*x-(e-=l)*k+u,y:t*k+e*x+l}},A=_(p,m),E=_(p,v),T=_(w,m),C=_(w,v),S=[A.x+f,A.y+d,T.x+f,T.y+d,C.x+f,C.y+d,E.x+f,E.y+d];if(Wn(t,e,S))return b(n),!0}else if(Rn(s,t,e))return b(n),!0}}n&&(c=c.interactive);for(var x=c.length-1;x>=0;x--){var k=c[x];k.isNode()?w(k)||v(k):m(k)||v(k)||v(k,"source")||v(k,"target")}return u},getAllInBox:function(t,e,n,i){for(var r=this.getCachedZSortedEles().interactive,a=[],o=Math.min(t,n),s=Math.max(t,n),c=Math.min(e,i),u=Math.max(e,i),l=In({x1:t=o,y1:e=c,x2:n=s,y2:i=u}),h=0;h0?Math.max(t-e,0):Math.min(t+e,0)},S=C(E,_),I=C(T,A),M=!1;w===u?b=Math.abs(S)>Math.abs(I)?r:i:w===c||w===s?(b=i,M=!0):w!==a&&w!==o||(b=r,M=!0);var D,O=b===i,L=O?I:S,N=O?T:E,P=xn(N),B=!1;M&&(y||x)||!(w===s&&N<0||w===c&&N>0||w===a&&N>0||w===o&&N<0)||(L=(P*=-1)*Math.abs(L),B=!0);var F=function(t){return Math.abs(t)=Math.abs(L)},R=F(D=y?(v<0?1+v:v)*L:(v<0?L:0)+v*P),j=F(Math.abs(L)-Math.abs(D));if(!R&&!j||B)if(O){var $=l.y1+D+(p?f/2*P:0),z=l.x1,q=l.x2;n.segpts=[z,$,q,$]}else{var H=l.x1+D+(p?h/2*P:0),U=l.y1,G=l.y2;n.segpts=[H,U,H,G]}else if(O){var Y=Math.abs(N)<=f/2,Z=Math.abs(E)<=d/2;if(Y){var W=(l.x1+l.x2)/2,K=l.y1,X=l.y2;n.segpts=[W,K,W,X]}else if(Z){var V=(l.y1+l.y2)/2,Q=l.x1,J=l.x2;n.segpts=[Q,V,J,V]}else n.segpts=[l.x1,l.y2]}else{var tt=Math.abs(N)<=h/2,et=Math.abs(T)<=g/2;if(tt){var nt=(l.y1+l.y2)/2,it=l.x1,rt=l.x2;n.segpts=[it,nt,rt,nt]}else if(et){var at=(l.x1+l.x2)/2,ot=l.y1,st=l.y2;n.segpts=[at,ot,at,st]}else n.segpts=[l.x2,l.y1]}},oh.tryToCorrectInvalidPoints=function(t,e){var n=t._private.rscratch;if("bezier"===n.edgeType){var i=e.srcPos,r=e.tgtPos,a=e.srcW,o=e.srcH,s=e.tgtW,c=e.tgtH,u=e.srcShape,l=e.tgtShape,h=!A(n.startX)||!A(n.startY),f=!A(n.arrowStartX)||!A(n.arrowStartY),d=!A(n.endX)||!A(n.endY),g=!A(n.arrowEndX)||!A(n.arrowEndY),p=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth*3,b=kn({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=bf.poolIndex()){var d=h;h=f,f=d}var g=s.srcPos=h.position(),p=s.tgtPos=f.position(),b=s.srcW=h.outerWidth(),w=s.srcH=h.outerHeight(),m=s.tgtW=f.outerWidth(),y=s.tgtH=f.outerHeight(),v=s.srcShape=n.nodeShapes[e.getNodeShape(h)],x=s.tgtShape=n.nodeShapes[e.getNodeShape(f)];s.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var k=0;k0){var q=u,H=_n(q,dn(e)),U=_n(q,dn(z)),G=H;U2&&_n(q,{x:z[2],y:z[3]})0){var rt=l,at=_n(rt,dn(e)),ot=_n(rt,dn(it)),st=at;ot2&&_n(rt,{x:it[2],y:it[3]})=u||m){l={cp:p,segment:w};break}}if(l)break}var y=l.cp,v=l.segment,x=(u-f)/v.length,k=v.t1-v.t0,_=s?v.t0+k*x:v.t1-k*x;_=Sn(0,_,1),e=Tn(y.p0,y.p1,y.p2,_),r=gh(y.p0,y.p1,y.p2,_);break;case"straight":case"segments":case"haystack":for(var A,E,T,C,S=0,I=i.allpts.length,M=0;M+3=u));M+=2);var D=(u-E)/A;D=Sn(0,D,1),e=Cn(T,C,D),r=dh(T,C)}o("labelX",n,e.x),o("labelY",n,e.y),o("labelAutoAngle",n,r)}};u("source"),u("target"),this.applyLabelDimensions(t)}},hh.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},hh.applyPrefixedLabelDimensions=function(t,e){var n=t._private,i=this.getLabelText(t,e),r=this.calculateLabelDimensions(t,i),a=t.pstyle("line-height").pfValue,o=t.pstyle("text-wrap").strValue,s=Re(n.rscratch,"labelWrapCachedLines",e)||[],c="wrap"!==o?1:Math.max(s.length,1),u=r.height/c,l=u*a,h=r.width,f=r.height+(c-1)*(a-1)*u;je(n.rstyle,"labelWidth",e,h),je(n.rscratch,"labelWidth",e,h),je(n.rstyle,"labelHeight",e,f),je(n.rscratch,"labelHeight",e,f),je(n.rscratch,"labelLineHeight",e,l)},hh.getLabelText=function(t,e){var n=t._private,i=e?e+"-":"",r=t.pstyle(i+"label").strValue,a=t.pstyle("text-transform").value,o=function(t,i){return i?(je(n.rscratch,t,e,i),i):Re(n.rscratch,t,e)};if(!r)return"";"none"==a||("uppercase"==a?r=r.toUpperCase():"lowercase"==a&&(r=r.toLowerCase()));var s=t.pstyle("text-wrap").value;if("wrap"===s){var c=o("labelKey");if(null!=c&&o("labelWrapKey")===c)return o("labelWrapCachedText");for(var u="​",l=r.split("\n"),h=t.pstyle("text-max-width").pfValue,f="anywhere"===t.pstyle("text-overflow-wrap").value,d=[],g=/[\s\u200b]+/,p=f?"":" ",b=0;bh){for(var v=w.split(g),x="",k=0;kE);I++)T+=r[I],I===r.length-1&&(S=!0);return S||(T+=C),T}return r},hh.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,n=t.pstyle("text-halign").strValue;if("auto"!==e)return e;if(!t.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},hh.calculateLabelDimensions=function(t,e){var n=this,i=ge(e,t._private.labelDimsKey),r=n.labelDimCache||(n.labelDimCache=[]),a=r[i];if(null!=a)return a;var o=0,s=t.pstyle("font-style").strValue,c=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,l=t.pstyle("font-weight").strValue,h=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=document.createElement("canvas"),f=this.labelCalcCanvasContext=h.getContext("2d");var d=h.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}f.font="".concat(s," ").concat(l," ").concat(c,"px ").concat(u);for(var g=0,p=0,b=e.split("\n"),w=0;w1&&void 0!==arguments[1])||arguments[1];if(e.merge(t),n)for(var i=0;i=t.desktopTapThreshold2}var T=r(e);p&&(t.hoverData.tapholdCancelled=!0);var C=function(){var e=t.hoverData.dragDelta=t.hoverData.dragDelta||[];0===e.length?(e.push(y[0]),e.push(y[1])):(e[0]+=y[0],e[1]+=y[1])};n=!0,i(d,["mousemove","vmousemove","tapdrag"],e,{x:u[0],y:u[1]});var S=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||o.emit({originalEvent:e,type:"boxstart",position:{x:u[0],y:u[1]}}),f[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(3===t.hoverData.which){if(p){var M={originalEvent:e,type:"cxtdrag",position:{x:u[0],y:u[1]}};m?m.emit(M):o.emit(M),t.hoverData.cxtDragged=!0,t.hoverData.cxtOver&&d===t.hoverData.cxtOver||(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:e,type:"cxtdragout",position:{x:u[0],y:u[1]}}),t.hoverData.cxtOver=d,d&&d.emit({originalEvent:e,type:"cxtdragover",position:{x:u[0],y:u[1]}}))}}else if(t.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var D;if(t.hoverData.justStartedPan){var O=t.hoverData.mdownPos;D={x:(u[0]-O[0])*s,y:(u[1]-O[1])*s},t.hoverData.justStartedPan=!1}else D={x:y[0]*s,y:y[1]*s};o.panBy(D),o.emit("dragpan"),t.hoverData.dragged=!0}u=t.projectIntoViewport(e.clientX,e.clientY)}else if(1!=f[4]||null!=m&&!m.pannable()){if(m&&m.pannable()&&m.active()&&m.unactivate(),m&&m.grabbed()||d==w||(w&&i(w,["mouseout","tapdragout"],e,{x:u[0],y:u[1]}),d&&i(d,["mouseover","tapdragover"],e,{x:u[0],y:u[1]}),t.hoverData.last=d),m)if(p){if(o.boxSelectionEnabled()&&T)m&&m.grabbed()&&(b(v),m.emit("freeon"),v.emit("free"),t.dragData.didDrag&&(m.emit("dragfreeon"),v.emit("dragfree"))),S();else if(m&&m.grabbed()&&t.nodeIsDraggable(m)){var L=!t.dragData.didDrag;L&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||g(v,{inDragLayer:!0});var N={x:0,y:0};if(A(y[0])&&A(y[1])&&(N.x+=y[0],N.y+=y[1],L)){var P=t.hoverData.dragDelta;P&&A(P[0])&&A(P[1])&&(N.x+=P[0],N.y+=P[1])}t.hoverData.draggingEles=!0,v.silentShift(N).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else C();n=!0}else p&&(t.hoverData.dragging||!o.boxSelectionEnabled()||!T&&o.panningEnabled()&&o.userPanningEnabled()?!t.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()&&a(m,t.hoverData.downs)&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,f[4]=0,t.data.bgActivePosistion=dn(l),t.redrawHint("select",!0),t.redraw()):S(),m&&m.pannable()&&m.active()&&m.unactivate());return f[2]=u[0],f[3]=u[1],n?(e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),!1):void 0}}),!1),t.registerBinding(e,"mouseup",(function(e){if(t.hoverData.capture){t.hoverData.capture=!1;var a=t.cy,o=t.projectIntoViewport(e.clientX,e.clientY),s=t.selection,c=t.findNearestElement(o[0],o[1],!0,!1),u=t.dragData.possibleDragElements,l=t.hoverData.down,h=r(e);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,l&&l.unactivate(),3===t.hoverData.which){var f={originalEvent:e,type:"cxttapend",position:{x:o[0],y:o[1]}};if(l?l.emit(f):a.emit(f),!t.hoverData.cxtDragged){var d={originalEvent:e,type:"cxttap",position:{x:o[0],y:o[1]}};l?l.emit(d):a.emit(d)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(1===t.hoverData.which){if(i(c,["mouseup","tapend","vmouseup"],e,{x:o[0],y:o[1]}),t.dragData.didDrag||t.hoverData.dragged||t.hoverData.selecting||t.hoverData.isOverThresholdDrag||(i(l,["click","tap","vclick"],e,{x:o[0],y:o[1]}),T=!1,e.timeStamp-C<=a.multiClickDebounceTime()?(E&&clearTimeout(E),T=!0,C=null,i(l,["dblclick","dbltap","vdblclick"],e,{x:o[0],y:o[1]})):(E=setTimeout((function(){T||i(l,["oneclick","onetap","voneclick"],e,{x:o[0],y:o[1]})}),a.multiClickDebounceTime()),C=e.timeStamp)),null!=l||t.dragData.didDrag||t.hoverData.selecting||t.hoverData.dragged||r(e)||(a.$(n).unselect(["tapunselect"]),u.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=u=a.collection()),c!=l||t.dragData.didDrag||t.hoverData.selecting||null!=c&&c._private.selectable&&(t.hoverData.dragging||("additive"===a.selectionType()||h?c.selected()?c.unselect(["tapunselect"]):c.select(["tapselect"]):h||(a.$(n).unmerge(c).unselect(["tapunselect"]),c.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var g=a.collection(t.getAllInBox(s[0],s[1],s[2],s[3]));t.redrawHint("select",!0),g.length>0&&t.redrawHint("eles",!0),a.emit({type:"boxend",originalEvent:e,position:{x:o[0],y:o[1]}});var p=function(t){return t.selectable()&&!t.selected()};"additive"===a.selectionType()||h||a.$(n).unmerge(g).unselect(),g.emit("box").stdFilter(p).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!s[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var w=l&&l.grabbed();b(u),w&&(l.emit("freeon"),u.emit("free"),t.dragData.didDrag&&(l.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}}),!1);var M,D,O,L,N,P,B,F,R,j,$,z,q,H=function(e){if(!t.scrollingPage){var n=t.cy,i=n.zoom(),r=n.pan(),a=t.projectIntoViewport(e.clientX,e.clientY),o=[a[0]*i+r.x,a[1]*i+r.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||S())e.preventDefault();else if(n.panningEnabled()&&n.userPanningEnabled()&&n.zoomingEnabled()&&n.userZoomingEnabled()){var s;e.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout((function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()}),150),s=null!=e.deltaY?e.deltaY/-250:null!=e.wheelDeltaY?e.wheelDeltaY/1e3:e.wheelDelta/1e3,s*=t.wheelSensitivity,1===e.deltaMode&&(s*=33);var c=n.zoom()*Math.pow(10,s);"gesturechange"===e.type&&(c=t.gestureStartZoom*e.scale),n.zoom({level:c,renderedPosition:{x:o[0],y:o[1]}}),n.emit("gesturechange"===e.type?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",H,!0),t.registerBinding(e,"scroll",(function(e){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout((function(){t.scrollingPage=!1}),250)}),!0),t.registerBinding(t.container,"gesturestart",(function(e){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||e.preventDefault()}),!0),t.registerBinding(t.container,"gesturechange",(function(e){t.hasTouchStarted||H(e)}),!0),t.registerBinding(t.container,"mouseout",(function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),t.registerBinding(t.container,"mouseover",(function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var U,G,Y,Z,W,K,X,V=function(t,e,n,i){return Math.sqrt((n-t)*(n-t)+(i-e)*(i-e))},Q=function(t,e,n,i){return(n-t)*(n-t)+(i-e)*(i-e)};if(t.registerBinding(t.container,"touchstart",U=function(e){if(t.hasTouchStarted=!0,I(e)){m(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var n=t.cy,r=t.touchData.now,a=t.touchData.earlier;if(e.touches[0]){var o=t.projectIntoViewport(e.touches[0].clientX,e.touches[0].clientY);r[0]=o[0],r[1]=o[1]}if(e.touches[1]&&(o=t.projectIntoViewport(e.touches[1].clientX,e.touches[1].clientY),r[2]=o[0],r[3]=o[1]),e.touches[2]&&(o=t.projectIntoViewport(e.touches[2].clientX,e.touches[2].clientY),r[4]=o[0],r[5]=o[1]),e.touches[1]){t.touchData.singleTouchMoved=!0,b(t.dragData.touchDragEles);var s=t.findContainerClientCoords();R=s[0],j=s[1],$=s[2],z=s[3],M=e.touches[0].clientX-R,D=e.touches[0].clientY-j,O=e.touches[1].clientX-R,L=e.touches[1].clientY-j,q=0<=M&&M<=$&&0<=O&&O<=$&&0<=D&&D<=z&&0<=L&&L<=z;var c=n.pan(),u=n.zoom();N=V(M,D,O,L),P=Q(M,D,O,L),F=[((B=[(M+O)/2,(D+L)/2])[0]-c.x)/u,(B[1]-c.y)/u];var h=200;if(P=1){for(var _=t.touchData.startPosition=[null,null,null,null,null,null],A=0;A=t.touchTapThreshold2}if(n&&t.touchData.cxt){e.preventDefault();var v=e.touches[0].clientX-R,x=e.touches[0].clientY-j,k=e.touches[1].clientX-R,_=e.touches[1].clientY-j,E=Q(v,x,k,_),T=150,C=1.5;if(E/P>=C*C||E>=T*T){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var S={originalEvent:e,type:"cxttapend",position:{x:s[0],y:s[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(S),t.touchData.start=null):o.emit(S)}}if(n&&t.touchData.cxt){S={originalEvent:e,type:"cxtdrag",position:{x:s[0],y:s[1]}},t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(S):o.emit(S),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var B=t.findNearestElement(s[0],s[1],!0,!0);t.touchData.cxtOver&&B===t.touchData.cxtOver||(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:e,type:"cxtdragout",position:{x:s[0],y:s[1]}}),t.touchData.cxtOver=B,B&&B.emit({originalEvent:e,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(n&&e.touches[2]&&o.boxSelectionEnabled())e.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||o.emit({originalEvent:e,type:"boxstart",position:{x:s[0],y:s[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,r[4]=1,r&&0!==r.length&&void 0!==r[0]?(r[2]=(s[0]+s[2]+s[4])/3,r[3]=(s[1]+s[3]+s[5])/3):(r[0]=(s[0]+s[2]+s[4])/3,r[1]=(s[1]+s[3]+s[5])/3,r[2]=(s[0]+s[2]+s[4])/3+1,r[3]=(s[1]+s[3]+s[5])/3+1),t.redrawHint("select",!0),t.redraw();else if(n&&e.touches[1]&&!t.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(e.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),nt=t.dragData.touchDragEles){t.redrawHint("drag",!0);for(var $=0;$0&&!t.hoverData.draggingEles&&!t.swipePanning&&null!=t.data.bgActivePosistion&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1),t.registerBinding(e,"touchcancel",Y=function(e){var n=t.touchData.start;t.touchData.capture=!1,n&&n.unactivate()}),t.registerBinding(e,"touchend",Z=function(e){var r=t.touchData.start;if(t.touchData.capture){0===e.touches.length&&(t.touchData.capture=!1),e.preventDefault();var a=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var o,s=t.cy,c=s.zoom(),u=t.touchData.now,l=t.touchData.earlier;if(e.touches[0]){var h=t.projectIntoViewport(e.touches[0].clientX,e.touches[0].clientY);u[0]=h[0],u[1]=h[1]}if(e.touches[1]&&(h=t.projectIntoViewport(e.touches[1].clientX,e.touches[1].clientY),u[2]=h[0],u[3]=h[1]),e.touches[2]&&(h=t.projectIntoViewport(e.touches[2].clientX,e.touches[2].clientY),u[4]=h[0],u[5]=h[1]),r&&r.unactivate(),t.touchData.cxt){if(o={originalEvent:e,type:"cxttapend",position:{x:u[0],y:u[1]}},r?r.emit(o):s.emit(o),!t.touchData.cxtDragged){var f={originalEvent:e,type:"cxttap",position:{x:u[0],y:u[1]}};r?r.emit(f):s.emit(f)}return t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,void t.redraw()}if(!e.touches[2]&&s.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var d=s.collection(t.getAllInBox(a[0],a[1],a[2],a[3]));a[0]=void 0,a[1]=void 0,a[2]=void 0,a[3]=void 0,a[4]=0,t.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:e,position:{x:u[0],y:u[1]}});var g=function(t){return t.selectable()&&!t.selected()};d.emit("box").stdFilter(g).select().emit("boxselect"),d.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(null!=r&&r.unactivate(),e.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(e.touches[1]);else if(e.touches[0]);else if(!e.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var p=t.dragData.touchDragEles;if(null!=r){var w=r._private.grabbed;b(p),t.redrawHint("drag",!0),t.redrawHint("eles",!0),w&&(r.emit("freeon"),p.emit("free"),t.dragData.didDrag&&(r.emit("dragfreeon"),p.emit("dragfree"))),i(r,["touchend","tapend","vmouseup","tapdragout"],e,{x:u[0],y:u[1]}),r.unactivate(),t.touchData.start=null}else{var m=t.findNearestElement(u[0],u[1],!0,!0);i(m,["touchend","tapend","vmouseup","tapdragout"],e,{x:u[0],y:u[1]})}var y=t.touchData.startPosition[0]-u[0],v=y*y,x=t.touchData.startPosition[1]-u[1],k=(v+x*x)*c*c;t.touchData.singleTouchMoved||(r||s.$(":selected").unselect(["tapunselect"]),i(r,["tap","vclick"],e,{x:u[0],y:u[1]}),W=!1,e.timeStamp-X<=s.multiClickDebounceTime()?(K&&clearTimeout(K),W=!0,X=null,i(r,["dbltap","vdblclick"],e,{x:u[0],y:u[1]})):(K=setTimeout((function(){W||i(r,["onetap","voneclick"],e,{x:u[0],y:u[1]})}),s.multiClickDebounceTime()),X=e.timeStamp)),null!=r&&!t.dragData.didDrag&&r._private.selectable&&k0)return d[0]}return null},f=Object.keys(l),d=0;d0?c:zn(r,a,t,e,n,i,o)},checkPoint:function(t,e,n,i,r,a,o){var s=li(i,r),c=2*s;if(Kn(t,e,this.points,a,o,i,r-c,[0,-1],n))return!0;if(Kn(t,e,this.points,a,o,i-c,r,[0,-1],n))return!0;var u=i/2+2*n,l=r/2+2*n;return!!Wn(t,e,[a-u,o-l,a-u,o,a+u,o,a+u,o-l])||!!ti(t,e,c,c,a+i/2-s,o+r/2-s,n)||!!ti(t,e,c,c,a-i/2+s,o+r/2-s,n)}}},registerNodeShapes:function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",si(3,0)),this.generateRoundPolygon("round-triangle",si(3,0)),this.generatePolygon("rectangle",si(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",si(5,0)),this.generateRoundPolygon("round-pentagon",si(5,0)),this.generatePolygon("hexagon",si(6,0)),this.generateRoundPolygon("round-hexagon",si(6,0)),this.generatePolygon("heptagon",si(7,0)),this.generateRoundPolygon("round-heptagon",si(7,0)),this.generatePolygon("octagon",si(8,0)),this.generateRoundPolygon("round-octagon",si(8,0));var i=new Array(20),r=ui(5,0),a=ui(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=t.deqFastCost*p)break}else if(r){if(d>=t.deqCost*c||d>=t.deqAvgCost*s)break}else if(g>=t.deqNoDrawCost*Sh)break;var b=t.deq(e,h,l);if(!(b.length>0))break;for(var w=0;w0&&(t.onDeqd(e,u),!r&&t.shouldRedraw(e,u,h,l)&&i())},a=t.priority||Ae;n.beforeRender(r,a(e))}}}},Mh=function(){function t(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ke;e(this,t),this.idsByKey=new ze,this.keyForId=new ze,this.cachesByLvl=new ze,this.lvls=[],this.getKey=n,this.doesEleInvalidateKey=i}return r(t,[{key:"getIdsFor",value:function(t){null==t&&Ee("Can not get id list for null key");var e=this.idsByKey,n=this.idsByKey.get(t);return n||(n=new Ue,e.set(t,n)),n}},{key:"addIdForKey",value:function(t,e){null!=t&&this.getIdsFor(t).add(e)}},{key:"deleteIdForKey",value:function(t,e){null!=t&&this.getIdsFor(t).delete(e)}},{key:"getNumberOfIdsForKey",value:function(t){return null==t?0:this.getIdsFor(t).size}},{key:"updateKeyMappingFor",value:function(t){var e=t.id(),n=this.keyForId.get(e),i=this.getKey(t);this.deleteIdForKey(n,e),this.addIdForKey(i,e),this.keyForId.set(e,i)}},{key:"deleteKeyMappingFor",value:function(t){var e=t.id(),n=this.keyForId.get(e);this.deleteIdForKey(n,e),this.keyForId.delete(e)}},{key:"keyHasChangedFor",value:function(t){var e=t.id();return this.keyForId.get(e)!==this.getKey(t)}},{key:"isInvalid",value:function(t){return this.keyHasChangedFor(t)||this.doesEleInvalidateKey(t)}},{key:"getCachesAt",value:function(t){var e=this.cachesByLvl,n=this.lvls,i=e.get(t);return i||(i=new ze,e.set(t,i),n.push(t)),i}},{key:"getCache",value:function(t,e){return this.getCachesAt(e).get(t)}},{key:"get",value:function(t,e){var n=this.getKey(t),i=this.getCache(n,e);return null!=i&&this.updateKeyMappingFor(t),i}},{key:"getForCachedKey",value:function(t,e){var n=this.keyForId.get(t.id());return this.getCache(n,e)}},{key:"hasCache",value:function(t,e){return this.getCachesAt(e).has(t)}},{key:"has",value:function(t,e){var n=this.getKey(t);return this.hasCache(n,e)}},{key:"setCache",value:function(t,e,n){n.key=t,this.getCachesAt(e).set(t,n)}},{key:"set",value:function(t,e,n){var i=this.getKey(t);this.setCache(i,e,n),this.updateKeyMappingFor(t)}},{key:"deleteCache",value:function(t,e){this.getCachesAt(e).delete(t)}},{key:"delete",value:function(t,e){var n=this.getKey(t);this.deleteCache(n,e)}},{key:"invalidateKey",value:function(t){var e=this;this.lvls.forEach((function(n){return e.deleteCache(t,n)}))}},{key:"invalidate",value:function(t){var e=t.id(),n=this.keyForId.get(e);this.deleteKeyMappingFor(t);var i=this.doesEleInvalidateKey(t);return i&&this.invalidateKey(n),i||0===this.getNumberOfIdsForKey(n)}}]),t}(),Dh=25,Oh=50,Lh=-4,Nh=3,Ph=7.99,Bh=8,Fh=1024,Rh=1024,jh=1024,$h=.2,zh=.8,qh=10,Hh=.15,Uh=.1,Gh=.9,Yh=.9,Zh=100,Wh=1,Kh={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Xh=Ne({getKey:null,doesEleInvalidateKey:ke,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:xe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Vh=function(t,e){var n=this;n.renderer=t,n.onDequeues=[];var i=Xh(e);Q(n,i),n.lookup=new Mh(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},Qh=Vh.prototype;Qh.reasons=Kh,Qh.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},Qh.getRetiredTextureQueue=function(t){var e=this,n=e.eleImgCaches.retired=e.eleImgCaches.retired||{};return n[t]=n[t]||[]},Qh.getElementQueue=function(){var t=this;return t.eleCacheQueue=t.eleCacheQueue||new Ke((function(t,e){return e.reqs-t.reqs}))},Qh.getElementKeyToQueue=function(){var t=this;return t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{}},Qh.getElement=function(t,e,n,i,r){var a=this,o=this.renderer,s=o.cy.zoom(),c=this.lookup;if(!e||0===e.w||0===e.h||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed())return null;if(!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(null==i&&(i=Math.ceil(vn(s*n))),i=Ph||i>Nh)return null;var u=Math.pow(2,i),l=e.h*u,h=e.w*u,f=o.eleTextBiggerThanMin(t,u);if(!this.isVisible(t,f))return null;var d,g=c.get(t,i);if(g&&g.invalidated&&(g.invalidated=!1,g.texture.invalidatedWidth-=g.width),g)return g;if(d=l<=Dh?Dh:l<=Oh?Oh:Math.ceil(l/Oh)*Oh,l>jh||h>Rh)return null;var p=a.getTextureQueue(d),b=p[p.length-2],w=function(){return a.recycleTexture(d,h)||a.addTexture(d,h)};b||(b=p[p.length-1]),b||(b=w()),b.width-b.usedWidthi;C--)E=a.getElement(t,e,n,C,Kh.downscale);T()}else{var S;if(!v&&!x&&!k)for(var I=i-1;I>=Lh;I--){var M=c.get(t,I);if(M){S=M;break}}if(y(S))return a.queueElement(t,i),S;b.context.translate(b.usedWidth,0),b.context.scale(u,u),this.drawElement(b.context,t,e,f,!1),b.context.scale(1/u,1/u),b.context.translate(-b.usedWidth,0)}return g={x:b.usedWidth,texture:b,level:i,scale:u,width:h,height:l,scaledLabelShown:f},b.usedWidth+=Math.ceil(h+Bh),b.eleCaches.push(g),c.set(t,i,g),a.checkTextureFullness(b),g},Qh.invalidateElements=function(t){for(var e=0;e=$h*t.width&&this.retireTexture(t)},Qh.checkTextureFullness=function(t){var e=this.getTextureQueue(t.height);t.usedWidth/t.width>zh&&t.fullnessChecks>=qh?Pe(e,t):t.fullnessChecks++},Qh.retireTexture=function(t){var e=this,n=t.height,i=e.getTextureQueue(n),r=this.lookup;Pe(i,t),t.retired=!0;for(var a=t.eleCaches,o=0;o=e)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,Be(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),Pe(r,o),i.push(o),o}},Qh.queueElement=function(t,e){var n=this,i=n.getElementQueue(),r=n.getElementKeyToQueue(),a=this.getKey(t),o=r[a];if(o)o.level=Math.max(o.level,e),o.eles.merge(t),o.reqs++,i.updateItem(o);else{var s={eles:t.spawn().merge(t),level:e,reqs:1,key:a};i.push(s),r[a]=s}},Qh.dequeue=function(t){for(var e=this,n=e.getElementQueue(),i=e.getElementKeyToQueue(),r=[],a=e.lookup,o=0;o0;o++){var s=n.pop(),c=s.key,u=s.eles[0],l=a.hasCache(u,s.level);if(i[c]=null,!l){r.push(s);var h=e.getBoundingBox(u);e.getElement(u,h,t,s.level,Kh.dequeue)}}return r},Qh.removeFromQueue=function(t){var e=this,n=e.getElementQueue(),i=e.getElementKeyToQueue(),r=this.getKey(t),a=i[r];null!=a&&(1===a.eles.length?(a.reqs=ve,n.updateItem(a),n.pop(),i[r]=null):a.eles.unmerge(t))},Qh.onDequeue=function(t){this.onDequeues.push(t)},Qh.offDequeue=function(t){Pe(this.onDequeues,t)},Qh.setupDequeueing=Ih.setupDequeueing({deqRedrawThreshold:Zh,deqCost:Hh,deqAvgCost:Uh,deqNoDrawCost:Gh,deqFastCost:Yh,deq:function(t,e,n){return t.dequeue(e,n)},onDeqd:function(t,e){for(var n=0;n=nf||n>ef)return null;i.validateLayersElesOrdering(n,t);var o,s,c=i.layersByLevel,u=Math.pow(2,n),l=c[n]=c[n]||[],h=function(){var e=function(e){if(i.validateLayersElesOrdering(e,t),i.levelIsComplete(e,t))return s=c[e],!0},r=function(t){if(!s)for(var i=n+t;tf<=i&&i<=ef&&!e(i);i+=t);};r(1),r(-1);for(var a=l.length-1;a>=0;a--){var o=l[a];o.invalid&&Pe(l,o)}};if(i.levelIsComplete(n,t))return l;h();var f=function(){if(!o){o=In();for(var e=0;eff)return null;var r=i.makeLayer(o,n);if(null!=e){var a=l.indexOf(e)+1;l.splice(a,0,r)}else(void 0===t.insert||t.insert)&&l.unshift(r);return r};if(i.skipping&&!a)return null;for(var g=null,p=t.length/Jh,b=!a,w=0;w=p||!$n(g.bb,m.boundingBox()))&&!(g=d({insert:!0,after:g})))return null;s||b?i.queueLayer(g,m):i.drawEleInLayer(g,m,n,e),g.eles.push(m),v[n]=g}}return s||(b?null:l)},pf.getEleLevelForLayerLevel=function(t,e){return t},pf.drawEleInLayer=function(t,e,n,i){var r=this,a=this.renderer,o=t.context,s=e.boundingBox();0!==s.w&&0!==s.h&&e.visible()&&(n=r.getEleLevelForLayerLevel(n,i),a.setImgSmoothing(o,!1),a.drawCachedElement(o,e,null,null,n,df),a.setImgSmoothing(o,!0))},pf.levelIsComplete=function(t,e){var n=this.layersByLevel[t];if(!n||0===n.length)return!1;for(var i=0,r=0;r0)return!1;if(a.invalid)return!1;i+=a.eles.length}return i===e.length},pf.validateLayersElesOrdering=function(t,e){var n=this.layersByLevel[t];if(n)for(var i=0;i0){e=!0;break}}return e},pf.invalidateElements=function(t){var e=this;0!==t.length&&(e.lastInvalidationTime=ie(),0!==t.length&&e.haveLayers()&&e.updateElementsInLayers(t,(function(t,n,i){e.invalidateLayer(t)})))},pf.invalidateLayer=function(t){if(this.lastInvalidationTime=ie(),!t.invalid){var e=t.level,n=t.eles,i=this.layersByLevel[e];Pe(i,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var r=0;r3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=e._private.rscratch;if((!a||e.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var c;n&&(c=n,t.translate(-c.x1,-c.y1));var u=a?e.pstyle("opacity").value:1,l=a?e.pstyle("line-opacity").value:1,h=e.pstyle("curve-style").value,f=e.pstyle("line-style").value,d=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,p=u*l,b=u*l,w=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p;"straight-triangle"===h?(o.eleStrokeStyle(t,e,n),o.drawEdgeTrianglePath(e,t,s.allpts)):(t.lineWidth=d,t.lineCap=g,o.eleStrokeStyle(t,e,n),o.drawEdgePath(e,t,s.allpts,f),t.lineCap="butt")},m=function(){r&&o.drawEdgeOverlay(t,e)},y=function(){r&&o.drawEdgeUnderlay(t,e)},v=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;o.drawArrowheads(t,e,n)},x=function(){o.drawElementText(t,e,null,i)};if(t.lineJoin="round","yes"===e.pstyle("ghost").value){var k=e.pstyle("ghost-offset-x").pfValue,_=e.pstyle("ghost-offset-y").pfValue,A=e.pstyle("ghost-opacity").value,E=p*A;t.translate(k,_),w(E),v(E),t.translate(-k,-_)}y(),w(),v(),m(),x(),n&&t.translate(c.x1,c.y1)}}},Lf=function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(e,n){if(n.visible()){var i=n.pstyle("".concat(t,"-opacity")).value;if(0!==i){var r=this,a=r.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(t,"-padding")).pfValue,c=n.pstyle("".concat(t,"-color")).value;e.lineWidth=s,"self"!==o.edgeType||a?e.lineCap="round":e.lineCap="butt",r.colorStrokeStyle(e,c[0],c[1],c[2],i),r.drawEdgePath(n,e,o.allpts,"solid")}}}};Of.drawEdgeOverlay=Lf("overlay"),Of.drawEdgeUnderlay=Lf("underlay"),Of.drawEdgePath=function(t,e,n,i){var r,a=t._private.rscratch,o=e,s=!1,c=this.usePaths(),u=t.pstyle("line-dash-pattern").pfValue,l=t.pstyle("line-dash-offset").pfValue;if(c){var h=n.join("$");a.pathCacheKey&&a.pathCacheKey===h?(r=e=a.pathCache,s=!0):(r=e=new Path2D,a.pathCacheKey=h,a.pathCache=r)}if(o.setLineDash)switch(i){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash(u),o.lineDashOffset=l;break;case"solid":o.setLineDash([])}if(!s&&!a.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(n[0],n[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5;t.beginPath(),t.moveTo(e+a,n),t.lineTo(e+i-a,n),t.quadraticCurveTo(e+i,n,e+i,n+a),t.lineTo(e+i,n+r-a),t.quadraticCurveTo(e+i,n+r,e+i-a,n+r),t.lineTo(e+a,n+r),t.quadraticCurveTo(e,n+r,e,n+r-a),t.lineTo(e,n+a),t.quadraticCurveTo(e,n,e+a,n),t.closePath(),t.fill()}Pf.eleTextBiggerThanMin=function(t,e){if(!e){var n=t.cy().zoom(),i=this.getPixelRatio(),r=Math.ceil(vn(n*i));e=Math.pow(2,r)}return!(t.pstyle("font-size").pfValue*e5&&void 0!==arguments[5])||arguments[5],o=this;if(null==i){if(a&&!o.eleTextBiggerThanMin(e))return}else if(!1===i)return;if(e.isNode()){var s=e.pstyle("label");if(!s||!s.value)return;var c=o.getLabelJustification(e);t.textAlign=c,t.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,l=e.pstyle("label"),h=e.pstyle("source-label"),f=e.pstyle("target-label");if(u||(!l||!l.value)&&(!h||!h.value)&&(!f||!f.value))return;t.textAlign="center",t.textBaseline="bottom"}var d,g=!n;n&&(d=n,t.translate(-d.x1,-d.y1)),null==r?(o.drawText(t,e,null,g,a),e.isEdge()&&(o.drawText(t,e,"source",g,a),o.drawText(t,e,"target",g,a))):o.drawText(t,e,r,g,a),n&&t.translate(d.x1,d.y1)},Pf.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],i=e.pstyle("font-style").strValue,r=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=n?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,c=e.pstyle("text-outline-opacity").value*s,u=e.pstyle("color").value,l=e.pstyle("text-outline-color").value;t.font=i+" "+o+" "+r+" "+a,t.lineJoin="round",this.colorFillStyle(t,u[0],u[1],u[2],s),this.colorStrokeStyle(t,l[0],l[1],l[2],c)},Pf.getTextAngle=function(t,e){var n=t._private.rscratch,i=e?e+"-":"",r=t.pstyle(i+"text-rotation"),a=Re(n,"labelAngle",e);return"autorotate"===r.strValue?t.isEdge()?a:0:"none"===r.strValue?0:r.pfValue},Pf.drawText=function(t,e,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=e._private.rscratch,o=r?e.effectiveOpacity():1;if(!r||0!==o&&0!==e.pstyle("text-opacity").value){"main"===n&&(n=null);var s,c,u=Re(a,"labelX",n),l=Re(a,"labelY",n),h=this.getLabelText(e,n);if(null!=h&&""!==h&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,r);var f,d=n?n+"-":"",g=Re(a,"labelWidth",n),p=Re(a,"labelHeight",n),b=e.pstyle(d+"text-margin-x").pfValue,w=e.pstyle(d+"text-margin-y").pfValue,m=e.isEdge(),y=e.pstyle("text-halign").value,v=e.pstyle("text-valign").value;switch(m&&(y="center",v="center"),u+=b,l+=w,0!==(f=i?this.getTextAngle(e,n):0)&&(s=u,c=l,t.translate(s,c),t.rotate(f),u=0,l=0),v){case"top":break;case"center":l+=p/2;break;case"bottom":l+=p}var x=e.pstyle("text-background-opacity").value,k=e.pstyle("text-border-opacity").value,_=e.pstyle("text-border-width").pfValue,A=e.pstyle("text-background-padding").pfValue;if(x>0||_>0&&k>0){var E=u-A;switch(y){case"left":E-=g;break;case"center":E-=g/2}var T=l-p-A,C=g+2*A,S=p+2*A;if(x>0){var I=t.fillStyle,M=e.pstyle("text-background-color").value;t.fillStyle="rgba("+M[0]+","+M[1]+","+M[2]+","+x*o+")",0===e.pstyle("text-background-shape").strValue.indexOf("round")?Bf(t,E,T,C,S,2):t.fillRect(E,T,C,S),t.fillStyle=I}if(_>0&&k>0){var D=t.strokeStyle,O=t.lineWidth,L=e.pstyle("text-border-color").value,N=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+k*o+")",t.lineWidth=_,t.setLineDash)switch(N){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=_/4,t.setLineDash([]);break;case"solid":t.setLineDash([])}if(t.strokeRect(E,T,C,S),"double"===N){var P=_/2;t.strokeRect(E+P,T+P,C-2*P,S-2*P)}t.setLineDash&&t.setLineDash([]),t.lineWidth=O,t.strokeStyle=D}}var B=2*e.pstyle("text-outline-width").pfValue;if(B>0&&(t.lineWidth=B),"wrap"===e.pstyle("text-wrap").value){var F=Re(a,"labelWrapCachedLines",n),R=Re(a,"labelLineHeight",n),j=g/2,$=this.getLabelJustification(e);switch("auto"===$||("left"===y?"left"===$?u+=-g:"center"===$&&(u+=-j):"center"===y?"left"===$?u+=-j:"right"===$&&(u+=j):"right"===y&&("center"===$?u+=j:"right"===$&&(u+=g))),v){case"top":case"center":case"bottom":l-=(F.length-1)*R}for(var z=0;z0&&t.strokeText(F[z],u,l),t.fillText(F[z],u,l),l+=R}else B>0&&t.strokeText(h,u,l),t.fillText(h,u,l);0!==f&&(t.rotate(-f),t.translate(-s,-c))}}};var Ff={drawNode:function(t,e,n){var i,r,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],c=this,u=e._private,l=u.rscratch,h=e.position();if(A(h.x)&&A(h.y)&&(!s||e.visible())){var f,d,g=s?e.effectiveOpacity():1,p=c.usePaths(),b=!1,w=e.padding();i=e.width()+2*w,r=e.height()+2*w,n&&(d=n,t.translate(-d.x1,-d.y1));for(var m=e.pstyle("background-image").value,y=new Array(m.length),v=new Array(m.length),x=0,k=0;k0&&void 0!==arguments[0]?arguments[0]:S;c.eleFillStyle(t,e,n)},L=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D;c.colorStrokeStyle(t,I[0],I[1],I[2],e)},N=e.pstyle("shape").strValue,P=e.pstyle("shape-polygon-points").pfValue;if(p){t.translate(h.x,h.y);var B=c.nodePathCache=c.nodePathCache||[],F=pe("polygon"===N?N+","+P.join(","):N,""+r,""+i),R=B[F];null!=R?(f=R,b=!0,l.pathCache=f):(f=new Path2D,B[F]=l.pathCache=f)}var j=function(){if(!b){var n=h;p&&(n={x:0,y:0}),c.nodeShapes[c.getNodeShape(e)].draw(f||t,n.x,n.y,i,r)}p?t.fill(f):t.fill()},$=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=u.backgrounding,a=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g;c.hasPie(e)&&(c.drawPie(t,e,a),n&&(p||c.nodeShapes[c.getNodeShape(e)].draw(t,h.x,h.y,i,r)))},q=function(){var e=(T>0?T:-T)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g),n=T>0?0:255;0!==T&&(c.colorFillStyle(t,n,n,n,e),p?t.fill(f):t.fill())},H=function(){if(C>0){if(t.lineWidth=C,t.lineCap="butt",t.setLineDash)switch(M){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([])}if(p?t.stroke(f):t.stroke(),"double"===M){t.lineWidth=C/3;var e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",p?t.stroke(f):t.stroke(),t.globalCompositeOperation=e}t.setLineDash&&t.setLineDash([])}},U=function(){o&&c.drawNodeOverlay(t,e,h,i,r)},G=function(){o&&c.drawNodeUnderlay(t,e,h,i,r)},Y=function(){c.drawElementText(t,e,null,a)};if("yes"===e.pstyle("ghost").value){var Z=e.pstyle("ghost-offset-x").pfValue,W=e.pstyle("ghost-offset-y").pfValue,K=e.pstyle("ghost-opacity").value,X=K*g;t.translate(Z,W),O(K*S),j(),$(X,!0),L(K*D),H(),z(0!==T||0!==C),$(X,!1),q(X),t.translate(-Z,-W)}p&&t.translate(-h.x,-h.y),G(),p&&t.translate(h.x,h.y),O(),j(),$(g,!0),L(),H(),z(0!==T||0!==C),$(g,!1),q(),p&&t.translate(-h.x,-h.y),Y(),U(),n&&t.translate(d.x1,d.y1)}}},Rf=function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(e,n,i,r,a){var o=this;if(n.visible()){var s=n.pstyle("".concat(t,"-padding")).pfValue,c=n.pstyle("".concat(t,"-opacity")).value,u=n.pstyle("".concat(t,"-color")).value,l=n.pstyle("".concat(t,"-shape")).value;if(c>0){if(i=i||n.position(),null==r||null==a){var h=n.padding();r=n.width()+2*h,a=n.height()+2*h}o.colorFillStyle(e,u[0],u[1],u[2],c),o.nodeShapes[l].draw(e,i.x,i.y,r+2*s,a+2*s),e.fill()}}}};Ff.drawNodeOverlay=Rf("overlay"),Ff.drawNodeUnderlay=Rf("underlay"),Ff.hasPie=function(t){return(t=t[0])._private.hasPie},Ff.drawPie=function(t,e,n,i){e=e[0],i=i||e.position();var r=e.cy().style(),a=e.pstyle("pie-size"),o=i.x,s=i.y,c=e.width(),u=e.height(),l=Math.min(c,u)/2,h=0;this.usePaths()&&(o=0,s=0),"%"===a.units?l*=a.pfValue:void 0!==a.pfValue&&(l=a.pfValue/2);for(var f=1;f<=r.pieBackgroundN;f++){var d=e.pstyle("pie-"+f+"-background-size").value,g=e.pstyle("pie-"+f+"-background-color").value,p=e.pstyle("pie-"+f+"-background-opacity").value*n,b=d/100;b+h>1&&(b=1-h);var w=1.5*Math.PI+2*Math.PI*h,m=w+2*Math.PI*b;0===d||h>=1||h+b>1||(t.beginPath(),t.moveTo(o,s),t.arc(o,s,l,w,m),t.closePath(),this.colorFillStyle(t,g[0],g[1],g[2],p),t.fill(),h+=b)}};var jf={},$f=100;jf.getPixelRatio=function(){var t=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},jf.paintCache=function(t){for(var e,n=this.paintCaches=this.paintCaches||[],i=!0,r=0;ro.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!h&&(l[o.NODE]=!0,l[o.SELECT_BOX]=!0);var m=c.style(),y=c.zoom(),v=void 0!==r?r:y,x=c.pan(),k={x:x.x,y:x.y},_={zoom:y,pan:{x:x.x,y:x.y}},A=o.prevViewport;void 0===A||_.zoom!==A.zoom||_.pan.x!==A.pan.x||_.pan.y!==A.pan.y||p&&!g||(o.motionBlurPxRatio=1),a&&(k=a),v*=s,k.x*=s,k.y*=s;var E=o.getCachedZSortedEles();function T(t,e,n,i,r){var a=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",o.colorFillStyle(t,255,255,255,o.motionBlurTransparency),t.fillRect(e,n,i,r),t.globalCompositeOperation=a}function C(t,i){var s,c,l,h;o.clearingMotionBlur||t!==u.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]&&t!==u.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]?(s=k,c=v,l=o.canvasWidth,h=o.canvasHeight):(s={x:x.x*d,y:x.y*d},c=y*d,l=o.canvasWidth*d,h=o.canvasHeight*d),t.setTransform(1,0,0,1,0,0),"motionBlur"===i?T(t,0,0,l,h):e||void 0!==i&&!i||t.clearRect(0,0,l,h),n||(t.translate(s.x,s.y),t.scale(c,c)),a&&t.translate(a.x,a.y),r&&t.scale(r,r)}if(h||(o.textureDrawLastFrame=!1),h){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=c.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var S=o.data.bufferContexts[o.TEXTURE_BUFFER];S.setTransform(1,0,0,1,0,0),S.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:S,drawOnlyNodeLayer:!0,forcedPxRatio:s*o.textureMult}),(_=o.textureCache.viewport={zoom:c.zoom(),pan:c.pan(),width:o.canvasWidth,height:o.canvasHeight}).mpan={x:(0-_.pan.x)/_.zoom,y:(0-_.pan.y)/_.zoom}}l[o.DRAG]=!1,l[o.NODE]=!1;var I=u.contexts[o.NODE],M=o.textureCache.texture;_=o.textureCache.viewport,I.setTransform(1,0,0,1,0,0),f?T(I,0,0,_.width,_.height):I.clearRect(0,0,_.width,_.height);var D=m.core("outside-texture-bg-color").value,O=m.core("outside-texture-bg-opacity").value;o.colorFillStyle(I,D[0],D[1],D[2],O),I.fillRect(0,0,_.width,_.height),y=c.zoom(),C(I,!1),I.clearRect(_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s),I.drawImage(M,_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s)}else o.textureOnViewport&&!e&&(o.textureCache=null);var L=c.extent(),N=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),P=o.hideEdgesOnViewport&&N,B=[];if(B[o.NODE]=!l[o.NODE]&&f&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,B[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),B[o.DRAG]=!l[o.DRAG]&&f&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,B[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),l[o.NODE]||n||i||B[o.NODE]){var F=f&&!B[o.NODE]&&1!==d;C(I=e||(F?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:u.contexts[o.NODE]),f&&!F?"motionBlur":void 0),P?o.drawCachedNodes(I,E.nondrag,s,L):o.drawLayeredElements(I,E.nondrag,s,L),o.debug&&o.drawDebugPoints(I,E.nondrag),n||f||(l[o.NODE]=!1)}if(!i&&(l[o.DRAG]||n||B[o.DRAG])&&(F=f&&!B[o.DRAG]&&1!==d,C(I=e||(F?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:u.contexts[o.DRAG]),f&&!F?"motionBlur":void 0),P?o.drawCachedNodes(I,E.drag,s,L):o.drawCachedElements(I,E.drag,s,L),o.debug&&o.drawDebugPoints(I,E.drag),n||f||(l[o.DRAG]=!1)),o.showFps||!i&&l[o.SELECT_BOX]&&!n){if(C(I=e||u.contexts[o.SELECT_BOX]),1==o.selection[4]&&(o.hoverData.selecting||o.touchData.selecting)){y=o.cy.zoom();var R=m.core("selection-box-border-width").value/y;I.lineWidth=R,I.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",I.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),R>0&&(I.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",I.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(u.bgActivePosistion&&!o.hoverData.selecting){y=o.cy.zoom();var j=u.bgActivePosistion;I.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",I.beginPath(),I.arc(j.x,j.y,m.core("active-bg-size").pfValue/y,0,2*Math.PI),I.fill()}var $=o.lastRedrawTime;if(o.showFps&&$){$=Math.round($);var z=Math.round(1e3/$);I.setTransform(1,0,0,1,0,0),I.fillStyle="rgba(255, 0, 0, 0.75)",I.strokeStyle="rgba(255, 0, 0, 0.75)",I.lineWidth=1,I.fillText("1 frame = "+$+" ms = "+z+" fps",0,20);var q=60;I.strokeRect(0,30,250,20),I.fillRect(0,30,250*Math.min(z/q,1),20)}n||(l[o.SELECT_BOX]=!1)}if(f&&1!==d){var H=u.contexts[o.NODE],U=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],G=u.contexts[o.DRAG],Y=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],Z=function(t,e,n){t.setTransform(1,0,0,1,0,0),n||!w?t.clearRect(0,0,o.canvasWidth,o.canvasHeight):T(t,0,0,o.canvasWidth,o.canvasHeight);var i=d;t.drawImage(e,0,0,o.canvasWidth*i,o.canvasHeight*i,0,0,o.canvasWidth,o.canvasHeight)};(l[o.NODE]||B[o.NODE])&&(Z(H,U,B[o.NODE]),l[o.NODE]=!1),(l[o.DRAG]||B[o.DRAG])&&(Z(G,Y,B[o.DRAG]),l[o.DRAG]=!1)}o.prevViewport=_,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),f&&(o.motionBlurTimeout=setTimeout((function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!h,o.mbFrames=0,l[o.NODE]=!0,l[o.DRAG]=!0,o.redraw()}),$f)),e||c.emit("render")};for(var zf={drawPolygonPath:function(t,e,n,i,r,a){var o=i/2,s=r/2;t.beginPath&&t.beginPath(),t.moveTo(e+o*a[0],n+s*a[1]);for(var c=1;c0&&a>0){f.clearRect(0,0,r,a),f.globalCompositeOperation="source-over";var d=this.getCachedZSortedEles();if(t.full)f.translate(-n.x1*c,-n.y1*c),f.scale(c,c),this.drawElements(f,d),f.scale(1/c,1/c),f.translate(n.x1*c,n.y1*c);else{var g=e.pan(),p={x:g.x*c,y:g.y*c};c*=e.zoom(),f.translate(p.x,p.y),f.scale(c,c),this.drawElements(f,d),f.scale(1/c,1/c),f.translate(-p.x,-p.y)}t.bg&&(f.globalCompositeOperation="destination-over",f.fillStyle=t.bg,f.rect(0,0,r,a),f.fill())}return h},Wf.png=function(t){return Vf(t,this.bufferCanvasImage(t),"image/png")},Wf.jpg=function(t){return Vf(t,this.bufferCanvasImage(t),"image/jpeg")};var Qf={nodeShapeImpl:function(t,e,n,i,r,a,o){switch(t){case"ellipse":return this.drawEllipsePath(e,n,i,r,a);case"polygon":return this.drawPolygonPath(e,n,i,r,a,o);case"round-polygon":return this.drawRoundPolygonPath(e,n,i,r,a,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,n,i,r,a);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,n,i,r,a);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,n,i,r,a);case"barrel":return this.drawBarrelPath(e,n,i,r,a)}}},Jf=ed,td=ed.prototype;function ed(t){var e=this;e.data={canvases:new Array(td.CANVAS_LAYERS),contexts:new Array(td.CANVAS_LAYERS),canvasNeedsRedraw:new Array(td.CANVAS_LAYERS),bufferCanvases:new Array(td.BUFFER_COUNT),bufferContexts:new Array(td.CANVAS_LAYERS)};var n="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";e.data.canvasContainer=document.createElement("div");var r=e.data.canvasContainer.style;e.data.canvasContainer.style[n]=i,r.position="relative",r.zIndex="0",r.overflow="hidden";var a=t.cy.container();a.appendChild(e.data.canvasContainer),a.style[n]=i;var o={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};F()&&(o["-ms-touch-action"]="none",o["touch-action"]="none");for(var s=0;s=e?t:""+Array(e+1-i.length).join(n)+t},m={s:w,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),i=Math.floor(n/60),r=n%60;return(e<=0?"+":"-")+w(i,2,"0")+":"+w(r,2,"0")},m:function t(e,n){if(e.date()1)return t(o[0])}else{var s=e.name;v[s]=e,r=s}return!i&&r&&(y=r),r||!i&&y},_=function(t,e){if(x(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new E(n)},A=m;A.l=k,A.i=x,A.w=function(t,e){return _(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var E=function(){function b(t){this.$L=k(t.locale,null,!0),this.parse(t)}var w=b.prototype;return w.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(A.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(g);if(i){var r=i[2]-1||0,a=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},w.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},w.$utils=function(){return A},w.isValid=function(){return!(this.$d.toString()===d)},w.isSame=function(t,e){var n=_(t);return this.startOf(e)<=n&&n<=this.endOf(e)},w.isAfter=function(t,e){return _(t)68?1900:2e3)},s=function(t){return function(e){this[t]=+e}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],u=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},l=function(t,e){var n,i=a.meridiem;if(i){for(var r=1;r<=24;r+=1)if(t.indexOf(i(r,0,e))>-1){n=r>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=l(t,!1)}],a:[r,function(t){this.afternoon=l(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,s("seconds")],ss:[i,s("seconds")],m:[i,s("minutes")],mm:[i,s("minutes")],H:[i,s("hours")],h:[i,s("hours")],HH:[i,s("hours")],hh:[i,s("hours")],D:[i,s("day")],DD:[n,s("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,s("month")],MM:[n,s("month")],MMM:[r,function(t){var e=u("months"),n=(u("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=u("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,s("year")],YY:[n,function(t){this.year=o(t)}],YYYY:[/\d{4}/,s("year")],Z:c,ZZ:c};function f(n){var i,r;i=n,r=a&&a.formats;for(var o=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,i){var a=i&&i.toUpperCase();return n||r[i]||t[i]||r[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),s=o.length,c=0;c-1)return new Date(("X"===e?1e3:1)*t);var i=f(e)(t),r=i.year,a=i.month,o=i.day,s=i.hours,c=i.minutes,u=i.seconds,l=i.milliseconds,h=i.zone,d=new Date,g=o||(r||a?1:d.getDate()),p=r||d.getFullYear(),b=0;r&&!a||(b=a>0?a-1:d.getMonth());var w=s||0,m=c||0,y=u||0,v=l||0;return h?new Date(Date.UTC(p,b,g,w,m,y,v+60*h.offset*1e3)):n?new Date(Date.UTC(p,b,g,w,m,y,v)):new Date(p,b,g,w,m,y,v)}catch(t){return new Date("")}}(e,s,i),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),l&&e!=this.format(s)&&(this.$d=new Date("")),a={}}else if(s instanceof Array)for(var d=s.length,g=1;g<=d;g+=1){o[1]=s[g-1];var p=n.apply(this,o);if(p.isValid()){this.$d=p.$d,this.$L=p.$L,this.init();break}g===d&&(this.$d=new Date(""))}else r.call(this,t)}}}()},7547:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var r=function(e){return e.add(4-e.isoWeekday(),t)},a=n.prototype;a.isoWeekYear=function(){return r(this).year()},a.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,a,o,s=r(this),c=(n=this.isoWeekYear(),o=4-(a=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),a.isoWeekday()>4&&(o+=7),a.add(o,t));return s.diff(c,"week")+1},a.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var o=a.startOf;a.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):o.bind(this)(t,e)}}}()},6951:function(t){t.exports=function(){"use strict";const{entries:t,setPrototypeOf:e,isFrozen:n,getPrototypeOf:i,getOwnPropertyDescriptor:r}=Object;let{freeze:a,seal:o,create:s}=Object,{apply:c,construct:u}="undefined"!=typeof Reflect&&Reflect;c||(c=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),o||(o=function(t){return t}),u||(u=function(t,e){return new t(...e)});const l=x(Array.prototype.forEach),h=x(Array.prototype.pop),f=x(Array.prototype.push),d=x(String.prototype.toLowerCase),g=x(String.prototype.toString),p=x(String.prototype.match),b=x(String.prototype.replace),w=x(String.prototype.indexOf),m=x(String.prototype.trim),y=x(RegExp.prototype.test),v=k(TypeError);function x(t){return function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r/gm),j=o(/\${[\w\W]*}/gm),$=o(/^data-[\-\w.\u00B7-\uFFFF]/),z=o(/^aria-[\-\w]+$/),q=o(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),H=o(/^(?:\w+script|data):/i),U=o(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),G=o(/^html$/i);var Y=Object.freeze({__proto__:null,MUSTACHE_EXPR:F,ERB_EXPR:R,TMPLIT_EXPR:j,DATA_ATTR:$,ARIA_ATTR:z,IS_ALLOWED_URI:q,IS_SCRIPT_OR_DATA:H,ATTR_WHITESPACE:U,DOCTYPE_NAME:G});const Z=()=>"undefined"==typeof window?null:window,W=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let n=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(n=e.getAttribute(i));const r="dompurify"+(n?"#"+n:"");try{return t.createPolicy(r,{createHTML:t=>t,createScriptURL:t=>t})}catch(t){return console.warn("TrustedTypes policy "+r+" could not be created."),null}};function K(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Z();const n=t=>K(t);if(n.version="3.0.3",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;const i=e.document,r=i.currentScript;let{document:o}=e;const{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:x,NodeFilter:k,NamedNodeMap:F=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:R,DOMParser:j,trustedTypes:$}=e,z=x.prototype,H=E(z,"cloneNode"),U=E(z,"nextSibling"),X=E(z,"childNodes"),V=E(z,"parentNode");if("function"==typeof c){const t=o.createElement("template");t.content&&t.content.ownerDocument&&(o=t.content.ownerDocument)}let Q,J="";const{implementation:tt,createNodeIterator:et,createDocumentFragment:nt,getElementsByTagName:it}=o,{importNode:rt}=i;let at={};n.isSupported="function"==typeof t&&"function"==typeof V&&tt&&void 0!==tt.createHTMLDocument;const{MUSTACHE_EXPR:ot,ERB_EXPR:st,TMPLIT_EXPR:ct,DATA_ATTR:ut,ARIA_ATTR:lt,IS_SCRIPT_OR_DATA:ht,ATTR_WHITESPACE:ft}=Y;let{IS_ALLOWED_URI:dt}=Y,gt=null;const pt=_({},[...T,...C,...S,...M,...O]);let bt=null;const wt=_({},[...L,...N,...P,...B]);let mt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),yt=null,vt=null,xt=!0,kt=!0,_t=!1,At=!0,Et=!1,Tt=!1,Ct=!1,St=!1,It=!1,Mt=!1,Dt=!1,Ot=!0,Lt=!1;const Nt="user-content-";let Pt=!0,Bt=!1,Ft={},Rt=null;const jt=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $t=null;const zt=_({},["audio","video","img","source","image","track"]);let qt=null;const Ht=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ut="http://www.w3.org/1998/Math/MathML",Gt="http://www.w3.org/2000/svg",Yt="http://www.w3.org/1999/xhtml";let Zt=Yt,Wt=!1,Kt=null;const Xt=_({},[Ut,Gt,Yt],g);let Vt;const Qt=["application/xhtml+xml","text/html"],Jt="text/html";let te,ee=null;const ne=o.createElement("form"),ie=function(t){return t instanceof RegExp||t instanceof Function},re=function(t){if(!ee||ee!==t){if(t&&"object"==typeof t||(t={}),t=A(t),Vt=Vt=-1===Qt.indexOf(t.PARSER_MEDIA_TYPE)?Jt:t.PARSER_MEDIA_TYPE,te="application/xhtml+xml"===Vt?g:d,gt="ALLOWED_TAGS"in t?_({},t.ALLOWED_TAGS,te):pt,bt="ALLOWED_ATTR"in t?_({},t.ALLOWED_ATTR,te):wt,Kt="ALLOWED_NAMESPACES"in t?_({},t.ALLOWED_NAMESPACES,g):Xt,qt="ADD_URI_SAFE_ATTR"in t?_(A(Ht),t.ADD_URI_SAFE_ATTR,te):Ht,$t="ADD_DATA_URI_TAGS"in t?_(A(zt),t.ADD_DATA_URI_TAGS,te):zt,Rt="FORBID_CONTENTS"in t?_({},t.FORBID_CONTENTS,te):jt,yt="FORBID_TAGS"in t?_({},t.FORBID_TAGS,te):{},vt="FORBID_ATTR"in t?_({},t.FORBID_ATTR,te):{},Ft="USE_PROFILES"in t&&t.USE_PROFILES,xt=!1!==t.ALLOW_ARIA_ATTR,kt=!1!==t.ALLOW_DATA_ATTR,_t=t.ALLOW_UNKNOWN_PROTOCOLS||!1,At=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Et=t.SAFE_FOR_TEMPLATES||!1,Tt=t.WHOLE_DOCUMENT||!1,It=t.RETURN_DOM||!1,Mt=t.RETURN_DOM_FRAGMENT||!1,Dt=t.RETURN_TRUSTED_TYPE||!1,St=t.FORCE_BODY||!1,Ot=!1!==t.SANITIZE_DOM,Lt=t.SANITIZE_NAMED_PROPS||!1,Pt=!1!==t.KEEP_CONTENT,Bt=t.IN_PLACE||!1,dt=t.ALLOWED_URI_REGEXP||q,Zt=t.NAMESPACE||Yt,mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Et&&(kt=!1),Mt&&(It=!0),Ft&&(gt=_({},[...O]),bt=[],!0===Ft.html&&(_(gt,T),_(bt,L)),!0===Ft.svg&&(_(gt,C),_(bt,N),_(bt,B)),!0===Ft.svgFilters&&(_(gt,S),_(bt,N),_(bt,B)),!0===Ft.mathMl&&(_(gt,M),_(bt,P),_(bt,B))),t.ADD_TAGS&&(gt===pt&&(gt=A(gt)),_(gt,t.ADD_TAGS,te)),t.ADD_ATTR&&(bt===wt&&(bt=A(bt)),_(bt,t.ADD_ATTR,te)),t.ADD_URI_SAFE_ATTR&&_(qt,t.ADD_URI_SAFE_ATTR,te),t.FORBID_CONTENTS&&(Rt===jt&&(Rt=A(Rt)),_(Rt,t.FORBID_CONTENTS,te)),Pt&&(gt["#text"]=!0),Tt&&_(gt,["html","head","body"]),gt.table&&(_(gt,["tbody"]),delete yt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw v('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw v('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Q=t.TRUSTED_TYPES_POLICY,J=Q.createHTML("")}else void 0===Q&&(Q=W($,r)),null!==Q&&"string"==typeof J&&(J=Q.createHTML(""));a&&a(t),ee=t}},ae=_({},["mi","mo","mn","ms","mtext"]),oe=_({},["foreignobject","desc","title","annotation-xml"]),se=_({},["title","style","font","a","script"]),ce=_({},C);_(ce,S),_(ce,I);const ue=_({},M);_(ue,D);const le=function(t){let e=V(t);e&&e.tagName||(e={namespaceURI:Zt,tagName:"template"});const n=d(t.tagName),i=d(e.tagName);return!!Kt[t.namespaceURI]&&(t.namespaceURI===Gt?e.namespaceURI===Yt?"svg"===n:e.namespaceURI===Ut?"svg"===n&&("annotation-xml"===i||ae[i]):Boolean(ce[n]):t.namespaceURI===Ut?e.namespaceURI===Yt?"math"===n:e.namespaceURI===Gt?"math"===n&&oe[i]:Boolean(ue[n]):t.namespaceURI===Yt?!(e.namespaceURI===Gt&&!oe[i])&&!(e.namespaceURI===Ut&&!ae[i])&&!ue[n]&&(se[n]||!ce[n]):!("application/xhtml+xml"!==Vt||!Kt[t.namespaceURI]))},he=function(t){f(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){t.remove()}},fe=function(t,e){try{f(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){f(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!bt[t])if(It||Mt)try{he(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},de=function(t){let e,n;if(St)t=""+t;else{const e=p(t,/^[\r\n\t ]+/);n=e&&e[0]}"application/xhtml+xml"===Vt&&Zt===Yt&&(t=''+t+"");const i=Q?Q.createHTML(t):t;if(Zt===Yt)try{e=(new j).parseFromString(i,Vt)}catch(t){}if(!e||!e.documentElement){e=tt.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=Wt?J:i}catch(t){}}const r=e.body||e.documentElement;return t&&n&&r.insertBefore(o.createTextNode(n),r.childNodes[0]||null),Zt===Yt?it.call(e,Tt?"html":"body")[0]:Tt?e.documentElement:r},ge=function(t){return et.call(t.ownerDocument||t,t,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,null,!1)},pe=function(t){return t instanceof R&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof F)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},be=function(t){return"object"==typeof u?t instanceof u:t&&"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},we=function(t,e,i){at[t]&&l(at[t],(t=>{t.call(n,e,i,ee)}))},me=function(t){let e;if(we("beforeSanitizeElements",t,null),pe(t))return he(t),!0;const i=te(t.nodeName);if(we("uponSanitizeElement",t,{tagName:i,allowedTags:gt}),t.hasChildNodes()&&!be(t.firstElementChild)&&(!be(t.content)||!be(t.content.firstElementChild))&&y(/<[/\w]/g,t.innerHTML)&&y(/<[/\w]/g,t.textContent))return he(t),!0;if(!gt[i]||yt[i]){if(!yt[i]&&ve(i)){if(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,i))return!1;if(mt.tagNameCheck instanceof Function&&mt.tagNameCheck(i))return!1}if(Pt&&!Rt[i]){const e=V(t)||t.parentNode,n=X(t)||t.childNodes;if(n&&e)for(let i=n.length-1;i>=0;--i)e.insertBefore(H(n[i],!0),U(t))}return he(t),!0}return t instanceof x&&!le(t)?(he(t),!0):"noscript"!==i&&"noembed"!==i||!y(/<\/no(script|embed)/i,t.innerHTML)?(Et&&3===t.nodeType&&(e=t.textContent,e=b(e,ot," "),e=b(e,st," "),e=b(e,ct," "),t.textContent!==e&&(f(n.removed,{element:t.cloneNode()}),t.textContent=e)),we("afterSanitizeElements",t,null),!1):(he(t),!0)},ye=function(t,e,n){if(Ot&&("id"===e||"name"===e)&&(n in o||n in ne))return!1;if(kt&&!vt[e]&&y(ut,e));else if(xt&&y(lt,e));else if(!bt[e]||vt[e]){if(!(ve(t)&&(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,t)||mt.tagNameCheck instanceof Function&&mt.tagNameCheck(t))&&(mt.attributeNameCheck instanceof RegExp&&y(mt.attributeNameCheck,e)||mt.attributeNameCheck instanceof Function&&mt.attributeNameCheck(e))||"is"===e&&mt.allowCustomizedBuiltInElements&&(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,n)||mt.tagNameCheck instanceof Function&&mt.tagNameCheck(n))))return!1}else if(qt[e]);else if(y(dt,b(n,ft,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==w(n,"data:")||!$t[t])if(_t&&!y(ht,b(n,ft,"")));else if(n)return!1;return!0},ve=function(t){return t.indexOf("-")>0},xe=function(t){let e,i,r,a;we("beforeSanitizeAttributes",t,null);const{attributes:o}=t;if(!o)return;const s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:bt};for(a=o.length;a--;){e=o[a];const{name:c,namespaceURI:u}=e;if(i="value"===c?e.value:m(e.value),r=te(c),s.attrName=r,s.attrValue=i,s.keepAttr=!0,s.forceKeepAttr=void 0,we("uponSanitizeAttribute",t,s),i=s.attrValue,s.forceKeepAttr)continue;if(fe(c,t),!s.keepAttr)continue;if(!At&&y(/\/>/i,i)){fe(c,t);continue}Et&&(i=b(i,ot," "),i=b(i,st," "),i=b(i,ct," "));const l=te(t.nodeName);if(ye(l,r,i)){if(!Lt||"id"!==r&&"name"!==r||(fe(c,t),i=Nt+i),Q&&"object"==typeof $&&"function"==typeof $.getAttributeType)if(u);else switch($.getAttributeType(l,r)){case"TrustedHTML":i=Q.createHTML(i);break;case"TrustedScriptURL":i=Q.createScriptURL(i)}try{u?t.setAttributeNS(u,c,i):t.setAttribute(c,i),h(n.removed)}catch(t){}}}we("afterSanitizeAttributes",t,null)},ke=function t(e){let n;const i=ge(e);for(we("beforeSanitizeShadowDOM",e,null);n=i.nextNode();)we("uponSanitizeShadowNode",n,null),me(n)||(n.content instanceof s&&t(n.content),xe(n));we("afterSanitizeShadowDOM",e,null)};return n.sanitize=function(t){let e,r,a,o,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Wt=!t,Wt&&(t="\x3c!--\x3e"),"string"!=typeof t&&!be(t)){if("function"!=typeof t.toString)throw v("toString is not a function");if("string"!=typeof(t=t.toString()))throw v("dirty is not a string, aborting")}if(!n.isSupported)return t;if(Ct||re(c),n.removed=[],"string"==typeof t&&(Bt=!1),Bt){if(t.nodeName){const e=te(t.nodeName);if(!gt[e]||yt[e])throw v("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)e=de("\x3c!----\x3e"),r=e.ownerDocument.importNode(t,!0),1===r.nodeType&&"BODY"===r.nodeName||"HTML"===r.nodeName?e=r:e.appendChild(r);else{if(!It&&!Et&&!Tt&&-1===t.indexOf("<"))return Q&&Dt?Q.createHTML(t):t;if(e=de(t),!e)return It?null:Dt?J:""}e&&St&&he(e.firstChild);const l=ge(Bt?t:e);for(;a=l.nextNode();)me(a)||(a.content instanceof s&&ke(a.content),xe(a));if(Bt)return t;if(It){if(Mt)for(o=nt.call(e.ownerDocument);e.firstChild;)o.appendChild(e.firstChild);else o=e;return(bt.shadowroot||bt.shadowrootmod)&&(o=rt.call(i,o,!0)),o}let h=Tt?e.outerHTML:e.innerHTML;return Tt&>["!doctype"]&&e.ownerDocument&&e.ownerDocument.doctype&&e.ownerDocument.doctype.name&&y(G,e.ownerDocument.doctype.name)&&(h="\n"+h),Et&&(h=b(h,ot," "),h=b(h,st," "),h=b(h,ct," ")),Q&&Dt?Q.createHTML(h):h},n.setConfig=function(t){re(t),Ct=!0},n.clearConfig=function(){ee=null,Ct=!1},n.isValidAttribute=function(t,e,n){ee||re({});const i=te(t),r=te(e);return ye(i,r,n)},n.addHook=function(t,e){"function"==typeof e&&(at[t]=at[t]||[],f(at[t],e))},n.removeHook=function(t){if(at[t])return h(at[t])},n.removeHooks=function(t){at[t]&&(at[t]=[])},n.removeAllHooks=function(){at={}},n}return K()}()},7697:function(t,e,n){t.exports=function(){function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,(function(t){return r(e[o][1][t]||t)}),u,u.exports,t,e,n,i)}return n[o].exports}for(var a=void 0,o=0;o0&&void 0!==arguments[0]?arguments[0]:{},i=n.defaultLayoutOptions,a=void 0===i?{}:i,s=n.algorithms,c=void 0===s?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:s,u=n.workerFactory,l=n.workerUrl;if(r(this,t),this.defaultLayoutOptions=a,this.initialized=!1,void 0===l&&void 0===u)throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var h=u;void 0!==l&&void 0===u&&(h=function(t){return new Worker(t)});var f=h(l);if("function"!=typeof f.postMessage)throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new o(f),this.worker.postMessage({cmd:"register",algorithms:c}).then((function(t){return e.initialized=!0})).catch(console.err)}return i(t,[{key:"layout",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.layoutOptions,i=void 0===n?this.defaultLayoutOptions:n,r=e.logging,a=void 0!==r&&r,o=e.measureExecutionTime,s=void 0!==o&&o;return t?this.worker.postMessage({cmd:"layout",graph:t,layoutOptions:i,options:{logging:a,measureExecutionTime:s}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),t}();n.default=a;var o=function(){function t(e){var n=this;if(r(this,t),void 0===e)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=e,this.worker.onmessage=function(t){setTimeout((function(){n.receive(n,t)}),0)}}return i(t,[{key:"postMessage",value:function(t){var e=this.id||0;this.id=e+1,t.id=e;var n=this;return new Promise((function(i,r){n.resolvers[e]=function(t,e){t?(n.convertGwtStyleError(t),r(t)):i(e)},n.worker.postMessage(t)}))}},{key:"receive",value:function(t,e){var n=e.data,i=t.resolvers[n.id];i&&(delete t.resolvers[n.id],n.error?i(n.error):i(null,n.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(t){if(t){var e=t.__java$exception;e&&(e.cause&&e.cause.backingJsObject&&(t.cause=e.cause.backingJsObject,this.convertGwtStyleError(t.cause)),delete t.__java$exception)}}}]),t}()},{}],2:[function(t,e,i){(function(t){(function(){"use strict";var n;function r(){}function a(){}function o(){}function s(){}function c(){}function u(){}function l(){}function h(){}function f(){}function d(){}function g(){}function p(){}function b(){}function w(){}function m(){}function y(){}function v(){}function x(){}function k(){}function _(){}function A(){}function E(){}function T(){}function C(){}function S(){}function I(){}function M(){}function D(){}function O(){}function L(){}function N(){}function P(){}function B(){}function F(){}function R(){}function j(){}function $(){}function z(){}function q(){}function H(){}function U(){}function G(){}function Y(){}function Z(){}function W(){}function K(){}function X(){}function V(){}function Q(){}function J(){}function tt(){}function et(){}function nt(){}function it(){}function rt(){}function at(){}function ot(){}function st(){}function ct(){}function ut(){}function lt(){}function ht(){}function ft(){}function dt(){}function gt(){}function pt(){}function bt(){}function wt(){}function mt(){}function yt(){}function vt(){}function xt(){}function kt(){}function _t(){}function At(){}function Et(){}function Tt(){}function Ct(){}function St(){}function It(){}function Mt(){}function Dt(){}function Ot(){}function Lt(){}function Nt(){}function Pt(){}function Bt(){}function Ft(){}function Rt(){}function jt(){}function $t(){}function zt(){}function qt(){}function Ht(){}function Ut(){}function Gt(){}function Yt(){}function Zt(){}function Wt(){}function Kt(){}function Xt(){}function Vt(){}function Qt(){}function Jt(){}function te(){}function ee(){}function ne(){}function ie(){}function re(){}function ae(){}function oe(){}function se(){}function ce(){}function ue(){}function le(){}function he(){}function fe(){}function de(){}function ge(){}function pe(){}function be(){}function we(){}function me(){}function ye(){}function ve(){}function xe(){}function ke(){}function _e(){}function Ae(){}function Ee(){}function Te(){}function Ce(){}function Se(){}function Ie(){}function Me(){}function De(){}function Oe(){}function Le(){}function Ne(){}function Pe(){}function Be(){}function Fe(){}function Re(){}function je(){}function $e(){}function ze(){}function qe(){}function He(){}function Ue(){}function Ge(){}function Ye(){}function Ze(){}function We(){}function Ke(){}function Xe(){}function Ve(){}function Qe(){}function Je(){}function tn(){}function en(){}function nn(){}function rn(){}function an(){}function on(){}function sn(){}function cn(){}function un(){}function ln(){}function hn(){}function fn(){}function dn(){}function gn(){}function pn(){}function bn(){}function wn(){}function mn(){}function yn(){}function vn(){}function xn(){}function kn(){}function _n(){}function An(){}function En(){}function Tn(){}function Cn(){}function Sn(){}function In(){}function Mn(){}function Dn(){}function On(){}function Ln(){}function Nn(){}function Pn(){}function Bn(){}function Fn(){}function Rn(){}function jn(){}function $n(){}function zn(){}function qn(){}function Hn(){}function Un(){}function Gn(){}function Yn(){}function Zn(){}function Wn(){}function Kn(){}function Xn(){}function Vn(){}function Qn(){}function Jn(){}function ti(){}function ei(){}function ni(){}function ii(){}function ri(){}function ai(){}function oi(){}function si(){}function ci(){}function ui(){}function li(){}function hi(){}function fi(){}function di(){}function gi(){}function pi(){}function bi(){}function wi(){}function mi(){}function yi(){}function vi(){}function xi(){}function ki(){}function _i(){}function Ai(){}function Ei(){}function Ti(){}function Ci(){}function Si(){}function Ii(){}function Mi(){}function Di(){}function Oi(){}function Li(){}function Ni(){}function Pi(){}function Bi(){}function Fi(){}function Ri(){}function ji(){}function $i(){}function zi(){}function qi(){}function Hi(){}function Ui(){}function Gi(){}function Yi(){}function Zi(){}function Wi(){}function Ki(){}function Xi(){}function Vi(){}function Qi(){}function Ji(){}function tr(){}function er(){}function nr(){}function ir(){}function rr(){}function ar(){}function or(){}function sr(){}function cr(){}function ur(){}function lr(){}function hr(){}function fr(){}function dr(){}function gr(){}function pr(){}function br(){}function wr(){}function mr(){}function yr(){}function vr(){}function xr(){}function kr(){}function _r(){}function Ar(){}function Er(){}function Tr(){}function Cr(){}function Sr(){}function Ir(){}function Mr(){}function Dr(){}function Or(){}function Lr(){}function Nr(){}function Pr(){}function Br(){}function Fr(){}function Rr(){}function jr(){}function $r(){}function zr(){}function qr(){}function Hr(){}function Ur(){}function Gr(){}function Yr(){}function Zr(){}function Wr(){}function Kr(){}function Xr(){}function Vr(){}function Qr(){}function Jr(){}function ta(){}function ea(){}function na(){}function ia(){}function ra(){}function aa(){}function oa(){}function sa(){}function ca(){}function ua(){}function la(){}function ha(){}function fa(){}function da(){}function ga(){}function pa(){}function ba(){}function wa(){}function ma(){}function ya(){}function va(){}function xa(){}function ka(){}function _a(){}function Aa(){}function Ea(){}function Ta(){}function Ca(){}function Sa(){}function Ia(){}function Ma(){}function Da(){}function Oa(){}function La(){}function Na(){}function Pa(){}function Ba(){}function Fa(){}function Ra(){}function ja(){}function $a(){}function za(){}function qa(){}function Ha(){}function Ua(){}function Ga(){}function Ya(){}function Za(){}function Wa(){}function Ka(){}function Xa(){}function Va(){}function Qa(){}function Ja(){}function to(){}function eo(){}function no(){}function io(){}function ro(){}function ao(){}function oo(){}function so(){}function co(){}function uo(){}function lo(){}function ho(){}function fo(){}function go(){}function po(){}function bo(){}function wo(){}function mo(){}function yo(){}function vo(){}function xo(){}function ko(){}function _o(){}function Ao(){}function Eo(){}function To(){}function Co(){}function So(){}function Io(){}function Mo(){}function Do(){}function Oo(){}function Lo(){}function No(){}function Po(){}function Bo(){}function Fo(){}function Ro(){}function jo(){}function $o(){}function zo(){}function qo(){}function Ho(){}function Uo(){}function Go(){}function Yo(){}function Zo(){}function Wo(){}function Ko(){}function Xo(){}function Vo(){}function Qo(){}function Jo(){}function ts(){}function es(){}function ns(){}function is(){}function rs(){}function as(){}function os(){}function ss(){}function cs(){}function us(){}function ls(){}function hs(){}function fs(){}function ds(){}function gs(){}function ps(){}function bs(){}function ws(){}function ms(){}function ys(){}function vs(){}function xs(){}function ks(){}function _s(){}function As(){}function Es(){}function Ts(){}function Cs(){}function Ss(){}function Is(){}function Ms(){}function Ds(){}function Os(){}function Ls(){}function Ns(){}function Ps(){}function Bs(){}function Fs(){}function Rs(){}function js(){}function $s(){}function zs(){}function qs(){}function Hs(){}function Us(){}function Gs(){}function Ys(){}function Zs(){}function Ws(){}function Ks(){}function Xs(){}function Vs(){}function Qs(){}function Js(){}function tc(){}function ec(){}function nc(){}function ic(){}function rc(){}function ac(){}function oc(){}function sc(){}function cc(){}function uc(){}function lc(){}function hc(){}function fc(){}function dc(){}function gc(){}function pc(){}function bc(){}function wc(){}function mc(){}function yc(){}function vc(){}function xc(){}function kc(){}function _c(){}function Ac(){}function Ec(){}function Tc(){}function Cc(){}function Sc(){}function Ic(){}function Mc(){}function Dc(){}function Oc(){}function Lc(){}function Nc(){}function Pc(){}function Bc(){}function Fc(){}function Rc(){}function jc(){}function $c(){}function zc(){}function qc(){}function Hc(){}function Uc(){}function Gc(){}function Yc(){}function Zc(){}function Wc(){}function Kc(){}function Xc(){}function Vc(){}function Qc(){}function Jc(){}function tu(){}function eu(){}function nu(){}function iu(){}function ru(){}function au(){}function ou(){}function su(){}function cu(){}function uu(){}function lu(){}function hu(){}function fu(){}function du(){}function gu(){}function pu(){}function bu(){}function wu(){}function mu(){}function yu(){}function vu(){}function xu(){}function ku(){}function _u(){}function Au(){}function Eu(){}function Tu(){}function Cu(){}function Su(){}function Iu(){}function Mu(){}function Du(){}function Ou(){}function Lu(){}function Nu(){}function Pu(){}function Bu(){}function Fu(){}function Ru(){}function ju(){}function $u(){}function zu(){}function qu(){}function Hu(){}function Uu(){}function Gu(){}function Yu(){}function Zu(){}function Wu(){}function Ku(){}function Xu(){}function Vu(){}function Qu(){}function Ju(){}function tl(){}function el(){}function nl(){}function il(){}function rl(){}function al(){}function ol(){}function sl(){}function cl(){}function ul(){}function ll(){}function hl(){}function fl(){}function dl(){}function gl(){}function pl(){}function bl(){}function wl(){}function ml(){}function yl(){}function vl(){}function xl(){}function kl(){}function _l(){}function Al(){}function El(){}function Tl(){}function Cl(){}function Sl(){}function Il(){}function Ml(){}function Dl(){}function Ol(){}function Ll(){}function Nl(){}function Pl(){}function Bl(){}function Fl(){}function Rl(){}function jl(t){}function $l(t){}function zl(){iv()}function ql(){Gut()}function Hl(){Awt()}function Ul(){$xt()}function Gl(){_Tt()}function Yl(){fFt()}function Zl(){jvt()}function Wl(){axt()}function Kl(){_E()}function Xl(){yE()}function Vl(){Hj()}function Ql(){AE()}function Jl(){Mrt()}function th(){TE()}function eh(){I6()}function nh(){Sit()}function ih(){X8()}function rh(){jJ()}function ah(){Yut()}function oh(){$Et()}function sh(){Iit()}function ch(){Y2()}function uh(){fWt()}function lh(){Gvt()}function hh(){$J()}function fh(){HZt()}function dh(){FJ()}function gh(){Mit()}function ph(){Qst()}function bh(){UJ()}function wh(){S7()}function mh(){CE()}function yh(){jDt()}function vh(){Zvt()}function xh(){zat()}function kh(){TEt()}function _h(){gFt()}function Ah(){qmt()}function Eh(){IDt()}function Th(){Rot()}function Ch(){qJ()}function Sh(){ljt()}function Ih(){LDt()}function Mh(){KOt()}function Dh(){P7()}function Oh(){CEt()}function Lh(){lWt()}function Nh(){Wut()}function Ph(){ypt()}function Bh(){Uzt()}function Fh(){sj()}function Rh(){pat()}function jh(){f$t()}function $h(t){xW(t)}function zh(t){this.a=t}function qh(t){this.a=t}function Hh(t){this.a=t}function Uh(t){this.a=t}function Gh(t){this.a=t}function Yh(t){this.a=t}function Zh(t){this.a=t}function Wh(t){this.a=t}function Kh(t){this.a=t}function Xh(t){this.a=t}function Vh(t){this.a=t}function Qh(t){this.a=t}function Jh(t){this.a=t}function tf(t){this.a=t}function ef(t){this.a=t}function nf(t){this.a=t}function rf(t){this.a=t}function af(t){this.a=t}function of(t){this.a=t}function sf(t){this.a=t}function cf(t){this.a=t}function uf(t){this.b=t}function lf(t){this.c=t}function hf(t){this.a=t}function ff(t){this.a=t}function df(t){this.a=t}function gf(t){this.a=t}function pf(t){this.a=t}function bf(t){this.a=t}function wf(t){this.a=t}function mf(t){this.a=t}function yf(t){this.a=t}function vf(t){this.a=t}function xf(t){this.a=t}function kf(t){this.a=t}function _f(t){this.a=t}function Af(t){this.a=t}function Ef(t){this.a=t}function Tf(t){this.a=t}function Cf(t){this.a=t}function Sf(){this.a=[]}function If(t,e){t.a=e}function Mf(t,e){t.a=e}function Df(t,e){t.b=e}function Of(t,e){t.b=e}function Lf(t,e){t.b=e}function Nf(t,e){t.j=e}function Pf(t,e){t.g=e}function Bf(t,e){t.i=e}function Ff(t,e){t.c=e}function Rf(t,e){t.d=e}function jf(t,e){t.d=e}function $f(t,e){t.c=e}function zf(t,e){t.k=e}function qf(t,e){t.c=e}function Hf(t,e){t.c=e}function Uf(t,e){t.a=e}function Gf(t,e){t.a=e}function Yf(t,e){t.f=e}function Zf(t,e){t.a=e}function Wf(t,e){t.b=e}function Kf(t,e){t.d=e}function Xf(t,e){t.i=e}function Vf(t,e){t.o=e}function Qf(t,e){t.r=e}function Jf(t,e){t.a=e}function td(t,e){t.b=e}function ed(t,e){t.e=e}function nd(t,e){t.f=e}function id(t,e){t.g=e}function rd(t,e){t.e=e}function ad(t,e){t.f=e}function od(t,e){t.f=e}function sd(t,e){t.n=e}function cd(t,e){t.a=e}function ud(t,e){t.a=e}function ld(t,e){t.c=e}function hd(t,e){t.c=e}function fd(t,e){t.d=e}function dd(t,e){t.e=e}function gd(t,e){t.g=e}function pd(t,e){t.a=e}function bd(t,e){t.c=e}function wd(t,e){t.d=e}function md(t,e){t.e=e}function yd(t,e){t.f=e}function vd(t,e){t.j=e}function xd(t,e){t.a=e}function kd(t,e){t.b=e}function _d(t,e){t.a=e}function Ad(t){t.b=t.a}function Ed(t){t.c=t.d.d}function Td(t){this.d=t}function Cd(t){this.a=t}function Sd(t){this.a=t}function Id(t){this.a=t}function Md(t){this.a=t}function Dd(t){this.a=t}function Od(t){this.a=t}function Ld(t){this.a=t}function Nd(t){this.a=t}function Pd(t){this.a=t}function Bd(t){this.a=t}function Fd(t){this.a=t}function Rd(t){this.a=t}function jd(t){this.a=t}function $d(t){this.a=t}function zd(t){this.b=t}function qd(t){this.b=t}function Hd(t){this.b=t}function Ud(t){this.a=t}function Gd(t){this.a=t}function Yd(t){this.a=t}function Zd(t){this.c=t}function Wd(t){this.c=t}function Kd(t){this.c=t}function Xd(t){this.a=t}function Vd(t){this.a=t}function Qd(t){this.a=t}function Jd(t){this.a=t}function tg(t){this.a=t}function eg(t){this.a=t}function ng(t){this.a=t}function ig(t){this.a=t}function rg(t){this.a=t}function ag(t){this.a=t}function og(t){this.a=t}function sg(t){this.a=t}function cg(t){this.a=t}function ug(t){this.a=t}function lg(t){this.a=t}function hg(t){this.a=t}function fg(t){this.a=t}function dg(t){this.a=t}function gg(t){this.a=t}function pg(t){this.a=t}function bg(t){this.a=t}function wg(t){this.a=t}function mg(t){this.a=t}function yg(t){this.a=t}function vg(t){this.a=t}function xg(t){this.a=t}function kg(t){this.a=t}function _g(t){this.a=t}function Ag(t){this.a=t}function Eg(t){this.a=t}function Tg(t){this.a=t}function Cg(t){this.a=t}function Sg(t){this.a=t}function Ig(t){this.a=t}function Mg(t){this.a=t}function Dg(t){this.a=t}function Og(t){this.a=t}function Lg(t){this.a=t}function Ng(t){this.a=t}function Pg(t){this.a=t}function Bg(t){this.a=t}function Fg(t){this.a=t}function Rg(t){this.a=t}function jg(t){this.a=t}function $g(t){this.a=t}function zg(t){this.e=t}function qg(t){this.a=t}function Hg(t){this.a=t}function Ug(t){this.a=t}function Gg(t){this.a=t}function Yg(t){this.a=t}function Zg(t){this.a=t}function Wg(t){this.a=t}function Kg(t){this.a=t}function Xg(t){this.a=t}function Vg(t){this.a=t}function Qg(t){this.a=t}function Jg(t){this.a=t}function tp(t){this.a=t}function ep(t){this.a=t}function np(t){this.a=t}function ip(t){this.a=t}function rp(t){this.a=t}function ap(t){this.a=t}function op(t){this.a=t}function sp(t){this.a=t}function cp(t){this.a=t}function up(t){this.a=t}function lp(t){this.a=t}function hp(t){this.a=t}function fp(t){this.a=t}function dp(t){this.a=t}function gp(t){this.a=t}function pp(t){this.a=t}function bp(t){this.a=t}function wp(t){this.a=t}function mp(t){this.a=t}function yp(t){this.a=t}function vp(t){this.a=t}function xp(t){this.a=t}function kp(t){this.a=t}function _p(t){this.a=t}function Ap(t){this.a=t}function Ep(t){this.a=t}function Tp(t){this.a=t}function Cp(t){this.a=t}function Sp(t){this.a=t}function Ip(t){this.a=t}function Mp(t){this.a=t}function Dp(t){this.a=t}function Op(t){this.a=t}function Lp(t){this.a=t}function Np(t){this.a=t}function Pp(t){this.a=t}function Bp(t){this.a=t}function Fp(t){this.a=t}function Rp(t){this.a=t}function jp(t){this.a=t}function $p(t){this.a=t}function zp(t){this.c=t}function qp(t){this.b=t}function Hp(t){this.a=t}function Up(t){this.a=t}function Gp(t){this.a=t}function Yp(t){this.a=t}function Zp(t){this.a=t}function Wp(t){this.a=t}function Kp(t){this.a=t}function Xp(t){this.a=t}function Vp(t){this.a=t}function Qp(t){this.a=t}function Jp(t){this.a=t}function tb(t){this.a=t}function eb(t){this.a=t}function nb(t){this.a=t}function ib(t){this.a=t}function rb(t){this.a=t}function ab(t){this.a=t}function ob(t){this.a=t}function sb(t){this.a=t}function cb(t){this.a=t}function ub(t){this.a=t}function lb(t){this.a=t}function hb(t){this.a=t}function fb(t){this.a=t}function db(t){this.a=t}function gb(t){this.a=t}function pb(t){this.a=t}function bb(t){this.a=t}function wb(t){this.a=t}function mb(t){this.a=t}function yb(t){this.a=t}function vb(t){this.a=t}function xb(t){this.a=t}function kb(t){this.a=t}function _b(t){this.a=t}function Ab(t){this.a=t}function Eb(t){this.a=t}function Tb(t){this.a=t}function Cb(t){this.a=t}function Sb(t){this.a=t}function Ib(t){this.a=t}function Mb(t){this.a=t}function Db(t){this.a=t}function Ob(t){this.a=t}function Lb(t){this.a=t}function Nb(t){this.a=t}function Pb(t){this.a=t}function Bb(t){this.a=t}function Fb(t){this.a=t}function Rb(t){this.a=t}function jb(t){this.a=t}function $b(t){this.a=t}function zb(t){this.a=t}function qb(t){this.a=t}function Hb(t){this.a=t}function Ub(t){this.a=t}function Gb(t){this.a=t}function Yb(t){this.a=t}function Zb(t){this.a=t}function Wb(t){this.a=t}function Kb(t){this.a=t}function Xb(t){this.a=t}function Vb(t){this.a=t}function Qb(t){this.a=t}function Jb(t){this.a=t}function tw(t){this.a=t}function ew(t){this.a=t}function nw(t){this.a=t}function iw(t){this.a=t}function rw(t){this.a=t}function aw(t){this.a=t}function ow(t){this.a=t}function sw(t){this.b=t}function cw(t){this.f=t}function uw(t){this.a=t}function lw(t){this.a=t}function hw(t){this.a=t}function fw(t){this.a=t}function dw(t){this.a=t}function gw(t){this.a=t}function pw(t){this.a=t}function bw(t){this.a=t}function ww(t){this.a=t}function mw(t){this.a=t}function yw(t){this.a=t}function vw(t){this.b=t}function xw(t){this.c=t}function kw(t){this.e=t}function _w(t){this.a=t}function Aw(t){this.a=t}function Ew(t){this.a=t}function Tw(t){this.a=t}function Cw(t){this.a=t}function Sw(t){this.d=t}function Iw(t){this.a=t}function Mw(t){this.a=t}function Dw(t){this.e=t}function Ow(){this.a=0}function Lw(){BD(this)}function Nw(){PD(this)}function Pw(){OY(this)}function Bw(){gK(this)}function Fw(){jl(this)}function Rw(){this.c=LOe}function jw(t,e){e.Wb(t)}function $w(t,e){t.b+=e}function zw(t){t.b=new cx}function qw(t){return t.e}function Hw(t){return t.a}function Uw(t){return t.a}function Gw(t){return t.a}function Yw(t){return t.a}function Zw(t){return t.a}function Ww(){return null}function Kw(){return null}function Xw(){o_(),bZt()}function Vw(t){t.b.tf(t.e)}function Qw(t,e){t.b=e-t.b}function Jw(t,e){t.a=e-t.a}function tm(t,e){e.ad(t.a)}function em(t,e){USt(e,t)}function nm(t,e,n){t.Od(n,e)}function im(t,e){t.e=e,e.b=t}function rm(t){uj(),this.a=t}function am(t){uj(),this.a=t}function om(t){uj(),this.a=t}function sm(t){WZ(),this.a=t}function cm(t){CV(),iee.be(t)}function um(){bN.call(this)}function lm(){bN.call(this)}function hm(){um.call(this)}function fm(){um.call(this)}function dm(){um.call(this)}function gm(){um.call(this)}function pm(){um.call(this)}function bm(){um.call(this)}function wm(){um.call(this)}function mm(){um.call(this)}function ym(){um.call(this)}function vm(){um.call(this)}function xm(){um.call(this)}function km(){this.a=this}function _m(){this.Bb|=256}function Am(){this.b=new CM}function Em(){Em=M,new Pw}function Tm(){hm.call(this)}function Cm(t,e){t.length=e}function Sm(t,e){Wz(t.a,e)}function Im(t,e){ZTt(t.c,e)}function Mm(t,e){AY(t.b,e)}function Dm(t,e){Mmt(t.a,e)}function Om(t,e){Dft(t.a,e)}function Lm(t,e){got(t.e,e)}function Nm(t){OMt(t.c,t.b)}function Pm(t,e){t.kc().Nb(e)}function Bm(t){this.a=wdt(t)}function Fm(){this.a=new Pw}function Rm(){this.a=new Pw}function jm(){this.a=new Nw}function $m(){this.a=new Nw}function zm(){this.a=new Nw}function qm(){this.a=new vt}function Hm(){this.a=new x6}function Um(){this.a=new fe}function Gm(){this.a=new WA}function Ym(){this.a=new B0}function Zm(){this.a=new aJ}function Wm(){this.a=new DF}function Km(){this.a=new Nw}function Xm(){this.a=new Nw}function Vm(){this.a=new Nw}function Qm(){this.a=new Nw}function Jm(){this.d=new Nw}function ty(){this.a=new Fm}function ey(){this.a=new Pw}function ny(){this.b=new Pw}function iy(){this.b=new Nw}function ry(){this.e=new Nw}function ay(){this.d=new Nw}function oy(){this.a=new oh}function sy(){Nw.call(this)}function cy(){jm.call(this)}function uy(){NF.call(this)}function ly(){Xm.call(this)}function hy(){fy.call(this)}function fy(){Fw.call(this)}function dy(){Fw.call(this)}function gy(){dy.call(this)}function py(){pV.call(this)}function by(){pV.call(this)}function wy(){Wy.call(this)}function my(){Wy.call(this)}function yy(){Wy.call(this)}function vy(){Ky.call(this)}function xy(){VA.call(this)}function ky(){ic.call(this)}function _y(){ic.call(this)}function Ay(){tv.call(this)}function Ey(){tv.call(this)}function Ty(){Pw.call(this)}function Cy(){Pw.call(this)}function Sy(){Pw.call(this)}function Iy(){Fm.call(this)}function My(){_it.call(this)}function Dy(){_m.call(this)}function Oy(){ML.call(this)}function Ly(){ML.call(this)}function Ny(){Pw.call(this)}function Py(){Pw.call(this)}function By(){Pw.call(this)}function Fy(){vc.call(this)}function Ry(){vc.call(this)}function jy(){Fy.call(this)}function $y(){Bl.call(this)}function zy(t){bet.call(this,t)}function qy(t){bet.call(this,t)}function Hy(t){Kh.call(this,t)}function Uy(t){EA.call(this,t)}function Gy(t){Uy.call(this,t)}function Yy(t){EA.call(this,t)}function Zy(){this.a=new VA}function Wy(){this.a=new Fm}function Ky(){this.a=new Pw}function Xy(){this.a=new Nw}function Vy(){this.j=new Nw}function Qy(){this.a=new Wo}function Jy(){this.a=new L_}function tv(){this.a=new yc}function ev(){ev=M,$te=new Px}function nv(){nv=M,jte=new Nx}function iv(){iv=M,Dte=new a}function rv(){rv=M,Yte=new aN}function av(t){Uy.call(this,t)}function ov(t){Uy.call(this,t)}function sv(t){p4.call(this,t)}function cv(t){p4.call(this,t)}function uv(t){KR.call(this,t)}function lv(t){xTt.call(this,t)}function hv(t){SA.call(this,t)}function fv(t){MA.call(this,t)}function dv(t){MA.call(this,t)}function gv(t){MA.call(this,t)}function pv(t){hG.call(this,t)}function bv(t){pv.call(this,t)}function wv(){Cf.call(this,{})}function mv(t){SL(),this.a=t}function yv(t){t.b=null,t.c=0}function vv(t,e){t.e=e,IPt(t,e)}function xv(t,e){t.a=e,sSt(t)}function kv(t,e,n){t.a[e.g]=n}function _v(t,e,n){pkt(n,t,e)}function Av(t,e){JF(e.i,t.n)}function Ev(t,e){lut(t).td(e)}function Tv(t,e){return t*t/e}function Cv(t,e){return t.g-e.g}function Sv(t){return new Tf(t)}function Iv(t){return new UZ(t)}function Mv(t){pv.call(this,t)}function Dv(t){pv.call(this,t)}function Ov(t){pv.call(this,t)}function Lv(t){hG.call(this,t)}function Nv(t){$at(),this.a=t}function Pv(t){oj(),this.a=t}function Bv(t){$U(),this.f=t}function Fv(t){$U(),this.f=t}function Rv(t){pv.call(this,t)}function jv(t){pv.call(this,t)}function $v(t){pv.call(this,t)}function zv(t){pv.call(this,t)}function qv(t){pv.call(this,t)}function Hv(t){return xW(t),t}function Uv(t){return xW(t),t}function Gv(t){return xW(t),t}function Yv(t){return xW(t),t}function Zv(t){return xW(t),t}function Wv(t){return t.b==t.c}function Kv(t){return!!t&&t.b}function Xv(t){return!!t&&t.k}function Vv(t){return!!t&&t.j}function Qv(t){xW(t),this.a=t}function Jv(t){return tut(t),t}function tx(t){mY(t,t.length)}function ex(t){pv.call(this,t)}function nx(t){pv.call(this,t)}function ix(t){pv.call(this,t)}function rx(t){pv.call(this,t)}function ax(t){pv.call(this,t)}function ox(t){pv.call(this,t)}function sx(t){JN.call(this,t,0)}function cx(){c1.call(this,12,3)}function ux(){ux=M,nee=new k}function lx(){lx=M,Qte=new r}function hx(){hx=M,aee=new b}function fx(){fx=M,hee=new m}function dx(){throw qw(new wm)}function gx(){throw qw(new wm)}function px(){throw qw(new wm)}function bx(){throw qw(new wm)}function wx(){throw qw(new wm)}function mx(){throw qw(new wm)}function yx(){this.a=TB(vZ(zWt))}function vx(t){uj(),this.a=vZ(t)}function xx(t,e){t.Td(e),e.Sd(t)}function kx(t,e){t.a.ec().Mc(e)}function _x(t,e,n){t.c.lf(e,n)}function Ax(t){Dv.call(this,t)}function Ex(t){jv.call(this,t)}function Tx(){Dd.call(this,"")}function Cx(){Dd.call(this,"")}function Sx(){Dd.call(this,"")}function Ix(){Dd.call(this,"")}function Mx(t){Dv.call(this,t)}function Dx(t){qd.call(this,t)}function Ox(t){dN.call(this,t)}function Lx(t){Dx.call(this,t)}function Nx(){tf.call(this,null)}function Px(){tf.call(this,null)}function Bx(){Bx=M,CV()}function Fx(){Fx=M,xne=v_t()}function Rx(t){return t.a?t.b:0}function jx(t){return t.a?t.b:0}function $x(t,e){return t.a-e.a}function zx(t,e){return t.a-e.a}function qx(t,e){return t.a-e.a}function Hx(t,e){return y9(t,e)}function Ux(t,e){return bJ(t,e)}function Gx(t,e){return e in t.a}function Yx(t,e){return t.f=e,t}function Zx(t,e){return t.b=e,t}function Wx(t,e){return t.c=e,t}function Kx(t,e){return t.g=e,t}function Xx(t,e){return t.a=e,t}function Vx(t,e){return t.f=e,t}function Qx(t,e){return t.k=e,t}function Jx(t,e){return t.a=e,t}function tk(t,e){return t.e=e,t}function ek(t,e){return t.e=e,t}function nk(t,e){return t.f=e,t}function ik(t,e){t.b=!0,t.d=e}function rk(t,e){t.b=new gD(e)}function ak(t,e,n){e.td(t.a[n])}function ok(t,e,n){e.we(t.a[n])}function sk(t,e){return t.b-e.b}function ck(t,e){return t.g-e.g}function uk(t,e){return t.s-e.s}function lk(t,e){return t?0:e-1}function hk(t,e){return t?0:e-1}function fk(t,e){return t?e-1:0}function dk(t,e){return e.Yf(t)}function gk(t,e){return t.b=e,t}function pk(t,e){return t.a=e,t}function bk(t,e){return t.c=e,t}function wk(t,e){return t.d=e,t}function mk(t,e){return t.e=e,t}function yk(t,e){return t.f=e,t}function vk(t,e){return t.a=e,t}function xk(t,e){return t.b=e,t}function kk(t,e){return t.c=e,t}function _k(t,e){return t.c=e,t}function Ak(t,e){return t.b=e,t}function Ek(t,e){return t.d=e,t}function Tk(t,e){return t.e=e,t}function Ck(t,e){return t.f=e,t}function Sk(t,e){return t.g=e,t}function Ik(t,e){return t.a=e,t}function Mk(t,e){return t.i=e,t}function Dk(t,e){return t.j=e,t}function Ok(t,e){return t.k=e,t}function Lk(t,e){return t.j=e,t}function Nk(t,e){$Et(),SJ(e,t)}function Pk(t,e,n){UU(t.a,e,n)}function Bk(t){zK.call(this,t)}function Fk(t){zK.call(this,t)}function Rk(t){tj.call(this,t)}function jk(t){Udt.call(this,t)}function $k(t){wet.call(this,t)}function zk(t){wX.call(this,t)}function qk(t){wX.call(this,t)}function Hk(){MO.call(this,"")}function Uk(){this.a=0,this.b=0}function Gk(){this.b=0,this.a=0}function Yk(t,e){t.b=0,Pnt(t,e)}function Zk(t,e){t.c=e,t.b=!0}function Wk(t,e){return t.c._b(e)}function Kk(t){return t.e&&t.e()}function Xk(t){return t?t.d:null}function Vk(t,e){return wht(t.b,e)}function Qk(t){return t?t.g:null}function Jk(t){return t?t.i:null}function t_(t){return _B(t),t.o}function e_(){e_=M,pMe=Wxt()}function n_(){n_=M,bMe=uAt()}function i_(){i_=M,tOe=Xxt()}function r_(){r_=M,pLe=Kxt()}function a_(){a_=M,bLe=rSt()}function o_(){o_=M,fDe=oit()}function s_(){throw qw(new wm)}function c_(){throw qw(new wm)}function u_(){throw qw(new wm)}function l_(){throw qw(new wm)}function h_(){throw qw(new wm)}function f_(){throw qw(new wm)}function d_(t){this.a=new ZA(t)}function g_(t){dYt(),FZt(this,t)}function p_(t){this.a=new WG(t)}function b_(t,e){for(;t.ye(e););}function w_(t,e){for(;t.sd(e););}function m_(t,e){return t.a+=e,t}function y_(t,e){return t.a+=e,t}function v_(t,e){return t.a+=e,t}function x_(t,e){return t.a+=e,t}function k_(t){return _W(t),t.a}function __(t){return t.b!=t.d.c}function A_(t){return t.l|t.m<<22}function E_(t,e){return t.d[e.p]}function T_(t,e){return CPt(t,e)}function C_(t,e,n){t.splice(e,n)}function S_(t){t.c?PBt(t):BBt(t)}function I_(t){this.a=0,this.b=t}function M_(){this.a=new INt(ike)}function D_(){this.b=new INt(Hve)}function O_(){this.b=new INt(W_e)}function L_(){this.b=new INt(W_e)}function N_(){throw qw(new wm)}function P_(){throw qw(new wm)}function B_(){throw qw(new wm)}function F_(){throw qw(new wm)}function R_(){throw qw(new wm)}function j_(){throw qw(new wm)}function $_(){throw qw(new wm)}function z_(){throw qw(new wm)}function q_(){throw qw(new wm)}function H_(){throw qw(new wm)}function U_(){throw qw(new vm)}function G_(){throw qw(new vm)}function Y_(t){this.a=new Z_(t)}function Z_(t){Git(this,t,D_t())}function W_(t){return!t||wW(t)}function K_(t){return-1!=WLe[t]}function X_(){0!=oee&&(oee=0),cee=-1}function V_(){null==SWt&&(SWt=[])}function Q_(t,e){nDt(XX(t.a),e)}function J_(t,e){nDt(XX(t.a),e)}function tA(t,e){qL.call(this,t,e)}function eA(t,e){tA.call(this,t,e)}function nA(t,e){this.b=t,this.c=e}function iA(t,e){this.b=t,this.a=e}function rA(t,e){this.a=t,this.b=e}function aA(t,e){this.a=t,this.b=e}function oA(t,e){this.a=t,this.b=e}function sA(t,e){this.a=t,this.b=e}function cA(t,e){this.a=t,this.b=e}function uA(t,e){this.a=t,this.b=e}function lA(t,e){this.a=t,this.b=e}function hA(t,e){this.a=t,this.b=e}function fA(t,e){this.b=t,this.a=e}function dA(t,e){this.b=t,this.a=e}function gA(t,e){this.b=t,this.a=e}function pA(t,e){this.b=t,this.a=e}function bA(t,e){this.f=t,this.g=e}function wA(t,e){this.e=t,this.d=e}function mA(t,e){this.g=t,this.i=e}function yA(t,e){this.a=t,this.b=e}function vA(t,e){this.a=t,this.f=e}function xA(t,e){this.b=t,this.c=e}function kA(t,e){this.a=t,this.b=e}function _A(t,e){this.a=t,this.b=e}function AA(t,e){this.a=t,this.b=e}function EA(t){oN(t.dc()),this.c=t}function TA(t){this.b=zz(vZ(t),83)}function CA(t){this.a=zz(vZ(t),83)}function SA(t){this.a=zz(vZ(t),15)}function IA(t){this.a=zz(vZ(t),15)}function MA(t){this.b=zz(vZ(t),47)}function DA(){this.q=new n.Date}function OA(){OA=M,qee=new D}function LA(){LA=M,dne=new C}function NA(t){return t.f.c+t.g.c}function PA(t,e){return t.b.Hc(e)}function BA(t,e){return t.b.Ic(e)}function FA(t,e){return t.b.Qc(e)}function RA(t,e){return t.b.Hc(e)}function jA(t,e){return t.c.uc(e)}function $A(t,e){return t.a._b(e)}function zA(t,e){return Pht(t.c,e)}function qA(t,e){return lY(t.b,e)}function HA(t,e){return t>e&&e0}function uT(t,e){return Xlt(t,e)<0}function lT(t,e){return t.a.get(e)}function hT(t,e){return e.split(t)}function fT(t,e){return lY(t.e,e)}function dT(t){return xW(t),!1}function gT(t){g1.call(this,t,21)}function pT(t,e){jQ.call(this,t,e)}function bT(t,e){bA.call(this,t,e)}function wT(t,e){bA.call(this,t,e)}function mT(t){KZ(),KR.call(this,t)}function yT(t,e){kU(t,t.length,e)}function vT(t,e){XY(t,t.length,e)}function xT(t,e,n){e.ud(t.a.Ge(n))}function kT(t,e,n){e.we(t.a.Fe(n))}function _T(t,e,n){e.td(t.a.Kb(n))}function AT(t,e,n){t.Mb(n)&&e.td(n)}function ET(t,e,n){t.splice(e,0,n)}function TT(t,e){return TN(t.e,e)}function CT(t,e){this.d=t,this.e=e}function ST(t,e){this.b=t,this.a=e}function IT(t,e){this.b=t,this.a=e}function MT(t,e){this.b=t,this.a=e}function DT(t,e){this.a=t,this.b=e}function OT(t,e){this.a=t,this.b=e}function LT(t,e){this.a=t,this.b=e}function NT(t,e){this.a=t,this.b=e}function PT(t,e){this.a=t,this.b=e}function BT(t,e){this.b=t,this.a=e}function FT(t,e){this.b=t,this.a=e}function RT(t,e){bA.call(this,t,e)}function jT(t,e){bA.call(this,t,e)}function $T(t,e){bA.call(this,t,e)}function zT(t,e){bA.call(this,t,e)}function qT(t,e){bA.call(this,t,e)}function HT(t,e){bA.call(this,t,e)}function UT(t,e){bA.call(this,t,e)}function GT(t,e){bA.call(this,t,e)}function YT(t,e){bA.call(this,t,e)}function ZT(t,e){bA.call(this,t,e)}function WT(t,e){bA.call(this,t,e)}function KT(t,e){bA.call(this,t,e)}function XT(t,e){bA.call(this,t,e)}function VT(t,e){bA.call(this,t,e)}function QT(t,e){bA.call(this,t,e)}function JT(t,e){bA.call(this,t,e)}function tC(t,e){bA.call(this,t,e)}function eC(t,e){bA.call(this,t,e)}function nC(t,e){this.a=t,this.b=e}function iC(t,e){this.a=t,this.b=e}function rC(t,e){this.a=t,this.b=e}function aC(t,e){this.a=t,this.b=e}function oC(t,e){this.a=t,this.b=e}function sC(t,e){this.a=t,this.b=e}function cC(t,e){this.a=t,this.b=e}function uC(t,e){this.a=t,this.b=e}function lC(t,e){this.a=t,this.b=e}function hC(t,e){this.b=t,this.a=e}function fC(t,e){this.b=t,this.a=e}function dC(t,e){this.b=t,this.a=e}function gC(t,e){this.b=t,this.a=e}function pC(t,e){this.c=t,this.d=e}function bC(t,e){this.e=t,this.d=e}function wC(t,e){this.a=t,this.b=e}function mC(t,e){this.b=e,this.c=t}function yC(t,e){bA.call(this,t,e)}function vC(t,e){bA.call(this,t,e)}function xC(t,e){bA.call(this,t,e)}function kC(t,e){bA.call(this,t,e)}function _C(t,e){bA.call(this,t,e)}function AC(t,e){bA.call(this,t,e)}function EC(t,e){bA.call(this,t,e)}function TC(t,e){bA.call(this,t,e)}function CC(t,e){bA.call(this,t,e)}function SC(t,e){bA.call(this,t,e)}function IC(t,e){bA.call(this,t,e)}function MC(t,e){bA.call(this,t,e)}function DC(t,e){bA.call(this,t,e)}function OC(t,e){bA.call(this,t,e)}function LC(t,e){bA.call(this,t,e)}function NC(t,e){bA.call(this,t,e)}function PC(t,e){bA.call(this,t,e)}function BC(t,e){bA.call(this,t,e)}function FC(t,e){bA.call(this,t,e)}function RC(t,e){bA.call(this,t,e)}function jC(t,e){bA.call(this,t,e)}function $C(t,e){bA.call(this,t,e)}function zC(t,e){bA.call(this,t,e)}function qC(t,e){bA.call(this,t,e)}function HC(t,e){bA.call(this,t,e)}function UC(t,e){bA.call(this,t,e)}function GC(t,e){bA.call(this,t,e)}function YC(t,e){bA.call(this,t,e)}function ZC(t,e){bA.call(this,t,e)}function WC(t,e){bA.call(this,t,e)}function KC(t,e){bA.call(this,t,e)}function XC(t,e){bA.call(this,t,e)}function VC(t,e){bA.call(this,t,e)}function QC(t,e){bA.call(this,t,e)}function JC(t,e){this.b=t,this.a=e}function tS(t,e){this.a=t,this.b=e}function eS(t,e){this.a=t,this.b=e}function nS(t,e){this.a=t,this.b=e}function iS(t,e){this.a=t,this.b=e}function rS(t,e){bA.call(this,t,e)}function aS(t,e){bA.call(this,t,e)}function oS(t,e){this.b=t,this.d=e}function sS(t,e){bA.call(this,t,e)}function cS(t,e){bA.call(this,t,e)}function uS(t,e){this.a=t,this.b=e}function lS(t,e){this.a=t,this.b=e}function hS(t,e){bA.call(this,t,e)}function fS(t,e){bA.call(this,t,e)}function dS(t,e){bA.call(this,t,e)}function gS(t,e){bA.call(this,t,e)}function pS(t,e){bA.call(this,t,e)}function bS(t,e){bA.call(this,t,e)}function wS(t,e){bA.call(this,t,e)}function mS(t,e){bA.call(this,t,e)}function yS(t,e){bA.call(this,t,e)}function vS(t,e){bA.call(this,t,e)}function xS(t,e){bA.call(this,t,e)}function kS(t,e){bA.call(this,t,e)}function _S(t,e){bA.call(this,t,e)}function AS(t,e){bA.call(this,t,e)}function ES(t,e){bA.call(this,t,e)}function TS(t,e){bA.call(this,t,e)}function CS(t,e){return TN(t.c,e)}function SS(t,e){return TN(e.b,t)}function IS(t,e){return-t.b.Je(e)}function MS(t,e){return TN(t.g,e)}function DS(t,e){bA.call(this,t,e)}function OS(t,e){bA.call(this,t,e)}function LS(t,e){this.a=t,this.b=e}function NS(t,e){this.a=t,this.b=e}function PS(t,e){this.a=t,this.b=e}function BS(t,e){bA.call(this,t,e)}function FS(t,e){bA.call(this,t,e)}function RS(t,e){bA.call(this,t,e)}function jS(t,e){bA.call(this,t,e)}function $S(t,e){bA.call(this,t,e)}function zS(t,e){bA.call(this,t,e)}function qS(t,e){bA.call(this,t,e)}function HS(t,e){bA.call(this,t,e)}function US(t,e){bA.call(this,t,e)}function GS(t,e){bA.call(this,t,e)}function YS(t,e){bA.call(this,t,e)}function ZS(t,e){bA.call(this,t,e)}function WS(t,e){bA.call(this,t,e)}function KS(t,e){bA.call(this,t,e)}function XS(t,e){bA.call(this,t,e)}function VS(t,e){bA.call(this,t,e)}function QS(t,e){this.a=t,this.b=e}function JS(t,e){this.a=t,this.b=e}function tI(t,e){this.a=t,this.b=e}function eI(t,e){this.a=t,this.b=e}function nI(t,e){this.a=t,this.b=e}function iI(t,e){this.a=t,this.b=e}function rI(t,e){this.a=t,this.b=e}function aI(t,e){bA.call(this,t,e)}function oI(t,e){this.a=t,this.b=e}function sI(t,e){this.a=t,this.b=e}function cI(t,e){this.a=t,this.b=e}function uI(t,e){this.a=t,this.b=e}function lI(t,e){this.a=t,this.b=e}function hI(t,e){this.a=t,this.b=e}function fI(t,e){this.b=t,this.a=e}function dI(t,e){this.b=t,this.a=e}function gI(t,e){this.b=t,this.a=e}function pI(t,e){this.b=t,this.a=e}function bI(t,e){this.a=t,this.b=e}function wI(t,e){this.a=t,this.b=e}function mI(t,e){JLt(t.a,zz(e,56))}function yI(t,e){m9(t.a,zz(e,11))}function vI(t,e){return lq(),e!=t}function xI(){return Fx(),new xne}function kI(){HJ(),this.b=new Fm}function _I(){bPt(),this.a=new Fm}function AI(){RJ(),RU.call(this)}function EI(t,e){bA.call(this,t,e)}function TI(t,e){this.a=t,this.b=e}function CI(t,e){this.a=t,this.b=e}function SI(t,e){this.a=t,this.b=e}function II(t,e){this.a=t,this.b=e}function MI(t,e){this.a=t,this.b=e}function DI(t,e){this.a=t,this.b=e}function OI(t,e){this.d=t,this.b=e}function LI(t,e){this.d=t,this.e=e}function NI(t,e){this.f=t,this.c=e}function PI(t,e){this.b=t,this.c=e}function BI(t,e){this.i=t,this.g=e}function FI(t,e){this.e=t,this.a=e}function RI(t,e){this.a=t,this.b=e}function jI(t,e){t.i=null,srt(t,e)}function $I(t,e){t&&KW(lDe,t,e)}function zI(t,e){return apt(t.a,e)}function qI(t){return spt(t.c,t.b)}function HI(t){return t?t.dd():null}function UI(t){return null==t?null:t}function GI(t){return typeof t===LWt}function YI(t){return typeof t===NWt}function ZI(t){return typeof t===PWt}function WI(t,e){return t.Hd().Xb(e)}function KI(t,e){return Vat(t.Kc(),e)}function XI(t,e){return 0==Xlt(t,e)}function VI(t,e){return Xlt(t,e)>=0}function QI(t,e){return 0!=Xlt(t,e)}function JI(t){return""+(xW(t),t)}function tM(t,e){return t.substr(e)}function eM(t){return Ydt(t),t.d.gc()}function nM(t){return YMt(t,t.c),t}function iM(t){return Qq(null==t),t}function rM(t,e){return t.a+=""+e,t}function aM(t,e){return t.a+=""+e,t}function oM(t,e){return t.a+=""+e,t}function sM(t,e){return t.a+=""+e,t}function cM(t,e){return t.a+=""+e,t}function uM(t,e){return t.a+=""+e,t}function lM(t,e){r5(t,e,t.a,t.a.a)}function hM(t,e){r5(t,e,t.c.b,t.c)}function fM(t,e,n){jkt(e,RCt(t,n))}function dM(t,e,n){jkt(e,RCt(t,n))}function gM(t,e){Att(new DL(t),e)}function pM(t,e){t.q.setTime(k2(e))}function bM(t,e){GG.call(this,t,e)}function wM(t,e){GG.call(this,t,e)}function mM(t,e){GG.call(this,t,e)}function yM(t){OY(this),Eat(this,t)}function vM(t){return f1(t,0),null}function xM(t){return t.a=0,t.b=0,t}function kM(t,e){return t.a=e.g+1,t}function _M(t,e){return 2==t.j[e.p]}function AM(t){return uZ(zz(t,79))}function EM(){EM=M,Dre=dlt(nwt())}function TM(){TM=M,Jce=dlt(ANt())}function CM(){this.b=new ZA(net(12))}function SM(){this.b=0,this.a=!1}function IM(){this.b=0,this.a=!1}function MM(t){this.a=t,zl.call(this)}function DM(t){this.a=t,zl.call(this)}function OM(t,e){iF.call(this,t,e)}function LM(t,e){eR.call(this,t,e)}function NM(t,e){BI.call(this,t,e)}function PM(t,e){Oot.call(this,t,e)}function BM(t,e){XN.call(this,t,e)}function FM(t,e){tT(),KW(yDe,t,e)}function RM(t,e){return hP(t.a,0,e)}function jM(t,e){return t.a.a.a.cc(e)}function $M(t,e){return UI(t)===UI(e)}function zM(t,e){return Sft(t.a,e.a)}function qM(t,e){return _O(t.a,e.a)}function HM(t,e){return $Y(t.a,e.a)}function UM(t,e){return t.indexOf(e)}function GM(t,e){return t==e?0:t?1:-1}function YM(t){return t<10?"0"+t:""+t}function ZM(t){return vZ(t),new MM(t)}function WM(t){return EO(t.l,t.m,t.h)}function KM(t){return SQ((xW(t),t))}function XM(t){return SQ((xW(t),t))}function VM(t,e){return _O(t.g,e.g)}function QM(t){return typeof t===NWt}function JM(t){return t==Joe||t==nse}function tD(t){return t==Joe||t==tse}function eD(t){return _9(t.b.b,t,0)}function nD(t){this.a=xI(),this.b=t}function iD(t){this.a=xI(),this.b=t}function rD(t,e){return Wz(t.a,e),e}function aD(t,e){return Wz(t.c,e),t}function oD(t,e){return Jat(t.a,e),t}function sD(t,e){return Uj(),e.a+=t}function cD(t,e){return Uj(),e.a+=t}function uD(t,e){return Uj(),e.c+=t}function lD(t,e){G7(t,0,t.length,e)}function hD(){ng.call(this,new m4)}function fD(){sU.call(this,0,0,0,0)}function dD(){YK.call(this,0,0,0,0)}function gD(t){this.a=t.a,this.b=t.b}function pD(t){return t==jCe||t==$Ce}function bD(t){return t==qCe||t==RCe}function wD(t){return t==hme||t==lme}function mD(t){return t!=XSe&&t!=VSe}function yD(t){return t.Lg()&&t.Mg()}function vD(t){return yK(zz(t,118))}function xD(t){return Jat(new z2,t)}function kD(t,e){return new Oot(e,t)}function _D(t,e){return new Oot(e,t)}function AD(t,e,n){_nt(t,e),Ant(t,n)}function ED(t,e,n){Cnt(t,e),Tnt(t,n)}function TD(t,e,n){Snt(t,e),Int(t,n)}function CD(t,e,n){Ent(t,e),Dnt(t,n)}function SD(t,e,n){Mnt(t,e),Ont(t,n)}function ID(t,e){Fut(t,e),Bnt(t,t.D)}function MD(t){NI.call(this,t,!0)}function DD(t,e,n){NB.call(this,t,e,n)}function OD(t){DBt(),lot.call(this,t)}function LD(){bT.call(this,"Head",1)}function ND(){bT.call(this,"Tail",3)}function PD(t){t.c=P8(Ote,HWt,1,0,5,1)}function BD(t){t.a=P8(Ote,HWt,1,8,5,1)}function FD(t){Det(t.xf(),new Tg(t))}function RD(t){return null!=t?eut(t):0}function jD(t,e){return Iet(e,WQ(t))}function $D(t,e){return Iet(e,WQ(t))}function zD(t,e){return t[t.length]=e}function qD(t,e){return t[t.length]=e}function HD(t){return $z(t.b.Kc(),t.a)}function UD(t,e){return Zit(CZ(t.d),e)}function GD(t,e){return Zit(CZ(t.g),e)}function YD(t,e){return Zit(CZ(t.j),e)}function ZD(t,e){iF.call(this,t.b,e)}function WD(t){sU.call(this,t,t,t,t)}function KD(t){return t.b&&Xzt(t),t.a}function XD(t){return t.b&&Xzt(t),t.c}function VD(t,e){Xne||(t.b=e)}function QD(t,e,n){return OZ(t,e,n),n}function JD(t,e,n){OZ(t.c[e.g],e.g,n)}function tO(t,e,n){zz(t.c,69).Xh(e,n)}function eO(t,e,n){TD(n,n.i+t,n.j+e)}function nO(t,e){h7(o4(t.a),n1(e))}function iO(t,e){h7(q9(t.a),i1(e))}function rO(t){pWt(),Dw.call(this,t)}function aO(t){return null==t?0:eut(t)}function oO(){oO=M,uve=new Hdt(cSe)}function sO(){sO=M,new cO,new Nw}function cO(){new Pw,new Pw,new Pw}function uO(){uO=M,Em(),ree=new Pw}function lO(){lO=M,n.Math.log(2)}function hO(){hO=M,GE(),FOe=SMe}function fO(){throw qw(new ex(Ete))}function dO(){throw qw(new ex(Ete))}function gO(){throw qw(new ex(Tte))}function pO(){throw qw(new ex(Tte))}function bO(t){this.a=t,Xz.call(this,t)}function wO(t){this.a=t,TA.call(this,t)}function mO(t){this.a=t,TA.call(this,t)}function yO(t,e){vU(t.c,t.c.length,e)}function vO(t){return t.ae?1:0}function AO(t,e){return Xlt(t,e)>0?t:e}function EO(t,e,n){return{l:t,m:e,h:n}}function TO(t,e){null!=t.a&&yI(e,t.a)}function CO(t){t.a=new O,t.c=new O}function SO(t){this.b=t,this.a=new Nw}function IO(t){this.b=new ee,this.a=t}function MO(t){LF.call(this),this.a=t}function DO(){bT.call(this,"Range",2)}function OO(){nkt(),this.a=new INt(Yoe)}function LO(t,e){vZ(e),_K(t).Jc(new d)}function NO(t,e){return zJ(),e.n.b+=t}function PO(t,e,n){return KW(t.g,n,e)}function BO(t,e,n){return KW(t.k,n,e)}function FO(t,e){return KW(t.a,e.a,e)}function RO(t,e,n){return Mpt(e,n,t.c)}function jO(t){return new PS(t.c,t.d)}function $O(t){return new PS(t.c,t.d)}function zO(t){return new PS(t.a,t.b)}function qO(t,e){return nGt(t.a,e,null)}function HO(t){TJ(t,null),EJ(t,null)}function UO(t){WJ(t,null),KJ(t,null)}function GO(){XN.call(this,null,null)}function YO(){VN.call(this,null,null)}function ZO(t){this.a=t,Pw.call(this)}function WO(t){this.b=(TX(),new Zd(t))}function KO(t){t.j=P8(zee,lKt,310,0,0,1)}function XO(t,e,n){t.c.Vc(e,zz(n,133))}function VO(t,e,n){t.c.ji(e,zz(n,133))}function QO(t,e){lHt(t),t.Gc(zz(e,15))}function JO(t,e){return qHt(t.c,t.b,e)}function tL(t,e){return new wN(t.Kc(),e)}function eL(t,e){return-1!=zst(t.Kc(),e)}function nL(t,e){return null!=t.a.Bc(e)}function iL(t){return t.Ob()?t.Pb():null}function rL(t){return qpt(t,0,t.length)}function aL(t,e){return null!=t&&Vwt(t,e)}function oL(t,e){t.q.setHours(e),dzt(t,e)}function sL(t,e){t.c&&(Fq(e),xQ(e))}function cL(t,e,n){zz(t.Kb(n),164).Nb(e)}function uL(t,e,n){return HUt(t,e,n),n}function lL(t,e,n){t.a=1502^e,t.b=n^sVt}function hL(t,e,n){return t.a[e.g][n.g]}function fL(t,e){return t.a[e.c.p][e.p]}function dL(t,e){return t.e[e.c.p][e.p]}function gL(t,e){return t.c[e.c.p][e.p]}function pL(t,e){return t.j[e.p]=mLt(e)}function bL(t,e){return h6(t.f,e.tg())}function wL(t,e){return h6(t.b,e.tg())}function mL(t,e){return t.a0?e*e/t:e*e*100}function PP(t,e){return t>0?e/(t*t):100*e}function BP(t,e,n){return Wz(e,ugt(t,n))}function FP(t,e,n){P7(),t.Xe(e)&&n.td(t)}function RP(t,e,n){t.Zc(e).Rb(n)}function jP(t,e,n){return t.a+=e,t.b+=n,t}function $P(t,e,n){return t.a*=e,t.b*=n,t}function zP(t,e,n){return t.a-=e,t.b-=n,t}function qP(t,e){return t.a=e.a,t.b=e.b,t}function HP(t){return t.a=-t.a,t.b=-t.b,t}function UP(t){this.c=t,this.a=1,this.b=1}function GP(t){this.c=t,Snt(t,0),Int(t,0)}function YP(t){VA.call(this),eit(this,t)}function ZP(t){RZt(),zw(this),this.mf(t)}function WP(t,e){XE(),XN.call(this,t,e)}function KP(t,e){VE(),VN.call(this,t,e)}function XP(t,e){VE(),VN.call(this,t,e)}function VP(t,e){VE(),KP.call(this,t,e)}function QP(t,e,n){v7.call(this,t,e,n,2)}function JP(t,e){hO(),aU.call(this,t,e)}function tB(t,e){hO(),JP.call(this,t,e)}function eB(t,e){hO(),JP.call(this,t,e)}function nB(t,e){hO(),eB.call(this,t,e)}function iB(t,e){hO(),aU.call(this,t,e)}function rB(t,e){hO(),iB.call(this,t,e)}function aB(t,e){hO(),aU.call(this,t,e)}function oB(t,e){return t.c.Fc(zz(e,133))}function sB(t,e,n){return Pqt($9(t,e),n)}function cB(t,e,n){return e.Qk(t.e,t.c,n)}function uB(t,e,n){return e.Rk(t.e,t.c,n)}function lB(t,e){return nht(t.e,zz(e,49))}function hB(t,e,n){lft(q9(t.a),e,i1(n))}function fB(t,e,n){lft(o4(t.a),e,n1(n))}function dB(t,e){e.$modCount=t.$modCount}function gB(){gB=M,Kxe=new sw("root")}function pB(){pB=M,wDe=new Ay,new Ey}function bB(){this.a=new wQ,this.b=new wQ}function wB(){_it.call(this),this.Bb|=qXt}function mB(){bA.call(this,"GROW_TREE",0)}function yB(t){return null==t?null:pYt(t)}function vB(t){return null==t?null:NTt(t)}function xB(t){return null==t?null:qdt(t)}function kB(t){return null==t?null:qdt(t)}function _B(t){null==t.o&&wOt(t)}function AB(t){return Qq(null==t||GI(t)),t}function EB(t){return Qq(null==t||YI(t)),t}function TB(t){return Qq(null==t||ZI(t)),t}function CB(t){this.q=new n.Date(k2(t))}function SB(t,e){this.c=t,wA.call(this,t,e)}function IB(t,e){this.a=t,SB.call(this,t,e)}function MB(t,e){this.d=t,Ed(this),this.b=e}function DB(t,e){z8.call(this,t),this.a=e}function OB(t,e){z8.call(this,t),this.a=e}function LB(t){Ugt.call(this,0,0),this.f=t}function NB(t,e,n){W6.call(this,t,e,n,null)}function PB(t,e,n){W6.call(this,t,e,n,null)}function BB(t,e,n){return t.ue(e,n)<=0?n:e}function FB(t,e,n){return t.ue(e,n)<=0?e:n}function RB(t,e){return zz(ftt(t.b,e),149)}function jB(t,e){return zz(ftt(t.c,e),229)}function $B(t){return zz(PH(t.a,t.b),287)}function zB(t){return new PS(t.c,t.d+t.a)}function qB(t){return zJ(),wD(zz(t,197))}function HB(){HB=M,Ore=edt((vpt(),jIe))}function UB(t,e){e.a?zPt(t,e):EN(t.a,e.b)}function GB(t,e){Xne||Wz(t.a,e)}function YB(t,e){return yE(),pot(e.d.i,t)}function ZB(t,e){return Mrt(),new oRt(e,t)}function WB(t,e){return MV(e,cQt),t.f=e,t}function KB(t,e,n){return n=Ejt(t,e,3,n)}function XB(t,e,n){return n=Ejt(t,e,6,n)}function VB(t,e,n){return n=Ejt(t,e,9,n)}function QB(t,e,n){++t.j,t.Ki(),L8(t,e,n)}function JB(t,e,n){++t.j,t.Hi(e,t.oi(e,n))}function tF(t,e,n){t.Zc(e).Rb(n)}function eF(t,e,n){return tqt(t.c,t.b,e,n)}function nF(t,e){return(e&FWt)%t.d.length}function iF(t,e){sw.call(this,t),this.a=e}function rF(t,e){xw.call(this,t),this.a=e}function aF(t,e){xw.call(this,t),this.a=e}function oF(t,e){this.c=t,wet.call(this,e)}function sF(t,e){this.a=t,vw.call(this,e)}function cF(t,e){this.a=t,vw.call(this,e)}function uF(t){this.a=(dit(t,OKt),new Q6(t))}function lF(t){this.a=(dit(t,OKt),new Q6(t))}function hF(t){return!t.a&&(t.a=new g),t.a}function fF(t){return t>8?0:t+1}function dF(t,e){return lN(),t==e?0:t?1:-1}function gF(t,e,n){return yU(t,zz(e,22),n)}function pF(t,e,n){return t.apply(e,n)}function bF(t,e,n){return t.a+=qpt(e,0,n),t}function wF(t,e){var n;return n=t.e,t.e=e,n}function mF(t,e){t[rVt].call(t,e)}function yF(t,e){t[rVt].call(t,e)}function vF(t,e){t.a.Vc(t.b,e),++t.b,t.c=-1}function xF(t){OY(t.e),t.d.b=t.d,t.d.a=t.d}function kF(t){t.b?kF(t.b):t.f.c.zc(t.e,t.d)}function _F(t,e,n){pE(),If(t,e.Ce(t.a,n))}function AF(t,e){return Xk(Tpt(t.a,e,!0))}function EF(t,e){return Xk(Cpt(t.a,e,!0))}function TF(t,e){return Hx(new Array(e),t)}function CF(t){return String.fromCharCode(t)}function SF(t){return null==t?null:t.message}function IF(){this.a=new Nw,this.b=new Nw}function MF(){this.a=new fe,this.b=new Am}function DF(){this.b=new Uk,this.c=new Nw}function OF(){this.d=new Uk,this.e=new Uk}function LF(){this.n=new Uk,this.o=new Uk}function NF(){this.n=new dy,this.i=new dD}function PF(){this.a=new th,this.b=new sa}function BF(){this.a=new Nw,this.d=new Nw}function FF(){this.b=new Fm,this.a=new Fm}function RF(){this.b=new Pw,this.a=new Pw}function jF(){this.b=new D_,this.a=new bo}function $F(){NF.call(this),this.a=new Uk}function zF(t){Dot.call(this,t,(J7(),Nne))}function qF(t,e,n,i){sU.call(this,t,e,n,i)}function HF(t,e,n){null!=n&&Nit(e,Oyt(t,n))}function UF(t,e,n){null!=n&&Pit(e,Oyt(t,n))}function GF(t,e,n){return n=Ejt(t,e,11,n)}function YF(t,e){return t.a+=e.a,t.b+=e.b,t}function ZF(t,e){return t.a-=e.a,t.b-=e.b,t}function WF(t,e){return t.n.a=(xW(e),e+10)}function KF(t,e){return t.n.a=(xW(e),e+10)}function XF(t,e){return e==t||Ckt(ILt(e),t)}function VF(t,e){return null==KW(t.a,e,"")}function QF(t,e){return yE(),!pot(e.d.i,t)}function JF(t,e){pD(t.f)?oOt(t,e):MAt(t,e)}function tR(t,e){return e.Hh(t.a)}function eR(t,e){Dv.call(this,i7t+t+u8t+e)}function nR(t,e,n,i){nY.call(this,t,e,n,i)}function iR(t,e,n,i){nY.call(this,t,e,n,i)}function rR(t,e,n,i){iR.call(this,t,e,n,i)}function aR(t,e,n,i){iY.call(this,t,e,n,i)}function oR(t,e,n,i){iY.call(this,t,e,n,i)}function sR(t,e,n,i){iY.call(this,t,e,n,i)}function cR(t,e,n,i){oR.call(this,t,e,n,i)}function uR(t,e,n,i){oR.call(this,t,e,n,i)}function lR(t,e,n,i){sR.call(this,t,e,n,i)}function hR(t,e,n,i){uR.call(this,t,e,n,i)}function fR(t,e,n,i){JG.call(this,t,e,n,i)}function dR(t,e,n){this.a=t,JN.call(this,e,n)}function gR(t,e,n){this.c=e,this.b=n,this.a=t}function pR(t,e,n){return t.d=zz(e.Kb(n),164)}function bR(t,e){return t.Aj().Nh().Kh(t,e)}function wR(t,e){return t.Aj().Nh().Ih(t,e)}function mR(t,e){return xW(t),UI(t)===UI(e)}function yR(t,e){return xW(t),UI(t)===UI(e)}function vR(t,e){return Xk(Tpt(t.a,e,!1))}function xR(t,e){return Xk(Cpt(t.a,e,!1))}function kR(t,e){return t.b.sd(new OT(t,e))}function _R(t,e){return t.b.sd(new LT(t,e))}function AR(t,e){return t.b.sd(new NT(t,e))}function ER(t,e,n){return t.lastIndexOf(e,n)}function TR(t,e,n){return Sft(t[e.b],t[n.b])}function CR(t,e){return hct(e,(HZt(),Fpe),t)}function SR(t,e){return _O(e.a.d.p,t.a.d.p)}function IR(t,e){return _O(t.a.d.p,e.a.d.p)}function MR(t,e){return Sft(t.c-t.s,e.c-e.s)}function DR(t){return t.c?_9(t.c.a,t,0):-1}function OR(t){return t<100?null:new $k(t)}function LR(t){return t==YSe||t==WSe||t==ZSe}function NR(t,e){return aL(e,15)&&VBt(t.c,e)}function PR(t,e){Xne||e&&(t.d=e)}function BR(t,e){return!!dut(t,e)}function FR(t,e){this.c=t,UY.call(this,t,e)}function RR(t){this.c=t,mM.call(this,gKt,0)}function jR(t,e){Qz.call(this,t,t.length,e)}function $R(t,e,n){return zz(t.c,69).lk(e,n)}function zR(t,e,n){return zz(t.c,69).mk(e,n)}function qR(t,e,n){return cB(t,zz(e,332),n)}function HR(t,e,n){return uB(t,zz(e,332),n)}function UR(t,e,n){return M_t(t,zz(e,332),n)}function GR(t,e,n){return VAt(t,zz(e,332),n)}function YR(t,e){return null==e?null:dht(t.b,e)}function ZR(t){return YI(t)?(xW(t),t):t.ke()}function WR(t){return!isNaN(t)&&!isFinite(t)}function KR(t){uj(),this.a=(TX(),new Dx(t))}function XR(t){lq(),this.d=t,this.a=new Lw}function VR(t,e,n){this.a=t,this.b=e,this.c=n}function QR(t,e,n){this.a=t,this.b=e,this.c=n}function JR(t,e,n){this.d=t,this.b=n,this.a=e}function tj(t){CO(this),vX(this),zrt(this,t)}function ej(t){PD(this),eq(this.c,0,t.Pc())}function nj(t){hW(t.a),G8(t.c,t.b),t.b=null}function ij(t){this.a=t,OA(),fot(Date.now())}function rj(){rj=M,iie=new r,rie=new r}function aj(){aj=M,Ane=new L,Ene=new N}function oj(){oj=M,gDe=P8(Ote,HWt,1,0,5,1)}function sj(){sj=M,EOe=P8(Ote,HWt,1,0,5,1)}function cj(){cj=M,TOe=P8(Ote,HWt,1,0,5,1)}function uj(){uj=M,new rm((TX(),TX(),lne))}function lj(t){return J7(),Stt((t9(),jne),t)}function hj(t){return Uut(),Stt((n8(),Jne),t)}function fj(t){return hwt(),Stt((I4(),wie),t)}function dj(t){return Ftt(),Stt((M4(),xie),t)}function gj(t){return nFt(),Stt((Bot(),$ie),t)}function pj(t){return Fet(),Stt((J6(),Wie),t)}function bj(t){return Q7(),Stt((t8(),ere),t)}function wj(t){return U9(),Stt((e8(),sre),t)}function mj(t){return bWt(),Stt((EM(),Dre),t)}function yj(t){return Fot(),Stt((n9(),jre),t)}function vj(t){return Hwt(),Stt((i9(),Gre),t)}function xj(t){return Uwt(),Stt((r9(),iae),t)}function kj(t){return gE(),Stt((X2(),oae),t)}function _j(t){return Rtt(),Stt((D4(),jae),t)}function Aj(t){return H9(),Stt((i8(),Loe),t)}function Ej(t){return xEt(),Stt((Ztt(),Hoe),t)}function Tj(t){return Ost(),Stt((e9(),rse),t)}function Cj(t){return qht(),Stt((r8(),bse),t)}function Sj(t,e){if(!t)throw qw(new jv(e))}function Ij(t){return cTt(),Stt((hnt(),Dse),t)}function Mj(t){sU.call(this,t.d,t.c,t.a,t.b)}function Dj(t){sU.call(this,t.d,t.c,t.a,t.b)}function Oj(t,e,n){this.b=t,this.c=e,this.a=n}function Lj(t,e,n){this.b=t,this.a=e,this.c=n}function Nj(t,e,n){this.a=t,this.b=e,this.c=n}function Pj(t,e,n){this.a=t,this.b=e,this.c=n}function Bj(t,e,n){this.a=t,this.b=e,this.c=n}function Fj(t,e,n){this.a=t,this.b=e,this.c=n}function Rj(t,e,n){this.b=t,this.a=e,this.c=n}function jj(t,e,n){this.e=e,this.b=t,this.d=n}function $j(t,e,n){return pE(),t.a.Od(e,n),e}function zj(t){var e;return(e=new xt).e=t,e}function qj(t){var e;return(e=new Jm).b=t,e}function Hj(){Hj=M,Yse=new Nn,Zse=new Pn}function Uj(){Uj=M,pue=new mr,bue=new yr}function Gj(t){return Mst(),Stt((o9(),cue),t)}function Yj(t){return Dst(),Stt((c9(),_ue),t)}function Zj(t){return kBt(),Stt((Gat(),Kue),t)}function Wj(t){return LCt(),Stt((gnt(),rle),t)}function Kj(t){return K8(),Stt((F4(),cle),t)}function Xj(t){return Dit(),Stt((a8(),dle),t)}function Vj(t){return N_t(),Stt((qtt(),Mue),t)}function Qj(t){return Irt(),Stt((c8(),jue),t)}function Jj(t){return cit(),Stt((o8(),mle),t)}function t$(t){return Xmt(),Stt(($tt(),Ele),t)}function e$(t){return jtt(),Stt((L4(),Ile),t)}function n$(t){return Jst(),Stt((s8(),Nle),t)}function i$(t){return wTt(),Stt((mnt(),qle),t)}function r$(t){return b9(),Stt((N4(),Yle),t)}function a$(t){return qkt(),Stt((bnt(),the),t)}function o$(t){return JEt(),Stt((pnt(),che),t)}function s$(t){return gBt(),Stt((Xst(),vhe),t)}function c$(t){return jot(),Stt((l8(),Ehe),t)}function u$(t){return G9(),Stt((u8(),Mhe),t)}function l$(t){return G2(),Stt((R4(),Nhe),t)}function h$(t){return Edt(),Stt((Htt(),Gfe),t)}function f$(t){return EAt(),Stt((wnt(),rme),t)}function d$(t){return Tlt(),Stt((h8(),ume),t)}function g$(t){return gmt(),Stt((u9(),pme),t)}function p$(t){return sit(),Stt((g8(),Yme),t)}function b$(t){return lNt(),Stt((Uat(),Ome),t)}function w$(t){return vct(),Stt((d8(),Fme),t)}function m$(t){return Y9(),Stt((B4(),zme),t)}function y$(t){return Hat(),Stt((f8(),Vme),t)}function v$(t){return Pmt(),Stt((ztt(),kme),t)}function x$(t){return D6(),Stt((P4(),eye),t)}function k$(t){return Zut(),Stt((b8(),oye),t)}function _$(t){return bat(),Stt((w8(),hye),t)}function A$(t){return Lst(),Stt((p8(),bye),t)}function E$(t){return uit(),Stt((m8(),Nye),t)}function T$(t){return X4(),Stt(($4(),Uye),t)}function C$(t){return bQ(),Stt((z4(),ive),t)}function S$(t){return cJ(),Stt((q4(),sve),t)}function I$(t){return M6(),Stt((j4(),Cve),t)}function M$(t){return pQ(),Stt((H4(),Bve),t)}function D$(t){return Yvt(),Stt((a9(),qve),t)}function O$(t){return FCt(),Stt((ynt(),Qve),t)}function L$(t){return uJ(),Stt((Y4(),$xe),t)}function N$(t){return Srt(),Stt((G4(),Jxe),t)}function P$(t){return z0(),Stt((U4(),Uxe),t)}function B$(t){return Idt(),Stt((y8(),rke),t)}function F$(t){return B7(),Stt((Z4(),cke),t)}function R$(t){return Hut(),Stt((v8(),dke),t)}function j$(t){return Dyt(),Stt((s9(),Gke),t)}function $$(t){return qat(),Stt((k8(),Xke),t)}function z$(t){return Cdt(),Stt((x8(),n_e),t)}function q$(t){return QLt(),Stt((Ytt(),z_e),t)}function H$(t){return Sdt(),Stt((_8(),Y_e),t)}function U$(t){return SE(),Stt((W2(),K_e),t)}function G$(t){return IE(),Stt((Z2(),Q_e),t)}function Y$(t){return O6(),Stt((K4(),nAe),t)}function Z$(t){return LTt(),Stt((Utt(),uAe),t)}function W$(t){return ME(),Stt((K2(),YAe),t)}function K$(t){return Nst(),Stt((W4(),XAe),t)}function X$(t){return awt(),Stt((Gtt(),dEe),t)}function V$(t){return SCt(),Stt((Yat(),_Ee),t)}function Q$(t){return pmt(),Stt((dnt(),PEe),t)}function J$(t){return p_t(),Stt((fnt(),eTe),t)}function tz(t){return dWt(),Stt((TM(),Jce),t)}function ez(t){return Crt(),Stt((O4(),Gse),t)}function nz(t){return zht(),Stt((Wtt(),UCe),t)}function iz(t){return Ret(),Stt((E8(),KCe),t)}function rz(t){return Tdt(),Stt((f9(),eSe),t)}function az(t){return eEt(),Stt((xnt(),uSe),t)}function oz(t){return cht(),Stt((A8(),xSe),t)}function sz(t){return Wvt(),Stt((h9(),CSe),t)}function cz(t){return eOt(),Stt((Pot(),RSe),t)}function uz(t){return owt(),Stt((Ktt(),GSe),t)}function lz(t){return V_t(),Stt((Het(),JSe),t)}function hz(t){return dIt(),Stt((vnt(),sIe),t)}function fz(t){return vpt(),Stt((g9(),zIe),t)}function dz(t){return ejt(),Stt((Vst(),QIe),t)}function gz(t){return kYt(),Stt((Xtt(),MIe),t)}function pz(t){return zgt(),Stt((d9(),rMe),t)}function bz(t){return qut(),Stt((l9(),hMe),t)}function wz(t){return hDt(),Stt((Zat(),aDe),t)}function mz(t,e){return xW(t),t+(xW(e),e)}function yz(t,e){return OA(),h7(XX(t.a),e)}function vz(t,e){return OA(),h7(XX(t.a),e)}function xz(t,e){this.c=t,this.a=e,this.b=e-t}function kz(t,e,n){this.a=t,this.b=e,this.c=n}function _z(t,e,n){this.a=t,this.b=e,this.c=n}function Az(t,e,n){this.a=t,this.b=e,this.c=n}function Ez(t,e,n){this.a=t,this.b=e,this.c=n}function Tz(t,e,n){this.a=t,this.b=e,this.c=n}function Cz(t,e,n){this.e=t,this.a=e,this.c=n}function Sz(t,e,n){hO(),yQ.call(this,t,e,n)}function Iz(t,e,n){hO(),rW.call(this,t,e,n)}function Mz(t,e,n){hO(),rW.call(this,t,e,n)}function Dz(t,e,n){hO(),rW.call(this,t,e,n)}function Oz(t,e,n){hO(),Iz.call(this,t,e,n)}function Lz(t,e,n){hO(),Iz.call(this,t,e,n)}function Nz(t,e,n){hO(),Lz.call(this,t,e,n)}function Pz(t,e,n){hO(),Mz.call(this,t,e,n)}function Bz(t,e,n){hO(),Dz.call(this,t,e,n)}function Fz(t,e){return vZ(t),vZ(e),new lA(t,e)}function Rz(t,e){return vZ(t),vZ(e),new jq(t,e)}function jz(t,e){return vZ(t),vZ(e),new $q(t,e)}function $z(t,e){return vZ(t),vZ(e),new fA(t,e)}function zz(t,e){return Qq(null==t||Vwt(t,e)),t}function qz(t){var e;return htt(e=new Nw,t),e}function Hz(t){var e;return htt(e=new Fm,t),e}function Uz(t){var e;return Urt(e=new Gm,t),e}function Gz(t){var e;return Urt(e=new VA,t),e}function Yz(t){return!t.e&&(t.e=new Nw),t.e}function Zz(t){return!t.c&&(t.c=new zc),t.c}function Wz(t,e){return t.c[t.c.length]=e,!0}function Kz(t,e){this.c=t,this.b=e,this.a=!1}function Xz(t){this.d=t,Ed(this),this.b=rG(t.d)}function Vz(){this.a=";,;",this.b="",this.c=""}function Qz(t,e,n){YG.call(this,e,n),this.a=t}function Jz(t,e,n){this.b=t,bM.call(this,e,n)}function tq(t,e,n){this.c=t,CT.call(this,e,n)}function eq(t,e,n){$St(n,0,t,e,n.length,!1)}function nq(t,e,n,i,r){t.b=e,t.c=n,t.d=i,t.a=r}function iq(t,e){e&&(t.b=e,t.a=(_W(e),e.a))}function rq(t,e,n,i,r){t.d=e,t.c=n,t.a=i,t.b=r}function aq(t){var e,n;e=t.b,n=t.c,t.b=n,t.c=e}function oq(t){var e,n;n=t.d,e=t.a,t.d=e,t.a=n}function sq(t){return cot(PY(QM(t)?Sot(t):t))}function cq(t,e){return _O(cH(t.d),cH(e.d))}function uq(t,e){return e==(kYt(),SIe)?t.c:t.d}function lq(){lq=M,kYt(),Fye=SIe,Rye=cIe}function hq(){this.b=Uv(EB(vwt((fFt(),ooe))))}function fq(t){return pE(),P8(Ote,HWt,1,t,5,1)}function dq(t){return new PS(t.c+t.b,t.d+t.a)}function gq(t,e){return TE(),_O(t.d.p,e.d.p)}function pq(t){return CP(0!=t.b),Oet(t,t.a.a)}function bq(t){return CP(0!=t.b),Oet(t,t.c.b)}function wq(t,e){if(!t)throw qw(new Ov(e))}function mq(t,e){if(!t)throw qw(new jv(e))}function yq(t,e,n){pC.call(this,t,e),this.b=n}function vq(t,e,n){LI.call(this,t,e),this.c=n}function xq(t,e,n){get.call(this,e,n),this.d=t}function kq(t){cj(),vc.call(this),this.th(t)}function _q(t,e,n){this.a=t,NM.call(this,e,n)}function Aq(t,e,n){this.a=t,NM.call(this,e,n)}function Eq(t,e,n){LI.call(this,t,e),this.c=n}function Tq(){F5(),cW.call(this,(WE(),GDe))}function Cq(t){return null!=t&&!Wdt(t,LDe,NDe)}function Sq(t,e){return(Kht(t)<<4|Kht(e))&VKt}function Iq(t,e){return tK(),Ymt(t,e),new UW(t,e)}function Mq(t,e){var n;t.n&&(n=e,Wz(t.f,n))}function Dq(t,e,n){ret(t,e,new UZ(n))}function Oq(t,e){var n;return n=t.c,jit(t,e),n}function Lq(t,e){return t.g=e<0?-1:e,t}function Nq(t,e){return Yet(t),t.a*=e,t.b*=e,t}function Pq(t,e,n,i,r){t.c=e,t.d=n,t.b=i,t.a=r}function Bq(t,e){return r5(t,e,t.c.b,t.c),!0}function Fq(t){t.a.b=t.b,t.b.a=t.a,t.a=t.b=null}function Rq(t){this.b=t,this.a=fG(this.b.a).Ed()}function jq(t,e){this.b=t,this.a=e,zl.call(this)}function $q(t,e){this.a=t,this.b=e,zl.call(this)}function zq(t,e){YG.call(this,e,1040),this.a=t}function qq(t){return 0==t||isNaN(t)?t:t<0?-1:1}function Hq(t){return EX(),SEt(t)==QQ(DEt(t))}function Uq(t){return EX(),DEt(t)==QQ(SEt(t))}function Gq(t,e){return Qkt(t,new pC(e.a,e.b))}function Yq(t){return!d5(t)&&t.c.i.c==t.d.i.c}function Zq(t){var e;return e=t.n,t.a.b+e.d+e.a}function Wq(t){var e;return e=t.n,t.e.b+e.d+e.a}function Kq(t){var e;return e=t.n,t.e.a+e.b+e.c}function Xq(t){return pWt(),new cU(0,t)}function Vq(t){return t.a?t.a:nX(t)}function Qq(t){if(!t)throw qw(new Rv(null))}function Jq(){Jq=M,TX(),sLe=new Ud(S9t)}function tH(){tH=M,new lmt((ev(),$te),(nv(),jte))}function eH(){eH=M,Mee=P8(Oee,lKt,19,256,0,1)}function nH(t,e,n,i){sgt.call(this,t,e,n,i,0,0)}function iH(t,e,n){return KW(t.b,zz(n.b,17),e)}function rH(t,e,n){return KW(t.b,zz(n.b,17),e)}function aH(t,e){return Wz(t,new PS(e.a,e.b))}function oH(t,e){return t.c=e)throw qw(new Tm)}function jG(t,e,n){return OZ(e,0,qH(e[0],n[0])),e}function $G(t,e,n){e.Ye(n,Uv(EB(FZ(t.b,n)))*t.a)}function zG(t,e,n){return _Bt(),Fat(t,e)&&Fat(t,n)}function qG(t){return dIt(),!t.Hc(nIe)&&!t.Hc(rIe)}function HG(t){return new PS(t.c+t.b/2,t.d+t.a/2)}function UG(t,e){return e.kh()?nht(t.b,zz(e,49)):e}function GG(t,e){this.e=t,this.d=0!=(64&e)?e|hKt:e}function YG(t,e){this.c=0,this.d=t,this.b=64|e|hKt}function ZG(t){this.b=new Q6(11),this.a=(CX(),t)}function WG(t){this.b=null,this.a=(CX(),t||gne)}function KG(t){this.a=amt(t.a),this.b=new ej(t.b)}function XG(t){this.b=t,aP.call(this,t),EL(this)}function VG(t){this.b=t,sP.call(this,t),TL(this)}function QG(t,e,n){this.a=t,nR.call(this,e,n,5,6)}function JG(t,e,n,i){this.b=t,OL.call(this,e,n,i)}function tY(t,e,n,i,r){x7.call(this,t,e,n,i,r,-1)}function eY(t,e,n,i,r){k7.call(this,t,e,n,i,r,-1)}function nY(t,e,n,i){OL.call(this,t,e,n),this.b=i}function iY(t,e,n,i){vq.call(this,t,e,n),this.b=i}function rY(t){NI.call(this,t,!1),this.a=!1}function aY(t,e){this.b=t,lf.call(this,t.b),this.a=e}function oY(t,e){WZ(),kA.call(this,t,lht(new Qv(e)))}function sY(t,e){return pWt(),new aW(t,e,0)}function cY(t,e){return pWt(),new aW(6,t,e)}function uY(t,e){return yR(t.substr(0,e.length),e)}function lY(t,e){return ZI(e)?nV(t,e):!!DV(t.f,e)}function hY(t,e){for(xW(e);t.Ob();)e.td(t.Pb())}function fY(t,e,n){DBt(),this.e=t,this.d=e,this.a=n}function dY(t,e,n,i){var r;(r=t.i).i=e,r.a=n,r.b=i}function gY(t){var e;for(e=t;e.f;)e=e.f;return e}function pY(t){var e;return CP(null!=(e=Act(t))),e}function bY(t){var e;return CP(null!=(e=vft(t))),e}function wY(t,e){var n;return g6(e,n=t.a.gc()),n-e}function mY(t,e){var n;for(n=0;n0?n.Math.log(t/e):-100}function $Y(t,e){return Xlt(t,e)<0?-1:Xlt(t,e)>0?1:0}function zY(t,e,n){return Cqt(t,zz(e,46),zz(n,167))}function qY(t,e){return zz(gG(fG(t.a)).Xb(e),42).cd()}function HY(t,e){return met(e,t.length),new zq(t,e)}function UY(t,e){this.d=t,DL.call(this,t),this.e=e}function GY(t){this.d=(xW(t),t),this.a=0,this.c=gKt}function YY(t,e){Dw.call(this,1),this.a=t,this.b=e}function ZY(t,e){return t.c?ZY(t.c,e):Wz(t.b,e),t}function WY(t,e,n){var i;return i=ptt(t,e),r4(t,e,n),i}function KY(t,e){return y9(t.slice(0,e),t)}function XY(t,e,n){var i;for(i=0;i=t.g}function JZ(t,e,n){return PFt(t,xrt(t,e,n))}function tW(t,e){var n;ptt(t,n=t.a.length),r4(t,n,e)}function eW(t,e){console[t].call(console,e)}function nW(t,e){var n;++t.j,n=t.Vi(),t.Ii(t.oi(n,e))}function iW(t,e,n){zz(e.b,65),Det(e.a,new _z(t,n,e))}function rW(t,e,n){kw.call(this,e),this.a=t,this.b=n}function aW(t,e,n){Dw.call(this,t),this.a=e,this.b=n}function oW(t,e,n){this.a=t,xw.call(this,e),this.b=n}function sW(t,e,n){this.a=t,q2.call(this,8,e,null,n)}function cW(t){this.a=(xW($7t),$7t),this.b=t,new Ny}function uW(t){this.c=t,this.b=this.c.a,this.a=this.c.e}function lW(t){this.c=t,this.b=t.a.d.a,dB(t.a.e,this)}function hW(t){EP(-1!=t.c),t.d.$c(t.c),t.b=t.c,t.c=-1}function fW(t){return n.Math.sqrt(t.a*t.a+t.b*t.b)}function dW(t,e){return RG(e,t.a.c.length),PH(t.a,e)}function gW(t,e){return UI(t)===UI(e)||null!=t&&Pht(t,e)}function pW(t){return 0>=t?new KA:Kit(t-1)}function bW(t){return!!TNe&&nV(TNe,t)}function wW(t){return t?t.dc():!t.Kc().Ob()}function mW(t){return!t.a&&t.c?t.c.b:t.a}function yW(t){return!t.a&&(t.a=new OL(LMe,t,4)),t.a}function vW(t){return!t.d&&(t.d=new OL(KDe,t,1)),t.d}function xW(t){if(null==t)throw qw(new bm);return t}function kW(t){t.c?t.c.He():(t.d=!0,VNt(t))}function _W(t){t.c?_W(t.c):(Vft(t),t.d=!0)}function AW(t){AK(t.a),t.b=P8(Ote,HWt,1,t.b.length,5,1)}function EW(t,e){return _O(e.j.c.length,t.j.c.length)}function TW(t,e){t.c<0||t.b.b=0?t.Bh(n):oIt(t,e)}function SW(t){return t.c.i.c==t.d.i.c}function IW(t){if(4!=t.p)throw qw(new pm);return t.e}function MW(t){if(3!=t.p)throw qw(new pm);return t.e}function DW(t){if(6!=t.p)throw qw(new pm);return t.f}function OW(t){if(6!=t.p)throw qw(new pm);return t.k}function LW(t){if(3!=t.p)throw qw(new pm);return t.j}function NW(t){if(4!=t.p)throw qw(new pm);return t.j}function PW(t){return!t.b&&(t.b=new Aw(new Py)),t.b}function BW(t){return-2==t.c&&bd(t,cEt(t.g,t.b)),t.c}function FW(t,e){var n;return(n=yZ("",t)).n=e,n.i=1,n}function RW(t,e){LU(zz(e.b,65),t),Det(e.a,new Dg(t))}function jW(t,e){h7((!t.a&&(t.a=new cF(t,t)),t.a),e)}function $W(t,e){this.b=t,UY.call(this,t,e),EL(this)}function zW(t,e){this.b=t,FR.call(this,t,e),TL(this)}function qW(t,e,n,i){mA.call(this,t,e),this.d=n,this.a=i}function HW(t,e,n,i){mA.call(this,t,n),this.a=e,this.f=i}function UW(t,e){WO.call(this,Xit(vZ(t),vZ(e))),this.a=e}function GW(){bEt.call(this,C9t,(r_(),pLe)),KHt(this)}function YW(){bEt.call(this,X7t,(i_(),tOe)),Dqt(this)}function ZW(){bA.call(this,"DELAUNAY_TRIANGULATION",0)}function WW(t){return String.fromCharCode.apply(null,t)}function KW(t,e,n){return ZI(e)?yJ(t,e,n):_St(t.f,e,n)}function XW(t){return TX(),t?t.ve():(CX(),CX(),bne)}function VW(t,e,n){return Pst(),n.pg(t,zz(e.cd(),146))}function QW(t,e){return tH(),new lmt(new rN(t),new iN(e))}function JW(t){return dit(t,PKt),eet(adt(adt(5,t),t/10|0))}function tK(){tK=M,qte=new lv(Sst(Ux(Hte,1),kKt,42,0,[]))}function eK(t){return!t.d&&(t.d=new qd(t.c.Cc())),t.d}function nK(t){return!t.a&&(t.a=new Lx(t.c.vc())),t.a}function iK(t){return!t.b&&(t.b=new Dx(t.c.ec())),t.b}function rK(t,e){for(;e-- >0;)t=t<<1|(t<0?1:0);return t}function aK(t,e){return UI(t)===UI(e)||null!=t&&Pht(t,e)}function oK(t,e){return lN(),zz(e.b,19).a(i=SQ(n))&&++i,i}function JK(t){var e;return ont(e=new Rw,t),e}function tX(t){var e;return FEt(e=new Rw,t),e}function eX(t,e){return jat(e,FZ(t.f,e)),null}function nX(t){return Qit(t)||null}function iX(t){return!t.b&&(t.b=new nY(jMe,t,12,3)),t.b}function rX(t){return null!=t&&PA(kDe,t.toLowerCase())}function aX(t,e){return Sft(iU(t)*nU(t),iU(e)*nU(e))}function oX(t,e){return Sft(iU(t)*nU(t),iU(e)*nU(e))}function sX(t,e){return Sft(t.d.c+t.d.b/2,e.d.c+e.d.b/2)}function cX(t,e){return Sft(t.g.c+t.g.b/2,e.g.c+e.g.b/2)}function uX(t,e,n){n.a?Int(t,e.b-t.f/2):Snt(t,e.a-t.g/2)}function lX(t,e,n,i){this.a=t,this.b=e,this.c=n,this.d=i}function hX(t,e,n,i){this.a=t,this.b=e,this.c=n,this.d=i}function fX(t,e,n,i){this.e=t,this.a=e,this.c=n,this.d=i}function dX(t,e,n,i){this.a=t,this.c=e,this.d=n,this.b=i}function gX(t,e,n,i){hO(),n6.call(this,e,n,i),this.a=t}function pX(t,e,n,i){hO(),n6.call(this,e,n,i),this.a=t}function bX(t,e){this.a=t,MB.call(this,t,zz(t.d,15).Zc(e))}function wX(t){this.f=t,this.c=this.f.e,t.f>0&&ckt(this)}function mX(t,e,n,i){this.b=t,this.c=i,mM.call(this,e,n)}function yX(t){return CP(t.b=0&&yR(t.substr(n,e.length),e)}function LV(t,e,n,i,r,a,o){return new d4(t.e,e,n,i,r,a,o)}function NV(t,e,n,i,r,a){this.a=t,kit.call(this,e,n,i,r,a)}function PV(t,e,n,i,r,a){this.a=t,kit.call(this,e,n,i,r,a)}function BV(t,e){this.g=t,this.d=Sst(Ux(Mse,1),s1t,10,0,[e])}function FV(t,e){this.e=t,this.a=Ote,this.b=OFt(e),this.c=e}function RV(t,e){NF.call(this),Bet(this),this.a=t,this.c=e}function jV(t,e,n,i){OZ(t.c[e.g],n.g,i),OZ(t.c[n.g],e.g,i)}function $V(t,e,n,i){OZ(t.c[e.g],e.g,n),OZ(t.b[e.g],e.g,i)}function zV(){return D6(),Sst(Ux(aye,1),LKt,376,0,[Jme,Qme])}function qV(){return b9(),Sst(Ux(Jle,1),LKt,479,0,[Ule,Hle])}function HV(){return jtt(),Sst(Ux(Lle,1),LKt,419,0,[Tle,Cle])}function UV(){return K8(),Sst(Ux(fle,1),LKt,422,0,[ale,ole])}function GV(){return G2(),Sst(Ux(Ufe,1),LKt,420,0,[Dhe,Ohe])}function YV(){return Y9(),Sst(Ux(Gme,1),LKt,421,0,[Rme,jme])}function ZV(){return X4(),Sst(Ux(Kye,1),LKt,523,0,[qye,zye])}function WV(){return M6(),Sst(Ux(Pve,1),LKt,520,0,[Eve,Ave])}function KV(){return bQ(),Sst(Ux(ove,1),LKt,516,0,[eve,tve])}function XV(){return cJ(),Sst(Ux(Tve,1),LKt,515,0,[rve,ave])}function VV(){return pQ(),Sst(Ux(zve,1),LKt,455,0,[Lve,Nve])}function QV(){return z0(),Sst(Ux(Qxe,1),LKt,425,0,[qxe,zxe])}function JV(){return uJ(),Sst(Ux(Hxe,1),LKt,480,0,[Fxe,Rxe])}function tQ(){return Srt(),Sst(Ux(ike,1),LKt,495,0,[Xxe,Vxe])}function eQ(){return B7(),Sst(Ux(fke,1),LKt,426,0,[ake,oke])}function nQ(){return Nst(),Sst(Ux(VAe,1),LKt,429,0,[WAe,ZAe])}function iQ(){return O6(),Sst(Ux(cAe,1),LKt,430,0,[tAe,J_e])}function rQ(){return hwt(),Sst(Ux(vie,1),LKt,428,0,[pie,gie])}function aQ(){return Ftt(),Sst(Ux(Rie,1),LKt,427,0,[mie,yie])}function oQ(){return Rtt(),Sst(Ux(Ooe,1),LKt,424,0,[Bae,Fae])}function sQ(){return Crt(),Sst(Ux(Wse,1),LKt,511,0,[Hse,qse])}function cQ(t,e,n,i){return n>=0?t.jh(e,n,i):t.Sg(null,n,i)}function uQ(t){return 0==t.b.b?t.a.$e():pq(t.b)}function lQ(t){if(5!=t.p)throw qw(new pm);return pU(t.f)}function hQ(t){if(5!=t.p)throw qw(new pm);return pU(t.k)}function fQ(t){return UI(t.a)===UI((pat(),IOe))&&RHt(t),t.a}function dQ(t){this.a=zz(vZ(t),271),this.b=(TX(),new pN(t))}function gQ(t,e){Jf(this,new PS(t.a,t.b)),td(this,Gz(e))}function pQ(){pQ=M,Lve=new cS(oQt,0),Nve=new cS(sQt,1)}function bQ(){bQ=M,eve=new aS(sQt,0),tve=new aS(oQt,1)}function wQ(){ov.call(this,new ZA(net(12))),oN(!0),this.a=2}function mQ(t,e,n){pWt(),Dw.call(this,t),this.b=e,this.a=n}function yQ(t,e,n){hO(),kw.call(this,e),this.a=t,this.b=n}function vQ(t){NF.call(this),Bet(this),this.a=t,this.c=!0}function xQ(t){var e;e=t.c.d.b,t.b=e,t.a=t.c.d,e.a=t.c.d.b=t}function kQ(t){mit(t.a),FD(t.a),ngt(new Cg(t.a))}function _Q(t,e){uFt(t,!0),Det(t.e.wf(),new Oj(t,!0,e))}function AQ(t,e){return a4(e),Qnt(t,P8(DNe,hXt,25,e,15,1),e)}function EQ(t,e){return EX(),t==QQ(SEt(e))||t==QQ(DEt(e))}function TQ(t,e){return null==e?HI(DV(t.f,null)):lT(t.g,e)}function CQ(t){return 0==t.b?null:(CP(0!=t.b),Oet(t,t.a.a))}function SQ(t){return 0|Math.max(Math.min(t,FWt),-2147483648)}function IQ(t,e){var n=tee[t.charCodeAt(0)];return null==n?t:n}function MQ(t,e){return WX(t,"set1"),WX(e,"set2"),new _A(t,e)}function DQ(t,e){return YF(HP(ent(t.f,e)),t.f.d)}function OQ(t,e){var n;return QUt(t,e,n=new H),n.d}function LQ(t,e,n,i){var r;r=new $F,e.a[n.g]=r,yU(t.b,i,r)}function NQ(t,e,n){var i;(i=t.Yg(e))>=0?t.sh(i,n):ELt(t,e,n)}function PQ(t,e,n){lJ(),t&&KW(hDe,t,e),t&&KW(lDe,t,n)}function BQ(t,e,n){this.i=new Nw,this.b=t,this.g=e,this.a=n}function FQ(t,e,n){this.c=new Nw,this.e=t,this.f=e,this.b=n}function RQ(t,e,n){this.a=new Nw,this.e=t,this.f=e,this.c=n}function jQ(t,e){KO(this),this.f=e,this.g=t,kX(this),this._d()}function $Q(t,e){var n;n=t.q.getHours(),t.q.setDate(e),dzt(t,n)}function zQ(t,e){var n;for(vZ(e),n=t.a;n;n=n.c)e.Od(n.g,n.i)}function qQ(t){var e;return Lct(e=new d_(net(t.length)),t),e}function HQ(t){function e(){}return e.prototype=t||{},new e}function UQ(t,e){return!!pst(t,e)&&(iit(t),!0)}function GQ(t,e){if(null==e)throw qw(new bm);return cbt(t,e)}function YQ(t){if(t.qe())return null;var e=t.n;return CWt[e]}function ZQ(t){return t.Db>>16!=3?null:zz(t.Cb,33)}function WQ(t){return t.Db>>16!=9?null:zz(t.Cb,33)}function KQ(t){return t.Db>>16!=6?null:zz(t.Cb,79)}function XQ(t){return t.Db>>16!=7?null:zz(t.Cb,235)}function VQ(t){return t.Db>>16!=7?null:zz(t.Cb,160)}function QQ(t){return t.Db>>16!=11?null:zz(t.Cb,33)}function JQ(t,e){var n;return(n=t.Yg(e))>=0?t.lh(n):UIt(t,e)}function tJ(t,e){var n;return uEt(n=new LH(e),t),new ej(n)}function eJ(t){var e;return e=t.d,e=t.si(t.f),h7(t,e),e.Ob()}function nJ(t,e){return t.b+=e.b,t.c+=e.c,t.d+=e.d,t.a+=e.a,t}function iJ(t,e){return n.Math.abs(t)0}function aJ(){this.a=new hD,this.e=new Fm,this.g=0,this.i=0}function oJ(t){this.a=t,this.b=P8(jye,lKt,1944,t.e.length,0,2)}function sJ(t,e,n){var i;i=Pct(t,e,n),t.b=new vrt(i.c.length)}function cJ(){cJ=M,rve=new rS(mQt,0),ave=new rS("UP",1)}function uJ(){uJ=M,Fxe=new dS(Z3t,0),Rxe=new dS("FAN",1)}function lJ(){lJ=M,hDe=new Pw,lDe=new Pw,$I(vne,new pc)}function hJ(t){if(0!=t.p)throw qw(new pm);return QI(t.f,0)}function fJ(t){if(0!=t.p)throw qw(new pm);return QI(t.k,0)}function dJ(t){return t.Db>>16!=3?null:zz(t.Cb,147)}function gJ(t){return t.Db>>16!=6?null:zz(t.Cb,235)}function pJ(t){return t.Db>>16!=17?null:zz(t.Cb,26)}function bJ(t,e){var n=t.a=t.a||[];return n[e]||(n[e]=t.le(e))}function wJ(t,e){var n;return null==(n=t.a.get(e))?new Array:n}function mJ(t,e){var n;n=t.q.getHours(),t.q.setMonth(e),dzt(t,n)}function yJ(t,e,n){return null==e?_St(t.f,null,n):cdt(t.g,e,n)}function vJ(t,e,n,i,r,a){return new N9(t.e,e,t.aj(),n,i,r,a)}function xJ(t,e,n){return t.a=hP(t.a,0,e)+""+n+tM(t.a,e),t}function kJ(t,e,n){return Wz(t.a,(tK(),Ymt(e,n),new mA(e,n))),t}function _J(t){return cN(t.c),t.e=t.a=t.c,t.c=t.c.c,++t.d,t.a.f}function AJ(t){return cN(t.e),t.c=t.a=t.e,t.e=t.e.e,--t.d,t.a.f}function EJ(t,e){t.d&&v9(t.d.e,t),t.d=e,t.d&&Wz(t.d.e,t)}function TJ(t,e){t.c&&v9(t.c.g,t),t.c=e,t.c&&Wz(t.c.g,t)}function CJ(t,e){t.c&&v9(t.c.a,t),t.c=e,t.c&&Wz(t.c.a,t)}function SJ(t,e){t.i&&v9(t.i.j,t),t.i=e,t.i&&Wz(t.i.j,t)}function IJ(t,e,n){this.a=e,this.c=t,this.b=(vZ(n),new ej(n))}function MJ(t,e,n){this.a=e,this.c=t,this.b=(vZ(n),new ej(n))}function DJ(t,e){this.a=t,this.c=zO(this.a),this.b=new bV(e)}function OJ(t){return Vft(t),DK(t,new mg(new Fm))}function LJ(t,e){if(t<0||t>e)throw qw(new Dv(_Vt+t+AVt+e))}function NJ(t,e){return IU(t.a,e)?_Y(t,zz(e,22).g,null):null}function PJ(t){return Clt(),lN(),0!=zz(t.a,81).d.e}function BJ(){BJ=M,Wte=dlt((rv(),Sst(Ux(Kte,1),LKt,538,0,[Yte])))}function FJ(){FJ=M,wye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function RJ(){RJ=M,mye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function jJ(){jJ=M,vye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function $J(){$J=M,Gye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function zJ(){zJ=M,Xye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function qJ(){qJ=M,Jye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function HJ(){HJ=M,cve=pH(new z2,(xEt(),zoe),(dWt(),pce))}function UJ(){UJ=M,Gxe=WU(new z2,(Yvt(),$ve),(FCt(),Gve))}function GJ(t,e,n,i){this.c=t,this.d=i,WJ(this,e),KJ(this,n)}function YJ(t){this.c=new VA,this.b=t.b,this.d=t.c,this.a=t.a}function ZJ(t){this.a=n.Math.cos(t),this.b=n.Math.sin(t)}function WJ(t,e){t.a&&v9(t.a.k,t),t.a=e,t.a&&Wz(t.a.k,t)}function KJ(t,e){t.b&&v9(t.b.f,t),t.b=e,t.b&&Wz(t.b.f,t)}function XJ(t,e){iW(t,t.b,t.c),zz(t.b.b,65),e&&zz(e.b,65).b}function VJ(t,e){Yft(t,e),aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),2)}function QJ(t,e){aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),4),Prt(t,e)}function JJ(t,e){aL(t.Cb,179)&&(zz(t.Cb,179).tb=null),Prt(t,e)}function t1(t,e){return JE(),ltt(e)?new fH(e,t):new PI(e,t)}function e1(t,e){null!=e.c&&tW(t,new UZ(e.c))}function n1(t){var e;return i_(),ont(e=new Rw,t),e}function i1(t){var e;return i_(),ont(e=new Rw,t),e}function r1(t,e){var n;return n=new qZ(t),e.c[e.c.length]=n,n}function a1(t,e){var n;return(n=zz(dht(MX(t.a),e),14))?n.gc():0}function o1(t){return Vft(t),CX(),CX(),xet(t,pne)}function s1(t){for(var e;;)if(e=t.Pb(),!t.Ob())return e}function c1(t,e){Yy.call(this,new ZA(net(t))),dit(e,uKt),this.a=e}function u1(t,e,n){Hht(e,n,t.gc()),this.c=t,this.a=e,this.b=n-e}function l1(t,e,n){var i;Hht(e,n,t.c.length),i=n-e,C_(t.c,e,i)}function h1(t,e){lL(t,pU(n0(xG(e,24),lVt)),pU(n0(e,lVt)))}function f1(t,e){if(t<0||t>=e)throw qw(new Dv(_Vt+t+AVt+e))}function d1(t,e){if(t<0||t>=e)throw qw(new Mx(_Vt+t+AVt+e))}function g1(t,e){this.b=(xW(t),t),this.a=0==(e&$Xt)?64|e|hKt:e}function p1(t){BD(this),Cm(this.a,kct(n.Math.max(8,t))<<1)}function b1(t){return Oct(Sst(Ux(CEe,1),lKt,8,0,[t.i.n,t.n,t.a]))}function w1(){return Uut(),Sst(Ux(tie,1),LKt,132,0,[Gne,Yne,Zne])}function m1(){return Fet(),Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])}function y1(){return Q7(),Sst(Ux(nre,1),LKt,461,0,[Vie,Xie,Qie])}function v1(){return U9(),Sst(Ux(Mre,1),LKt,462,0,[are,rre,ire])}function x1(){return qht(),Sst(Ux(yse,1),LKt,423,0,[gse,dse,fse])}function k1(){return H9(),Sst(Ux(qoe,1),LKt,379,0,[Moe,Ioe,Doe])}function _1(){return Tlt(),Sst(Ux(gme,1),LKt,378,0,[ame,ome,sme])}function A1(){return Dit(),Sst(Ux(wle,1),LKt,314,0,[lle,ule,hle])}function E1(){return cit(),Sst(Ux(Ale,1),LKt,337,0,[gle,ble,ple])}function T1(){return Jst(),Sst(Ux(zle,1),LKt,450,0,[Dle,Mle,Ole])}function C1(){return Irt(),Sst(Ux(Wue,1),LKt,361,0,[Fue,Bue,Pue])}function S1(){return G9(),Sst(Ux(Lhe,1),LKt,303,0,[Che,She,The])}function I1(){return jot(),Sst(Ux(Ihe,1),LKt,292,0,[khe,_he,xhe])}function M1(){return sit(),Sst(Ux(Xme,1),LKt,452,0,[Ume,qme,Hme])}function D1(){return vct(),Sst(Ux($me,1),LKt,339,0,[Nme,Lme,Pme])}function O1(){return Hat(),Sst(Ux(tye,1),LKt,375,0,[Zme,Wme,Kme])}function L1(){return Lst(),Sst(Ux(Tye,1),LKt,377,0,[dye,gye,fye])}function N1(){return Zut(),Sst(Ux(lye,1),LKt,336,0,[nye,iye,rye])}function P1(){return bat(),Sst(Ux(pye,1),LKt,338,0,[uye,sye,cye])}function B1(){return uit(),Sst(Ux(Pye,1),LKt,454,0,[Mye,Dye,Oye])}function F1(){return Idt(),Sst(Ux(ske,1),LKt,442,0,[nke,tke,eke])}function R1(){return Hut(),Sst(Ux(Uke,1),LKt,380,0,[uke,lke,hke])}function j1(){return Cdt(),Sst(Ux(N_e,1),LKt,381,0,[Jke,t_e,Qke])}function $1(){return qat(),Sst(Ux(Vke,1),LKt,293,0,[Zke,Wke,Yke])}function z1(){return Sdt(),Sst(Ux(W_e,1),LKt,437,0,[q_e,H_e,U_e])}function q1(){return cht(),Sst(Ux(TSe,1),LKt,334,0,[mSe,wSe,ySe])}function H1(){return Ret(),Sst(Ux(tSe,1),LKt,272,0,[GCe,YCe,ZCe])}function U1(t,e){return kOt(t,e,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function G1(t,e,n){var i;return(i=oqt(t,e,!1)).b<=e&&i.a<=n}function Y1(t,e,n){var i;(i=new ao).b=e,i.a=n,++e.b,Wz(t.d,i)}function Z1(t,e){var n;return AP(!!(n=(xW(t),t).g)),xW(e),n(e)}function W1(t,e){var n,i;return i=wY(t,e),n=t.a.Zc(i),new xA(t,n)}function K1(t){return t.Db>>16!=6?null:zz(oDt(t),235)}function X1(t){if(2!=t.p)throw qw(new pm);return pU(t.f)&VKt}function V1(t){if(2!=t.p)throw qw(new pm);return pU(t.k)&VKt}function Q1(t){return t.a==(F5(),nLe)&&pd(t,iLt(t.g,t.b)),t.a}function J1(t){return t.d==(F5(),nLe)&&wd(t,PRt(t.g,t.b)),t.d}function t0(t){return CP(t.ai?1:0}function g0(t,e){var n;return n=T9(e),zz(FZ(t.c,n),19).a}function p0(t,e){var n;for(n=t+"";n.length0&&0==t.a[--t.d];);0==t.a[t.d++]&&(t.e=0)}function W0(t){return t.a?0==t.e.length?t.a.a:t.a.a+""+t.e:t.c}function K0(t){return!(!t.a||0==q9(t.a.a).i||t.b&&jmt(t.b))}function X0(t){return!(!t.u||0==o4(t.u.a).i||t.n&&Rmt(t.n))}function V0(t){return vH(t.e.Hd().gc()*t.c.Hd().gc(),16,new Uh(t))}function Q0(t,e){return $Y(fot(t.q.getTime()),fot(e.q.getTime()))}function J0(t){return zz(Vbt(t,P8(vse,o1t,17,t.c.length,0,1)),474)}function t2(t){return zz(Vbt(t,P8(Mse,s1t,10,t.c.length,0,1)),193)}function e2(t){return zJ(),!(d5(t)||!d5(t)&&t.c.i.c==t.d.i.c)}function n2(t,e,n){vZ(t),Bvt(new IJ(new ej(t),e,n))}function i2(t,e,n){vZ(t),Fvt(new MJ(new ej(t),e,n))}function r2(t,e){var n;return n=1-e,t.a[n]=prt(t.a[n],n),prt(t,e)}function a2(t,e){var n;t.e=new Qy,yO(n=pBt(e),t.c),MBt(t,n,0)}function o2(t,e,n,i){var r;(r=new ys).a=e,r.b=n,r.c=i,Bq(t.a,r)}function s2(t,e,n,i){var r;(r=new ys).a=e,r.b=n,r.c=i,Bq(t.b,r)}function c2(t){var e,n;return n=njt(e=new fZ,t),xGt(e),n}function u2(){var t,e;return t=new Rw,Wz(KOe,e=t),e}function l2(t){return t.j.c=P8(Ote,HWt,1,0,5,1),AK(t.c),bK(t.a),t}function h2(t){return EE(),aL(t.g,10)?zz(t.g,10):null}function f2(t){return!_K(t).dc()&&(LO(t,new y),!0)}function d2(t){if(!("stack"in t))try{throw t}catch(t){}return t}function g2(t,e){if(t<0||t>=e)throw qw(new Dv(NSt(t,e)));return t}function p2(t,e,n){if(t<0||en)throw qw(new Dv(uCt(t,e,n)))}function b2(t,e){if(AY(t.a,e),e.d)throw qw(new pv(MVt));e.d=t}function w2(t,e){if(e.$modCount!=t.$modCount)throw qw(new mm)}function m2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function y2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function v2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function x2(t,e){return t.a<=t.b&&(e.ud(t.a++),!0)}function k2(t){var e;return QM(t)?-0==(e=t)?0:e:wtt(t)}function _2(t){var e;return _W(t),e=new $,b_(t.a,new bg(e)),e}function A2(t){var e;return _W(t),e=new j,b_(t.a,new pg(e)),e}function E2(t,e){this.a=t,Td.call(this,t),LJ(e,t.gc()),this.b=e}function T2(t){this.e=t,this.b=this.e.a.entries(),this.a=new Array}function C2(t){return vH(t.e.Hd().gc()*t.c.Hd().gc(),273,new Hh(t))}function S2(t){return new Q6((dit(t,PKt),eet(adt(adt(5,t),t/10|0))))}function I2(t){return zz(Vbt(t,P8(Use,c1t,11,t.c.length,0,1)),1943)}function M2(t,e,n){return n.f.c.length>0?zY(t.a,e,n):zY(t.b,e,n)}function D2(t,e,n){t.d&&v9(t.d.e,t),t.d=e,t.d&&xU(t.d.e,n,t)}function O2(t,e){yZt(e,t),oq(t.d),oq(zz(vEt(t,(HZt(),Dbe)),207))}function L2(t,e){mZt(e,t),aq(t.d),aq(zz(vEt(t,(HZt(),Dbe)),207))}function N2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=n.fe()),i}function P2(t,e){var n,i;return i=null,(n=ptt(t,e))&&(i=n.ie()),i}function B2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=n.ie()),i}function F2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=xCt(n)),i}function R2(t,e,n){var i;return i=Vpt(n),pRt(t.g,i,e),pRt(t.i,e,n),e}function j2(t,e,n){var i;i=Npt();try{return pF(t,e,n)}finally{v3(i)}}function $2(t){var e;e=t.Wg(),this.a=aL(e,69)?zz(e,69).Zh():e.Kc()}function z2(){Vy.call(this),this.j.c=P8(Ote,HWt,1,0,5,1),this.a=-1}function q2(t,e,n,i){this.d=t,this.n=e,this.g=n,this.o=i,this.p=-1}function H2(t,e,n,i){this.e=i,this.d=null,this.c=t,this.a=e,this.b=n}function U2(t,e,n){this.d=new $p(this),this.e=t,this.i=e,this.f=n}function G2(){G2=M,Dhe=new BC(iQt,0),Ohe=new BC("TOP_LEFT",1)}function Y2(){Y2=M,Aye=QW(rft(1),rft(4)),_ye=QW(rft(1),rft(2))}function Z2(){Z2=M,Q_e=dlt((IE(),Sst(Ux(eAe,1),LKt,551,0,[X_e])))}function W2(){W2=M,K_e=dlt((SE(),Sst(Ux(V_e,1),LKt,482,0,[Z_e])))}function K2(){K2=M,YAe=dlt((ME(),Sst(Ux(KAe,1),LKt,530,0,[UAe])))}function X2(){X2=M,oae=dlt((gE(),Sst(Ux(Cae,1),LKt,481,0,[rae])))}function V2(){return Fot(),Sst(Ux(Ure,1),LKt,406,0,[Fre,Nre,Pre,Bre])}function Q2(){return J7(),Sst(Ux($ne,1),LKt,297,0,[Nne,Pne,Bne,Fne])}function J2(){return Uwt(),Sst(Ux(aae,1),LKt,394,0,[Jre,Qre,tae,eae])}function t3(){return Hwt(),Sst(Ux(Yre,1),LKt,323,0,[zre,$re,qre,Hre])}function e3(){return Ost(),Sst(Ux(pse,1),LKt,405,0,[Joe,nse,tse,ese])}function n3(){return Mst(),Sst(Ux(wue,1),LKt,360,0,[oue,rue,aue,iue])}function i3(t,e,n,i){return aL(n,54)?new MP(t,e,n,i):new uG(t,e,n,i)}function r3(){return Dst(),Sst(Ux(Iue,1),LKt,411,0,[mue,yue,vue,xue])}function a3(t){return t.j==(kYt(),TIe)&&TN(ZMt(t),cIe)}function o3(t,e){var n;TJ(n=e.a,e.c.d),EJ(n,e.d.d),tnt(n.a,t.n)}function s3(t,e){return zz(ON(IG(zz(l6(t.k,e),15).Oc(),Xue)),113)}function c3(t,e){return zz(ON(MG(zz(l6(t.k,e),15).Oc(),Xue)),113)}function u3(t){return new g1(nat(zz(t.a.dd(),14).gc(),t.a.cd()),16)}function l3(t){return aL(t,14)?zz(t,14).dc():!t.Kc().Ob()}function h3(t){return EE(),aL(t.g,145)?zz(t.g,145):null}function f3(t){if(t.e.g!=t.b)throw qw(new mm);return!!t.c&&t.d>0}function d3(t){return CP(t.b!=t.d.c),t.c=t.b,t.b=t.b.a,++t.a,t.c.c}function g3(t,e){xW(e),OZ(t.a,t.c,e),t.c=t.c+1&t.a.length-1,pvt(t)}function p3(t,e){xW(e),t.b=t.b-1&t.a.length-1,OZ(t.a,t.b,e),pvt(t)}function b3(t,e){var n;for(n=t.j.c.length;n0&&sqt(t.g,0,e,0,t.i),e}function P3(t,e){var n;return tT(),!(n=zz(FZ(yDe,t),55))||n.wj(e)}function B3(t){if(1!=t.p)throw qw(new pm);return pU(t.f)<<24>>24}function F3(t){if(1!=t.p)throw qw(new pm);return pU(t.k)<<24>>24}function R3(t){if(7!=t.p)throw qw(new pm);return pU(t.k)<<16>>16}function j3(t){if(7!=t.p)throw qw(new pm);return pU(t.f)<<16>>16}function $3(t){var e;for(e=0;t.Ob();)t.Pb(),e=adt(e,1);return eet(e)}function z3(t,e){var n;return n=new Ix,t.xd(n),n.a+="..",e.yd(n),n.a}function q3(t,e,n){var i;i=zz(FZ(t.g,n),57),Wz(t.a.c,new rI(e,i))}function H3(t,e,n){return AG(EB(HI(DV(t.f,e))),EB(HI(DV(t.f,n))))}function U3(t,e,n){return Z$t(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function G3(t,e,n){return mzt(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function Y3(t,e,n){return BOt(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function Z3(t,e){return t==(cTt(),Sse)&&e==Sse?4:t==Sse||e==Sse?8:32}function W3(t,e){return UI(e)===UI(t)?"(this Map)":null==e?YWt:qdt(e)}function K3(t,e){return zz(null==e?HI(DV(t.f,null)):lT(t.g,e),281)}function X3(t,e,n){var i;return i=Vpt(n),KW(t.b,i,e),KW(t.c,e,n),e}function V3(t,e){var n;for(n=e;n;)jP(t,n.i,n.j),n=QQ(n);return t}function Q3(t,e){var n;return n=rV(qz(new S9(t,e))),SH(new S9(t,e)),n}function J3(t,e){var n;return JE(),ETt(n=zz(t,66).Mj(),e),n.Ok(e)}function t4(t,e,n,i,r){Wz(e,vSt(r,WOt(r,n,i))),ZEt(t,r,e)}function e4(t,e,n){t.i=0,t.e=0,e!=n&&(Kct(t,e,n),Wct(t,e,n))}function n4(t,e){var n;n=t.q.getHours(),t.q.setFullYear(e+lXt),dzt(t,n)}function i4(t,e,n){if(n){var i=n.ee();t.a[e]=i(n)}else delete t.a[e]}function r4(t,e,n){if(n){var i=n.ee();n=i(n)}else n=void 0;t.a[e]=n}function a4(t){if(t<0)throw qw(new zv("Negative array size: "+t))}function o4(t){return t.n||(C5(t),t.n=new VU(t,KDe,t),xV(t)),t.n}function s4(t){return CP(t.a=0&&t.a[n]===e[n];n--);return n<0}function A4(t,e){var n;return Yut(),0!=(n=t.j.g-e.j.g)?n:0}function E4(t,e){return xW(e),null!=t.a?CU(e.Kb(t.a)):Tne}function T4(t){var e;return t?new LH(t):(Urt(e=new hD,t),e)}function C4(t,e){return e.b.Kb(A9(t,e.c.Ee(),new vg(e)))}function S4(t){xAt(),lL(this,pU(n0(xG(t,24),lVt)),pU(n0(t,lVt)))}function I4(){I4=M,wie=dlt((hwt(),Sst(Ux(vie,1),LKt,428,0,[pie,gie])))}function M4(){M4=M,xie=dlt((Ftt(),Sst(Ux(Rie,1),LKt,427,0,[mie,yie])))}function D4(){D4=M,jae=dlt((Rtt(),Sst(Ux(Ooe,1),LKt,424,0,[Bae,Fae])))}function O4(){O4=M,Gse=dlt((Crt(),Sst(Ux(Wse,1),LKt,511,0,[Hse,qse])))}function L4(){L4=M,Ile=dlt((jtt(),Sst(Ux(Lle,1),LKt,419,0,[Tle,Cle])))}function N4(){N4=M,Yle=dlt((b9(),Sst(Ux(Jle,1),LKt,479,0,[Ule,Hle])))}function P4(){P4=M,eye=dlt((D6(),Sst(Ux(aye,1),LKt,376,0,[Jme,Qme])))}function B4(){B4=M,zme=dlt((Y9(),Sst(Ux(Gme,1),LKt,421,0,[Rme,jme])))}function F4(){F4=M,cle=dlt((K8(),Sst(Ux(fle,1),LKt,422,0,[ale,ole])))}function R4(){R4=M,Nhe=dlt((G2(),Sst(Ux(Ufe,1),LKt,420,0,[Dhe,Ohe])))}function j4(){j4=M,Cve=dlt((M6(),Sst(Ux(Pve,1),LKt,520,0,[Eve,Ave])))}function $4(){$4=M,Uye=dlt((X4(),Sst(Ux(Kye,1),LKt,523,0,[qye,zye])))}function z4(){z4=M,ive=dlt((bQ(),Sst(Ux(ove,1),LKt,516,0,[eve,tve])))}function q4(){q4=M,sve=dlt((cJ(),Sst(Ux(Tve,1),LKt,515,0,[rve,ave])))}function H4(){H4=M,Bve=dlt((pQ(),Sst(Ux(zve,1),LKt,455,0,[Lve,Nve])))}function U4(){U4=M,Uxe=dlt((z0(),Sst(Ux(Qxe,1),LKt,425,0,[qxe,zxe])))}function G4(){G4=M,Jxe=dlt((Srt(),Sst(Ux(ike,1),LKt,495,0,[Xxe,Vxe])))}function Y4(){Y4=M,$xe=dlt((uJ(),Sst(Ux(Hxe,1),LKt,480,0,[Fxe,Rxe])))}function Z4(){Z4=M,cke=dlt((B7(),Sst(Ux(fke,1),LKt,426,0,[ake,oke])))}function W4(){W4=M,XAe=dlt((Nst(),Sst(Ux(VAe,1),LKt,429,0,[WAe,ZAe])))}function K4(){K4=M,nAe=dlt((O6(),Sst(Ux(cAe,1),LKt,430,0,[tAe,J_e])))}function X4(){X4=M,qye=new QC("UPPER",0),zye=new QC("LOWER",1)}function V4(t,e){var n;HX(n=new wv,"x",e.a),HX(n,"y",e.b),tW(t,n)}function Q4(t,e){var n;HX(n=new wv,"x",e.a),HX(n,"y",e.b),tW(t,n)}function J4(t,e){var n,i;i=!1;do{i|=n=gct(t,e)}while(n);return i}function t5(t,e){var n,i;for(n=e,i=0;n>0;)i+=t.a[n],n-=n&-n;return i}function e5(t,e){var n;for(n=e;n;)jP(t,-n.i,-n.j),n=QQ(n);return t}function n5(t,e){var n,i;for(xW(e),i=t.Kc();i.Ob();)n=i.Pb(),e.td(n)}function i5(t,e){var n;return new mA(n=e.cd(),t.e.pc(n,zz(e.dd(),14)))}function r5(t,e,n,i){var r;(r=new O).c=e,r.b=n,r.a=i,i.b=n.a=r,++t.b}function a5(t,e,n){var i;return f1(e,t.c.length),i=t.c[e],t.c[e]=n,i}function o5(t,e,n){return zz(null==e?_St(t.f,null,n):cdt(t.g,e,n),281)}function s5(t){return t.c&&t.d?w0(t.c)+"->"+w0(t.d):"e_"+CN(t)}function c5(t,e){return(Vft(t),k_(new FH(t,new X7(e,t.a)))).sd(eie)}function u5(){return xEt(),Sst(Ux(Yoe,1),LKt,356,0,[Foe,Roe,joe,$oe,zoe])}function l5(){return kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])}function h5(t){return Bx(),function(){return j2(t,this,arguments)}}function f5(){return Date.now?Date.now():(new Date).getTime()}function d5(t){return!(!t.c||!t.d||!t.c.i||t.c.i!=t.d.i)}function g5(t){if(!t.c.Sb())throw qw(new vm);return t.a=!0,t.c.Ub()}function p5(t){t.i=0,vT(t.b,null),vT(t.c,null),t.a=null,t.e=null,++t.g}function b5(t){pT.call(this,null==t?YWt:qdt(t),aL(t,78)?zz(t,78):null)}function w5(t){iWt(),zw(this),this.a=new VA,but(this,t),Bq(this.a,t)}function m5(){PD(this),this.b=new PS(RXt,RXt),this.a=new PS(jXt,jXt)}function y5(t,e){this.c=0,this.b=e,wM.call(this,t,17493),this.a=this.c}function v5(t){x5(),Xne||(this.c=t,this.e=!0,this.a=new Nw)}function x5(){x5=M,Xne=!0,Wne=!1,Kne=!1,Qne=!1,Vne=!1}function k5(t,e){return!!aL(e,149)&&yR(t.c,zz(e,149).c)}function _5(t,e){var n;return n=0,t&&(n+=t.f.a/2),e&&(n+=e.f.a/2),n}function A5(t,e){return zz(ftt(t.d,e),23)||zz(ftt(t.e,e),23)}function E5(t){this.b=t,DL.call(this,t),this.a=zz(xot(this.b.a,4),126)}function T5(t){this.b=t,oP.call(this,t),this.a=zz(xot(this.b.a,4),126)}function C5(t){return t.t||(t.t=new pw(t),lft(new Pv(t),0,t.t)),t.t}function S5(){return zht(),Sst(Ux(WCe,1),LKt,103,0,[zCe,$Ce,jCe,RCe,qCe])}function I5(){return owt(),Sst(Ux(QSe,1),LKt,249,0,[zSe,HSe,jSe,$Se,qSe])}function M5(){return awt(),Sst(Ux(kEe,1),LKt,175,0,[lEe,uEe,sEe,hEe,cEe])}function D5(){return LTt(),Sst(Ux(GAe,1),LKt,316,0,[iAe,rAe,sAe,aAe,oAe])}function O5(){return Pmt(),Sst(Ux(Dme,1),LKt,315,0,[vme,wme,mme,bme,yme])}function L5(){return Xmt(),Sst(Ux(Sle,1),LKt,335,0,[vle,yle,kle,_le,xle])}function N5(){return QLt(),Sst(Ux(G_e,1),LKt,355,0,[B_e,P_e,R_e,F_e,j_e])}function P5(){return N_t(),Sst(Ux(Rue,1),LKt,363,0,[Eue,Cue,Sue,Tue,Aue])}function B5(){return Edt(),Sst(Ux(ime,1),LKt,163,0,[Hfe,jfe,$fe,zfe,qfe])}function F5(){var t,e;F5=M,i_(),e=new _m,eLe=e,t=new My,nLe=t}function R5(t){var e;return t.c||aL(e=t.r,88)&&(t.c=zz(e,26)),t.c}function j5(t){return t.e=3,t.d=t.Yb(),2!=t.e&&(t.e=0,!0)}function $5(t){return EO(t&CXt,t>>22&CXt,t<0?SXt:0)}function z5(t){var e,n,i;for(n=0,i=(e=t).length;n0?Apt(t,e):MPt(t,-e)}function G5(t,e){return 0==e||0==t.e?t:e>0?MPt(t,e):Apt(t,-e)}function Y5(t){if(bDt(t))return t.c=t.a,t.a.Pb();throw qw(new vm)}function Z5(t){var e,n;return e=t.c.i,n=t.d.i,e.k==(cTt(),Ese)&&n.k==Ese}function W5(t){var e;return Uot(e=new gV,t),hct(e,(HZt(),mbe),null),e}function K5(t,e,n){var i;return(i=t.Yg(e))>=0?t._g(i,n,!0):oMt(t,e,n)}function X5(t,e,n,i){var r;for(r=0;re)throw qw(new Dv(bSt(t,e,"index")));return t}function p6(t,e,n,i){var r;return yAt(r=P8(DNe,hXt,25,e,15,1),t,e,n,i),r}function b6(t,e){var n;n=t.q.getHours()+(e/60|0),t.q.setMinutes(e),dzt(t,n)}function w6(t,e){return n.Math.min(W8(e.a,t.d.d.c),W8(e.b,t.d.d.c))}function m6(t,e){return ZI(e)?null==e?wDt(t.f,null):Got(t.g,e):wDt(t.f,e)}function y6(t){this.c=t,this.a=new Wd(this.c.a),this.b=new Wd(this.c.b)}function v6(){this.e=new Nw,this.c=new Nw,this.d=new Nw,this.b=new Nw}function x6(){this.g=new zm,this.b=new zm,this.a=new Nw,this.k=new Nw}function k6(t,e,n){this.a=t,this.c=e,this.d=n,Wz(e.e,this),Wz(n.b,this)}function _6(t,e){bM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function A6(t,e){wM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function E6(t,e){mM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function T6(t,e,n){this.a=t,this.b=e,this.c=n,Wz(t.t,this),Wz(e.i,this)}function C6(){this.b=new VA,this.a=new VA,this.b=new VA,this.a=new VA}function S6(){S6=M,AEe=new sw("org.eclipse.elk.labels.labelManager")}function I6(){I6=M,nue=new iF("separateLayerConnections",(Mst(),oue))}function M6(){M6=M,Eve=new sS("REGULAR",0),Ave=new sS("CRITICAL",1)}function D6(){D6=M,Jme=new ZC("STACKED",0),Qme=new ZC("SEQUENCED",1)}function O6(){O6=M,tAe=new AS("FIXED",0),J_e=new AS("CENTER_NODE",1)}function L6(t,e){var n;return n=BUt(t,e),t.b=new vrt(n.c.length),xHt(t,n)}function N6(t,e,n){return++t.e,--t.f,zz(t.d[e].$c(n),133).dd()}function P6(t){var e;return t.a||aL(e=t.r,148)&&(t.a=zz(e,148)),t.a}function B6(t){return t.a?t.e?B6(t.e):null:t}function F6(t,e){return t.pe.p?-1:0}function R6(t,e){return xW(e),t.c=0,"Initial capacity must not be negative")}function J6(){J6=M,Wie=dlt((Fet(),Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])))}function t8(){t8=M,ere=dlt((Q7(),Sst(Ux(nre,1),LKt,461,0,[Vie,Xie,Qie])))}function e8(){e8=M,sre=dlt((U9(),Sst(Ux(Mre,1),LKt,462,0,[are,rre,ire])))}function n8(){n8=M,Jne=dlt((Uut(),Sst(Ux(tie,1),LKt,132,0,[Gne,Yne,Zne])))}function i8(){i8=M,Loe=dlt((H9(),Sst(Ux(qoe,1),LKt,379,0,[Moe,Ioe,Doe])))}function r8(){r8=M,bse=dlt((qht(),Sst(Ux(yse,1),LKt,423,0,[gse,dse,fse])))}function a8(){a8=M,dle=dlt((Dit(),Sst(Ux(wle,1),LKt,314,0,[lle,ule,hle])))}function o8(){o8=M,mle=dlt((cit(),Sst(Ux(Ale,1),LKt,337,0,[gle,ble,ple])))}function s8(){s8=M,Nle=dlt((Jst(),Sst(Ux(zle,1),LKt,450,0,[Dle,Mle,Ole])))}function c8(){c8=M,jue=dlt((Irt(),Sst(Ux(Wue,1),LKt,361,0,[Fue,Bue,Pue])))}function u8(){u8=M,Mhe=dlt((G9(),Sst(Ux(Lhe,1),LKt,303,0,[Che,She,The])))}function l8(){l8=M,Ehe=dlt((jot(),Sst(Ux(Ihe,1),LKt,292,0,[khe,_he,xhe])))}function h8(){h8=M,ume=dlt((Tlt(),Sst(Ux(gme,1),LKt,378,0,[ame,ome,sme])))}function f8(){f8=M,Vme=dlt((Hat(),Sst(Ux(tye,1),LKt,375,0,[Zme,Wme,Kme])))}function d8(){d8=M,Fme=dlt((vct(),Sst(Ux($me,1),LKt,339,0,[Nme,Lme,Pme])))}function g8(){g8=M,Yme=dlt((sit(),Sst(Ux(Xme,1),LKt,452,0,[Ume,qme,Hme])))}function p8(){p8=M,bye=dlt((Lst(),Sst(Ux(Tye,1),LKt,377,0,[dye,gye,fye])))}function b8(){b8=M,oye=dlt((Zut(),Sst(Ux(lye,1),LKt,336,0,[nye,iye,rye])))}function w8(){w8=M,hye=dlt((bat(),Sst(Ux(pye,1),LKt,338,0,[uye,sye,cye])))}function m8(){m8=M,Nye=dlt((uit(),Sst(Ux(Pye,1),LKt,454,0,[Mye,Dye,Oye])))}function y8(){y8=M,rke=dlt((Idt(),Sst(Ux(ske,1),LKt,442,0,[nke,tke,eke])))}function v8(){v8=M,dke=dlt((Hut(),Sst(Ux(Uke,1),LKt,380,0,[uke,lke,hke])))}function x8(){x8=M,n_e=dlt((Cdt(),Sst(Ux(N_e,1),LKt,381,0,[Jke,t_e,Qke])))}function k8(){k8=M,Xke=dlt((qat(),Sst(Ux(Vke,1),LKt,293,0,[Zke,Wke,Yke])))}function _8(){_8=M,Y_e=dlt((Sdt(),Sst(Ux(W_e,1),LKt,437,0,[q_e,H_e,U_e])))}function A8(){A8=M,xSe=dlt((cht(),Sst(Ux(TSe,1),LKt,334,0,[mSe,wSe,ySe])))}function E8(){E8=M,KCe=dlt((Ret(),Sst(Ux(tSe,1),LKt,272,0,[GCe,YCe,ZCe])))}function T8(){return V_t(),Sst(Ux(oIe,1),LKt,98,0,[VSe,XSe,KSe,YSe,WSe,ZSe])}function C8(t,e){return!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),apt(t.o,e)}function S8(t){return!t.g&&(t.g=new uc),!t.g.d&&(t.g.d=new fw(t)),t.g.d}function I8(t){return!t.g&&(t.g=new uc),!t.g.a&&(t.g.a=new dw(t)),t.g.a}function M8(t){return!t.g&&(t.g=new uc),!t.g.b&&(t.g.b=new hw(t)),t.g.b}function D8(t){return!t.g&&(t.g=new uc),!t.g.c&&(t.g.c=new gw(t)),t.g.c}function O8(t,e,n){var i,r;for(r=new Oot(e,t),i=0;in||e=0?t._g(n,!0,!0):oMt(t,e,!0)}function C7(t,e){return Sft(Uv(EB(vEt(t,(hWt(),Afe)))),Uv(EB(vEt(e,Afe))))}function S7(){S7=M,Yxe=ubt(ubt($E(new z2,(Yvt(),Rve)),(FCt(),Xve)),Yve)}function I7(t,e,n){var i;return i=Pct(t,e,n),t.b=new vrt(i.c.length),lBt(t,i)}function M7(t){if(t.b<=0)throw qw(new vm);return--t.b,t.a-=t.c.c,rft(t.a)}function D7(t){var e;if(!t.a)throw qw(new fK);return e=t.a,t.a=QQ(t.a),e}function O7(t){for(;!t.a;)if(!AR(t.c,new wg(t)))return!1;return!0}function L7(t){return vZ(t),aL(t,198)?zz(t,198):new cf(t)}function N7(t){P7(),zz(t.We((lWt(),hCe)),174).Fc((dIt(),iIe)),t.Ye(lCe,null)}function P7(){P7=M,eEe=new gs,iEe=new ps,nEe=yut((lWt(),lCe),eEe,HTe,iEe)}function B7(){B7=M,ake=new wS("LEAF_NUMBER",0),oke=new wS("NODE_SIZE",1)}function F7(t,e,n){t.a=e,t.c=n,t.b.a.$b(),vX(t.d),t.e.a.c=P8(Ote,HWt,1,0,5,1)}function R7(t){t.a=P8(DNe,hXt,25,t.b+1,15,1),t.c=P8(DNe,hXt,25,t.b,15,1),t.d=0}function j7(t,e){t.a.ue(e.d,t.b)>0&&(Wz(t.c,new yq(e.c,e.d,t.d)),t.b=e.d)}function $7(t,e){if(null==t.g||e>=t.i)throw qw(new LM(e,t.i));return t.g[e]}function z7(t,e,n){if(But(t,n),null!=n&&!t.wj(n))throw qw(new fm);return n}function q7(t){var e;if(t.Ek())for(e=t.i-1;e>=0;--e)Ket(t,e);return N3(t)}function H7(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[0];)n=e;return n}function U7(t,e){var n;return a4(e),(n=y9(t.slice(0,e),t)).length=e,n}function G7(t,e,n,i){CX(),i=i||gne,wSt(t.slice(e,n),t,e,n,-e,i)}function Y7(t,e,n,i,r){return e<0?oMt(t,n,i):zz(n,66).Nj().Pj(t,t.yh(),e,i,r)}function Z7(t){return aL(t,172)?""+zz(t,172).a:null==t?null:qdt(t)}function W7(t){return aL(t,172)?""+zz(t,172).a:null==t?null:qdt(t)}function K7(t,e){if(e.a)throw qw(new pv(MVt));AY(t.a,e),e.a=t,!t.j&&(t.j=e)}function X7(t,e){mM.call(this,e.rd(),-16449&e.qd()),xW(t),this.a=t,this.c=e}function V7(t,e){var n,i;return i=e/t.c.Hd().gc()|0,n=e%t.c.Hd().gc(),Y6(t,i,n)}function Q7(){Q7=M,Vie=new UT(oQt,0),Xie=new UT(iQt,1),Qie=new UT(sQt,2)}function J7(){J7=M,Nne=new bT("All",0),Pne=new LD,Bne=new DO,Fne=new ND}function t9(){t9=M,jne=dlt((J7(),Sst(Ux($ne,1),LKt,297,0,[Nne,Pne,Bne,Fne])))}function e9(){e9=M,rse=dlt((Ost(),Sst(Ux(pse,1),LKt,405,0,[Joe,nse,tse,ese])))}function n9(){n9=M,jre=dlt((Fot(),Sst(Ux(Ure,1),LKt,406,0,[Fre,Nre,Pre,Bre])))}function i9(){i9=M,Gre=dlt((Hwt(),Sst(Ux(Yre,1),LKt,323,0,[zre,$re,qre,Hre])))}function r9(){r9=M,iae=dlt((Uwt(),Sst(Ux(aae,1),LKt,394,0,[Jre,Qre,tae,eae])))}function a9(){a9=M,qve=dlt((Yvt(),Sst(Ux(Hve,1),LKt,393,0,[Fve,Rve,jve,$ve])))}function o9(){o9=M,cue=dlt((Mst(),Sst(Ux(wue,1),LKt,360,0,[oue,rue,aue,iue])))}function s9(){s9=M,Gke=dlt((Dyt(),Sst(Ux(Kke,1),LKt,340,0,[Hke,zke,qke,$ke])))}function c9(){c9=M,_ue=dlt((Dst(),Sst(Ux(Iue,1),LKt,411,0,[mue,yue,vue,xue])))}function u9(){u9=M,pme=dlt((gmt(),Sst(Ux(xme,1),LKt,197,0,[fme,dme,hme,lme])))}function l9(){l9=M,hMe=dlt((qut(),Sst(Ux(gMe,1),LKt,396,0,[sMe,cMe,oMe,uMe])))}function h9(){h9=M,CSe=dlt((Wvt(),Sst(Ux(FSe,1),LKt,285,0,[ESe,kSe,_Se,ASe])))}function f9(){f9=M,eSe=dlt((Tdt(),Sst(Ux(cSe,1),LKt,218,0,[JCe,VCe,XCe,QCe])))}function d9(){d9=M,rMe=dlt((zgt(),Sst(Ux(aMe,1),LKt,311,0,[nMe,JIe,eMe,tMe])))}function g9(){g9=M,zIe=dlt((vpt(),Sst(Ux(VIe,1),LKt,374,0,[RIe,jIe,FIe,BIe])))}function p9(){p9=M,Uzt(),qLe=RXt,zLe=jXt,ULe=new Nd(RXt),HLe=new Nd(jXt)}function b9(){b9=M,Ule=new MC(VJt,0),Hle=new MC("IMPROVE_STRAIGHTNESS",1)}function w9(t,e){return lq(),Wz(t,new rI(e,rft(e.e.c.length+e.g.c.length)))}function m9(t,e){return lq(),Wz(t,new rI(e,rft(e.e.c.length+e.g.c.length)))}function y9(t,e){return 10!=mtt(e)&&Sst(nut(e),e.hm,e.__elementTypeId$,mtt(e),t),t}function v9(t,e){var n;return-1!=(n=_9(t,e,0))&&(u6(t,n),!0)}function x9(t,e){var n;return(n=zz(m6(t.e,e),387))?(Fq(n),n.e):null}function k9(t){var e;return QM(t)&&(e=0-t,!isNaN(e))?e:cot(sct(t))}function _9(t,e,n){for(;n=0?tmt(t,n,!0,!0):oMt(t,e,!0)}function J9(t,e){var n,i;return EE(),n=h3(t),i=h3(e),!!n&&!!i&&!jwt(n.k,i.k)}function ttt(t,e){Snt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function ett(t,e){Int(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function ntt(t,e){Cnt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function itt(t,e){Tnt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function rtt(t){(this.q?this.q:(TX(),TX(),hne)).Ac(t.q?t.q:(TX(),TX(),hne))}function att(t,e){return aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t)}function ott(t,e){return aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t)}function stt(t,e){Kre=new ne,nae=e,zz((Wre=t).b,65),R8(Wre,Kre,null),cHt(Wre)}function ctt(t,e,n){var i;return i=t.g[e],kL(t,e,t.oi(e,n)),t.gi(e,n,i),t.ci(),i}function utt(t,e){var n;return(n=t.Xc(e))>=0&&(t.$c(n),!0)}function ltt(t){var e;return t.d!=t.r&&(e=Mxt(t),t.e=!!e&&e.Cj()==A7t,t.d=e),t.e}function htt(t,e){var n;for(vZ(t),vZ(e),n=!1;e.Ob();)n|=t.Fc(e.Pb());return n}function ftt(t,e){var n;return(n=zz(FZ(t.e,e),387))?(sL(t,n),n.e):null}function dtt(t){var e,n;return e=t/60|0,0==(n=t%60)?""+e:e+":"+n}function gtt(t,e){return Vft(t),new FH(t,new RR(new E6(e,t.a)))}function ptt(t,e){var n=t.a[e],i=(tct(),fee)[typeof n];return i?i(n):klt(typeof n)}function btt(t){switch(t.g){case 0:return FWt;case 1:return-1;default:return 0}}function wtt(t){return jxt(t,(Z9(),wee))<0?-SN(sct(t)):t.l+t.m*MXt+t.h*DXt}function mtt(t){return null==t.__elementTypeCategory$?10:t.__elementTypeCategory$}function ytt(t){var e;return null!=(e=0==t.b.c.length?null:PH(t.b,0))&&hrt(t,0),e}function vtt(t,e){for(;e[0]=0;)++e[0]}function xtt(t,e){this.e=e,this.a=Xot(t),this.a<54?this.f=k2(t):this.c=ewt(t)}function ktt(t,e,n,i){pWt(),Dw.call(this,26),this.c=t,this.a=e,this.d=n,this.b=i}function _tt(t,e,n){var i,r;for(i=10,r=0;rt.a[i]&&(i=n);return i}function Ltt(t,e){var n;return 0==(n=Mdt(t.e.c,e.e.c))?Sft(t.e.d,e.e.d):n}function Ntt(t,e){return 0==e.e||0==t.e?ine:(LMt(),ONt(t,e))}function Ptt(t,e){if(!t)throw qw(new jv(QNt("Enum constant undefined: %s",e)))}function Btt(){Btt=M,sse=new Ee,cse=new _e,ase=new Me,ose=new De,use=new Oe}function Ftt(){Ftt=M,mie=new zT("BY_SIZE",0),yie=new zT("BY_SIZE_AND_SHAPE",1)}function Rtt(){Rtt=M,Bae=new ZT("EADES",0),Fae=new ZT("FRUCHTERMAN_REINGOLD",1)}function jtt(){jtt=M,Tle=new CC("READING_DIRECTION",0),Cle=new CC("ROTATION",1)}function $tt(){$tt=M,Ele=dlt((Xmt(),Sst(Ux(Sle,1),LKt,335,0,[vle,yle,kle,_le,xle])))}function ztt(){ztt=M,kme=dlt((Pmt(),Sst(Ux(Dme,1),LKt,315,0,[vme,wme,mme,bme,yme])))}function qtt(){qtt=M,Mue=dlt((N_t(),Sst(Ux(Rue,1),LKt,363,0,[Eue,Cue,Sue,Tue,Aue])))}function Htt(){Htt=M,Gfe=dlt((Edt(),Sst(Ux(ime,1),LKt,163,0,[Hfe,jfe,$fe,zfe,qfe])))}function Utt(){Utt=M,uAe=dlt((LTt(),Sst(Ux(GAe,1),LKt,316,0,[iAe,rAe,sAe,aAe,oAe])))}function Gtt(){Gtt=M,dEe=dlt((awt(),Sst(Ux(kEe,1),LKt,175,0,[lEe,uEe,sEe,hEe,cEe])))}function Ytt(){Ytt=M,z_e=dlt((QLt(),Sst(Ux(G_e,1),LKt,355,0,[B_e,P_e,R_e,F_e,j_e])))}function Ztt(){Ztt=M,Hoe=dlt((xEt(),Sst(Ux(Yoe,1),LKt,356,0,[Foe,Roe,joe,$oe,zoe])))}function Wtt(){Wtt=M,UCe=dlt((zht(),Sst(Ux(WCe,1),LKt,103,0,[zCe,$Ce,jCe,RCe,qCe])))}function Ktt(){Ktt=M,GSe=dlt((owt(),Sst(Ux(QSe,1),LKt,249,0,[zSe,HSe,jSe,$Se,qSe])))}function Xtt(){Xtt=M,MIe=dlt((kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])))}function Vtt(t,e){var n;return(n=zz(FZ(t.a,e),134))||(n=new Qt,KW(t.a,e,n)),n}function Qtt(t){var e;return!!(e=zz(vEt(t,(hWt(),Fhe)),305))&&e.a==t}function Jtt(t){var e;return!!(e=zz(vEt(t,(hWt(),Fhe)),305))&&e.i==t}function tet(t,e){return xW(e),BG(t),!!t.d.Ob()&&(e.td(t.d.Pb()),!0)}function eet(t){return Xlt(t,FWt)>0?FWt:Xlt(t,$Kt)<0?$Kt:pU(t)}function net(t){return t<3?(dit(t,MKt),t+1):t=0&&e=-.01&&t.a<=fQt&&(t.a=0),t.b>=-.01&&t.b<=fQt&&(t.b=0),t}function oet(t,e){return e==(aj(),aj(),Ene)?t.toLocaleLowerCase():t.toLowerCase()}function set(t){return(0!=(2&t.i)?"interface ":0!=(1&t.i)?"":"class ")+(_B(t),t.o)}function cet(t){var e;e=new Oy,h7((!t.q&&(t.q=new nY(XDe,t,11,10)),t.q),e)}function uet(t,e){var n;return n=e>0?e-1:e,Ok(Lk(znt(Lq(new Zy,n),t.n),t.j),t.k)}function het(t,e,n,i){t.j=-1,UMt(t,ACt(t,e,n),(JE(),zz(e,66).Mj().Ok(i)))}function fet(t){this.g=t,this.f=new Nw,this.a=n.Math.min(this.g.c.c,this.g.d.c)}function det(t){this.b=new Nw,this.a=new Nw,this.c=new Nw,this.d=new Nw,this.e=t}function get(t,e){this.a=new Pw,this.e=new Pw,this.b=(Tlt(),sme),this.c=t,this.b=e}function pet(t,e,n){NF.call(this),Bet(this),this.a=t,this.c=n,this.b=e.d,this.f=e.e}function bet(t){this.d=t,this.c=t.c.vc().Kc(),this.b=null,this.a=null,this.e=(rv(),Yte)}function wet(t){if(t<0)throw qw(new jv("Illegal Capacity: "+t));this.g=this.ri(t)}function met(t,e){if(0>t||t>e)throw qw(new Ax("fromIndex: 0, toIndex: "+t+hVt+e))}function yet(t){var e;if(t.a==t.b.a)throw qw(new vm);return e=t.a,t.c=e,t.a=t.a.e,e}function vet(t){var e;EP(!!t.c),e=t.c.a,Oet(t.d,t.c),t.b==t.c?t.b=e:--t.a,t.c=null}function xet(t,e){var n;return Vft(t),n=new mX(t,t.a.rd(),4|t.a.qd(),e),new FH(t,n)}function ket(t,e){var n,i;return(n=zz(dht(t.d,e),14))?(i=e,t.e.pc(i,n)):null}function _et(t,e){var n;for(n=t.Kc();n.Ob();)hct(zz(n.Pb(),70),(hWt(),sfe),e)}function Aet(t){var e;return(e=Uv(EB(vEt(t,(HZt(),obe)))))<0&&hct(t,obe,e=0),e}function Eet(t,e,i){var r;zxt(i,r=n.Math.max(0,t.b/2-.5),1),Wz(e,new iC(i,r))}function Tet(t,e,n){return SQ(qq(t.a.e[zz(e.a,10).p]-t.a.e[zz(n.a,10).p]))}function Cet(t,e,n,i,r,a){var o;TJ(o=W5(i),r),EJ(o,a),JIt(t.a,i,new Lj(o,e,n.f))}function Set(t,e){var n;if(!(n=PNt(t.Tg(),e)))throw qw(new jv(a6t+e+c6t));return n}function Iet(t,e){var n;for(n=t;QQ(n);)if((n=QQ(n))==e)return!0;return!1}function Met(t,e){var n,i,r;for(i=e.a.cd(),n=zz(e.a.dd(),14).gc(),r=0;r0&&(t.a/=e,t.b/=e),t}function Zet(t){var e;return t.w?t.w:((e=K1(t))&&!e.kh()&&(t.w=e),e)}function Wet(t){var e;return null==t?null:XAt(e=zz(t,190),e.length)}function Ket(t,e){if(null==t.g||e>=t.i)throw qw(new LM(e,t.i));return t.li(e,t.g[e])}function Xet(t){var e,n;for(e=t.a.d.j,n=t.c.d.j;e!=n;)urt(t.b,e),e=Tft(e);urt(t.b,e)}function Vet(t){var e;for(e=0;e=14&&e<=16)),t}function rnt(t,e,n){var i=function(){return t.apply(i,arguments)};return e.apply(i,n),i}function ant(t,e,n){var i,r;i=e;do{r=Uv(t.p[i.p])+n,t.p[i.p]=r,i=t.a[i.p]}while(i!=e)}function ont(t,e){var n,i;i=t.a,n=Vht(t,e,null),i!=e&&!t.e&&(n=sGt(t,e,n)),n&&n.Fi()}function snt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)}function cnt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)}function unt(t,e){return $Et(),_O(t.b.c.length-t.e.c.length,e.b.c.length-e.e.c.length)}function lnt(t,e){return Jk(Jrt(t,e,pU(odt(CKt,rK(pU(odt(null==e?0:eut(e),SKt)),15)))))}function hnt(){hnt=M,Dse=dlt((cTt(),Sst(Ux(Ose,1),LKt,267,0,[Sse,Cse,Ese,Ise,Tse,Ase])))}function fnt(){fnt=M,eTe=dlt((p_t(),Sst(Ux(HCe,1),LKt,291,0,[JEe,QEe,VEe,KEe,WEe,XEe])))}function dnt(){dnt=M,PEe=dlt((pmt(),Sst(Ux(tTe,1),LKt,248,0,[SEe,DEe,OEe,LEe,IEe,MEe])))}function gnt(){gnt=M,rle=dlt((LCt(),Sst(Ux(sle,1),LKt,227,0,[Jue,ele,Que,tle,nle,Vue])))}function pnt(){pnt=M,che=dlt((JEt(),Sst(Ux(yhe,1),LKt,275,0,[ahe,nhe,ohe,rhe,ihe,ehe])))}function bnt(){bnt=M,the=dlt((qkt(),Sst(Ux(she,1),LKt,274,0,[Xle,Kle,Qle,Wle,Vle,Zle])))}function wnt(){wnt=M,rme=dlt((EAt(),Sst(Ux(cme,1),LKt,313,0,[eme,Jwe,Vwe,Qwe,nme,tme])))}function mnt(){mnt=M,qle=dlt((wTt(),Sst(Ux(Gle,1),LKt,276,0,[Ble,Ple,Rle,Fle,$le,jle])))}function ynt(){ynt=M,Qve=dlt((FCt(),Sst(Ux(jxe,1),LKt,327,0,[Xve,Yve,Wve,Zve,Kve,Gve])))}function vnt(){vnt=M,sIe=dlt((dIt(),Sst(Ux(IIe,1),LKt,273,0,[rIe,nIe,iIe,eIe,tIe,aIe])))}function xnt(){xnt=M,uSe=dlt((eEt(),Sst(Ux(vSe,1),LKt,312,0,[oSe,rSe,sSe,nSe,aSe,iSe])))}function knt(){return eOt(),Sst(Ux(USe,1),LKt,93,0,[ISe,SSe,DSe,BSe,PSe,NSe,OSe,LSe,MSe])}function _nt(t,e){var n;n=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,0,n,t.a))}function Ant(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,1,n,t.b))}function Ent(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,3,n,t.b))}function Tnt(t,e){var n;n=t.f,t.f=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,3,n,t.f))}function Cnt(t,e){var n;n=t.g,t.g=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,4,n,t.g))}function Snt(t,e){var n;n=t.i,t.i=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,5,n,t.i))}function Int(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,6,n,t.j))}function Mnt(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,1,n,t.j))}function Dnt(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,4,n,t.c))}function Ont(t,e){var n;n=t.k,t.k=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,2,n,t.k))}function Lnt(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,2,n,t.d))}function Nnt(t,e){var n;n=t.s,t.s=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,4,n,t.s))}function Pnt(t,e){var n;n=t.t,t.t=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,5,n,t.t))}function Bnt(t,e){var n;n=t.F,t.F=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,5,n,e))}function Fnt(t,e){var n;return(n=zz(FZ((tT(),yDe),t),55))?n.xj(e):P8(Ote,HWt,1,e,5,1)}function Rnt(t,e){var n;return e in t.a&&(n=GQ(t,e).he())?n.a:null}function jnt(t,e){var n,i;return e_(),i=new cc,!!e&&MNt(i,e),Bit(n=i,t),n}function $nt(t,e,n){if(But(t,n),!t.Bk()&&null!=n&&!t.wj(n))throw qw(new fm);return n}function znt(t,e){return t.n=e,t.n?(t.f=new Nw,t.e=new Nw):(t.f=null,t.e=null),t}function qnt(t,e,n,i,r,a){var o;return Vnt(n,o=yZ(t,e)),o.i=r?8:0,o.f=i,o.e=r,o.g=a,o}function Hnt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=1,this.c=t,this.a=n}function Unt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=2,this.c=t,this.a=n}function Gnt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=6,this.c=t,this.a=n}function Ynt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=7,this.c=t,this.a=n}function Znt(t,e,n,i,r){this.d=e,this.j=i,this.e=r,this.o=-1,this.p=4,this.c=t,this.a=n}function Wnt(t,e){var n,i,r,a;for(r=0,a=(i=e).length;r=0),abt(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1}function rit(t){return t.a<54?t.f<0?-1:t.f>0?1:0:(!t.c&&(t.c=xlt(t.f)),t.c).e}function ait(t){if(!(t>=0))throw qw(new jv("tolerance ("+t+") must be >= 0"));return t}function oit(){return aEe||kut(aEe=new DFt,Sst(Ux(jie,1),HWt,130,0,[new Lh])),aEe}function sit(){sit=M,Ume=new GC(hQt,0),qme=new GC("INPUT",1),Hme=new GC("OUTPUT",2)}function cit(){cit=M,gle=new EC("ARD",0),ble=new EC("MSD",1),ple=new EC("MANUAL",2)}function uit(){uit=M,Mye=new VC("BARYCENTER",0),Dye=new VC(A1t,1),Oye=new VC(E1t,2)}function lit(t,e){var n;if(n=t.gc(),e<0||e>n)throw qw(new eR(e,n));return new FR(t,e)}function hit(t,e){var n;return aL(e,42)?t.c.Mc(e):(n=apt(t,e),Kpt(t,e),n)}function fit(t,e,n){return Mlt(t,e),Prt(t,n),Nnt(t,0),Pnt(t,1),eft(t,!0),Qht(t,!0),t}function dit(t,e){if(t<0)throw qw(new jv(e+" cannot be negative but was: "+t));return t}function git(t,e){var n,i;for(n=0,i=t.gc();n0?zz(PH(n.a,i-1),10):null}function Lit(t,e){var n;n=t.k,t.k=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,2,n,t.k))}function Nit(t,e){var n;n=t.f,t.f=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,8,n,t.f))}function Pit(t,e){var n;n=t.i,t.i=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,7,n,t.i))}function Bit(t,e){var n;n=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,8,n,t.a))}function Fit(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,n,t.b))}function Rit(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,n,t.b))}function jit(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.c))}function $it(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.c))}function zit(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,4,n,t.c))}function qit(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.d))}function Hit(t,e){var n;n=t.D,t.D=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,2,n,t.D))}function Uit(t,e){t.r>0&&t.c0&&0!=t.g&&Uit(t.i,e/t.r*t.i.d))}function Git(t,e,n){var i;t.b=e,t.a=n,i=512==(512&t.a)?new $y:new Bl,t.c=TBt(i,t.b,t.a)}function Yit(t,e){return LPt(t.e,e)?(JE(),ltt(e)?new fH(e,t):new PI(e,t)):new RI(e,t)}function Zit(t,e){return Qk(tat(t.a,e,pU(odt(CKt,rK(pU(odt(null==e?0:eut(e),SKt)),15)))))}function Wit(t,e,n){return P9(t,new hg(e),new ot,new fg(n),Sst(Ux(tie,1),LKt,132,0,[]))}function Kit(t){return 0>t?new KA:new OB(null,new y5(t+1,t))}function Xit(t,e){var n;return TX(),n=new ZA(1),ZI(t)?yJ(n,t,e):_St(n.f,t,e),new Zd(n)}function Vit(t,e){var n,i;return(n=t.o+t.p)<(i=e.o+e.p)?-1:n==i?0:1}function Qit(t){var e;return aL(e=vEt(t,(hWt(),pfe)),160)?vgt(zz(e,160)):null}function Jit(t){var e;return(t=n.Math.max(t,2))>(e=kct(t))?(e<<=1)>0?e:DKt:e}function trt(t){switch(sN(3!=t.e),t.e){case 2:return!1;case 0:return!0}return j5(t)}function ert(t,e){var n;return!!aL(e,8)&&(n=zz(e,8),t.a==n.a&&t.b==n.b)}function nrt(t,e,n){var i,r;return r=e>>5,i=31&e,n0(kG(t.n[n][r],pU(vG(i,1))),3)}function irt(t,e){var n,i;for(i=e.vc().Kc();i.Ob();)ykt(t,(n=zz(i.Pb(),42)).cd(),n.dd())}function rrt(t,e){var n;n=new ne,zz(e.b,65),zz(e.b,65),zz(e.b,65),Det(e.a,new Az(t,n,e))}function art(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,21,n,t.b))}function ort(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,11,n,t.d))}function srt(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,13,n,t.j))}function crt(t,e,n){var i,r,a;for(a=t.a.length-1,r=t.b,i=0;i>>31;0!=i&&(t[n]=i)}function nat(t,e){var n,i;for(TX(),i=new Nw,n=0;n0&&(this.g=this.ri(this.i+(this.i/8|0)+1),t.Qc(this.g))}function Aat(t,e){Eq.call(this,WOe,t,e),this.b=this,this.a=sPt(t.Tg(),iet(this.e.Tg(),this.c))}function Eat(t,e){var n,i;for(xW(e),i=e.vc().Kc();i.Ob();)n=zz(i.Pb(),42),t.zc(n.cd(),n.dd())}function Tat(t,e,n){var i;for(i=n.Kc();i.Ob();)if(!U3(t,e,i.Pb()))return!1;return!0}function Cat(t,e,n,i,r){var a;return n&&(a=Ogt(e.Tg(),t.c),r=n.gh(e,-1-(-1==a?i:a),null,r)),r}function Sat(t,e,n,i,r){var a;return n&&(a=Ogt(e.Tg(),t.c),r=n.ih(e,-1-(-1==a?i:a),null,r)),r}function Iat(t){var e;if(-2==t.b){if(0==t.e)e=-1;else for(e=0;0==t.a[e];e++);t.b=e}return t.b}function Mat(t){switch(t.g){case 2:return kYt(),SIe;case 4:return kYt(),cIe;default:return t}}function Dat(t){switch(t.g){case 1:return kYt(),TIe;case 3:return kYt(),uIe;default:return t}}function Oat(t){var e,n,i;return t.j==(kYt(),uIe)&&(n=TN(e=ZMt(t),cIe),(i=TN(e,SIe))||i&&n)}function Lat(t){var e;return new VR(e=zz(t.e&&t.e(),9),zz(KY(e,e.length),9),e.length)}function Nat(t,e){DAt(e,k1t,1),ngt(uE(new Cg((bE(),new qK(t,!1,!1,new je))))),HTt(e)}function Pat(t,e){return lN(),ZI(t)?h6(t,TB(e)):YI(t)?AG(t,EB(e)):GI(t)?_G(t,AB(e)):t.wd(e)}function Bat(t,e){e.q=t,t.d=n.Math.max(t.d,e.r),t.b+=e.d+(0==t.a.c.length?0:t.c),Wz(t.a,e)}function Fat(t,e){var n,i,r,a;return r=t.c,n=t.c+t.b,a=t.d,i=t.d+t.a,e.a>r&&e.aa&&e.b1||t.Ob())return++t.a,t.g=0,e=t.i,t.Ob(),e;throw qw(new vm)}function Cot(t){var e;return oO(),sT(uve,t)||((e=new so).a=t,gF(uve,t,e)),zz(cK(uve,t),635)}function Sot(t){var e,n,i;return n=0,(i=t)<0&&(i+=DXt,n=SXt),e=SQ(i/MXt),EO(SQ(i-e*MXt),e,n)}function Iot(t){var e,n,i;for(i=0,n=new XA(t.a);n.a>22),r=t.h+e.h+(i>>22),EO(n&CXt,i&CXt,r&SXt)}function hst(t,e){var n,i,r;return n=t.l-e.l,i=t.m-e.m+(n>>22),r=t.h-e.h+(i>>22),EO(n&CXt,i&CXt,r&SXt)}function fst(t){var e;return t<128?(!(e=(EH(),Tee)[t])&&(e=Tee[t]=new Ld(t)),e):new Ld(t)}function dst(t){var e;return aL(t,78)?t:((e=t&&t.__java$exception)||cm(e=new _lt(t)),e)}function gst(t){if(aL(t,186))return zz(t,118);if(t)return null;throw qw(new qv(i8t))}function pst(t,e){if(null==e)return!1;for(;t.a!=t.b;)if(Pht(e,$lt(t)))return!0;return!1}function bst(t){return!!t.a.Ob()||t.a==t.d&&(t.a=new T2(t.e.f),t.a.Ob())}function wst(t,e){var n;return 0!=(n=e.Pc()).length&&(eq(t.c,t.c.length,n),!0)}function mst(t,e,n){var i,r;for(r=e.vc().Kc();r.Ob();)i=zz(r.Pb(),42),t.yc(i.cd(),i.dd(),n);return t}function yst(t,e){var n;for(n=new Wd(t.b);n.a=0,"Negative initial capacity"),mq(e>=0,"Non-positive load factor"),OY(this)}function nct(t,e,n){return!(t>=128)&&QI(t<64?n0(vG(1,t),n):n0(vG(1,t-64),e),0)}function ict(t,e){return!(!t||!e||t==e)&&Mdt(t.b.c,e.b.c+e.b.b)<0&&Mdt(e.b.c,t.b.c+t.b.b)<0}function rct(t){var e,n,i;return n=t.n,i=t.o,e=t.d,new YK(n.a-e.b,n.b-e.d,i.a+(e.b+e.c),i.b+(e.d+e.a))}function act(t){var e,n,i,r;for(i=0,r=(n=t.a).length;i(i=t.gc()))throw qw(new eR(e,i));return t.hi()&&(n=tJ(t,n)),t.Vh(e,n)}function lct(t,e,n){return null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n)),t}function hct(t,e,n){return null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n)),t}function fct(t){var e,n;return Uot(n=new v6,t),hct(n,(Trt(),uoe),t),izt(t,n,e=new Pw),CGt(t,n,e),n}function dct(t){var e,n,i;for(_Bt(),n=P8(CEe,lKt,8,2,0,1),i=0,e=0;e<2;e++)i+=.5,n[e]=dyt(i,t);return n}function gct(t,e){var n,i,r;for(n=!1,i=t.a[e].length,r=0;r>=1);return e}function _ct(t){var e,n;return 32==(n=tMt(t.h))?32==(e=tMt(t.m))?tMt(t.l)+32:e+20-10:n-12}function Act(t){var e;return null==(e=t.a[t.b])?null:(OZ(t.a,t.b,null),t.b=t.b+1&t.a.length-1,e)}function Ect(t){var e,n;return e=t.t-t.k[t.o.p]*t.d+t.j[t.o.p]>t.f,n=t.u+t.e[t.o.p]*t.d>t.f*t.s*t.d,e||n}function Tct(t,e,n){var i,r;return i=new q8(e,n),r=new H,t.b=KPt(t,t.b,i,r),r.b||++t.c,t.b.b=!1,r.d}function Cct(t,e,n){var i,r,a;for(a=0,r=Nht(e,n).Kc();r.Ob();)i=zz(r.Pb(),11),KW(t.c,i,rft(a++))}function Sct(t){var e,n;for(n=new Wd(t.a.b);n.an&&(n=t[e]);return n}function Pct(t,e,n){var i;return _Pt(t,e,i=new Nw,(kYt(),cIe),!0,!1),_Pt(t,n,i,SIe,!1,!1),i}function Bct(t,e,n){var i,r;return r=N2(e,"labels"),WDt((i=new bI(t,n)).a,i.b,r),r}function Fct(t,e,n,i){var r;return(r=vOt(t,e,n,i))||!(r=sft(t,n,i))||zHt(t,e,r)?r:null}function Rct(t,e,n,i){var r;return(r=xOt(t,e,n,i))||!(r=cft(t,n,i))||zHt(t,e,r)?r:null}function jct(t,e){var n;for(n=0;n1||e>=0&&t.b<3)}function Jct(t){var e,n;for(e=new xy,n=lwt(t,0);n.b!=n.d.c;)RP(e,0,new gD(zz(d3(n),8)));return e}function tut(t){var e;for(e=new Wd(t.a.b);e.ai?1:0}function but(t,e){return!!gNt(t,e)&&(JIt(t.b,zz(vEt(e,(hWt(),Zhe)),21),e),Bq(t.a,e),!0)}function wut(t){var e,n;(e=zz(vEt(t,(hWt(),_fe)),10))&&(v9((n=e.c).a,e),0==n.a.c.length&&v9(mW(e).b,n))}function mut(t){return Xne?P8(Une,bVt,572,0,0,1):zz(Vbt(t.a,P8(Une,bVt,572,t.a.c.length,0,1)),842)}function yut(t,e,n,i){return tK(),new lv(Sst(Ux(Hte,1),kKt,42,0,[(Ymt(t,e),new mA(t,e)),(Ymt(n,i),new mA(n,i))]))}function vut(t,e,n){var i;return fit(i=new Oy,e,n),h7((!t.q&&(t.q=new nY(XDe,t,11,10)),t.q),i),i}function xut(t){var e,n,i,r;for(n=(r=hT(DMe,t)).length,i=P8(Vee,lKt,2,n,6,1),e=0;e=t.b.c.length||(Aut(t,2*e+1),(n=2*e+2)=0&&t[i]===e[i];i--);return i<0?0:uT(n0(t[i],ZXt),n0(e[i],ZXt))?-1:1}function Cut(t,e){var n,i;for(i=lwt(t,0);i.b!=i.d.c;)(n=zz(d3(i),214)).e.length>0&&(e.td(n),n.i&&mft(n))}function Sut(t,e){var n,i;return i=zz(xot(t.a,4),126),n=P8(pDe,r7t,415,e,0,1),null!=i&&sqt(i,0,n,0,i.length),n}function Iut(t,e){var n;return n=new aFt(0!=(256&t.f),t.i,t.a,t.d,0!=(16&t.f),t.j,t.g,e),null!=t.e||(n.c=t),n}function Mut(t,e){var n;for(n=t.Zb().Cc().Kc();n.Ob();)if(zz(n.Pb(),14).Hc(e))return!0;return!1}function Dut(t,e,n,i,r){var a,o;for(o=n;o<=r;o++)for(a=e;a<=i;a++)if(yyt(t,a,o))return!0;return!1}function Out(t,e,n){var i,r,a,o;for(xW(n),o=!1,a=t.Zc(e),r=n.Kc();r.Ob();)i=r.Pb(),a.Rb(i),o=!0;return o}function Lut(t,e){var n;return t===e||!!aL(e,83)&&(n=zz(e,83),YTt(fG(t),n.vc()))}function Nut(t,e,n){var i,r;for(r=n.Kc();r.Ob();)if(i=zz(r.Pb(),42),t.re(e,i.dd()))return!0;return!1}function Put(t,e,n){return t.d[e.p][n.p]||(rmt(t,e,n),t.d[e.p][n.p]=!0,t.d[n.p][e.p]=!0),t.a[e.p][n.p]}function But(t,e){if(!t.ai()&&null==e)throw qw(new jv("The 'no null' constraint is violated"));return e}function Fut(t,e){null==t.D&&null!=t.B&&(t.D=t.B,t.B=null),Hit(t,null==e?null:(xW(e),e)),t.C&&t.yk(null)}function Rut(t,e){return!(!t||t==e||!LP(e,(hWt(),rfe)))&&zz(vEt(e,(hWt(),rfe)),10)!=t}function jut(t){switch(t.i){case 2:return!0;case 1:return!1;case-1:++t.c;default:return t.pl()}}function $ut(t){switch(t.i){case-2:return!0;case-1:return!1;case 1:--t.c;default:return t.ql()}}function zut(t){jQ.call(this,"The given string does not match the expected format for individual spacings.",t)}function qut(){qut=M,sMe=new aI("ELK",0),cMe=new aI("JSON",1),oMe=new aI("DOT",2),uMe=new aI("SVG",3)}function Hut(){Hut=M,uke=new mS(VJt,0),lke=new mS("RADIAL_COMPACTION",1),hke=new mS("WEDGE_COMPACTION",2)}function Uut(){Uut=M,Gne=new wT("CONCURRENT",0),Yne=new wT("IDENTITY_FINISH",1),Zne=new wT("UNORDERED",2)}function Gut(){Gut=M,gE(),cae=new OM(qQt,uae=rae),sae=new sw(HQt),lae=new sw(UQt),hae=new sw(GQt)}function Yut(){Yut=M,fue=new ki,due=new _i,hue=new Ai,lue=new Ei,xW(new Ti),uue=new B}function Zut(){Zut=M,nye=new WC("CONSERVATIVE",0),iye=new WC("CONSERVATIVE_SOFT",1),rye=new WC("SLOPPY",2)}function Wut(){Wut=M,pSe=new WD(15),gSe=new ZD((lWt(),ZTe),pSe),bSe=bCe,lSe=oTe,hSe=RTe,dSe=zTe,fSe=$Te}function Kut(t,e,n){var i,r;for(i=new VA,r=lwt(n,0);r.b!=r.d.c;)Bq(i,new gD(zz(d3(r),8)));Out(t,e,i)}function Xut(t){var e,n,i;for(e=0,i=P8(CEe,lKt,8,t.b,0,1),n=lwt(t,0);n.b!=n.d.c;)i[e++]=zz(d3(n),8);return i}function Vut(t){var e;return!t.a&&(t.a=new nY(WDe,t,9,5)),0!=(e=t.a).i?qE(zz(Ket(e,0),678)):null}function Qut(t,e){var n;return n=adt(t,e),uT(r0(t,e),0)|VI(r0(t,n),0)?n:adt(gKt,r0(kG(n,63),1))}function Jut(t,e){var n;n=null!=vwt((Rgt(),Kwe))&&null!=e.wg()?Uv(EB(e.wg()))/Uv(EB(vwt(Kwe))):1,KW(t.b,e,n)}function tlt(t,e){var n,i;return(n=zz(t.d.Bc(e),14))?((i=t.e.hc()).Gc(n),t.e.d-=n.gc(),n.$b(),i):null}function elt(t,e){var n,i;if(0!=(i=t.c[e]))for(t.c[e]=0,t.d-=i,n=e+1;n0)return RG(e-1,t.a.c.length),u6(t.a,e-1);throw qw(new ym)}function ilt(t,e,n){if(e<0)throw qw(new Dv(e5t+e));ee)throw qw(new jv(vVt+t+xVt+e));if(t<0||e>n)throw qw(new Ax(vVt+t+kVt+e+hVt+n))}function alt(t){if(!t.a||0==(8&t.a.i))throw qw(new $v("Enumeration class expected for layout option "+t.f))}function olt(t){var e;++t.j,0==t.i?t.g=null:t.i$3t?t-i>$3t:i-t>$3t)}function ylt(t,e){return t?e&&!t.j||aL(t,124)&&0==zz(t,124).a.b?0:t.Re():0}function vlt(t,e){return t?e&&!t.k||aL(t,124)&&0==zz(t,124).a.a?0:t.Se():0}function xlt(t){return DBt(),t<0?-1!=t?new Rwt(-1,-t):Qee:t<=10?tne[SQ(t)]:new Rwt(1,t)}function klt(t){throw tct(),qw(new bv("Unexpected typeof result '"+t+"'; please report this bug to the GWT team"))}function _lt(t){lx(),KO(this),kX(this),this.e=t,IPt(this,t),this.g=null==t?YWt:qdt(t),this.a="",this.b=t,this.a=""}function Alt(){this.a=new es,this.f=new pb(this),this.b=new bb(this),this.i=new wb(this),this.e=new mb(this)}function Elt(){av.call(this,new H8(net(16))),dit(2,uKt),this.b=2,this.a=new qW(null,null,0,null),im(this.a,this.a)}function Tlt(){Tlt=M,ame=new RC("DUMMY_NODE_OVER",0),ome=new RC("DUMMY_NODE_UNDER",1),sme=new RC("EQUAL",2)}function Clt(){Clt=M,Zoe=qQ(Sst(Ux(WCe,1),LKt,103,0,[(zht(),jCe),$Ce])),Woe=qQ(Sst(Ux(WCe,1),LKt,103,0,[qCe,RCe]))}function Slt(t){return(kYt(),vIe).Hc(t.j)?Uv(EB(vEt(t,(hWt(),Lfe)))):Oct(Sst(Ux(CEe,1),lKt,8,0,[t.i.n,t.n,t.a])).b}function Ilt(t){var e,n;for(e=t.b.a.a.ec().Kc();e.Ob();)n=new VOt(zz(e.Pb(),561),t.e,t.f),Wz(t.g,n)}function Mlt(t,e){var n,i;n=t.nk(e,null),i=null,e&&(i_(),ont(i=new Rw,t.r)),(n=HAt(t,i,n))&&n.Fi()}function Dlt(t,e){var n,i;for(i=0!=HOt(t.d,1),n=!0;n;)n=!1,n=e.c.Tf(e.e,i),n|=FNt(t,e,i,!1),i=!i;Lrt(t)}function Olt(t,e){var n,i,r;return i=!1,n=e.q.d,e.dr&&(s_t(e.q,r),i=n!=e.q.d)),i}function Llt(t,e){var i,r,a,o,s;return o=e.i,s=e.j,r=o-(i=t.f).i,a=s-i.j,n.Math.sqrt(r*r+a*a)}function Nlt(t,e){var n;return(n=Qpt(t))||(!OMe&&(OMe=new Mc),Rqt(),h7((n=new Sw(QCt(e))).Vk(),t)),n}function Plt(t,e){var n,i;return(n=zz(t.c.Bc(e),14))?((i=t.hc()).Gc(n),t.d-=n.gc(),n.$b(),t.mc(i)):t.jc()}function Blt(t,e){var n;for(n=0;n=t.c.b:t.a<=t.c.b))throw qw(new vm);return e=t.a,t.a+=t.c.c,++t.b,rft(e)}function qlt(t){var e;return e=new fet(t),i2(t.a,use,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[e]))),e.d&&Wz(e.f,e.d),e.f}function Hlt(t){var e;return Uot(e=new MO(t.a),t),hct(e,(hWt(),pfe),t),e.o.a=t.g,e.o.b=t.f,e.n.a=t.i,e.n.b=t.j,e}function Ult(t,e,n,i){var r,a;for(a=t.Kc();a.Ob();)(r=zz(a.Pb(),70)).n.a=e.a+(i.a-r.o.a)/2,r.n.b=e.b,e.b+=r.o.b+n}function Glt(t,e,n){var i;for(i=e.a.a.ec().Kc();i.Ob();)if(aV(t,zz(i.Pb(),57),n))return!0;return!1}function Ylt(t){var e,n;for(n=new Wd(t.r);n.a=0?e:-e;i>0;)i%2==0?(n*=n,i=i/2|0):(r*=n,i-=1);return e<0?1/r:r}function rht(t,e){var n,i,r;for(r=1,n=t,i=e>=0?e:-e;i>0;)i%2==0?(n*=n,i=i/2|0):(r*=n,i-=1);return e<0?1/r:r}function aht(t){var e,n,i,r;if(null!=t)for(n=0;n0&&but(zz(PH(t.a,t.a.c.length-1),570),e)||Wz(t.a,new w5(e))}function yht(t){var e,n;Uj(),e=t.d.c-t.e.c,Det((n=zz(t.g,145)).b,new kp(e)),Det(n.c,new _p(e)),n5(n.i,new Ap(e))}function vht(t){var e;return(e=new Sx).a+="VerticalSegment ",sM(e,t.e),e.a+=" ",cM(e,QL(new yx,new Wd(t.k))),e.a}function xht(t){var e;return(e=zz(ftt(t.c.c,""),229))||(e=new YJ(kk(xk(new ms,""),"Other")),Jbt(t.c.c,"",e)),e}function kht(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (name: ",aM(e,t.zb),e.a+=")",e.a)}function _ht(t,e,n){var i,r;return r=t.sb,t.sb=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,4,r,e),n?n.Ei(i):n=i),n}function Aht(t,e){var n,i;for(n=0,i=sdt(t,e).Kc();i.Ob();)n+=null!=vEt(zz(i.Pb(),11),(hWt(),_fe))?1:0;return n}function Eht(t,e,n){var i,r,a;for(i=0,a=lwt(t,0);a.b!=a.d.c&&!((r=Uv(EB(d3(a))))>n);)r>=e&&++i;return i}function Tht(t,e,n){var i;return i=new N9(t.e,3,13,null,e.c||(wWt(),fOe),cmt(t,e),!1),n?n.Ei(i):n=i,n}function Cht(t,e,n){var i;return i=new N9(t.e,4,13,e.c||(wWt(),fOe),null,cmt(t,e),!1),n?n.Ei(i):n=i,n}function Sht(t,e,n){var i,r;return r=t.r,t.r=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,8,r,t.r),n?n.Ei(i):n=i),n}function Iht(t,e){var n,i;return!(i=(n=zz(e,676)).vk())&&n.wk(i=aL(e,88)?new OI(t,zz(e,26)):new j0(t,zz(e,148))),i}function Mht(t,e,n){var i;t.qi(t.i+1),i=t.oi(e,n),e!=t.i&&sqt(t.g,e,t.g,e+1,t.i-e),OZ(t.g,e,i),++t.i,t.bi(e,n),t.ci()}function Dht(t,e){var n;return e.a&&(n=e.a.a.length,t.a?cM(t.a,t.b):t.a=new fN(t.d),U0(t.a,e.a,e.d.length,n)),t}function Oht(t,e){var n,i,r;if(e.vi(t.a),null!=(r=zz(xot(t.a,8),1936)))for(n=0,i=r.length;nn)throw qw(new Dv(vVt+t+kVt+e+", size: "+n));if(t>e)throw qw(new jv(vVt+t+xVt+e))}function Uht(t,e,n){if(e<0)oIt(t,n);else{if(!n.Ij())throw qw(new jv(a6t+n.ne()+o6t));zz(n,66).Nj().Vj(t,t.yh(),e)}}function Ght(t,e,n,i,r,a,o,s){var c;for(c=n;a=i||e=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t>=48&&t<=57?t-48:0}function Xht(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (source: ",aM(e,t.d),e.a+=")",e.a)}function Vht(t,e,n){var i,r;return r=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,5,r,t.a),n?j_t(n,i):n=i),n}function Qht(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,2,n,e))}function Jht(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,8,n,e))}function tft(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,8,n,e))}function eft(t,e){var n;n=0!=(512&t.Bb),e?t.Bb|=512:t.Bb&=-513,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,3,n,e))}function nft(t,e){var n;n=0!=(512&t.Bb),e?t.Bb|=512:t.Bb&=-513,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,9,n,e))}function ift(t,e){var n;return-1==t.b&&t.a&&(n=t.a.Gj(),t.b=n?t.c.Xg(t.a.aj(),n):Ogt(t.c.Tg(),t.a)),t.c.Og(t.b,e)}function rft(t){var e,n;return t>-129&&t<128?(e=t+128,!(n=(eH(),Mee)[e])&&(n=Mee[e]=new Pd(t)),n):new Pd(t)}function aft(t){var e,n;return t>-129&&t<128?(e=t+128,!(n=(AH(),jee)[e])&&(n=jee[e]=new Fd(t)),n):new Fd(t)}function oft(t){var e;return t.k==(cTt(),Ese)&&((e=zz(vEt(t,(hWt(),Xhe)),61))==(kYt(),uIe)||e==TIe)}function sft(t,e,n){var i,r;return(r=LOt(t.b,e))&&(i=zz(Pqt($9(t,r),""),26))?vOt(t,i,e,n):null}function cft(t,e,n){var i,r;return(r=LOt(t.b,e))&&(i=zz(Pqt($9(t,r),""),26))?xOt(t,i,e,n):null}function uft(t,e){var n,i;for(i=new DL(t);i.e!=i.i.gc();)if(n=zz(kwt(i),138),UI(e)===UI(n))return!0;return!1}function lft(t,e,n){var i;if(e>(i=t.gc()))throw qw(new eR(e,i));if(t.hi()&&t.Hc(n))throw qw(new jv(s8t));t.Xh(e,n)}function hft(t,e){var n;if(null==(n=lnt(t.i,e)))throw qw(new nx("Node did not exist in input."));return jat(e,n),null}function fft(t,e){var n;if(aL(n=PNt(t,e),322))return zz(n,34);throw qw(new jv(a6t+e+"' is not a valid attribute"))}function dft(t,e,n){var i,r;for(r=aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t),i=0;ie?1:t==e?0==t?Sft(1/t,1/e):0:isNaN(t)?isNaN(e)?0:1:-1}function Ift(t,e){DAt(e,"Sort end labels",1),QA(DK(gtt(new FH(null,new g1(t.b,16)),new gn),new pn),new bn),HTt(e)}function Mft(t,e,n){var i,r;return t.ej()?(r=t.fj(),i=QIt(t,e,n),t.$i(t.Zi(7,rft(n),i,e,r)),i):QIt(t,e,n)}function Dft(t,e){var n,i,r;null==t.d?(++t.e,--t.f):(r=e.cd(),N6(t,i=((n=e.Sh())&FWt)%t.d.length,OOt(t,i,n,r)))}function Oft(t,e){var n;n=0!=(t.Bb&k6t),e?t.Bb|=k6t:t.Bb&=-1025,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,10,n,e))}function Lft(t,e){var n;n=0!=(t.Bb&$Xt),e?t.Bb|=$Xt:t.Bb&=-4097,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,12,n,e))}function Nft(t,e){var n;n=0!=(t.Bb&E7t),e?t.Bb|=E7t:t.Bb&=-8193,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,15,n,e))}function Pft(t,e){var n;n=0!=(t.Bb&T7t),e?t.Bb|=T7t:t.Bb&=-2049,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,11,n,e))}function Bft(t,e){var n;return 0!=(n=Sft(t.b.c,e.b.c))||0!=(n=Sft(t.a.a,e.a.a))?n:Sft(t.a.b,e.a.b)}function Fft(t,e){var n;if(null==(n=FZ(t.k,e)))throw qw(new nx("Port did not exist in input."));return jat(e,n),null}function Rft(t){var e,n;for(n=GOt(Zet(t)).Kc();n.Ob();)if(Pjt(t,e=TB(n.Pb())))return v4((YE(),FDe),e);return null}function jft(t,e){var n,i,r,a,o;for(o=sPt(t.e.Tg(),e),a=0,n=zz(t.g,119),r=0;r>10)+HXt&VKt,e[1]=56320+(1023&t)&VKt,qpt(e,0,e.length)}function Kft(t){var e;return(e=zz(vEt(t,(HZt(),Ype)),103))==(zht(),zCe)?Uv(EB(vEt(t,_pe)))>=1?$Ce:RCe:e}function Xft(t){switch(zz(vEt(t,(HZt(),Jpe)),218).g){case 1:return new ia;case 3:return new ca;default:return new na}}function Vft(t){if(t.c)Vft(t.c);else if(t.d)throw qw(new $v("Stream already terminated, can't be modified or used"))}function Qft(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (identifier: ",aM(e,t.k),e.a+=")",e.a)}function Jft(t,e,n){var i;return e_(),_nt(i=new ac,e),Ant(i,n),t&&h7((!t.a&&(t.a=new OL(PMe,t,5)),t.a),i),i}function tdt(t,e,n,i){var r,a;return xW(i),xW(n),null==(a=null==(r=t.xc(e))?n:JA(zz(r,15),zz(n,14)))?t.Bc(e):t.zc(e,a),a}function edt(t){var e,n,i,r;return urt(n=new VR(e=zz(Kk((r=(i=t.gm).f)==Zte?i:r),9),zz(TF(e,e.length),9),0),t),n}function ndt(t,e,n){var i,r;for(r=t.a.ec().Kc();r.Ob();)if(i=zz(r.Pb(),10),ust(n,zz(PH(e,i.p),14)))return i;return null}function idt(t,e,n){try{$ct(t,e,n)}catch(t){throw aL(t=dst(t),597)?qw(new b5(t)):qw(t)}return e}function rdt(t,e){var n;return QM(t)&&QM(e)&&LXt<(n=t-e)&&n>1,t.k=i-1>>1}function ldt(){var t,e,i;xAt(),i=Lne+++Date.now(),t=SQ(n.Math.floor(i*cVt))&lVt,e=SQ(i-t*uVt),this.a=1502^t,this.b=e^sVt}function hdt(t){var e,n;for(e=new Nw,n=new Wd(t.j);n.a34028234663852886e22?RXt:e<-34028234663852886e22?jXt:e}function mdt(t){return t=((t=((t-=t>>1&1431655765)>>2&858993459)+(858993459&t))>>4)+t&252645135,t+=t>>8,63&(t+=t>>16)}function ydt(t){var e,n,i;for(e=new lF(t.Hd().gc()),i=0,n=L7(t.Hd().Kc());n.Ob();)kJ(e,n.Pb(),rft(i++));return PTt(e.a)}function vdt(t,e){var n,i,r;for(r=new Pw,i=e.vc().Kc();i.Ob();)KW(r,(n=zz(i.Pb(),42)).cd(),dot(t,zz(n.dd(),15)));return r}function xdt(t,e){0==t.n.c.length&&Wz(t.n,new FQ(t.s,t.t,t.i)),Wz(t.b,e),lyt(zz(PH(t.n,t.n.c.length-1),211),e),q$t(t,e)}function kdt(t){return t.c==t.b.b&&t.i==t.g.b||(t.a.c=P8(Ote,HWt,1,0,5,1),wst(t.a,t.b),wst(t.a,t.g),t.c=t.b.b,t.i=t.g.b),t.a}function _dt(t,e){var n,i;for(i=0,n=zz(e.Kb(t),20).Kc();n.Ob();)Hv(AB(vEt(zz(n.Pb(),17),(hWt(),Sfe))))||++i;return i}function Adt(t,e){var i,r;r=Uv(EB(ipt(h2(e),(HZt(),vwe)))),zxt(e,i=n.Math.max(0,r/2-.5),1),Wz(t,new fC(e,i))}function Edt(){Edt=M,Hfe=new zC(VJt,0),jfe=new zC("FIRST",1),$fe=new zC(I1t,2),zfe=new zC("LAST",3),qfe=new zC(M1t,4)}function Tdt(){Tdt=M,JCe=new $S(hQt,0),VCe=new $S("POLYLINE",1),XCe=new $S("ORTHOGONAL",2),QCe=new $S("SPLINES",3)}function Cdt(){Cdt=M,Jke=new xS("ASPECT_RATIO_DRIVEN",0),t_e=new xS("MAX_SCALE_DRIVEN",1),Qke=new xS("AREA_DRIVEN",2)}function Sdt(){Sdt=M,q_e=new _S("P1_STRUCTURE",0),H_e=new _S("P2_PROCESSING_ORDER",1),U_e=new _S("P3_EXECUTION",2)}function Idt(){Idt=M,nke=new bS("OVERLAP_REMOVAL",0),tke=new bS("COMPACTION",1),eke=new bS("GRAPH_SIZE_CALCULATION",2)}function Mdt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e))}function Ddt(t,e){var n,i;for(n=lwt(t,0);n.b!=n.d.c;){if((i=Gv(EB(d3(n))))==e)return;if(i>e){Y0(n);break}}tZ(n,e)}function Odt(t,e){var n,i,r,a,o;if(n=e.f,Jbt(t.c.d,n,e),null!=e.g)for(a=0,o=(r=e.g).length;ae&&i.ue(t[a-1],t[a])>0;--a)o=t[a],OZ(t,a,t[a-1]),OZ(t,a-1,o)}function Ndt(t,e,n,i){if(e<0)ELt(t,n,i);else{if(!n.Ij())throw qw(new jv(a6t+n.ne()+o6t));zz(n,66).Nj().Tj(t,t.yh(),e,i)}}function Pdt(t,e){if(e==t.d)return t.e;if(e==t.e)return t.d;throw qw(new jv("Node "+e+" not part of edge "+t))}function Bdt(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function Fdt(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function Rdt(t,e,n,i){switch(e){case 3:return t.f;case 4:return t.g;case 5:return t.i;case 6:return t.j}return $ht(t,e,n,i)}function jdt(t){return t.k==(cTt(),Sse)&&c5(new FH(null,new GY(new cG(JL(ddt(t).a.Kc(),new l)))),new Hr)}function $dt(t){return null==t.e?t:(!t.c&&(t.c=new aFt(0!=(256&t.f),t.i,t.a,t.d,0!=(16&t.f),t.j,t.g,null)),t.c)}function zdt(t,e){return t.h==IXt&&0==t.m&&0==t.l?(e&&(dee=EO(0,0,0)),WM((Z9(),bee))):(e&&(dee=EO(t.l,t.m,t.h)),EO(0,0,0))}function qdt(t){return Array.isArray(t)&&t.im===I?t_(nut(t))+"@"+(eut(t)>>>0).toString(16):t.toString()}function Hdt(t){var e;this.a=new VR(e=zz(t.e&&t.e(),9),zz(TF(e,e.length),9),0),this.b=P8(Ote,HWt,1,this.a.a.length,5,1)}function Udt(t){var e,n,i;for(this.a=new hD,i=new Wd(t);i.a0&&(d1(e-1,t.length),58==t.charCodeAt(e-1))&&!Wdt(t,LDe,NDe)}function Wdt(t,e,n){var i,r;for(i=0,r=t.length;i=r)return e.c+n;return e.c+e.b.gc()}function Vdt(t,e){var n,i,r,a;for(pB(),r=e,G7(i=q7(t),0,i.length,r),n=0;n0&&(i+=r,++n);return n>1&&(i+=t.d*(n-1)),i}function Jdt(t){var e,n,i;for((i=new Tx).a+="[",e=0,n=t.gc();e0&&this.b>0&&VH(this.c,this.b,this.a)}function cgt(t){Rgt(),this.c=s6(Sst(Ux(rEe,1),HWt,831,0,[Wwe])),this.b=new Pw,this.a=t,KW(this.b,Kwe,1),Det(Xwe,new Cb(this))}function ugt(t,e){var n;return t.d?lY(t.b,e)?zz(FZ(t.b,e),51):(n=e.Kf(),KW(t.b,e,n),n):e.Kf()}function lgt(t,e){var n;return UI(t)===UI(e)||!!aL(e,91)&&(n=zz(e,91),t.e==n.e&&t.d==n.d&&_4(t,n.a))}function hgt(t){switch(kYt(),t.g){case 4:return uIe;case 1:return cIe;case 3:return TIe;case 2:return SIe;default:return CIe}}function fgt(t,e){switch(e){case 3:return 0!=t.f;case 4:return 0!=t.g;case 5:return 0!=t.i;case 6:return 0!=t.j}return Aot(t,e)}function dgt(t){switch(t.g){case 0:return new Go;case 1:return new Yo;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function ggt(t){switch(t.g){case 0:return new Uo;case 1:return new Zo;default:throw qw(new jv(T1t+(null!=t.f?t.f:""+t.g)))}}function pgt(t){switch(t.g){case 0:return new Ky;case 1:return new vy;default:throw qw(new jv(P4t+(null!=t.f?t.f:""+t.g)))}}function bgt(t){switch(t.g){case 1:return new Ro;case 2:return new bB;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function wgt(t){var e,n;if(t.b)return t.b;for(n=Xne?null:t.d;n;){if(e=Xne?null:n.b)return e;n=Xne?null:n.d}return fE(),qne}function mgt(t){var e,n;return 0==t.e?0:(e=t.d<<5,n=t.a[t.d-1],t.e<0&&Iat(t)==t.d-1&&(--n,n|=0),e-=tMt(n))}function ygt(t){var e,n,i;return t>5),15,1))[n]=1<3;)r*=10,--a;t=(t+(r>>1))/r|0}return i.i=t,!0}function Agt(t){return Clt(),lN(),!!(Fdt(zz(t.a,81).j,zz(t.b,103))||0!=zz(t.a,81).d.e&&Fdt(zz(t.a,81).j,zz(t.b,103)))}function Egt(t){P7(),zz(t.We((lWt(),HTe)),174).Hc((ejt(),KIe))&&(zz(t.We(hCe),174).Fc((dIt(),aIe)),zz(t.We(HTe),174).Mc(KIe))}function Tgt(t,e){var n;if(e){for(n=0;n=0;--i)for(e=n[i],r=0;r>1,this.k=e-1>>1}function Ggt(t,e){DAt(e,"End label post-processing",1),QA(DK(gtt(new FH(null,new g1(t.b,16)),new on),new sn),new cn),HTt(e)}function Ygt(t,e,n){var i;return i=Uv(t.p[e.i.p])+Uv(t.d[e.i.p])+e.n.b+e.a.b,Uv(t.p[n.i.p])+Uv(t.d[n.i.p])+n.n.b+n.a.b-i}function Zgt(t,e,n){var i,r;for(i=n0(n,ZXt),r=0;0!=Xlt(i,0)&&r0&&(d1(0,e.length),43==e.charCodeAt(0))?e.substr(1):e)}function Xgt(t){var e;return null==t?null:new OD((e=zzt(t,!0)).length>0&&(d1(0,e.length),43==e.charCodeAt(0))?e.substr(1):e)}function Vgt(t,e){return t.i>0&&(e.lengtht.i&&OZ(e,t.i,null),e}function Qgt(t,e,n){var i,r,a;return t.ej()?(i=t.i,a=t.fj(),Mht(t,i,e),r=t.Zi(3,null,e,i,a),n?n.Ei(r):n=r):Mht(t,t.i,e),n}function Jgt(t,e,n){var i,r;return i=new N9(t.e,4,10,aL(r=e.c,88)?zz(r,26):(wWt(),pOe),null,cmt(t,e),!1),n?n.Ei(i):n=i,n}function tpt(t,e,n){var i,r;return i=new N9(t.e,3,10,null,aL(r=e.c,88)?zz(r,26):(wWt(),pOe),cmt(t,e),!1),n?n.Ei(i):n=i,n}function ept(t){var e;return HB(),e=new gD(zz(t.e.We((lWt(),zTe)),8)),t.B.Hc((ejt(),UIe))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function npt(t){return gmt(),(t.q?t.q:(TX(),TX(),hne))._b((HZt(),Fbe))?zz(vEt(t,Fbe),197):zz(vEt(mW(t),Rbe),197)}function ipt(t,e){var n,i;return i=null,LP(t,(HZt(),Ewe))&&(n=zz(vEt(t,Ewe),94)).Xe(e)&&(i=n.We(e)),null==i&&(i=vEt(mW(t),e)),i}function rpt(t,e){var n,i,r;return!!aL(e,42)&&(i=(n=zz(e,42)).cd(),gW(r=dht(t.Rc(),i),n.dd())&&(null!=r||t.Rc()._b(i)))}function apt(t,e){var n;return t.f>0&&(t.qj(),-1!=OOt(t,((n=null==e?0:eut(e))&FWt)%t.d.length,n,e))}function opt(t,e){var n,i;return t.f>0&&(t.qj(),n=sMt(t,((i=null==e?0:eut(e))&FWt)%t.d.length,i,e))?n.dd():null}function spt(t,e){var n,i,r,a;for(a=sPt(t.e.Tg(),e),n=zz(t.g,119),r=0;r1?i0(vG(e.a[1],32),n0(e.a[0],ZXt)):n0(e.a[0],ZXt),k2(odt(e.e,n))))}function dpt(t,e){var n;return QM(t)&&QM(e)&&LXt<(n=t%e)&&n>5,e&=31,r=t.d+n+(0==e?0:1),BAt(i=P8(DNe,hXt,25,r,15,1),t.a,n,e),Z0(a=new fY(t.e,r,i)),a}function Ept(t,e,n){var i,r;i=zz(TQ(iNe,e),117),r=zz(TQ(rNe,e),117),n?(yJ(iNe,t,i),yJ(rNe,t,r)):(yJ(rNe,t,i),yJ(iNe,t,r))}function Tpt(t,e,n){var i,r,a;for(r=null,a=t.b;a;){if(i=t.a.ue(e,a.d),n&&0==i)return a;i>=0?a=a.a[1]:(r=a,a=a.a[0])}return r}function Cpt(t,e,n){var i,r,a;for(r=null,a=t.b;a;){if(i=t.a.ue(e,a.d),n&&0==i)return a;i<=0?a=a.a[0]:(r=a,a=a.a[1])}return r}function Spt(t,e,n,i){var r,a,o;return r=!1,NUt(t.f,n,i)&&(Bbt(t.f,t.a[e][n],t.a[e][i]),o=(a=t.a[e])[i],a[i]=a[n],a[n]=o,r=!0),r}function Ipt(t,e,n,i,r){var a,o,s;for(o=r;e.b!=e.c;)a=zz(pY(e),10),s=zz(sdt(a,i).Xb(0),11),t.d[s.p]=o++,n.c[n.c.length]=s;return o}function Mpt(t,e,i){var r,a,o,s,c;return s=t.k,c=e.k,a=EB(ipt(t,r=i[s.g][c.g])),o=EB(ipt(e,r)),n.Math.max((xW(a),a),(xW(o),o))}function Dpt(t,e,n){var i,r,a,o;for(i=n/t.c.length,r=0,o=new Wd(t);o.a2e3&&(see=t,cee=n.setTimeout(X_,10)),0==oee++&&(Mtt((ux(),nee)),!0)}function Ppt(t,e){var n;for(n=new cG(JL(ddt(t).a.Kc(),new l));bDt(n);)if(zz(Y5(n),17).d.i.c==e)return!1;return!0}function Bpt(t,e){var n;if(aL(e,245)){n=zz(e,245);try{return 0==t.vd(n)}catch(t){if(!aL(t=dst(t),205))throw qw(t)}}return!1}function Fpt(){return Error.stackTraceLimit>0?(n.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function Rpt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))>0}function jpt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))<0}function $pt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))<=0}function zpt(t,e){for(var n=0;!e[n]||""==e[n];)n++;for(var i=e[n++];nGXt)return n.fh();if((i=n.Zg())||n==t)break}return i}function Jpt(t){return lJ(),aL(t,156)?zz(FZ(lDe,vne),288).vg(t):lY(lDe,nut(t))?zz(FZ(lDe,nut(t)),288).vg(t):null}function tbt(t){if(vbt(s5t,t))return lN(),yee;if(vbt(c5t,t))return lN(),mee;throw qw(new jv("Expecting true or false"))}function ebt(t,e){if(e.c==t)return e.d;if(e.d==t)return e.c;throw qw(new jv("Input edge is not connected to the input port."))}function nbt(t,e){return t.e>e.e?1:t.ee.d?t.e:t.d=48&&t<48+n.Math.min(10,10)?t-48:t>=97&&t<97?t-97+10:t>=65&&t<65?t-65+10:-1}function rbt(t,e){var n;return UI(e)===UI(t)||!!aL(e,21)&&(n=zz(e,21)).gc()==t.gc()&&t.Ic(n)}function abt(t,e){var n,i,r;return i=t.a.length-1,n=e-t.b&i,r=t.c-e&i,_P(n<(t.c-t.b&i)),n>=r?(slt(t,e),-1):(clt(t,e),1)}function obt(t,e){var n,i;for(d1(e,t.length),n=t.charCodeAt(e),i=e+1;ie.e?1:t.fe.f?1:eut(t)-eut(e)}function vbt(t,e){return xW(t),null!=e&&(!!yR(t,e)||t.length==e.length&&yR(t.toLowerCase(),e.toLowerCase()))}function xbt(t,e){var n,i,r,a;for(i=0,r=e.gc();i0&&Xlt(t,128)<0?(e=pU(t)+128,!(n=(_H(),Lee)[e])&&(n=Lee[e]=new Bd(t)),n):new Bd(t)}function Abt(t,e){var n,i;return(n=e.Hh(t.a))&&null!=(i=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),n8t)))?i:e.ne()}function Ebt(t,e){var n,i;return(n=e.Hh(t.a))&&null!=(i=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),n8t)))?i:e.ne()}function Tbt(t,e){var n,i;for(HJ(),i=new cG(JL(hdt(t).a.Kc(),new l));bDt(i);)if((n=zz(Y5(i),17)).d.i==e||n.c.i==e)return n;return null}function Cbt(t,e,n){this.c=t,this.f=new Nw,this.e=new Uk,this.j=new TH,this.n=new TH,this.b=e,this.g=new YK(e.c,e.d,e.b,e.a),this.a=n}function Sbt(t){var e,n,i,r;for(this.a=new hD,this.d=new Fm,this.e=0,i=0,r=(n=t).length;i0)}function Pbt(t){var e;UI(tOt(t,(lWt(),_Te)))===UI((cht(),mSe))&&(QQ(t)?(e=zz(tOt(QQ(t),_Te),334),Qwt(t,_Te,e)):Qwt(t,_Te,ySe))}function Bbt(t,e,n){var i,r;fEt(t.e,e,n,(kYt(),SIe)),fEt(t.i,e,n,cIe),t.a&&(r=zz(vEt(e,(hWt(),pfe)),11),i=zz(vEt(n,pfe),11),x0(t.g,r,i))}function Fbt(t,e,n){var i,r,a;i=e.c.p,a=e.p,t.b[i][a]=new BV(t,e),n&&(t.a[i][a]=new zp(e),(r=zz(vEt(e,(hWt(),rfe)),10))&&JIt(t.d,r,e))}function Rbt(t,e){var n,i,r;if(Wz(Tae,t),e.Fc(t),n=zz(FZ(Eae,t),21))for(r=n.Kc();r.Ob();)i=zz(r.Pb(),33),-1!=_9(Tae,i,0)||Rbt(i,e)}function jbt(t,e,n){var i;(Wne?(wgt(t),1):Kne||Qne?(fE(),1):Vne&&(fE(),0))&&((i=new ij(e)).b=n,sTt(t,i))}function $bt(t,e){var n;n=!t.A.Hc((vpt(),jIe))||t.q==(V_t(),ZSe),t.u.Hc((dIt(),nIe))?n?PYt(t,e):sYt(t,e):t.u.Hc(rIe)&&(n?OGt(t,e):JYt(t,e))}function zbt(t,e){var n,i;++t.j,null!=e&&uMt(e,n=aL(i=t.a.Cb,97)?zz(i,97).Jg():null)?hbt(t.a,4,n):hbt(t.a,4,zz(e,126))}function qbt(t,e,i){return new YK(n.Math.min(t.a,e.a)-i/2,n.Math.min(t.b,e.b)-i/2,n.Math.abs(t.a-e.a)+i,n.Math.abs(t.b-e.b)+i)}function Hbt(t,e){var n,i;return 0!=(n=_O(t.a.c.p,e.a.c.p))?n:0!=(i=_O(t.a.d.i.p,e.a.d.i.p))?i:_O(e.a.d.p,t.a.d.p)}function Ubt(t,e,n){var i,r,a,o;return(a=e.j)!=(o=n.j)?a.g-o.g:(i=t.f[e.p],r=t.f[n.p],0==i&&0==r?0:0==i?-1:0==r?1:Sft(i,r))}function Gbt(t,e,n){var i;if(!n[e.d])for(n[e.d]=!0,i=new Wd(kdt(e));i.a=(r=t.length))return r;for(e=e>0?e:0;ei&&OZ(e,i,null),e}function Qbt(t,e){var n,i;for(i=t.a.length,e.lengthi&&OZ(e,i,null),e}function Jbt(t,e,n){var i,r,a;return(r=zz(FZ(t.e,e),387))?(a=wF(r,n),sL(t,r),a):(i=new tq(t,e,n),KW(t.e,e,i),xQ(i),null)}function twt(t){var e;if(null==t)return null;if(null==(e=NOt(zzt(t,!0))))throw qw(new ix("Invalid hexBinary value: '"+t+"'"));return e}function ewt(t){return DBt(),Xlt(t,0)<0?0!=Xlt(t,-1)?new y_t(-1,k9(t)):Qee:Xlt(t,10)<=0?tne[pU(t)]:new y_t(1,t)}function nwt(){return bWt(),Sst(Ux(Rre,1),LKt,159,0,[Cre,Tre,Sre,mre,wre,yre,kre,xre,vre,Ere,Are,_re,pre,gre,bre,fre,hre,dre,ure,cre,lre,Ire])}function iwt(t){var e;this.d=new Nw,this.j=new Uk,this.g=new Uk,e=t.g.b,this.f=zz(vEt(mW(e),(HZt(),Ype)),103),this.e=Uv(EB(wwt(e,Twe)))}function rwt(t){this.b=new Nw,this.e=new Nw,this.d=t,this.a=!k_(DK(new FH(null,new GY(new y6(t.b))),new og(new Ur))).sd((pE(),eie))}function awt(){awt=M,lEe=new DS("PARENTS",0),uEe=new DS("NODES",1),sEe=new DS("EDGES",2),hEe=new DS("PORTS",3),cEe=new DS("LABELS",4)}function owt(){owt=M,zSe=new GS("DISTRIBUTED",0),HSe=new GS("JUSTIFIED",1),jSe=new GS("BEGIN",2),$Se=new GS(iQt,3),qSe=new GS("END",4)}function swt(t){switch(t.yi(null)){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function cwt(t){switch(t.g){case 1:return zht(),qCe;case 4:return zht(),jCe;case 2:return zht(),$Ce;case 3:return zht(),RCe}return zht(),zCe}function uwt(t,e,n){var i;switch((i=n.q.getFullYear()-lXt+lXt)<0&&(i=-i),e){case 1:t.a+=i;break;case 2:_tt(t,i%100,2);break;default:_tt(t,i,e)}}function lwt(t,e){var n,i;if(LJ(e,t.b),e>=t.b>>1)for(i=t.c,n=t.b;n>e;--n)i=i.b;else for(i=t.a.a,n=0;n=64&&e<128&&(r=i0(r,vG(1,e-64)));return r}function wwt(t,e){var n,i;return i=null,LP(t,(lWt(),SCe))&&(n=zz(vEt(t,SCe),94)).Xe(e)&&(i=n.We(e)),null==i&&mW(t)&&(i=vEt(mW(t),e)),i}function mwt(t,e){var n,i,r;(i=(r=e.d.i).k)!=(cTt(),Sse)&&i!=Ase&&bDt(n=new cG(JL(ddt(r).a.Kc(),new l)))&&KW(t.k,e,zz(Y5(n),17))}function ywt(t,e){var n,i,r;return i=iet(t.Tg(),e),(n=e-t.Ah())<0?(r=t.Yg(i))>=0?t.lh(r):UIt(t,i):n<0?UIt(t,i):zz(i,66).Nj().Sj(t,t.yh(),n)}function vwt(t){var e;if(aL(t.a,4)){if(null==(e=Jpt(t.a)))throw qw(new $v(u5t+t.b+"'. "+a5t+(_B(dDe),dDe.k)+o5t));return e}return t.a}function xwt(t){var e;if(null==t)return null;if(null==(e=ZYt(zzt(t,!0))))throw qw(new ix("Invalid base64Binary value: '"+t+"'"));return e}function kwt(t){var e;try{return e=t.i.Xb(t.e),t.mj(),t.g=t.e++,e}catch(e){throw aL(e=dst(e),73)?(t.mj(),qw(new vm)):qw(e)}}function _wt(t){var e;try{return e=t.c.ki(t.e),t.mj(),t.g=t.e++,e}catch(e){throw aL(e=dst(e),73)?(t.mj(),qw(new vm)):qw(e)}}function Awt(){Awt=M,lWt(),_ae=ACe,wae=vTe,fae=aTe,mae=ZTe,$xt(),xae=Eie,vae=_ie,kae=Cie,yae=kie,Gut(),gae=cae,dae=sae,pae=lae,bae=hae}function Ewt(t){switch(kE(),this.c=new Nw,this.d=t,t.g){case 0:case 2:this.a=XW(lse),this.b=RXt;break;case 3:case 1:this.a=lse,this.b=jXt}}function Twt(t,e,n){var i;if(t.c)Snt(t.c,t.c.i+e),Int(t.c,t.c.j+n);else for(i=new Wd(t.b);i.a0&&(Wz(t.b,new Kz(e.a,n)),0<(i=e.a.length)?e.a=e.a.substr(0,0):0>i&&(e.a+=rL(P8(MNe,KKt,25,-i,15,1))))}function Iwt(t,e){var n,i,r;for(n=t.o,r=zz(zz(l6(t.r,e),21),84).Kc();r.Ob();)(i=zz(r.Pb(),111)).e.a=bvt(i,n.a),i.e.b=n.b*Uv(EB(i.b.We(Lre)))}function Mwt(t,e){var n,i,r,a;return r=t.k,n=Uv(EB(vEt(t,(hWt(),Afe)))),a=e.k,i=Uv(EB(vEt(e,Afe))),a!=(cTt(),Ese)?-1:r!=Ese?1:n==i?0:n=0?t.hh(e,n,i):(t.eh()&&(i=(r=t.Vg())>=0?t.Qg(i):t.eh().ih(t,-1-r,null,i)),t.Sg(e,n,i))}function Bwt(t,e){switch(e){case 7:return!t.e&&(t.e=new lR(jMe,t,7,4)),void lHt(t.e);case 8:return!t.d&&(t.d=new lR(jMe,t,8,5)),void lHt(t.d)}Fgt(t,e)}function Fwt(t,e){var n;n=t.Zc(e);try{return n.Pb()}catch(t){throw aL(t=dst(t),109)?qw(new Dv("Can't get element "+e)):qw(t)}}function Rwt(t,e){this.e=t,e=0&&(n.d=t.t);break;case 3:t.t>=0&&(n.a=t.t)}t.C&&(n.b=t.C.b,n.c=t.C.c)}function Hwt(){Hwt=M,zre=new jT(vQt,0),$re=new jT(xQt,1),qre=new jT(kQt,2),Hre=new jT(_Qt,3),zre.a=!1,$re.a=!0,qre.a=!1,Hre.a=!0}function Uwt(){Uwt=M,Jre=new RT(vQt,0),Qre=new RT(xQt,1),tae=new RT(kQt,2),eae=new RT(_Qt,3),Jre.a=!1,Qre.a=!0,tae.a=!1,eae.a=!0}function Gwt(t){var e;e=t.a;do{(e=zz(Y5(new cG(JL(fdt(e).a.Kc(),new l))),17).c.i).k==(cTt(),Cse)&&t.b.Fc(e)}while(e.k==(cTt(),Cse));t.b=iot(t.b)}function Ywt(t){var e,n,i;for(i=t.c.a,t.p=(vZ(i),new ej(i)),n=new Wd(i);n.an.b)return!0}return!1}function Vwt(t,e){return ZI(t)?!!DWt[e]:t.hm?!!t.hm[e]:YI(t)?!!MWt[e]:!!GI(t)&&!!IWt[e]}function Qwt(t,e,n){return null==n?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),Kpt(t.o,e)):(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),ykt(t.o,e,n)),t}function Jwt(t,e,n,i){var r;(r=Wht(e.Xe((lWt(),BTe))?zz(e.We(BTe),21):t.j))!=(bWt(),Ire)&&(n&&!sbt(r)||ZTt(POt(t,r,i),e))}function tmt(t,e,n,i){var r,a,o;return a=iet(t.Tg(),e),(r=e-t.Ah())<0?(o=t.Yg(a))>=0?t._g(o,n,!0):oMt(t,a,n):zz(a,66).Nj().Pj(t,t.yh(),r,n,i)}function emt(t,e,n,i){var r,a;n.mh(e)&&(JE(),ltt(e)?xbt(t,zz(n.ah(e),153)):(r=(a=e)?zz(i,49).xh(a):null)&&jw(n.ah(e),r))}function nmt(t){switch(t.g){case 1:return Fot(),Fre;case 3:return Fot(),Nre;case 2:return Fot(),Bre;case 4:return Fot(),Pre;default:return null}}function imt(t){switch(typeof t){case PWt:return ymt(t);case NWt:return SQ(t);case LWt:return lN(),t?1231:1237;default:return null==t?0:CN(t)}}function rmt(t,e,n){if(t.e)switch(t.b){case 1:zX(t.c,e,n);break;case 0:qX(t.c,e,n)}else e4(t.c,e,n);t.a[e.p][n.p]=t.c.i,t.a[n.p][e.p]=t.c.e}function amt(t){var e,n;if(null==t)return null;for(n=P8(Mse,lKt,193,t.length,0,2),e=0;e=0)return i;if(t.Fk())for(n=0;n=(r=t.gc()))throw qw(new eR(e,r));if(t.hi()&&(i=t.Xc(n))>=0&&i!=e)throw qw(new jv(s8t));return t.mi(e,n)}function lmt(t,e){if(this.a=zz(vZ(t),245),this.b=zz(vZ(e),245),t.vd(e)>0||t==(nv(),jte)||e==(ev(),$te))throw qw(new jv("Invalid range: "+z3(t,e)))}function hmt(t){var e,n;for(this.b=new Nw,this.c=t,this.a=!1,n=new Wd(t.a);n.a0),(e&-e)==e)return SQ(e*HOt(t,31)*4.656612873077393e-10);do{i=(n=HOt(t,31))%e}while(n-i+(e-1)<0);return SQ(i)}function ymt(t){var e,n,i;return rj(),null!=(i=rie[n=":"+t])?SQ((xW(i),i)):(e=null==(i=iie[n])?JNt(t):SQ((xW(i),i)),IX(),rie[n]=e,e)}function vmt(t,e,n){DAt(n,"Compound graph preprocessor",1),t.a=new wQ,PGt(t,e,null),Gqt(t,e),nNt(t),hct(e,(hWt(),qhe),t.a),t.a=null,OY(t.b),HTt(n)}function xmt(t,e,n){switch(n.g){case 1:t.a=e.a/2,t.b=0;break;case 2:t.a=e.a,t.b=e.b/2;break;case 3:t.a=e.a/2,t.b=e.b;break;case 4:t.a=0,t.b=e.b/2}}function kmt(t){var e,n,i;for(i=zz(l6(t.a,(N_t(),Cue)),15).Kc();i.Ob();)iZ(t,n=zz(i.Pb(),101),(e=Hvt(n))[0],(Irt(),Pue),0),iZ(t,n,e[1],Fue,1)}function _mt(t){var e,n,i;for(i=zz(l6(t.a,(N_t(),Sue)),15).Kc();i.Ob();)iZ(t,n=zz(i.Pb(),101),(e=Hvt(n))[0],(Irt(),Pue),0),iZ(t,n,e[1],Fue,1)}function Amt(t){switch(t.g){case 0:return null;case 1:return new Ort;case 2:return new Qy;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function Emt(t,e,n){var i,r;for(vst(t,e-t.s,n-t.t),r=new Wd(t.n);r.a1&&(r=fmt(t,e)),r}function Cmt(t){var e;return t.f&&t.f.kh()&&(e=zz(t.f,49),t.f=zz(nht(t,e),82),t.f!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,8,e,t.f))),t.f}function Smt(t){var e;return t.i&&t.i.kh()&&(e=zz(t.i,49),t.i=zz(nht(t,e),82),t.i!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,7,e,t.i))),t.i}function Imt(t){var e;return t.b&&0!=(64&t.b.Db)&&(e=t.b,t.b=zz(nht(t,e),18),t.b!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,21,e,t.b))),t.b}function Mmt(t,e){var n,i,r;null==t.d?(++t.e,++t.f):(i=e.Sh(),fNt(t,t.f+1),r=(i&FWt)%t.d.length,!(n=t.d[r])&&(n=t.d[r]=t.uj()),n.Fc(e),++t.f)}function Dmt(t,e,n){var i;return!e.Kj()&&(-2!=e.Zj()?null==(i=e.zj())?null==n:Pht(i,n):e.Hj()==t.e.Tg()&&null==n)}function Omt(){var t;dit(16,MKt),t=Jit(16),this.b=P8(Gte,IKt,317,t,0,1),this.c=P8(Gte,IKt,317,t,0,1),this.a=null,this.e=null,this.i=0,this.f=t-1,this.g=0}function Lmt(t){LF.call(this),this.k=(cTt(),Sse),this.j=(dit(6,OKt),new Q6(6)),this.b=(dit(2,OKt),new Q6(2)),this.d=new hy,this.f=new gy,this.a=t}function Nmt(t){var e,n;t.c.length<=1||(bCt(t,zz((e=ABt(t,(kYt(),TIe))).a,19).a,zz(e.b,19).a),bCt(t,zz((n=ABt(t,SIe)).a,19).a,zz(n.b,19).a))}function Pmt(){Pmt=M,vme=new $C("SIMPLE",0),wme=new $C(q1t,1),mme=new $C("LINEAR_SEGMENTS",2),bme=new $C("BRANDES_KOEPF",3),yme=new $C(_3t,4)}function Bmt(t,e,n){LR(zz(vEt(e,(HZt(),nwe)),98))||(W9(t,e,FTt(e,n)),W9(t,e,FTt(e,(kYt(),TIe))),W9(t,e,FTt(e,uIe)),TX(),yO(e.j,new jp(t)))}function Fmt(t,e,n,i){var r;for(r=zz(l6(i?t.a:t.b,e),21).Kc();r.Ob();)if($Bt(t,n,zz(r.Pb(),33)))return!0;return!1}function Rmt(t){var e,n;for(n=new DL(t);n.e!=n.i.gc();)if((e=zz(kwt(n),87)).e||0!=(!e.d&&(e.d=new OL(KDe,e,1)),e.d).i)return!0;return!1}function jmt(t){var e,n;for(n=new DL(t);n.e!=n.i.gc();)if((e=zz(kwt(n),87)).e||0!=(!e.d&&(e.d=new OL(KDe,e,1)),e.d).i)return!0;return!1}function $mt(t){var e,n;for(e=0,n=new Wd(t.c.a);n.a102?-1:t<=57?t-48:t<65?-1:t<=70?t-65+10:t<97?-1:t-97+10}function Ymt(t,e){if(null==t)throw qw(new qv("null key in entry: null="+e));if(null==e)throw qw(new qv("null value in entry: "+t+"=null"))}function Zmt(t,e){for(var n,i;t.Ob();){if(!e.Ob())return!1;if(n=t.Pb(),i=e.Pb(),!(UI(n)===UI(i)||null!=n&&Pht(n,i)))return!1}return!e.Ob()}function Wmt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[ylt(t.a[0],e),ylt(t.a[1],e),ylt(t.a[2],e)]),t.d&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Kmt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[vlt(t.a[0],e),vlt(t.a[1],e),vlt(t.a[2],e)]),t.d&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Xmt(){Xmt=M,vle=new TC("GREEDY",0),yle=new TC(H1t,1),kle=new TC(q1t,2),_le=new TC("MODEL_ORDER",3),xle=new TC("GREEDY_MODEL_ORDER",4)}function Vmt(t,e){var n,i,r;for(t.b[e.g]=1,i=lwt(e.d,0);i.b!=i.d.c;)r=(n=zz(d3(i),188)).c,1==t.b[r.g]?Bq(t.a,n):2==t.b[r.g]?t.b[r.g]=1:Vmt(t,r)}function Qmt(t,e){var n,i,r;for(r=new Q6(e.gc()),i=e.Kc();i.Ob();)(n=zz(i.Pb(),286)).c==n.f?hCt(t,n,n.c):aCt(t,n)||(r.c[r.c.length]=n);return r}function Jmt(t,e,n){var i,r,a,o;for(o=t.r+e,t.r+=e,t.d+=n,i=n/t.n.c.length,r=0,a=new Wd(t.n);a.aa&&OZ(e,a,null),e}function Eyt(t,e){var n,i;if(i=t.gc(),null==e){for(n=0;n0&&(c+=r),u[l]=o,o+=s*(c+i)}function Fyt(t){var e,n,i;for(i=t.f,t.n=P8(PNe,UXt,25,i,15,1),t.d=P8(PNe,UXt,25,i,15,1),e=0;e0?t.c:0),++a;t.b=r,t.d=o}function Yyt(t,e){var i,r,a,o,s;for(r=0,a=0,i=0,s=new Wd(e);s.a0?t.g:0),++i;t.c=a,t.d=r}function Zyt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[wmt(t,(Fet(),Uie),e),wmt(t,Gie,e),wmt(t,Yie,e)]),t.f&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Wyt(t,e,n){try{zFt(t,e+t.j,n+t.k,!1,!0)}catch(t){throw aL(t=dst(t),73)?qw(new Dv(t.g+IQt+e+zWt+n+").")):qw(t)}}function Kyt(t,e,n){try{zFt(t,e+t.j,n+t.k,!0,!1)}catch(t){throw aL(t=dst(t),73)?qw(new Dv(t.g+IQt+e+zWt+n+").")):qw(t)}}function Xyt(t){var e;LP(t,(HZt(),Obe))&&((e=zz(vEt(t,Obe),21)).Hc((eOt(),ISe))?(e.Mc(ISe),e.Fc(DSe)):e.Hc(DSe)&&(e.Mc(DSe),e.Fc(ISe)))}function Vyt(t){var e;LP(t,(HZt(),Obe))&&((e=zz(vEt(t,Obe),21)).Hc((eOt(),BSe))?(e.Mc(BSe),e.Fc(NSe)):e.Hc(NSe)&&(e.Mc(NSe),e.Fc(BSe)))}function Qyt(t,e,n){DAt(n,"Self-Loop ordering",1),QA(OK(DK(DK(gtt(new FH(null,new g1(e.b,16)),new Ii),new Mi),new Di),new Oi),new dp(t)),HTt(n)}function Jyt(t,e,n,i){var r,a;for(r=e;r0&&(a.b+=e),a}function cvt(t,e){var i,r,a;for(a=new Uk,r=t.Kc();r.Ob();)tRt(i=zz(r.Pb(),37),0,a.b),a.b+=i.f.b+e,a.a=n.Math.max(a.a,i.f.a);return a.a>0&&(a.a+=e),a}function uvt(t){var e,i,r;for(r=FWt,i=new Wd(t.a);i.a>16==6?t.Cb.ih(t,5,UMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||t.zh(),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function dvt(t){CV();var e=t.e;if(e&&e.stack){var n=e.stack,i=e+"\n";return n.substring(0,i.length)==i&&(n=n.substring(i.length)),n.split("\n")}return[]}function gvt(t){var e;return Tit(),(e=Dee)[t>>>28]|e[t>>24&15]<<4|e[t>>20&15]<<8|e[t>>16&15]<<12|e[t>>12&15]<<16|e[t>>8&15]<<20|e[t>>4&15]<<24|e[15&t]<<28}function pvt(t){var e,i,r;t.b==t.c&&(r=t.a.length,i=kct(n.Math.max(8,r))<<1,0!=t.b?(crt(t,e=TF(t.a,i),r),t.a=e,t.b=0):Cm(t.a,i),t.c=r)}function bvt(t,e){var n;return(n=t.b).Xe((lWt(),oCe))?n.Hf()==(kYt(),SIe)?-n.rf().a-Uv(EB(n.We(oCe))):e+Uv(EB(n.We(oCe))):n.Hf()==(kYt(),SIe)?-n.rf().a:e}function wvt(t){var e;return 0!=t.b.c.length&&zz(PH(t.b,0),70).a?zz(PH(t.b,0),70).a:null!=(e=nX(t))?e:""+(t.c?_9(t.c.a,t,0):-1)}function mvt(t){var e;return 0!=t.f.c.length&&zz(PH(t.f,0),70).a?zz(PH(t.f,0),70).a:null!=(e=nX(t))?e:""+(t.i?_9(t.i.j,t,0):-1)}function yvt(t,e){var n,i;if(e<0||e>=t.gc())return null;for(n=e;n0?t.c:0),a=n.Math.max(a,e.d),++r;t.e=o,t.b=a}function kvt(t){var e,n;if(!t.b)for(t.b=S2(zz(t.f,118).Ag().i),n=new DL(zz(t.f,118).Ag());n.e!=n.i.gc();)e=zz(kwt(n),137),Wz(t.b,new Fv(e));return t.b}function _vt(t,e){var n,i,r;if(e.dc())return pB(),pB(),wDe;for(n=new oF(t,e.gc()),r=new DL(t);r.e!=r.i.gc();)i=kwt(r),e.Hc(i)&&h7(n,i);return n}function Avt(t,e,n,i){return 0==e?i?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),t.o):(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),D8(t.o)):tmt(t,e,n,i)}function Evt(t){var e,n;if(t.rb)for(e=0,n=t.rb.i;e>22))>>22)<0||(t.l=n&CXt,t.m=i&CXt,t.h=r&SXt,0)))}function Mvt(t,e,n,i,r,a,o){var s,c;return!(e.Ae()&&(c=t.a.ue(n,i),c<0||!r&&0==c)||e.Be()&&(s=t.a.ue(n,a),s>0||!o&&0==s))}function Dvt(t,e){if(Yut(),0!=t.j.g-e.j.g)return 0;switch(t.j.g){case 2:return _dt(e,due)-_dt(t,due);case 4:return _dt(t,fue)-_dt(e,fue)}return 0}function Ovt(t){switch(t.g){case 0:return Ple;case 1:return Ble;case 2:return Fle;case 3:return Rle;case 4:return jle;case 5:return $le;default:return null}}function Lvt(t,e,n){var i,r;return Mlt(r=new Ly,e),Prt(r,n),h7((!t.c&&(t.c=new nY(VDe,t,12,10)),t.c),r),Nnt(i=r,0),Pnt(i,1),eft(i,!0),Qht(i,!0),i}function Nvt(t,e){var n,i;if(e>=t.i)throw qw(new LM(e,t.i));return++t.j,n=t.g[e],(i=t.i-e-1)>0&&sqt(t.g,e+1,t.g,e,i),OZ(t.g,--t.i,null),t.fi(e,n),t.ci(),n}function Pvt(t,e){var n;return t.Db>>16==17?t.Cb.ih(t,21,HDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||t.zh(),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Bvt(t){var e,n,i;for(TX(),yO(t.c,t.a),i=new Wd(t.c);i.an.a.c.length))throw qw(new jv("index must be >= 0 and <= layer node count"));t.c&&v9(t.c.a,t),t.c=n,n&&xU(n.a,e,t)}function Qvt(t,e){var n,i,r;for(i=new cG(JL(hdt(t).a.Kc(),new l));bDt(i);)return n=zz(Y5(i),17),new qh(vZ((r=zz(e.Kb(n),10)).n.b+r.o.b/2));return iv(),iv(),Dte}function Jvt(t,e){this.c=new Pw,this.a=t,this.b=e,this.d=zz(vEt(t,(hWt(),Dfe)),304),UI(vEt(t,(HZt(),Lbe)))===UI((b9(),Hle))?this.e=new by:this.e=new py}function txt(t,e){var i,r,a;for(a=0,r=new Wd(t);r.a>16==6?t.Cb.ih(t,6,jMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),vMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function hxt(t,e){var n;return t.Db>>16==7?t.Cb.ih(t,1,BMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),kMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function fxt(t,e){var n;return t.Db>>16==9?t.Cb.ih(t,9,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),AMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function dxt(t,e){var n;return t.Db>>16==5?t.Cb.ih(t,9,ZDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),uOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function gxt(t,e){var n;return t.Db>>16==3?t.Cb.ih(t,0,zMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),nOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function pxt(t,e){var n;return t.Db>>16==7?t.Cb.ih(t,6,UMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),mOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function bxt(){this.a=new dc,this.g=new Omt,this.j=new Omt,this.b=new Pw,this.d=new Omt,this.i=new Omt,this.k=new Pw,this.c=new Pw,this.e=new Pw,this.f=new Pw}function wxt(t,e,n){var i,r,a;for(n<0&&(n=0),a=t.i,r=n;rGXt)return yxt(t,i);if(i==t)return!0}}return!1}function vxt(t){switch(BN(),t.q.g){case 5:yIt(t,(kYt(),uIe)),yIt(t,TIe);break;case 4:YOt(t,(kYt(),uIe)),YOt(t,TIe);break;default:yYt(t,(kYt(),uIe)),yYt(t,TIe)}}function xxt(t){switch(BN(),t.q.g){case 5:CMt(t,(kYt(),cIe)),CMt(t,SIe);break;case 4:Iwt(t,(kYt(),cIe)),Iwt(t,SIe);break;default:vYt(t,(kYt(),cIe)),vYt(t,SIe)}}function kxt(t){var e,n;(e=zz(vEt(t,(fFt(),toe)),19))?(n=e.a,hct(t,(Trt(),loe),0==n?new ldt:new S4(n))):hct(t,(Trt(),loe),new S4(1))}function _xt(t,e){var n;switch(n=t.i,e.g){case 1:return-(t.n.b+t.o.b);case 2:return t.n.a-n.o.a;case 3:return t.n.b-n.o.b;case 4:return-(t.n.a+t.o.a)}return 0}function Axt(t,e){switch(t.g){case 0:return e==(Edt(),$fe)?rue:aue;case 1:return e==(Edt(),$fe)?rue:iue;case 2:return e==(Edt(),$fe)?iue:aue;default:return iue}}function Ext(t,e){var i,r,a;for(v9(t.a,e),t.e-=e.r+(0==t.a.c.length?0:t.c),a=e4t,r=new Wd(t.a);r.a>16==3?t.Cb.ih(t,12,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),yMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Cxt(t,e){var n;return t.Db>>16==11?t.Cb.ih(t,10,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),_Me),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Sxt(t,e){var n;return t.Db>>16==10?t.Cb.ih(t,11,HDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),bOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Ixt(t,e){var n;return t.Db>>16==10?t.Cb.ih(t,12,XDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),yOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Mxt(t){var e;return 0==(1&t.Bb)&&t.r&&t.r.kh()&&(e=zz(t.r,49),t.r=zz(nht(t,e),138),t.r!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,8,e,t.r))),t.r}function Dxt(t,e,i){var r;return r=Sst(Ux(PNe,1),UXt,25,15,[rEt(t,(Fet(),Uie),e,i),rEt(t,Gie,e,i),rEt(t,Yie,e,i)]),t.f&&(r[0]=n.Math.max(r[0],r[2]),r[2]=r[0]),r}function Oxt(t,e){var n,i,r;if(0!=(r=Qmt(t,e)).c.length)for(yO(r,new ei),n=r.c.length,i=0;i>19)!=(s=e.h>>19)?s-o:(i=t.h)!=(a=e.h)?i-a:(n=t.m)!=(r=e.m)?n-r:t.l-e.l}function $xt(){$xt=M,nFt(),Cie=new OM(ZVt,Sie=Pie),Ftt(),Eie=new OM(WVt,Tie=yie),hwt(),_ie=new OM(KVt,Aie=pie),kie=new OM(XVt,(lN(),!0))}function zxt(t,e,n){var i,r;i=e*n,aL(t.g,145)?(r=h3(t)).f.d?r.f.a||(t.d.a+=i+fQt):(t.d.d-=i+fQt,t.d.a+=i+fQt):aL(t.g,10)&&(t.d.d-=i,t.d.a+=2*i)}function qxt(t,e,i){var r,a,o,s,c;for(a=t[i.g],c=new Wd(e.d);c.a0?t.g:0),++i;e.b=r,e.e=a}function Uxt(t){var e,n,i;if(i=t.b,HA(t.i,i.length)){for(n=2*i.length,t.b=P8(Gte,IKt,317,n,0,1),t.c=P8(Gte,IKt,317,n,0,1),t.f=n-1,t.i=0,e=t.a;e;e=e.c)QSt(t,e,e);++t.g}}function Gxt(t,e,n,i){var r,a,o,s;for(r=0;rs&&(c=s/r),(a=n.Math.abs(t.b))>o&&(u=o/a),xL(t,n.Math.min(c,u)),t}function Wxt(){var t,e;Uzt();try{if(e=zz(Wkt((WE(),GDe),x6t),2014))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new sc}function Kxt(){var t,e;p9();try{if(e=zz(Wkt((WE(),GDe),C9t),2024))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new Bu}function Xxt(){var t,e;Uzt();try{if(e=zz(Wkt((WE(),GDe),X7t),1941))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new Hc}function Vxt(t,e,n){var i,r;return r=t.e,t.e=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,4,r,e),n?n.Ei(i):n=i),r!=e&&(n=sGt(t,e?kLt(t,e):t.a,n)),n}function Qxt(){DA.call(this),this.e=-1,this.a=!1,this.p=$Kt,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=$Kt}function Jxt(t,e){var n,i,r;if(i=t.b.d.d,t.a||(i+=t.b.d.a),r=e.b.d.d,e.a||(r+=e.b.d.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function tkt(t,e){var n,i,r;if(i=t.b.b.d,t.a||(i+=t.b.b.a),r=e.b.b.d,e.a||(r+=e.b.b.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function ekt(t,e){var n,i,r;if(i=t.b.g.d,t.a||(i+=t.b.g.a),r=e.b.g.d,e.a||(r+=e.b.g.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function nkt(){nkt=M,Noe=WU(pH(pH(pH(new z2,(xEt(),$oe),(dWt(),vce)),$oe,Ace),zoe,Dce),zoe,cce),Boe=pH(pH(new z2,$oe,Qse),$oe,uce),Poe=WU(new z2,zoe,hce)}function ikt(t){var e,n,i,r,a;for(e=zz(vEt(t,(hWt(),Ghe)),83),a=t.n,i=e.Cc().Kc();i.Ob();)(r=(n=zz(i.Pb(),306)).i).c+=a.a,r.d+=a.b,n.c?PBt(n):BBt(n);hct(t,Ghe,null)}function rkt(t,e,n){var i,r;switch(i=(r=t.b).d,e.g){case 1:return-i.d-n;case 2:return r.o.a+i.c+n;case 3:return r.o.b+i.a+n;case 4:return-i.b-n;default:return-1}}function akt(t){var e,n,i,r,a;if(i=0,r=tJt,t.b)for(e=0;e<360;e++)n=.017453292519943295*e,ZRt(t,t.d,0,0,t4t,n),(a=t.b.ig(t.d))0&&(r=sMt(t,(a&FWt)%t.d.length,a,e))?r.ed(n):(i=t.tj(a,e,n),t.c.Fc(i),null)}function vkt(t,e){var n,i,r,a;switch(Iht(t,e)._k()){case 3:case 2:for(r=0,a=(n=Qzt(e)).i;r=0;r--)if(yR(t[r].d,e)||yR(t[r].d,i)){t.length>=r+1&&t.splice(0,r+1);break}return t}function Dkt(t,e){var i;return QM(t)&&QM(e)&&LXt<(i=t/e)&&i0&&(t.b+=2,t.a+=r):(t.b+=1,t.a+=n.Math.min(r,a))}function jkt(t,e){var n;if(n=!1,ZI(e)&&(n=!0,tW(t,new UZ(TB(e)))),n||aL(e,236)&&(n=!0,tW(t,new Tf(ZR(zz(e,236))))),!n)throw qw(new Lv(H6t))}function $kt(t,e,n,i){var r,a,o;return r=new N9(t.e,1,10,aL(o=e.c,88)?zz(o,26):(wWt(),pOe),aL(a=n.c,88)?zz(a,26):(wWt(),pOe),cmt(t,e),!1),i?i.Ei(r):i=r,i}function zkt(t){var e,n;switch(zz(vEt(mW(t),(HZt(),wbe)),420).g){case 0:return e=t.n,n=t.o,new PS(e.a+n.a/2,e.b+n.b/2);case 1:return new gD(t.n);default:return null}}function qkt(){qkt=M,Xle=new DC(VJt,0),Kle=new DC("LEFTUP",1),Qle=new DC("RIGHTUP",2),Wle=new DC("LEFTDOWN",3),Vle=new DC("RIGHTDOWN",4),Zle=new DC("BALANCED",5)}function Hkt(t,e,n){var i,r,a;if(0==(i=Sft(t.a[e.p],t.a[n.p]))){if(r=zz(vEt(e,(hWt(),afe)),15),a=zz(vEt(n,afe),15),r.Hc(n))return-1;if(a.Hc(e))return 1}return i}function Ukt(t){switch(t.g){case 1:return new $o;case 2:return new zo;case 3:return new jo;case 0:return null;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function Gkt(t,e,n){switch(e){case 1:return!t.n&&(t.n=new nY(GMe,t,1,7)),lHt(t.n),!t.n&&(t.n=new nY(GMe,t,1,7)),void wZ(t.n,zz(n,14));case 2:return void Lit(t,TB(n))}aut(t,e,n)}function Ykt(t,e,n){switch(e){case 3:return void Tnt(t,Uv(EB(n)));case 4:return void Cnt(t,Uv(EB(n)));case 5:return void Snt(t,Uv(EB(n)));case 6:return void Int(t,Uv(EB(n)))}Gkt(t,e,n)}function Zkt(t,e,n){var i,r;(i=HAt(r=new Ly,e,null))&&i.Fi(),Prt(r,n),h7((!t.c&&(t.c=new nY(VDe,t,12,10)),t.c),r),Nnt(r,0),Pnt(r,1),eft(r,!0),Qht(r,!0)}function Wkt(t,e){var n,i;return aL(n=lT(t.g,e),235)?((i=zz(n,235)).Qh(),i.Nh()):aL(n,498)?i=zz(n,1938).b:null}function Kkt(t,e,n,i){var r,a;return vZ(e),vZ(n),F9(!!(a=zz(YR(t.d,e),19)),"Row %s not in %s",e,t.e),F9(!!(r=zz(YR(t.b,n),19)),"Column %s not in %s",n,t.c),Cst(t,a.a,r.a,i)}function Xkt(t,e,n,i,r,a,o){var s,c,u,l,h;if(h=qyt(s=(u=a==o-1)?i:0,l=r[a]),10!=i&&Sst(Ux(t,o-a),e[a],n[a],s,h),!u)for(++a,c=0;c1||-1==s?(a=zz(c,15),r.Wb(Wpt(t,a))):r.Wb(njt(t,zz(c,56))))}function h_t(t,e,n,i){V_();var r=SWt;function a(){for(var t=0;tF3t)return n;i>-1e-6&&++n}return n}function k_t(t,e){var n;e!=t.b?(n=null,t.b&&(n=cQ(t.b,t,-4,n)),e&&(n=Pwt(e,t,-4,n)),(n=tht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function __t(t,e){var n;e!=t.f?(n=null,t.f&&(n=cQ(t.f,t,-1,n)),e&&(n=Pwt(e,t,-1,n)),(n=eht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,e,e))}function A_t(t){var e,n,i;if(null==t)return null;if((n=zz(t,15)).dc())return"";for(i=new Tx,e=n.Kc();e.Ob();)aM(i,(ZHt(),TB(e.Pb()))),i.a+=" ";return RM(i,i.a.length-1)}function E_t(t){var e,n,i;if(null==t)return null;if((n=zz(t,15)).dc())return"";for(i=new Tx,e=n.Kc();e.Ob();)aM(i,(ZHt(),TB(e.Pb()))),i.a+=" ";return RM(i,i.a.length-1)}function T_t(t,e,n){var i,r;return i=t.c[e.c.p][e.p],r=t.c[n.c.p][n.p],null!=i.a&&null!=r.a?AG(i.a,r.a):null!=i.a?-1:null!=r.a?1:0}function C_t(t,e){var n,i,r;if(e)for(r=((n=new lG(e.a.length)).b-n.a)*n.c<0?(nT(),ENe):new ZL(n);r.Ob();)i=P2(e,zz(r.Pb(),19).a),MK(new zb(t).a,i)}function S_t(t,e){var n,i,r;if(e)for(r=((n=new lG(e.a.length)).b-n.a)*n.c<0?(nT(),ENe):new ZL(n);r.Ob();)i=P2(e,zz(r.Pb(),19).a),IK(new Ob(t).a,i)}function I_t(t){if(null!=t&&t.length>0&&33==hK(t,t.length-1))try{return null==QCt(hP(t,0,t.length-1)).e}catch(t){if(!aL(t=dst(t),32))throw qw(t)}return!1}function M_t(t,e,n){var i,r,a;return i=e.ak(),a=e.dd(),r=i.$j()?LV(t,3,i,null,a,mzt(t,i,a,aL(i,99)&&0!=(zz(i,18).Bb&qXt)),!0):LV(t,1,i,i.zj(),a,-1,!0),n?n.Ei(r):n=r,n}function D_t(){var t,e,n;for(e=0,t=0;t<"X".length;t++){if(0==(n=VMt((d1(t,"X".length),"X".charCodeAt(t)))))throw qw(new ox("Unknown Option: "+"X".substr(t)));e|=n}return e}function O_t(t,e,n){var i,r;switch(i=Kft(mW(e)),SJ(r=new ITt,e),n.g){case 1:USt(r,Eft(hgt(i)));break;case 2:USt(r,hgt(i))}return hct(r,(HZt(),ewe),EB(vEt(t,ewe))),r}function L_t(t){var e,n;return e=zz(Y5(new cG(JL(fdt(t.a).a.Kc(),new l))),17),n=zz(Y5(new cG(JL(ddt(t.a).a.Kc(),new l))),17),Hv(AB(vEt(e,(hWt(),Sfe))))||Hv(AB(vEt(n,Sfe)))}function N_t(){N_t=M,Eue=new vC("ONE_SIDE",0),Cue=new vC("TWO_SIDES_CORNER",1),Sue=new vC("TWO_SIDES_OPPOSING",2),Tue=new vC("THREE_SIDES",3),Aue=new vC("FOUR_SIDES",4)}function P_t(t,e,n,i,r){var a,o;a=zz(C4(DK(e.Oc(),new Jr),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),o=zz(wot(t.b,n,i),15),0==r?o.Wc(0,a):o.Gc(a)}function B_t(t,e){var n,i,r;for(i=new Wd(e.a);i.a0&&$vt(this,this.c-1,(kYt(),cIe)),this.c0&&t[0].length>0&&(this.c=Hv(AB(vEt(mW(t[0][0]),(hWt(),ofe))))),this.a=P8(Cye,lKt,2018,t.length,0,2),this.b=P8(Lye,lKt,2019,t.length,0,2),this.d=new Elt}function W_t(t){return 0!=t.c.length&&((f1(0,t.c.length),zz(t.c[0],17)).c.i.k==(cTt(),Cse)||c5(OK(new FH(null,new g1(t,16)),new Ra),new ja))}function K_t(t,e,n){return DAt(n,"Tree layout",1),l2(t.b),SY(t.b,(Yvt(),Fve),Fve),SY(t.b,Rve,Rve),SY(t.b,jve,jve),SY(t.b,$ve,$ve),t.a=LHt(t.b,e),dPt(t,e,vat(n,1)),HTt(n),e}function X_t(t,e){var i,r,a,o,s,c;for(s=pBt(e),a=e.f,c=e.g,o=n.Math.sqrt(a*a+c*c),r=0,i=new Wd(s);i.a=0?(n=Dkt(t,OXt),i=dpt(t,OXt)):(n=Dkt(e=kG(t,1),5e8),i=adt(vG(i=dpt(e,5e8),1),n0(t,1))),i0(vG(i,32),n0(n,ZXt))}function dAt(t,e,n){var i;switch(CP(0!=e.b),i=zz(Oet(e,e.a.a),8),n.g){case 0:i.b=0;break;case 2:i.b=t.f;break;case 3:i.a=0;break;default:i.a=t.g}return tZ(lwt(e,0),i),e}function gAt(t,e,n,i){var r,a,o,s,c;switch(c=t.b,s=Ybt(o=(a=e.d).j,c.d[o.g],n),r=YF(zO(a.n),a.a),a.j.g){case 1:case 3:s.a+=r.a;break;case 2:case 4:s.b+=r.b}r5(i,s,i.c.b,i.c)}function pAt(t,e,n){var i,r,a,o;for(o=_9(t.e,e,0),(a=new ry).b=n,i=new E2(t.e,o);i.b1;e>>=1)0!=(1&e)&&(i=Ntt(i,n)),n=1==n.d?Ntt(n,n):new Ibt(Mjt(n.a,n.d,P8(DNe,hXt,25,n.d<<1,15,1)));return i=Ntt(i,n)}function xAt(){var t,e,n,i;for(xAt=M,Mne=P8(PNe,UXt,25,25,15,1),Dne=P8(PNe,UXt,25,33,15,1),i=152587890625e-16,e=32;e>=0;e--)Dne[e]=i,i*=.5;for(n=1,t=24;t>=0;t--)Mne[t]=n,n*=.5}function kAt(t){var e,n;if(Hv(AB(tOt(t,(HZt(),gbe)))))for(n=new cG(JL(bLt(t).a.Kc(),new l));bDt(n);)if(VIt(e=zz(Y5(n),79))&&Hv(AB(tOt(e,pbe))))return!0;return!1}function _At(t,e){var n,i,r;AY(t.f,e)&&(e.b=t,i=e.c,-1!=_9(t.j,i,0)||Wz(t.j,i),r=e.d,-1!=_9(t.j,r,0)||Wz(t.j,r),0!=(n=e.a.b).c.length&&(!t.i&&(t.i=new iwt(t)),yot(t.i,n)))}function AAt(t){var e,n,i,r;return(n=(e=t.c.d).j)==(r=(i=t.d.d).j)?e.p=0&&yR(t.substr(e,"GMT".length),"GMT")||e>=0&&yR(t.substr(e,"UTC".length),"UTC")?(n[0]=e+3,xjt(t,n,i)):xjt(t,n,i)}function MAt(t,e){var n,i,r,a,o;for(a=t.g.a,o=t.g.b,i=new Wd(t.d);i.an;a--)t[a]|=e[a-n-1]>>>o,t[a-1]=e[a-n-1]<=t.f)break;a.c[a.c.length]=n}return a}function $At(t){var e,n,i,r;for(e=null,r=new Wd(t.wf());r.a0&&sqt(t.g,e,t.g,e+i,s),o=n.Kc(),t.i+=i,r=0;ra&&uY(u,oet(n[s],Ane))&&(r=s,a=c);return r>=0&&(i[0]=e+a),r}function ZAt(t,e){var n;if(0!=(n=VM(t.b.Hf(),e.b.Hf())))return n;switch(t.b.Hf().g){case 1:case 2:return _O(t.b.sf(),e.b.sf());case 3:case 4:return _O(e.b.sf(),t.b.sf())}return 0}function WAt(t){var e,n,i;for(i=t.e.c.length,t.a=xH(DNe,[lKt,hXt],[48,25],15,[i,i],2),n=new Wd(t.c);n.a>4&15,a=15&t[i],o[r++]=MMe[n],o[r++]=MMe[a];return qpt(o,0,o.length)}function VAt(t,e,n){var i,r,a;return i=e.ak(),a=e.dd(),r=i.$j()?LV(t,4,i,a,null,mzt(t,i,a,aL(i,99)&&0!=(zz(i,18).Bb&qXt)),!0):LV(t,i.Kj()?2:1,i,a,i.zj(),-1,!0),n?n.Ei(r):n=r,n}function QAt(t){var e,n;return t>=qXt?(e=HXt+(t-qXt>>10&1023)&VKt,n=56320+(t-qXt&1023)&VKt,String.fromCharCode(e)+""+String.fromCharCode(n)):String.fromCharCode(t&VKt)}function JAt(t,e){var n,i,r,a;return HB(),(r=zz(zz(l6(t.r,e),21),84)).gc()>=2&&(i=zz(r.Kc().Pb(),111),n=t.u.Hc((dIt(),eIe)),a=t.u.Hc(aIe),!i.a&&!n&&(2==r.gc()||a))}function tEt(t,e,n,i,r){var a,o,s;for(a=iBt(t,e,n,i,r),s=!1;!a;)AOt(t,r,!0),s=!0,a=iBt(t,e,n,i,r);s&&AOt(t,r,!1),0!=(o=Fst(r)).c.length&&(t.d&&t.d.lg(o),tEt(t,r,n,i,o))}function eEt(){eEt=M,oSe=new zS(VJt,0),rSe=new zS("DIRECTED",1),sSe=new zS("UNDIRECTED",2),nSe=new zS("ASSOCIATION",3),aSe=new zS("GENERALIZATION",4),iSe=new zS("DEPENDENCY",5)}function nEt(t,e){var n;if(!WQ(t))throw qw(new $v(z5t));switch(n=WQ(t),e.g){case 1:return-(t.j+t.f);case 2:return t.i-n.g;case 3:return t.j-n.f;case 4:return-(t.i+t.g)}return 0}function iEt(t,e){var n,i;for(xW(e),i=t.b.c.length,Wz(t.b,e);i>0;){if(n=i,i=(i-1)/2|0,t.a.ue(PH(t.b,i),e)<=0)return a5(t.b,n,e),!0;a5(t.b,n,PH(t.b,i))}return a5(t.b,i,e),!0}function rEt(t,e,i,r){var a,o;if(a=0,i)a=vlt(t.a[i.g][e.g],r);else for(o=0;o=o)}function oEt(t,e,n,i){var r;if(r=!1,ZI(i)&&(r=!0,Dq(e,n,TB(i))),r||GI(i)&&(r=!0,oEt(t,e,n,i)),r||aL(i,236)&&(r=!0,HX(e,n,zz(i,236))),!r)throw qw(new Lv(H6t))}function sEt(t,e){var n,i,r;if((n=e.Hh(t.a))&&null!=(r=opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),z7t)))for(i=1;i<(MCt(),VOe).length;++i)if(yR(VOe[i],r))return i;return 0}function cEt(t,e){var n,i,r;if((n=e.Hh(t.a))&&null!=(r=opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),z7t)))for(i=1;i<(MCt(),QOe).length;++i)if(yR(QOe[i],r))return i;return 0}function uEt(t,e){var n,i,r,a;if(xW(e),(a=t.a.gc())0?1:0;a.a[r]!=n;)a=a.a[r],r=t.a.ue(n.d,a.d)>0?1:0;a.a[r]=i,i.b=n.b,i.a[0]=n.a[0],i.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function pEt(t){return dIt(),!(Iot(MQ(_U(nIe,Sst(Ux(IIe,1),LKt,273,0,[rIe])),t))>1||Iot(MQ(_U(eIe,Sst(Ux(IIe,1),LKt,273,0,[tIe,aIe])),t))>1)}function bEt(t,e){aL(TQ((WE(),GDe),t),498)?yJ(GDe,t,new MI(this,e)):yJ(GDe,t,this),rTt(this,e),e==(i_(),tOe)?(this.wb=zz(this,1939),zz(e,1941)):this.wb=(XZ(),eOe)}function wEt(t){var e,n;if(null==t)return null;for(e=null,n=0;n=XKt?"error":i>=900?"warn":i>=800?"info":"log",t.a),t.b&&BNt(e,n,t.b,"Exception: ",!0))}function vEt(t,e){var n,i;return!t.q&&(t.q=new Pw),null!=(i=FZ(t.q,e))?i:(aL(n=e.wg(),4)&&(null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n))),n)}function xEt(){xEt=M,Foe=new KT("P1_CYCLE_BREAKING",0),Roe=new KT("P2_LAYERING",1),joe=new KT("P3_NODE_ORDERING",2),$oe=new KT("P4_NODE_PLACEMENT",3),zoe=new KT("P5_EDGE_ROUTING",4)}function kEt(t,e){var n,i,r,a;for(i=(1==e?Woe:Zoe).a.ec().Kc();i.Ob();)for(n=zz(i.Pb(),103),a=zz(l6(t.f.c,n),21).Kc();a.Ob();)r=zz(a.Pb(),46),v9(t.b.b,r.b),v9(t.b.a,zz(r.b,81).d)}function _Et(t,e){var n;if(Btt(),t.c==e.c){if(t.b==e.b||hat(t.b,e.b)){if(n=JM(t.b)?1:-1,t.a&&!e.a)return n;if(!t.a&&e.a)return-n}return _O(t.b.g,e.b.g)}return Sft(t.c,e.c)}function AEt(t,e){var n;DAt(e,"Hierarchical port position processing",1),(n=t.b).c.length>0&&rjt((f1(0,n.c.length),zz(n.c[0],29)),t),n.c.length>1&&rjt(zz(PH(n,n.c.length-1),29),t),HTt(e)}function EEt(t,e){var n,i;if(PEt(t,e))return!0;for(i=new Wd(e);i.a=(r=t.Vi())||e<0)throw qw(new Dv(c8t+e+u8t+r));if(n>=r||n<0)throw qw(new Dv(l8t+n+u8t+r));return e!=n?(a=t.Ti(n),t.Hi(e,a),i=a):i=t.Oi(n),i}function LEt(t){var e,n,i;if(i=t,t)for(e=0,n=t.Ug();n;n=n.Ug()){if(++e>GXt)return LEt(n);if(i=n,n==t)throw qw(new $v("There is a cycle in the containment hierarchy of "+t))}return i}function NEt(t){var e,n,i;for(i=new Lot(zWt,"[","]"),n=t.Kc();n.Ob();)d6(i,UI(e=n.Pb())===UI(t)?"(this Collection)":null==e?YWt:qdt(e));return i.a?0==i.e.length?i.a.a:i.a.a+""+i.e:i.c}function PEt(t,e){var n,i;if(i=!1,e.gc()<2)return!1;for(n=0;ni&&(d1(e-1,t.length),t.charCodeAt(e-1)<=32);)--e;return i>0||e1&&(t.j.b+=t.e)):(t.j.a+=i.a,t.j.b=n.Math.max(t.j.b,i.b),t.d.c.length>1&&(t.j.a+=t.e))}function $Et(){$Et=M,Oue=Sst(Ux($Ie,1),QJt,61,0,[(kYt(),uIe),cIe,TIe]),Due=Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe,SIe]),Lue=Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe,uIe]),Nue=Sst(Ux($Ie,1),QJt,61,0,[SIe,uIe,cIe])}function zEt(t,e,n,i){var r,a,o,s,c;if(a=t.c.d,o=t.d.d,a.j!=o.j)for(c=t.b,r=a.j,s=null;r!=o.j;)s=0==e?Tft(r):Aft(r),Bq(i,YF(Ybt(r,c.d[r.g],n),Ybt(s,c.d[s.g],n))),r=s}function qEt(t,e,n,i){var r,a,o,s,c;return s=zz((o=Uvt(t.a,e,n)).a,19).a,a=zz(o.b,19).a,i&&(c=zz(vEt(e,(hWt(),_fe)),10),r=zz(vEt(n,_fe),10),c&&r&&(e4(t.b,c,r),s+=t.b.i,a+=t.b.e)),s>a}function HEt(t){var e,n,i,r,a,o,s,c;for(this.a=amt(t),this.b=new Nw,i=0,r=(n=t).length;i$B(t.d).c?(t.i+=t.g.c,wpt(t.d)):$B(t.d).c>$B(t.g).c?(t.e+=t.d.c,wpt(t.g)):(t.i+=HH(t.g),t.e+=HH(t.d),wpt(t.g),wpt(t.d))}function ZEt(t,e,n){var i,r,a,o;for(a=e.q,o=e.r,new GJ((M6(),Ave),e,a,1),new GJ(Ave,a,o,1),r=new Wd(n);r.ac&&(u=c/r),(a=n.Math.abs(e.b-t.b))>o&&(l=o/a),s=n.Math.min(u,l),t.a+=s*(e.a-t.a),t.b+=s*(e.b-t.b)}function eTt(t,e,n,i,r){var a,o;for(o=!1,a=zz(PH(n.b,0),33);hzt(t,e,a,i,r)&&(o=!0,o_t(n,a),0!=n.b.c.length);)a=zz(PH(n.b,0),33);return 0==n.b.c.length&&Ext(n.j,n),o&&Gyt(e.q),o}function nTt(t,e){var n,i,r,a;if(_Bt(),e.b<2)return!1;for(i=n=zz(d3(a=lwt(e,0)),8);a.b!=a.d.c;){if(oNt(t,i,r=zz(d3(a),8)))return!0;i=r}return!!oNt(t,i,n)}function iTt(t,e,n,i){return 0==n?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),zR(t.o,e,i)):zz(iet(zz(xot(t,16),26)||t.zh(),n),66).Nj().Rj(t,fbt(t),n-dZ(t.zh()),e,i)}function rTt(t,e){var n;e!=t.sb?(n=null,t.sb&&(n=zz(t.sb,49).ih(t,1,qMe,n)),e&&(n=zz(e,49).gh(t,1,qMe,n)),(n=_ht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,4,e,e))}function aTt(t,e){var n,i;if(!e)throw qw(new nx("All edge sections need an end point."));n=Rnt(e,"x"),Ent(new Rb(t).a,(xW(n),n)),i=Rnt(e,"y"),Dnt(new jb(t).a,(xW(i),i))}function oTt(t,e){var n,i;if(!e)throw qw(new nx("All edge sections need a start point."));n=Rnt(e,"x"),Mnt(new Pb(t).a,(xW(n),n)),i=Rnt(e,"y"),Ont(new Bb(t).a,(xW(i),i))}function sTt(t,e){var n,i,r,a,o;for(i=0,a=mut(t).length;i>22-e,r=t.h<>22-e):e<44?(n=0,i=t.l<>44-e):(n=0,i=0,r=t.l<t)throw qw(new jv("k must be smaller than n"));return 0==e||e==t?1:0==t?0:Tkt(t)/(Tkt(e)*Tkt(t-e))}function yTt(t,e){var n,i,r,a;for(n=new MD(t);null!=n.g||n.c?null==n.g||0!=n.i&&zz(n.g[n.i-1],47).Ob():eJ(n);)if(aL(a=zz(sLt(n),56),160))for(i=zz(a,160),r=0;r>4],e[2*n+1]=VLe[15&r];return qpt(e,0,e.length)}function PTt(t){var e;switch(tK(),t.c.length){case 0:return qte;case 1:return Iq((e=zz(JSt(new Wd(t)),42)).cd(),e.dd());default:return new lv(zz(Vbt(t,P8(Hte,kKt,42,t.c.length,0,1)),165))}}function BTt(t){var e,n,i,r,a;for(e=new Lw,n=new Lw,p3(e,t),p3(n,t);n.b!=n.c;)for(a=new Wd(zz(pY(n),37).a);a.a0&&cRt(t,n,e),r):MMt(t,e,n)}function $Tt(t,e,n){var i,r,a,o;if(0!=e.b){for(i=new VA,o=lwt(e,0);o.b!=o.d.c;)zrt(i,Bst(a=zz(d3(o),86))),(r=a.e).a=zz(vEt(a,(UHt(),bxe)),19).a,r.b=zz(vEt(a,wxe),19).a;$Tt(t,i,vat(n,i.b/t.a|0))}}function zTt(t,e){var n,i,r,a,o;if(t.e<=e)return t.g;if(G1(t,t.g,e))return t.g;for(a=t.r,i=t.g,o=t.r,r=(a-i)/2+i;i+11&&(t.e.b+=t.a)):(t.e.a+=i.a,t.e.b=n.Math.max(t.e.b,i.b),t.d.c.length>1&&(t.e.a+=t.a))}function WTt(t){var e,n,i,r;switch(e=(r=t.i).b,i=r.j,n=r.g,r.a.g){case 0:n.a=(t.g.b.o.a-i.a)/2;break;case 1:n.a=e.d.n.a+e.d.a.a;break;case 2:n.a=e.d.n.a+e.d.a.a-i.a;break;case 3:n.b=e.d.n.b+e.d.a.b}}function KTt(t,e,n,i,r){if(ii&&(t.a=i),t.br&&(t.b=r),t}function XTt(t){if(aL(t,149))return TNt(zz(t,149));if(aL(t,229))return tgt(zz(t,229));if(aL(t,23))return hTt(zz(t,23));throw qw(new jv(Y6t+NEt(new Qv(Sst(Ux(Ote,1),HWt,1,5,[t])))))}function VTt(t,e,n,i,r){var a,o,s;for(a=!0,o=0;o>>r|n[o+i+1]<>>r,++o}return a}function QTt(t,e,n,i){var r,a;if(e.k==(cTt(),Cse))for(a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)if((r=zz(Y5(a),17)).c.i.k==Cse&&t.c.a[r.c.i.c.p]==i&&t.c.a[e.c.p]==n)return!0;return!1}function JTt(t,e){var n,i,r,a;return e&=63,n=t.h&SXt,e<22?(a=n>>>e,r=t.m>>e|n<<22-e,i=t.l>>e|t.m<<22-e):e<44?(a=0,r=n>>>e-22,i=t.m>>e-22|t.h<<44-e):(a=0,r=0,i=n>>>e-44),EO(i&CXt,r&CXt,a&SXt)}function tCt(t,e,n,i){var r;this.b=i,this.e=t==(uit(),Dye),r=e[n],this.d=xH(ONe,[lKt,tQt],[177,25],16,[r.length,r.length],2),this.a=xH(DNe,[lKt,hXt],[48,25],15,[r.length,r.length],2),this.c=new Y_t(e,n)}function eCt(t){var e,n,i;for(t.k=new c1((kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])).length,t.j.c.length),i=new Wd(t.j);i.a=n)return hCt(t,e,i.p),!0;return!1}function oCt(t){var e;return 0!=(64&t.Db)?vTt(t):(e=new fN(t6t),!t.a||cM(cM((e.a+=' "',e),t.a),'"'),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function sCt(t,e,n){var i,r,a,o,s;for(s=sPt(t.e.Tg(),e),r=zz(t.g,119),i=0,o=0;on?bSt(t,n,"start index"):e<0||e>n?bSt(e,n,"end index"):LFt("end index (%s) must not be less than start index (%s)",Sst(Ux(Ote,1),HWt,1,5,[rft(e),rft(t)]))}function lCt(t,e){var n,i,r,a;for(i=0,r=t.length;i0&&dCt(t,a,n));e.p=0}function gCt(t){var e;this.c=new VA,this.f=t.e,this.e=t.d,this.i=t.g,this.d=t.c,this.b=t.b,this.k=t.j,this.a=t.a,t.i?this.j=t.i:this.j=new VR(e=zz(Kk(kEe),9),zz(TF(e,e.length),9),0),this.g=t.f}function pCt(t){var e,n,i,r;for(e=PZ(cM(new fN("Predicates."),"and"),40),n=!0,r=new Td(t);r.b0?s[o-1]:P8(Mse,s1t,10,0,0,1),r=s[o],u=o=0?t.Bh(r):oIt(t,i)}else Uht(t,n,i)}function xCt(t){var e,n;if(n=null,e=!1,aL(t,204)&&(e=!0,n=zz(t,204).a),e||aL(t,258)&&(e=!0,n=""+zz(t,258).a),e||aL(t,483)&&(e=!0,n=""+zz(t,483).a),!e)throw qw(new Lv(H6t));return n}function kCt(t,e){var n,i;if(t.f){for(;e.Ob();)if(aL(i=(n=zz(e.Pb(),72)).ak(),99)&&0!=(zz(i,18).Bb&h6t)&&(!t.e||i.Gj()!=NMe||0!=i.aj())&&null!=n.dd())return e.Ub(),!0;return!1}return e.Ob()}function _Ct(t,e){var n,i;if(t.f){for(;e.Sb();)if(aL(i=(n=zz(e.Ub(),72)).ak(),99)&&0!=(zz(i,18).Bb&h6t)&&(!t.e||i.Gj()!=NMe||0!=i.aj())&&null!=n.dd())return e.Pb(),!0;return!1}return e.Sb()}function ACt(t,e,n){var i,r,a,o,s,c;for(c=sPt(t.e.Tg(),e),i=0,s=t.i,r=zz(t.g,119),o=0;o1&&(e.c[e.c.length]=a)}function CCt(t){var e,n,i;for(zrt(n=new VA,t.o),i=new cy;0!=n.b;)KYt(t,e=zz(0==n.b?null:(CP(0!=n.b),Oet(n,n.a.a)),508),!0)&&Wz(i.a,e);for(;0!=i.a.c.length;)KYt(t,e=zz(nlt(i),508),!1)}function SCt(){SCt=M,xEe=new OS(hQt,0),gEe=new OS("BOOLEAN",1),mEe=new OS("INT",2),vEe=new OS("STRING",3),pEe=new OS("DOUBLE",4),bEe=new OS("ENUM",5),wEe=new OS("ENUMSET",6),yEe=new OS("OBJECT",7)}function ICt(t,e){var i,r,a,o,s;r=n.Math.min(t.c,e.c),o=n.Math.min(t.d,e.d),(a=n.Math.max(t.c+t.b,e.c+e.b))=(r/2|0))for(this.e=i?i.c:null,this.d=r;n++0;)_J(this);this.b=e,this.a=null}function $Ct(t,e){var n,i;e.a?YNt(t,e):(!!(n=zz(xR(t.b,e.b),57))&&n==t.a[e.b.f]&&!!n.a&&n.a!=e.b.a&&n.c.Fc(e.b),!!(i=zz(vR(t.b,e.b),57))&&t.a[i.f]==e.b&&!!i.a&&i.a!=e.b.a&&e.b.c.Fc(i),EN(t.b,e.b))}function zCt(t,e){var n,i;if(n=zz(cK(t.b,e),124),zz(zz(l6(t.r,e),21),84).dc())return n.n.b=0,void(n.n.c=0);n.n.b=t.C.b,n.n.c=t.C.c,t.A.Hc((vpt(),jIe))&&xFt(t,e),i=Wwt(t,e),SBt(t,e)==(owt(),zSe)&&(i+=2*t.w),n.a.a=i}function qCt(t,e){var n,i;if(n=zz(cK(t.b,e),124),zz(zz(l6(t.r,e),21),84).dc())return n.n.d=0,void(n.n.a=0);n.n.d=t.C.d,n.n.a=t.C.a,t.A.Hc((vpt(),jIe))&&kFt(t,e),i=Kwt(t,e),SBt(t,e)==(owt(),zSe)&&(i+=2*t.w),n.a.b=i}function HCt(t,e){var n,i,r,a;for(a=new Nw,i=new Wd(e);i.an.a&&(i.Hc((p_t(),WEe))?r=(e.a-n.a)/2:i.Hc(XEe)&&(r=e.a-n.a)),e.b>n.b&&(i.Hc((p_t(),QEe))?a=(e.b-n.b)/2:i.Hc(VEe)&&(a=e.b-n.b)),dEt(t,r,a)}function gSt(t,e,n,i,r,a,o,s,c,u,l,h,f){aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),4),Prt(t,n),t.f=o,Lft(t,s),Pft(t,c),Oft(t,u),Nft(t,l),eft(t,h),Uft(t,f),Qht(t,!0),Nnt(t,r),t.ok(a),Mlt(t,e),null!=i&&(t.i=null,srt(t,i))}function pSt(t){var e,n;if(t.f){for(;t.n>0;){if(aL(n=(e=zz(t.k.Xb(t.n-1),72)).ak(),99)&&0!=(zz(n,18).Bb&h6t)&&(!t.e||n.Gj()!=NMe||0!=n.aj())&&null!=e.dd())return!0;--t.n}return!1}return t.n>0}function bSt(t,e,n){if(t<0)return LFt(qWt,Sst(Ux(Ote,1),HWt,1,5,[n,rft(t)]));if(e<0)throw qw(new jv(UWt+e));return LFt("%s (%s) must not be greater than size (%s)",Sst(Ux(Ote,1),HWt,1,5,[n,rft(t),rft(e)]))}function wSt(t,e,n,i,r,a){var o,s,c;if(i-n<7)Ldt(e,n,i,a);else if(wSt(e,t,s=n+r,c=s+((o=i+r)-s>>1),-r,a),wSt(e,t,c,o,-r,a),a.ue(t[c-1],t[c])<=0)for(;n=0?t.sh(a,n):ELt(t,r,n)}else Ndt(t,i,r,n)}function kSt(t){var e,n,i,r;if(n=zz(t,49).qh())try{if(i=null,(e=LOt((WE(),GDe),Tjt($dt(n))))&&(r=e.rh())&&(i=r.Wk(Zv(n.e))),i&&i!=t)return kSt(i)}catch(t){if(!aL(t=dst(t),60))throw qw(t)}return t}function _St(t,e,n){var i,r,a,o;if(o=null==e?0:t.b.se(e),0==(r=null==(i=t.a.get(o))?new Array:i).length)t.a.set(o,r);else if(a=hlt(t,e,r))return a.ed(n);return OZ(r,r.length,new CT(e,n)),++t.c,cV(t.b),null}function ASt(t,e){var n;return l2(t.a),SY(t.a,(Srt(),Xxe),Xxe),SY(t.a,Vxe,Vxe),pH(n=new z2,Vxe,(Idt(),nke)),UI(tOt(e,(Zvt(),Tke)))!==UI((Hut(),uke))&&pH(n,Vxe,tke),pH(n,Vxe,eke),oD(t.a,n),LHt(t.a,e)}function ESt(t){if(!t)return fx(),hee;var e=t.valueOf?t.valueOf():t;if(e!==t){var i=fee[typeof e];return i?i(e):klt(typeof e)}return t instanceof Array||t instanceof n.Array?new Af(t):new Cf(t)}function TSt(t,e,i){var r,a,o;switch(o=t.o,(a=(r=zz(cK(t.p,i),244)).i).b=CIt(r),a.a=TIt(r),a.b=n.Math.max(a.b,o.a),a.b>o.a&&!e&&(a.b=o.a),a.c=-(a.b-o.a)/2,i.g){case 1:a.d=-a.a;break;case 3:a.d=o.b}$$t(r),G$t(r)}function CSt(t,e,i){var r,a,o;switch(o=t.o,(a=(r=zz(cK(t.p,i),244)).i).b=CIt(r),a.a=TIt(r),a.a=n.Math.max(a.a,o.b),a.a>o.b&&!e&&(a.a=o.b),a.d=-(a.a-o.b)/2,i.g){case 4:a.c=-a.b;break;case 2:a.c=o.a}$$t(r),G$t(r)}function SSt(t,e){var n,i,r,a,o;if(!e.dc())if(r=zz(e.Xb(0),128),1!=e.gc())for(n=1;n0)try{i=djt(e,$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}return!t.a&&(t.a=new Tw(t)),i<(n=t.a).i&&i>=0?zz(Ket(n,i),56):null}function NSt(t,e){if(t<0)return LFt(qWt,Sst(Ux(Ote,1),HWt,1,5,["index",rft(t)]));if(e<0)throw qw(new jv(UWt+e));return LFt("%s (%s) must be less than size (%s)",Sst(Ux(Ote,1),HWt,1,5,["index",rft(t),rft(e)]))}function PSt(t){var e,n,i,r,a;if(null==t)return YWt;for(a=new Lot(zWt,"[","]"),i=0,r=(n=t).length;i0)for(o=t.c.d,r=xL(ZF(new PS((s=t.d.d).a,s.b),o),1/(i+1)),a=new PS(o.a,o.b),n=new Wd(t.a);n.a=0?t._g(n,!0,!0):oMt(t,r,!0),153),zz(i,215).ol(e)}function sIt(t){var e,i;return t>-0x800000000000&&t<0x800000000000?0==t?0:((e=t<0)&&(t=-t),i=SQ(n.Math.floor(n.Math.log(t)/.6931471805599453)),(!e||t!=n.Math.pow(2,i))&&++i,i):Xot(fot(t))}function cIt(t){var e,n,i,r,a,o,s;for(a=new hD,n=new Wd(t);n.a2&&s.e.b+s.j.b<=2&&(r=s,i=o),a.a.zc(r,a),r.q=i);return a}function uIt(t,e){var n,i,r;return Uot(i=new Lmt(t),e),hct(i,(hWt(),Khe),e),hct(i,(HZt(),nwe),(V_t(),ZSe)),hct(i,xpe,(pmt(),MEe)),zf(i,(cTt(),Ese)),SJ(n=new ITt,i),USt(n,(kYt(),SIe)),SJ(r=new ITt,i),USt(r,cIe),i}function lIt(t){switch(t.g){case 0:return new Nv((uit(),Mye));case 1:return new gh;case 2:return new xh;default:throw qw(new jv("No implementation is available for the crossing minimizer "+(null!=t.f?t.f:""+t.g)))}}function hIt(t,e){var n,i,r,a;for(t.c[e.p]=!0,Wz(t.a,e),a=new Wd(e.j);a.a=(a=o.gc()))o.$b();else for(r=o.Kc(),i=0;i0?gx():a<0&&AIt(t,e,-a),!0)}function TIt(t){var e,n,i,r,a,o;if(o=0,0==t.b){for(e=0,r=0,a=(i=Wmt(t,!0)).length;r0&&(o+=n,++e);e>1&&(o+=t.c*(e-1))}else o=Rx(iat(LK(DK(LY(t.a),new At),new Et)));return o>0?o+t.n.d+t.n.a:0}function CIt(t){var e,n,i,r,a,o;if(o=0,0==t.b)o=Rx(iat(LK(DK(LY(t.a),new kt),new _t)));else{for(e=0,r=0,a=(i=Kmt(t,!0)).length;r0&&(o+=n,++e);e>1&&(o+=t.c*(e-1))}return o>0?o+t.n.b+t.n.c:0}function SIt(t,e){var i,r,a,o;for(i=(o=zz(cK(t.b,e),124)).a,a=zz(zz(l6(t.r,e),21),84).Kc();a.Ob();)(r=zz(a.Pb(),111)).c&&(i.a=n.Math.max(i.a,Kq(r.c)));if(i.a>0)switch(e.g){case 2:o.n.c=t.s;break;case 4:o.n.b=t.s}}function IIt(t,e){var n,i,r;return 0==(n=zz(vEt(e,(fFt(),Jae)),19).a-zz(vEt(t,Jae),19).a)?(i=ZF(zO(zz(vEt(t,(Trt(),soe)),8)),zz(vEt(t,coe),8)),r=ZF(zO(zz(vEt(e,soe),8)),zz(vEt(e,coe),8)),Sft(i.a*i.b,r.a*r.b)):n}function MIt(t,e){var n,i,r;return 0==(n=zz(vEt(e,(IDt(),Oxe)),19).a-zz(vEt(t,Oxe),19).a)?(i=ZF(zO(zz(vEt(t,(UHt(),Jve)),8)),zz(vEt(t,txe),8)),r=ZF(zO(zz(vEt(e,Jve),8)),zz(vEt(e,txe),8)),Sft(i.a*i.b,r.a*r.b)):n}function DIt(t){var e,n;return(n=new Sx).a+="e_",null!=(e=Wot(t))&&(n.a+=""+e),t.c&&t.d&&(cM((n.a+=" ",n),mvt(t.c)),cM(sM((n.a+="[",n),t.c.i),"]"),cM((n.a+=i1t,n),mvt(t.d)),cM(sM((n.a+="[",n),t.d.i),"]")),n.a}function OIt(t){switch(t.g){case 0:return new bh;case 1:return new wh;case 2:return new ph;case 3:return new mh;default:throw qw(new jv("No implementation is available for the layout phase "+(null!=t.f?t.f:""+t.g)))}}function LIt(t,e,i,r,a){var o;switch(o=0,a.g){case 1:o=n.Math.max(0,e.b+t.b-(i.b+r));break;case 3:o=n.Math.max(0,-t.b-r);break;case 2:o=n.Math.max(0,-t.a-r);break;case 4:o=n.Math.max(0,e.a+t.a-(i.a+r))}return o}function NIt(t,e,n){var i,r,a;if(n)for(a=((i=new lG(n.a.length)).b-i.a)*i.c<0?(nT(),ENe):new ZL(i);a.Ob();)r=P2(n,zz(a.Pb(),19).a),N6t in r.a||P6t in r.a?lRt(t,r,e):AZt(t,r,e),CL(zz(FZ(t.b,Vpt(r)),79))}function PIt(t){var e,n;switch(t.b){case-1:return!0;case 0:return(n=t.t)>1||-1==n||(e=Mxt(t))&&(JE(),e.Cj()==A7t)?(t.b=-1,!0):(t.b=1,!1);default:return!1}}function BIt(t,e){var n,i,r,a,o;for(!e.s&&(e.s=new nY($De,e,21,17)),a=null,r=0,o=(i=e.s).i;r=0&&i=0?t._g(n,!0,!0):oMt(t,r,!0),153),zz(i,215).ll(e);throw qw(new jv(a6t+e.ne()+c6t))}function GIt(){var t;return eT(),XOe?zz(LOt((WE(),GDe),X7t),1939):(FM(Hte,new Su),eGt(),t=zz(aL(TQ((WE(),GDe),X7t),547)?TQ(GDe,X7t):new YW,547),XOe=!0,uWt(t),EWt(t),KW((KE(),JDe),t,new Uc),yJ(GDe,X7t,t),t)}function YIt(t,e){var n,i,r,a;t.j=-1,yD(t.e)?(n=t.i,a=0!=t.i,a6(t,e),i=new N9(t.e,3,t.c,null,e,n,a),r=e.Qk(t.e,t.c,null),(r=M_t(t,e,r))?(r.Ei(i),r.Fi()):got(t.e,i)):(a6(t,e),(r=e.Qk(t.e,t.c,null))&&r.Fi())}function ZIt(t,e){var n,i,r;if(r=0,(i=e[0])>=t.length)return-1;for(d1(i,t.length),n=t.charCodeAt(i);n>=48&&n<=57&&(r=10*r+(n-48),!(++i>=t.length));)d1(i,t.length),n=t.charCodeAt(i);return i>e[0]?e[0]=i:r=-1,r}function WIt(t){var e,i,r,a,o;return i=a=zz(t.a,19).a,r=o=zz(t.b,19).a,e=n.Math.max(n.Math.abs(a),n.Math.abs(o)),a<=0&&a==o?(i=0,r=o-1):a==-e&&o!=e?(i=o,r=a,o>=0&&++i):(i=-o,r=a),new rI(rft(i),rft(r))}function KIt(t,e,n,i){var r,a,o,s,c,u;for(r=0;r=0&&u>=0&&c=t.i)throw qw(new Dv(c8t+e+u8t+t.i));if(n>=t.i)throw qw(new Dv(l8t+n+u8t+t.i));return i=t.g[n],e!=n&&(e>16))>>16&16),n+=e=(i=(t>>=e)-256)>>16&8,n+=e=(i=(t<<=e)-$Xt)>>16&4,(n+=e=(i=(t<<=e)-hKt)>>16&2)+2-(e=(i=(t<<=e)>>14)&~(i>>1)))}function eMt(t){var e,n,i,r;for(EX(),Tae=new Nw,Eae=new Pw,Aae=new Nw,!t.a&&(t.a=new nY(YMe,t,10,11)),BYt(e=t.a),r=new DL(e);r.e!=r.i.gc();)i=zz(kwt(r),33),-1==_9(Tae,i,0)&&(n=new Nw,Wz(Aae,n),Rbt(i,n));return Aae}function nMt(t,e,n){var i,r,a,o;t.a=n.b.d,aL(e,352)?(n5(a=UTt(r=oBt(zz(e,79),!1,!1)),i=new Ng(t)),X$t(a,r),null!=e.We((lWt(),MTe))&&n5(zz(e.We(MTe),74),i)):((o=zz(e,470)).Hg(o.Dg()+t.a.a),o.Ig(o.Eg()+t.a.b))}function iMt(t,e){var i,r,a,o,s,c,u,l;for(l=Uv(EB(vEt(e,(HZt(),Nwe)))),u=t[0].n.a+t[0].o.a+t[0].d.c+l,c=1;c=0?n:(s=fW(ZF(new PS(o.c+o.b/2,o.d+o.a/2),new PS(a.c+a.b/2,a.d+a.a/2))),-(Qjt(a,o)-1)*s)}function aMt(t,e,n){var i;QA(new FH(null,(!n.a&&(n.a=new nY($Me,n,6,6)),new g1(n.a,16))),new nI(t,e)),QA(new FH(null,(!n.n&&(n.n=new nY(GMe,n,1,7)),new g1(n.n,16))),new iI(t,e)),(i=zz(tOt(n,(lWt(),MTe)),74))&&Qrt(i,t,e)}function oMt(t,e,n){var i,r,a;if(a=zHt((MCt(),JOe),t.Tg(),e))return JE(),zz(a,66).Oj()||(a=J1(z9(JOe,a))),r=zz((i=t.Yg(a))>=0?t._g(i,!0,!0):oMt(t,a,!0),153),zz(r,215).hl(e,n);throw qw(new jv(a6t+e.ne()+c6t))}function sMt(t,e,n,i){var r,a,o,s,c;if(r=t.d[e])if(a=r.g,c=r.i,null!=i){for(s=0;s=n&&(i=e,a=(c=(s.c+s.a)/2)-n,s.c<=c-n&&xU(t,i++,new xz(s.c,a)),(o=c+n)<=s.a&&(r=new xz(o,s.a),LJ(i,t.c.length),ET(t.c,i,r)))}function gMt(t){var e;if(t.c||null!=t.g){if(null==t.g)return!0;if(0==t.i)return!1;e=zz(t.g[t.i-1],47)}else t.d=t.si(t.f),h7(t,t.d),e=t.d;return e==t.b&&null.km>=null.jm()?(sLt(t),gMt(t)):e.Ob()}function pMt(t,e,n){var i,r,a,o;if(!(o=n)&&(o=Lq(new Zy,0)),DAt(o,UJt,1),LUt(t.c,e),1==(a=RUt(t.a,e)).gc())Xqt(zz(a.Xb(0),37),o);else for(r=1/a.gc(),i=a.Kc();i.Ob();)Xqt(zz(i.Pb(),37),vat(o,r));_x(t.a,a,e),zBt(e),HTt(o)}function bMt(t){if(this.a=t,t.c.i.k==(cTt(),Ese))this.c=t.c,this.d=zz(vEt(t.c.i,(hWt(),Xhe)),61);else{if(t.d.i.k!=Ese)throw qw(new jv("Edge "+t+" is not an external edge."));this.c=t.d,this.d=zz(vEt(t.d.i,(hWt(),Xhe)),61)}}function wMt(t,e){var n,i,r;r=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,r,t.b)),e?e!=t&&(Prt(t,e.zb),Lnt(t,e.d),zit(t,null==(n=null==(i=e.c)?e.zb:i)||yR(n,e.zb)?null:n)):(Prt(t,null),Lnt(t,0),zit(t,null))}function mMt(t){var e,n;if(t.f){for(;t.n=(o=null==(n=zz(xot(t.a,4),126))?0:n.length))throw qw(new eR(e,o));return r=n[e],1==o?i=null:(sqt(n,0,i=P8(pDe,r7t,415,o-1,0,1),0,e),(a=o-e-1)>0&&sqt(n,e+1,i,e,a)),zbt(t,i),iSt(t,e,r),r}function EMt(){EMt=M,fLe=zz(Ket(XX((a_(),bLe).qb),6),34),uLe=zz(Ket(XX(bLe.qb),3),34),lLe=zz(Ket(XX(bLe.qb),4),34),hLe=zz(Ket(XX(bLe.qb),5),18),u_t(fLe),u_t(uLe),u_t(lLe),u_t(hLe),dLe=new Qv(Sst(Ux($De,1),P7t,170,0,[fLe,uLe]))}function TMt(t,e){var n;this.d=new fy,this.b=e,this.e=new gD(e.qf()),n=t.u.Hc((dIt(),iIe)),t.u.Hc(nIe)?t.D?this.a=n&&!e.If():this.a=!0:t.u.Hc(rIe)?this.a=!!n&&!(e.zf().Kc().Ob()||e.Bf().Kc().Ob()):this.a=!1}function CMt(t,e){var n,i,r,a;for(n=t.o.a,a=zz(zz(l6(t.r,e),21),84).Kc();a.Ob();)(r=zz(a.Pb(),111)).e.a=(i=r.b).Xe((lWt(),oCe))?i.Hf()==(kYt(),SIe)?-i.rf().a-Uv(EB(i.We(oCe))):n+Uv(EB(i.We(oCe))):i.Hf()==(kYt(),SIe)?-i.rf().a:n}function SMt(t,e){var n,i,r;n=zz(vEt(t,(HZt(),Ype)),103),r=zz(tOt(e,swe),61),(i=zz(vEt(t,nwe),98))!=(V_t(),XSe)&&i!=VSe?r==(kYt(),CIe)&&(r=D$t(e,n))==CIe&&(r=hgt(n)):r=Wqt(e)>0?hgt(n):Eft(hgt(n)),Qwt(e,swe,r)}function IMt(t,e){var n,i,r,a,o;for(o=t.j,e.a!=e.b&&yO(o,new Yr),r=o.c.length/2|0,i=0;i0&&cRt(t,n,e),a):null!=i.a?(cRt(t,e,n),-1):null!=r.a?(cRt(t,n,e),1):0}function DMt(t,e){var n,i,r,a;t.ej()?(n=t.Vi(),a=t.fj(),++t.j,t.Hi(n,t.oi(n,e)),i=t.Zi(3,null,e,n,a),t.bj()&&(r=t.cj(e,null))?(r.Ei(i),r.Fi()):t.$i(i)):(nW(t,e),t.bj()&&(r=t.cj(e,null))&&r.Fi())}function OMt(t,e){var n,i,r,a,o;for(o=sPt(t.e.Tg(),e),r=new bc,n=zz(t.g,119),a=t.i;--a>=0;)i=n[a],o.rl(i.ak())&&h7(r,i);!sZt(t,r)&&yD(t.e)&&Lm(t,e.$j()?LV(t,6,e,(TX(),lne),null,-1,!1):LV(t,e.Kj()?2:1,e,null,null,-1,!1))}function LMt(){var t,e;for(LMt=M,sne=P8(une,lKt,91,32,0,1),cne=P8(une,lKt,91,32,0,1),t=1,e=0;e<=18;e++)sne[e]=ewt(t),cne[e]=ewt(vG(t,e)),t=odt(t,5);for(;ea)||e.q&&(a=(i=e.C).c.c.a-i.o.a/2,i.n.a-n>a)))}function PMt(t,e){DAt(e,"Partition preprocessing",1),QA(zz(C4(DK(gtt(DK(new FH(null,new g1(t.a,16)),new mi),new yi),new vi),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15).Oc(),new xi),HTt(e)}function BMt(t){var e,n,i,r,a,o;for(HJ(),n=new m4,i=new Wd(t.e.b);i.a1?t.e*=Uv(t.a):t.f/=Uv(t.a),Ilt(t),wbt(t),EFt(t),hct(t.b,(Awt(),bae),t.g)}function HMt(t,e,n){var i,r,a,o,s;for(i=0,s=n,e||(i=n*(t.c.length-1),s*=-1),a=new Wd(t);a.a=0?(e||(e=new Cx,i>0&&aM(e,t.substr(0,i))),e.a+="\\",NZ(e,n&VKt)):e&&NZ(e,n&VKt);return e?e.a:t}function aDt(t){var e;if(!t.a)throw qw(new $v("IDataType class expected for layout option "+t.f));if(null==(e=I3(t.a)))throw qw(new $v("Couldn't create new instance of property '"+t.f+"'. "+a5t+(_B(dDe),dDe.k)+o5t));return zz(e,414)}function oDt(t){var e,n,i,r,a;return(a=t.eh())&&a.kh()&&(r=nht(t,a))!=a?(n=t.Vg(),i=(e=t.Vg())>=0?t.Qg(null):t.eh().ih(t,-1-e,null,null),t.Rg(zz(r,49),n),i&&i.Fi(),t.Lg()&&t.Mg()&&n>-1&&got(t,new tY(t,9,n,a,r)),r):a}function sDt(t){var e,n,i,r,a,o,s;for(a=0,r=t.f.e,n=0;n>5)>=t.d)return t.e<0;if(n=t.a[r],e=1<<(31&e),t.e<0){if(r<(i=Iat(t)))return!1;n=i==r?-n:~n}return 0!=(n&e)}function dDt(t,e,n,i){var r;zz(n.b,65),zz(n.b,65),zz(i.b,65),zz(i.b,65),Nq(r=ZF(zO(zz(n.b,65).c),zz(i.b,65).c),HSt(zz(n.b,65),zz(i.b,65),r)),zz(i.b,65),zz(i.b,65),zz(i.b,65).c.a,r.a,zz(i.b,65).c.b,r.b,zz(i.b,65),Det(i.a,new Az(t,e,i))}function gDt(t,e){var n,i,r,a,o,s,c;if(a=e.e)for(n=oDt(a),i=zz(t.g,674),o=0;o>16)),15).Xc(a))0&&((!pD(t.a.c)||!e.n.d)&&(!bD(t.a.c)||!e.n.b)&&(e.g.d+=n.Math.max(0,r/2-.5)),(!pD(t.a.c)||!e.n.a)&&(!bD(t.a.c)||!e.n.c)&&(e.g.a-=r-1))}function vDt(t){var e,i,r,a,o;if(o=jjt(t,a=new Nw),e=zz(vEt(t,(hWt(),_fe)),10))for(r=new Wd(e.j);r.a>e,a=t.m>>e|n<<22-e,r=t.l>>e|t.m<<22-e):e<44?(o=i?SXt:0,a=n>>e-22,r=t.m>>e-22|n<<44-e):(o=i?SXt:0,a=i?CXt:0,r=n>>e-44),EO(r&CXt,a&CXt,o&SXt)}function ADt(t){var e,i,r,a,o,s;for(this.c=new Nw,this.d=t,r=RXt,a=RXt,e=jXt,i=jXt,s=lwt(t,0);s.b!=s.d.c;)o=zz(d3(s),8),r=n.Math.min(r,o.a),a=n.Math.min(a,o.b),e=n.Math.max(e,o.a),i=n.Math.max(i,o.b);this.a=new YK(r,a,e-r,i-a)}function EDt(t,e){var n,i,r,a;for(i=new Wd(t.b);i.a0&&aL(e,42)&&(t.a.qj(),a=null==(c=(u=zz(e,42)).cd())?0:eut(c),o=nF(t.a,a),n=t.a.d[o]))for(i=zz(n.g,367),l=n.i,s=0;s=2)for(e=EB((i=a.Kc()).Pb());i.Ob();)o=e,e=EB(i.Pb()),r=n.Math.min(r,(xW(e),e-(xW(o),o)));return r}function HDt(t,e){var n,i,r,a,o;r5(i=new VA,e,i.c.b,i.c);do{for(CP(0!=i.b),n=zz(Oet(i,i.a.a),86),t.b[n.g]=1,a=lwt(n.d,0);a.b!=a.d.c;)o=(r=zz(d3(a),188)).c,1==t.b[o.g]?Bq(t.a,r):2==t.b[o.g]?t.b[o.g]=1:r5(i,o,i.c.b,i.c)}while(0!=i.b)}function UDt(t,e){var n,i,r;if(UI(e)===UI(vZ(t)))return!0;if(!aL(e,15))return!1;if(i=zz(e,15),(r=t.gc())!=i.gc())return!1;if(aL(i,54)){for(n=0;n0&&(r=n),o=new Wd(t.f.e);o.a0?(e-=1,n-=1):i>=0&&r<0?(e+=1,n+=1):i>0&&r>=0?(e-=1,n+=1):(e+=1,n-=1),new rI(rft(e),rft(n))}function dOt(t,e){return t.ce.c?1:t.be.b?1:t.a!=e.a?eut(t.a)-eut(e.a):t.d==(X4(),qye)&&e.d==zye?-1:t.d==zye&&e.d==qye?1:0}function gOt(t,e){var n,i,r,a,o;return o=(a=e.a).c.i==e.b?a.d:a.c,i=a.c.i==e.b?a.c:a.d,(r=Ygt(t.a,o,i))>0&&r0):r<0&&-r0)}function pOt(t,e,n,i){var r,a,o,s,c,u;for(r=(e-t.d)/t.c.c.length,a=0,t.a+=n,t.d=e,u=new Wd(t.c);u.a>24;return o}function wOt(t){if(t.pe()){var e=t.c;return e.qe()?t.o="["+e.n:e.pe()?t.o="["+e.ne():t.o="[L"+e.ne()+";",t.b=e.me()+"[]",void(t.k=e.oe()+"[]")}var n=t.j,i=t.d;i=i.split("/"),t.o=zpt(".",[n,zpt("$",i)]),t.b=zpt(".",[n,zpt(".",i)]),t.k=i[i.length-1]}function mOt(t,e){var n,i,r,a,o;for(o=null,a=new Wd(t.e.a);a.a=0;e-=2)for(n=0;n<=e;n+=2)(t.b[n]>t.b[n+2]||t.b[n]===t.b[n+2]&&t.b[n+1]>t.b[n+3])&&(i=t.b[n+2],t.b[n+2]=t.b[n],t.b[n]=i,i=t.b[n+3],t.b[n+3]=t.b[n+1],t.b[n+1]=i);t.c=!0}}function TOt(t,e){var n,i,r,a,o,s;for(a=(1==e?Woe:Zoe).a.ec().Kc();a.Ob();)for(r=zz(a.Pb(),103),s=zz(l6(t.f.c,r),21).Kc();s.Ob();)switch(o=zz(s.Pb(),46),i=zz(o.b,81),n=zz(o.a,189).c,r.g){case 2:case 1:i.g.d+=n;break;case 4:case 3:i.g.c+=n}}function COt(t,e){var n,i,r,a,o,s,c,u,l;for(u=-1,l=0,s=0,c=(o=t).length;s0&&++l;++u}return l}function SOt(t){var e;return(e=new fN(t_(t.gm))).a+="@",cM(e,(eut(t)>>>0).toString(16)),t.kh()?(e.a+=" (eProxyURI: ",sM(e,t.qh()),t.$g()&&(e.a+=" eClass: ",sM(e,t.$g())),e.a+=")"):t.$g()&&(e.a+=" (eClass: ",sM(e,t.$g()),e.a+=")"),e.a}function IOt(t){var e,n,i;if(t.e)throw qw(new $v((_B(bie),OVt+bie.k+LVt)));for(t.d==(zht(),zCe)&&EGt(t,jCe),n=new Wd(t.a.a);n.a>24}return n}function POt(t,e,n){var i,r,a;if(!(r=zz(cK(t.i,e),306)))if(r=new pet(t.d,e,n),yU(t.i,e,r),sbt(e))_L(t.a,e.c,e.b,r);else switch(a=NCt(e),i=zz(cK(t.p,a),244),a.g){case 1:case 3:r.j=!0,kv(i,e.b,r);break;case 4:case 2:r.k=!0,kv(i,e.c,r)}return r}function BOt(t,e,n,i){var r,a,o,s,c,u;if(s=new bc,c=sPt(t.e.Tg(),e),r=zz(t.g,119),JE(),zz(e,66).Oj())for(o=0;o=0)return r;for(a=1,o=new Wd(e.j);o.a0&&e.ue((f1(r-1,t.c.length),zz(t.c[r-1],10)),a)>0;)a5(t,r,(f1(r-1,t.c.length),zz(t.c[r-1],10))),--r;f1(r,t.c.length),t.c[r]=a}n.a=new Pw,n.b=new Pw}function jOt(t,e,n){var i,r,a,o,s,c,u;for(u=new VR(i=zz(e.e&&e.e(),9),zz(TF(i,i.length),9),0),o=0,s=(a=kRt(n,"[\\[\\]\\s,]+")).length;o0&&((!pD(t.a.c)||!e.n.d)&&(!bD(t.a.c)||!e.n.b)&&(e.g.d-=n.Math.max(0,r/2-.5)),(!pD(t.a.c)||!e.n.a)&&(!bD(t.a.c)||!e.n.c)&&(e.g.a+=n.Math.max(0,r-1)))}function zOt(t,e,n){var i;if(2==(t.c-t.b&t.a.length-1))e==(kYt(),uIe)||e==cIe?(_et(zz(Act(t),15),(Wvt(),kSe)),_et(zz(Act(t),15),_Se)):(_et(zz(Act(t),15),(Wvt(),_Se)),_et(zz(Act(t),15),kSe));else for(i=new dK(t);i.a!=i.b;)_et(zz($lt(i),15),n)}function qOt(t,e){var n,i,r,a,o,s;for(o=new E2(i=qz(new uw(t)),i.c.length),s=new E2(r=qz(new uw(e)),r.c.length),a=null;o.b>0&&s.b>0&&(CP(o.b>0),n=zz(o.a.Xb(o.c=--o.b),33),CP(s.b>0),n==zz(s.a.Xb(s.c=--s.b),33));)a=n;return a}function HOt(t,e){var i,r,a,o;return a=t.a*sVt+1502*t.b,o=t.b*sVt+11,a+=i=n.Math.floor(o*cVt),o-=i*uVt,a%=uVt,t.a=a,t.b=o,e<=24?n.Math.floor(t.a*Mne[e]):((r=t.a*(1<=2147483648&&(r-=WXt),r)}function UOt(t,e,n){var i,r,a,o;g0(t,e)>g0(t,n)?(i=sdt(n,(kYt(),cIe)),t.d=i.dc()?0:sH(zz(i.Xb(0),11)),o=sdt(e,SIe),t.b=o.dc()?0:sH(zz(o.Xb(0),11))):(r=sdt(n,(kYt(),SIe)),t.d=r.dc()?0:sH(zz(r.Xb(0),11)),a=sdt(e,cIe),t.b=a.dc()?0:sH(zz(a.Xb(0),11)))}function GOt(t){var e,n,i,r,a,o,s;if(t&&(e=t.Hh(X7t))&&null!=(o=TB(opt((!e.b&&(e.b=new QP((wWt(),xOe),ZOe,e)),e.b),"conversionDelegates")))){for(s=new Nw,r=0,a=(i=kRt(o,"\\w+")).length;rt.c));o++)r.a>=t.s&&(a<0&&(a=o),s=o);return c=(t.s+t.c)/2,a>=0&&(c=HE((f1(i=QFt(t,e,a,s),e.c.length),zz(e.c[i],329))),dMt(e,i,n)),c}function KOt(){KOt=M,f_e=new ZD((lWt(),aTe),1.3),b_e=kTe,I_e=new WD(15),S_e=new ZD(ZTe,I_e),O_e=new ZD(LCe,15),d_e=lTe,k_e=RTe,__e=zTe,A_e=HTe,x_e=BTe,E_e=YTe,M_e=hCe,LDt(),C_e=c_e,v_e=o_e,T_e=s_e,D_e=l_e,w_e=a_e,m_e=STe,y_e=ITe,p_e=r_e,g_e=i_e,L_e=h_e}function XOt(t,e,n){var i,r,a,o,s;for(qit(r=new kc,(xW(e),e)),!r.b&&(r.b=new QP((wWt(),xOe),ZOe,r)),s=r.b,o=1;o0&&BHt(this,r)}function QOt(t,e,n,i,r,a){var o,s,c;if(!r[e.b]){for(r[e.b]=!0,!(o=i)&&(o=new v6),Wz(o.e,e),c=a[e.b].Kc();c.Ob();)(s=zz(c.Pb(),282)).d!=n&&s.c!=n&&(s.c!=e&&QOt(t,s.c,e,o,r,a),s.d!=e&&QOt(t,s.d,e,o,r,a),Wz(o.c,s),wst(o.d,s.b));return o}return null}function JOt(t){var e,n,i;for(e=0,n=new Wd(t.e);n.a=2}function tLt(t,e){var n,i,r,a;for(DAt(e,"Self-Loop pre-processing",1),i=new Wd(t.a);i.a1||Iot(MQ(_U(ISe,Sst(Ux(USe,1),LKt,93,0,[SSe,DSe])),t))>1||Iot(MQ(_U(BSe,Sst(Ux(USe,1),LKt,93,0,[PSe,NSe])),t))>1)}function iLt(t,e){var n,i,r;return(n=e.Hh(t.a))&&null!=(r=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),"affiliation")))?-1==(i=yN(r,QAt(35)))?cft(t,oG(t,Zet(e.Hj())),r):0==i?cft(t,null,r.substr(1)):cft(t,r.substr(0,i),r.substr(i+1)):null}function rLt(t){var e,n;try{return null==t?YWt:qdt(t)}catch(i){if(aL(i=dst(i),102))return e=i,n=t_(nut(t))+"@"+(OA(),(imt(t)>>>0).toString(16)),jbt(_st(),(fE(),"Exception during lenientFormat for "+n),e),"<"+n+" threw "+t_(e.gm)+">";throw qw(i)}}function aLt(t){switch(t.g){case 0:return new sh;case 1:return new nh;case 2:return new OE;case 3:return new Ia;case 4:return new FF;case 5:return new ch;default:throw qw(new jv("No implementation is available for the layerer "+(null!=t.f?t.f:""+t.g)))}}function oLt(t,e,n){var i,r,a;for(a=new Wd(t.t);a.a0&&(i.b.n-=i.c,i.b.n<=0&&i.b.u>0&&Bq(e,i.b));for(r=new Wd(t.i);r.a0&&(i.a.u-=i.c,i.a.u<=0&&i.a.n>0&&Bq(n,i.a))}function sLt(t){var e,n,i;if(null==t.g&&(t.d=t.si(t.f),h7(t,t.d),t.c))return t.f;if(i=(e=zz(t.g[t.i-1],47)).Pb(),t.e=e,(n=t.si(i)).Ob())t.d=n,h7(t,n);else for(t.d=null;!e.Ob()&&(OZ(t.g,--t.i,null),0!=t.i);)e=zz(t.g[t.i-1],47);return i}function cLt(t,e){var n,i,r,a,o,s;if(r=(i=e).ak(),LPt(t.e,r)){if(r.hi()&&U3(t,r,i.dd()))return!1}else for(s=sPt(t.e.Tg(),r),n=zz(t.g,119),a=0;a1||n>1)return 2;return e+n==1?2:0}function yLt(t,e,n){var i,r,a,o;for(DAt(n,"ELK Force",1),Hv(AB(tOt(e,(fFt(),Wae))))||kQ(new Ag((UE(),new Bv(e)))),kxt(o=fct(e)),Yct(t,zz(vEt(o,Uae),424)),r=(a=H$t(t.a,o)).Kc();r.Ob();)i=zz(r.Pb(),231),SRt(t.b,i,vat(n,1/a.gc()));CYt(o=GYt(a)),HTt(n)}function vLt(t,e){var n,i,r;if(DAt(e,"Breaking Point Processor",1),DGt(t),Hv(AB(vEt(t,(HZt(),Uwe))))){for(i=new Wd(t.b);i.a=0?t._g(i,!0,!0):oMt(t,a,!0),153),zz(r,215).ml(e,n)}function TLt(t,e){var n,i,r,a,o;for(n=new Nw,r=gtt(new FH(null,new g1(t,16)),new Ao),a=gtt(new FH(null,new g1(t,16)),new Eo),o=E9(q6(LK(CNt(Sst(Ux(nie,1),HWt,833,0,[r,a])),new To))),i=1;i=2*e&&Wz(n,new xz(o[i-1]+e,o[i]-e));return n}function CLt(t,e,n){DAt(n,"Eades radial",1),n.n&&e&&v0(n,c2(e),(qut(),sMe)),t.d=zz(tOt(e,(gB(),Kxe)),33),t.c=Uv(EB(tOt(e,(Zvt(),Bke)))),t.e=Amt(zz(tOt(e,Fke),293)),t.a=dgt(zz(tOt(e,jke),426)),t.b=Ukt(zz(tOt(e,Oke),340)),akt(t),n.n&&e&&v0(n,c2(e),(qut(),sMe))}function SLt(t,e,n){var i,r,a,o,s;if(n)for(a=((i=new lG(n.a.length)).b-i.a)*i.c<0?(nT(),ENe):new ZL(i);a.Ob();)(r=P2(n,zz(a.Pb(),19).a))&&(Lit(o=O3(t,(e_(),s=new _y,!!e&&qLt(s,e),s),r),F2(r,U6t)),CAt(r,o),DSt(r,o),Bct(t,r,o))}function ILt(t){var e,n,i,r;if(!t.j){if(r=new Ic,null==(e=COe).a.zc(t,e)){for(i=new DL(xV(t));i.e!=i.i.gc();)wZ(r,ILt(n=zz(kwt(i),26))),h7(r,n);e.a.Bc(t)}olt(r),t.j=new NM((zz(Ket(XX((XZ(),eOe).o),11),18),r.i),r.g),C5(t).b&=-33}return t.j}function MLt(t){var e,n,i,r;if(null==t)return null;if(i=zzt(t,!0),r=B9t.length,yR(i.substr(i.length-r,r),B9t))if(4==(n=i.length)){if(d1(0,i.length),43==(e=i.charCodeAt(0)))return ULe;if(45==e)return HLe}else if(3==n)return ULe;return new Bm(i)}function DLt(t){var e,n,i;return 0!=((n=t.l)&n-1)||0!=((i=t.m)&i-1)||0!=((e=t.h)&e-1)||0==e&&0==i&&0==n?-1:0==e&&0==i&&0!=n?wit(n):0==e&&0!=i&&0==n?wit(i)+22:0!=e&&0==i&&0==n?wit(e)+44:-1}function OLt(t,e){var n,i,r,a;for(DAt(e,"Edge joining",1),n=Hv(AB(vEt(t,(HZt(),Bwe)))),i=new Wd(t.b);i.a1)for(i=new Wd(t.a);i.a0),a.a.Xb(a.c=--a.b),vF(a,r),CP(a.b3&&_tt(t,0,e-3))}function jLt(t){var e,n,i,r;return UI(vEt(t,(HZt(),ube)))===UI((cht(),wSe))?!t.e&&UI(vEt(t,Fpe))!==UI((jot(),xhe)):(i=zz(vEt(t,Rpe),292),r=Hv(AB(vEt(t,qpe)))||UI(vEt(t,Hpe))===UI((Dit(),ule)),e=zz(vEt(t,Bpe),19).a,n=t.a.c.length,!r&&i!=(jot(),xhe)&&(0==e||e>n))}function $Lt(t){var e,n;for(n=0;n0);n++);if(n>0&&n0);e++);return e>0&&n>16!=6&&e){if(yxt(t,e))throw qw(new jv(p6t+RMt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?lxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,6,i)),(i=XB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,6,e,e))}function qLt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=9&&e){if(yxt(t,e))throw qw(new jv(p6t+ZFt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?fxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,9,i)),(i=VB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,9,e,e))}function HLt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=3&&e){if(yxt(t,e))throw qw(new jv(p6t+dqt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?Txt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,12,i)),(i=KB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function ULt(t){var e,n,i,r,a;if(i=Mxt(t),null==(a=t.j)&&i)return t.$j()?null:i.zj();if(aL(i,148)){if((n=i.Aj())&&(r=n.Nh())!=t.i){if((e=zz(i,148)).Ej())try{t.g=r.Kh(e,a)}catch(e){if(!aL(e=dst(e),78))throw qw(e);t.g=null}t.i=r}return t.g}return null}function GLt(t){var e;return Wz(e=new Nw,new PT(new PS(t.c,t.d),new PS(t.c+t.b,t.d))),Wz(e,new PT(new PS(t.c,t.d),new PS(t.c,t.d+t.a))),Wz(e,new PT(new PS(t.c+t.b,t.d+t.a),new PS(t.c+t.b,t.d))),Wz(e,new PT(new PS(t.c+t.b,t.d+t.a),new PS(t.c,t.d+t.a))),e}function YLt(t,e,n,i){var r,a,o;if(o=Okt(e,n),i.c[i.c.length]=e,-1==t.j[o.p]||2==t.j[o.p]||t.a[e.p])return i;for(t.j[o.p]=-1,a=new cG(JL(hdt(o).a.Kc(),new l));bDt(a);)if(!d5(r=zz(Y5(a),17))&&(d5(r)||r.c.i.c!=r.d.i.c)&&r!=e)return YLt(t,r,o,i);return i}function ZLt(t,e,n){var i,r;for(r=e.a.ec().Kc();r.Ob();)i=zz(r.Pb(),79),!zz(FZ(t.b,i),266)&&(QQ(SEt(i))==QQ(DEt(i))?nBt(t,i,n):SEt(i)==QQ(DEt(i))?null==FZ(t.c,i)&&null!=FZ(t.b,DEt(i))&&aGt(t,i,n,!1):null==FZ(t.d,i)&&null!=FZ(t.b,SEt(i))&&aGt(t,i,n,!0))}function WLt(t,e){var n,i,r,a,o,s,c;for(r=t.Kc();r.Ob();)for(i=zz(r.Pb(),10),SJ(s=new ITt,i),USt(s,(kYt(),cIe)),hct(s,(hWt(),kfe),(lN(),!0)),o=e.Kc();o.Ob();)a=zz(o.Pb(),10),SJ(c=new ITt,a),USt(c,SIe),hct(c,kfe,!0),hct(n=new gV,kfe,!0),TJ(n,s),EJ(n,c)}function KLt(t,e,n,i){var r,a,o,s;r=Opt(t,e,n),a=Opt(t,n,e),o=zz(FZ(t.c,e),112),s=zz(FZ(t.c,n),112),ri.b.g&&(a.c[a.c.length]=i);return a}function QLt(){QLt=M,B_e=new kS("CANDIDATE_POSITION_LAST_PLACED_RIGHT",0),P_e=new kS("CANDIDATE_POSITION_LAST_PLACED_BELOW",1),R_e=new kS("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT",2),F_e=new kS("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW",3),j_e=new kS("WHOLE_DRAWING",4)}function JLt(t,e){if(aL(e,239))return hft(t,zz(e,33));if(aL(e,186))return Fft(t,zz(e,118));if(aL(e,354))return eX(t,zz(e,137));if(aL(e,352))return J$t(t,zz(e,79));if(e)return null;throw qw(new jv(Y6t+NEt(new Qv(Sst(Ux(Ote,1),HWt,1,5,[e])))))}function tNt(t){var e,n,i,r,a,o,s;for(a=new VA,r=new Wd(t.d.a);r.a1)for(e=DN((n=new Hm,++t.b,n),t.d),s=lwt(a,0);s.b!=s.d.c;)o=zz(d3(s),121),ZNt(oE(aE(sE(rE(new qm,1),0),e),o))}function eNt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=11&&e){if(yxt(t,e))throw qw(new jv(p6t+YFt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?Cxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,10,i)),(i=GF(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,11,e,e))}function nNt(t){var e,n,i,r;for(i=new cut(new Cd(t.b).a);i.b;)r=zz((n=nnt(i)).cd(),11),hct(e=zz(n.dd(),10),(hWt(),pfe),r),hct(r,_fe,e),hct(r,nfe,(lN(),!0)),USt(r,zz(vEt(e,Xhe),61)),vEt(e,Xhe),hct(r.i,(HZt(),nwe),(V_t(),KSe)),zz(vEt(mW(r.i),Jhe),21).Fc((gBt(),phe))}function iNt(t,e,n){var i,r,a;if(i=0,r=0,t.c)for(a=new Wd(t.d.i.j);a.aa.a)return-1;if(r.a(c=null==t.d?0:t.d.length)){for(l=t.d,t.d=P8(cDe,o7t,63,2*c+4,0,1),a=0;a=0x8000000000000000?(Z9(),gee):(i=!1,t<0&&(i=!0,t=-t),n=0,t>=DXt&&(t-=(n=SQ(t/DXt))*DXt),e=0,t>=MXt&&(t-=(e=SQ(t/MXt))*MXt),r=EO(SQ(t),e,n),i&&Dct(r),r)}function mNt(t,e){var n,i,r,a;for(n=!e||!t.u.Hc((dIt(),nIe)),a=0,r=new Wd(t.e.Cf());r.a=-e&&r==e?new rI(rft(i-1),rft(r)):new rI(rft(i),rft(r-1))}function ANt(){return dWt(),Sst(Ux(sue,1),LKt,77,0,[rce,ece,ace,xce,$ce,Ece,Yce,Mce,Rce,bce,Nce,Ice,jce,fce,Wce,Kse,Lce,qce,kce,zce,Xce,Bce,Xse,Fce,Vce,Uce,Kce,_ce,uce,Ace,vce,Zce,Jse,sce,Cce,Qse,Sce,mce,dce,Dce,pce,nce,tce,yce,gce,Oce,Gce,Vse,Pce,wce,Tce,lce,cce,Hce,oce,hce,ice])}function ENt(t,e,n){t.d=0,t.b=0,e.k==(cTt(),Ise)&&n.k==Ise&&zz(vEt(e,(hWt(),pfe)),10)==zz(vEt(n,pfe),10)&&(T9(e).j==(kYt(),uIe)?UOt(t,e,n):UOt(t,n,e)),e.k==Ise&&n.k==Cse?T9(e).j==(kYt(),uIe)?t.d=1:t.b=1:n.k==Ise&&e.k==Cse&&(T9(n).j==(kYt(),uIe)?t.b=1:t.d=1),cyt(t,e,n)}function TNt(t){var e,n,i,r,a;return a=OAt(t),null!=t.a&&Dq(a,"category",t.a),!W_(new Sd(t.d))&&(ret(a,"knownOptions",i=new Sf),e=new nw(i),n5(new Sd(t.d),e)),!W_(t.g)&&(ret(a,"supportedFeatures",r=new Sf),n=new iw(r),n5(t.g,n)),a}function CNt(t){var e,n,i,r,a,o,s,c;for(e=336,n=0,r=new uF(t.length),s=0,c=(o=t).length;s>16!=7&&e){if(yxt(t,e))throw qw(new jv(p6t+oCt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?hxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=zz(e,49).gh(t,1,BMe,i)),(i=KU(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,7,e,e))}function DNt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=3&&e){if(yxt(t,e))throw qw(new jv(p6t+Xht(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?gxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=zz(e,49).gh(t,0,zMe,i)),(i=XU(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function ONt(t,e){var n,i,r,a,o,s,c,u,l;return LMt(),e.d>t.d&&(s=t,t=e,e=s),e.d<63?WPt(t,e):(u=G5(t,o=(-2&t.d)<<4),l=G5(e,o),i=czt(t,U5(u,o)),r=czt(e,U5(l,o)),c=ONt(u,l),n=ONt(i,r),a=U5(a=Lqt(Lqt(a=ONt(czt(u,i),czt(r,l)),c),n),o),Lqt(Lqt(c=U5(c,o<<1),a),n))}function LNt(t,e,n){var i,r,a,o,s;for(o=Nht(t,n),s=P8(Mse,s1t,10,e.length,0,1),i=0,a=o.Kc();a.Ob();)Hv(AB(vEt(r=zz(a.Pb(),11),(hWt(),nfe))))&&(s[i++]=zz(vEt(r,_fe),10));if(i=0;r+=n?1:-1)a|=e.c.Sf(s,r,n,i&&!Hv(AB(vEt(e.j,(hWt(),Qhe))))&&!Hv(AB(vEt(e.j,(hWt(),Ife))))),a|=e.q._f(s,r,n),a|=wFt(t,s[r],n,i);return AY(t.c,e),a}function RNt(t,e,n){var i,r,a,o,s,c,u,l;for(u=0,l=(c=I2(t.j)).length;u1&&(t.a=!0),NU(zz(n.b,65),YF(zO(zz(e.b,65).c),xL(ZF(zO(zz(n.b,65).a),zz(e.b,65).a),r))),XJ(t,e),zNt(t,n)}function qNt(t){var e,n,i,r,a,o;for(r=new Wd(t.a.a);r.a0&&a>0?e++:i>0?n++:a>0?r++:n++}TX(),yO(t.j,new di)}function UNt(t){var e,n;n=null,e=zz(PH(t.g,0),17);do{if(LP(n=e.d.i,(hWt(),hfe)))return zz(vEt(n,hfe),11).i;if(n.k!=(cTt(),Sse)&&bDt(new cG(JL(ddt(n).a.Kc(),new l))))e=zz(Y5(new cG(JL(ddt(n).a.Kc(),new l))),17);else if(n.k!=Sse)return null}while(n&&n.k!=(cTt(),Sse));return n}function GNt(t,e){var n,i,r,a,o,s,c,u,l;for(s=e.j,o=e.g,c=zz(PH(s,s.c.length-1),113),f1(0,s.c.length),u=tvt(t,o,c,l=zz(s.c[0],113)),a=1;au&&(c=n,l=r,u=i);e.a=l,e.c=c}function YNt(t,e){var n;if(!JY(t.b,e.b))throw qw(new $v("Invalid hitboxes for scanline constraint calculation."));(kst(e.b,zz(EF(t.b,e.b),57))||kst(e.b,zz(AF(t.b,e.b),57)))&&(OA(),e.b),t.a[e.b.f]=zz(xR(t.b,e.b),57),(n=zz(vR(t.b,e.b),57))&&(t.a[n.f]=e.b)}function ZNt(t){if(!t.a.d||!t.a.e)throw qw(new $v((_B(qie),qie.k+" must have a source and target "+(_B(Hie),Hie.k+" specified."))));if(t.a.d==t.a.e)throw qw(new $v("Network simplex does not support self-loops: "+t.a+" "+t.a.d+" "+t.a.e));return FN(t.a.d.g,t.a),FN(t.a.e.b,t.a),t.a}function WNt(t,e,n){var i,r,a,o,s,c,u;for(u=new p_(new Qp(t)),s=0,c=(o=Sst(Ux(Use,1),c1t,11,0,[e,n])).length;sc-t.b&&sc-t.a&&s0&&++f;++h}return f}function oPt(t,e){var n,i,r,a,o;for(o=zz(vEt(e,(IDt(),Lxe)),425),a=lwt(e.b,0);a.b!=a.d.c;)if(r=zz(d3(a),86),0==t.b[r.g]){switch(o.g){case 0:Vmt(t,r);break;case 1:HDt(t,r)}t.b[r.g]=2}for(i=lwt(t.a,0);i.b!=i.d.c;)xgt((n=zz(d3(i),188)).b.d,n,!0),xgt(n.c.b,n,!0);hct(e,(UHt(),fxe),t.a)}function sPt(t,e){var n,i,r,a;return JE(),e?e==(ZHt(),RLe)||(e==vLe||e==mLe||e==yLe)&&t!=wLe?new oYt(t,e):((n=(i=zz(e,677)).pk())||(xK(z9((MCt(),JOe),e)),n=i.pk()),!n.i&&(n.i=new Pw),!(r=zz(HI(DV((a=n.i).f,t)),1942))&&KW(a,t,r=new oYt(t,e)),r):oLe}function cPt(t,e){var n,i,r,a,o,s,c,u;for(s=zz(vEt(t,(hWt(),pfe)),11),c=Oct(Sst(Ux(CEe,1),lKt,8,0,[s.i.n,s.n,s.a])).a,u=t.i.n.b,r=0,a=(i=J0(t.e)).length;r0?a.a?n>(s=a.b.rf().a)&&(r=(n-s)/2,a.d.b=r,a.d.c=r):a.d.c=t.s+n:qG(t.u)&&((i=$At(a.b)).c<0&&(a.d.b=-i.c),i.c+i.b>a.b.rf().a&&(a.d.c=i.c+i.b-a.b.rf().a))}function fPt(t,e){var n,i;for(DAt(e,"Semi-Interactive Crossing Minimization Processor",1),n=!1,i=new Wd(t.b);i.a=0){if(e==i)return new rI(rft(-e-1),rft(-e-1));if(e==-i)return new rI(rft(-e),rft(i+1))}return n.Math.abs(e)>n.Math.abs(i)?new rI(rft(-e),rft(e<0?i:i+1)):new rI(rft(e+1),rft(i))}function pPt(t){var e,n;n=zz(vEt(t,(HZt(),xbe)),163),e=zz(vEt(t,(hWt(),ife)),303),n==(Edt(),$fe)?(hct(t,xbe,Hfe),hct(t,ife,(G9(),She))):n==qfe?(hct(t,xbe,Hfe),hct(t,ife,(G9(),The))):e==(G9(),She)?(hct(t,xbe,$fe),hct(t,ife,Che)):e==The&&(hct(t,xbe,qfe),hct(t,ife,Che))}function bPt(){bPt=M,kve=new co,mve=pH(new z2,(xEt(),joe),(dWt(),kce)),xve=WU(pH(new z2,joe,Bce),zoe,Pce),_ve=ubt(ubt($E(WU(pH(new z2,Foe,Yce),zoe,Gce),$oe),Uce),Zce),yve=WU(pH(pH(pH(new z2,Roe,Ece),$oe,Cce),$oe,Sce),zoe,Tce),vve=WU(pH(pH(new z2,$oe,Sce),$oe,sce),zoe,oce)}function wPt(){wPt=M,Sve=pH(WU(new z2,(xEt(),zoe),(dWt(),lce)),joe,kce),Ove=ubt(ubt($E(WU(pH(new z2,Foe,Yce),zoe,Gce),$oe),Uce),Zce),Ive=WU(pH(pH(pH(new z2,Roe,Ece),$oe,Cce),$oe,Sce),zoe,Tce),Dve=pH(pH(new z2,joe,Bce),zoe,Pce),Mve=WU(pH(pH(new z2,$oe,Sce),$oe,sce),zoe,oce)}function mPt(t,e,n,i,r){var a,o;(d5(e)||e.c.i.c!=e.d.i.c)&&ert(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])),n)||d5(e)||(e.c==r?RP(e.a,0,new gD(n)):Bq(e.a,new gD(n)),i&&!$A(t.a,n)&&((o=zz(vEt(e,(HZt(),mbe)),74))||(o=new xy,hct(e,mbe,o)),r5(o,a=new gD(n),o.c.b,o.c),AY(t.a,a)))}function yPt(t){var e;for(e=new cG(JL(fdt(t).a.Kc(),new l));bDt(e);)if(zz(Y5(e),17).c.i.k!=(cTt(),Tse))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function vPt(t,e,n){var i,r,a,o,s,c;if(0==(r=mdt(254&t.Db)))t.Eb=n;else{if(1==r)o=P8(Ote,HWt,1,2,5,1),0==Ryt(t,e)?(o[0]=n,o[1]=t.Eb):(o[0]=t.Eb,o[1]=n);else for(o=P8(Ote,HWt,1,r+1,5,1),a=int(t.Eb),i=2,s=0,c=0;i<=128;i<<=1)i==e?o[c++]=n:0!=(t.Db&i)&&(o[c++]=a[s++]);t.Eb=o}t.Db|=e}function xPt(t,e,i){var r,a,o,s;for(this.b=new Nw,a=0,r=0,s=new Wd(t);s.a0&&(a+=(o=zz(PH(this.b,0),167)).o,r+=o.p),a*=2,r*=2,e>1?a=SQ(n.Math.ceil(a*e)):r=SQ(n.Math.ceil(r/e)),this.a=new Ugt(a,r)}function kPt(t,e,i,r,a,o){var s,c,u,l,h,f,d,g,p,b;for(l=r,e.j&&e.o?(p=(d=zz(FZ(t.f,e.A),57)).d.c+d.d.b,--l):p=e.a.c+e.a.b,h=a,i.q&&i.o?(u=(d=zz(FZ(t.f,i.C),57)).d.c,++h):u=i.a.c,g=p+(c=(u-p)/n.Math.max(2,h-l)),f=l;f=0;o+=r?1:-1){for(s=e[o],c=i==(kYt(),cIe)?r?sdt(s,i):iot(sdt(s,i)):r?iot(sdt(s,i)):sdt(s,i),a&&(t.c[s.p]=c.gc()),h=c.Kc();h.Ob();)l=zz(h.Pb(),11),t.d[l.p]=u++;wst(n,c)}}function APt(t,e,n){var i,r,a,o,s,c,u,l;for(a=Uv(EB(t.b.Kc().Pb())),u=Uv(EB(Kot(e.b))),i=xL(zO(t.a),u-n),r=xL(zO(e.a),n-a),xL(l=YF(i,r),1/(u-a)),this.a=l,this.b=new Nw,s=!0,(o=t.b.Kc()).Pb();o.Ob();)c=Uv(EB(o.Pb())),s&&c-n>F3t&&(this.b.Fc(n),s=!1),this.b.Fc(c);s&&this.b.Fc(n)}function EPt(t){var e,n,i,r;if(hRt(t,t.n),t.d.c.length>0){for(tx(t.c);mDt(t,zz(t0(new Wd(t.e.a)),121))>5,e&=31,i>=t.d)return t.e<0?(DBt(),Qee):(DBt(),ine);if(a=t.d-i,VTt(r=P8(DNe,hXt,25,a+1,15,1),a,t.a,i,e),t.e<0){for(n=0;n0&&t.a[n]<<32-e!=0){for(n=0;n=0)&&(!(n=zHt((MCt(),JOe),r,e))||((i=n.Zj())>1||-1==i)&&3!=BW(z9(JOe,n))))}function NPt(t,e,n,i){var r,a,o,s,c;return s=SAt(zz(Ket((!e.b&&(e.b=new lR(RMe,e,4,7)),e.b),0),82)),c=SAt(zz(Ket((!e.c&&(e.c=new lR(RMe,e,5,8)),e.c),0),82)),QQ(s)==QQ(c)||Iet(c,s)?null:(o=ZQ(e))==n?i:(a=zz(FZ(t.a,o),10))&&(r=a.e)?r:null}function PPt(t,e){var n;switch(DAt(e,"Label side selection ("+(n=zz(vEt(t,(HZt(),Qpe)),276))+")",1),n.g){case 0:EDt(t,(Wvt(),kSe));break;case 1:EDt(t,(Wvt(),_Se));break;case 2:lzt(t,(Wvt(),kSe));break;case 3:lzt(t,(Wvt(),_Se));break;case 4:cBt(t,(Wvt(),kSe));break;case 5:cBt(t,(Wvt(),_Se))}HTt(e)}function BPt(t,e,n){var i,r,a,o,s;if((a=t[fk(n,t.length)])[0].k==(cTt(),Ese))for(r=hk(n,a.length),s=e.j,i=0;i0&&(i[0]+=t.d,s-=i[0]),i[2]>0&&(i[2]+=t.d,s-=i[2]),o=n.Math.max(0,s),i[1]=n.Math.max(i[1],s),V5(t,Gie,a.c+r.b+i[0]-(i[1]-s)/2,i),e==Gie&&(t.c.b=o,t.c.c=a.c+r.b+(o-s)/2)}function VPt(){this.c=P8(PNe,UXt,25,(kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])).length,15,1),this.b=P8(PNe,UXt,25,Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe]).length,15,1),this.a=P8(PNe,UXt,25,Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe]).length,15,1),yT(this.c,RXt),yT(this.b,jXt),yT(this.a,jXt)}function QPt(t,e,n){var i,r,a,o;if(e<=n?(r=e,a=n):(r=n,a=e),i=0,null==t.b)t.b=P8(DNe,hXt,25,2,15,1),t.b[0]=r,t.b[1]=a,t.c=!0;else{if(i=t.b.length,t.b[i-1]+1==r)return void(t.b[i-1]=a);o=P8(DNe,hXt,25,i+2,15,1),sqt(t.b,0,o,0,i),t.b=o,t.b[i-1]>=r&&(t.c=!1,t.a=!1),t.b[i++]=r,t.b[i]=a,t.c||EOt(t)}}function JPt(t,e,n){var i,r,a,o,s,c,u;for(u=e.d,t.a=new Q6(u.c.length),t.c=new Pw,s=new Wd(u);s.a=0?t._g(u,!1,!0):oMt(t,n,!1),58).Kc();a.Ob();){for(r=zz(a.Pb(),56),l=0;l1;)fBt(r,r.i-1);return i}function sBt(t,e){var n,i,r,a,o,s,c;for(DAt(e,"Comment post-processing",1),a=new Wd(t.b);a.at.d[o.p]&&(n+=t5(t.b,a),p3(t.a,rft(a)));for(;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function hBt(t,e,n){var i,r,a,o;for(a=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,r=new DL((!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));r.e!=r.i.gc();)0==(!(i=zz(kwt(r),33)).a&&(i.a=new nY(YMe,i,10,11)),i.a).i||(a+=hBt(t,i,!1));if(n)for(o=QQ(e);o;)a+=(!o.a&&(o.a=new nY(YMe,o,10,11)),o.a).i,o=QQ(o);return a}function fBt(t,e){var n,i,r,a;return t.ej()?(i=null,r=t.fj(),t.ij()&&(i=t.kj(t.pi(e),null)),n=t.Zi(4,a=Nvt(t,e),null,e,r),t.bj()&&null!=a?(i=t.dj(a,i))?(i.Ei(n),i.Fi()):t.$i(n):i?(i.Ei(n),i.Fi()):t.$i(n),a):(a=Nvt(t,e),t.bj()&&null!=a&&(i=t.dj(a,null))&&i.Fi(),a)}function dBt(t){var e,i,r,a,o,s,c,u,l,h;for(l=t.a,e=new Fm,u=0,r=new Wd(t.d);r.ac.d&&(h=c.d+c.a+l));i.c.d=h,e.a.zc(i,e),u=n.Math.max(u,i.c.d+i.c.a)}return u}function gBt(){gBt=M,lhe=new LC("COMMENTS",0),fhe=new LC("EXTERNAL_PORTS",1),dhe=new LC("HYPEREDGES",2),ghe=new LC("HYPERNODES",3),phe=new LC("NON_FREE_PORTS",4),bhe=new LC("NORTH_SOUTH_PORTS",5),mhe=new LC(G1t,6),uhe=new LC("CENTER_LABELS",7),hhe=new LC("END_LABELS",8),whe=new LC("PARTITIONS",9)}function pBt(t){var e,n,i,r,a;for(r=new Nw,e=new OH((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),i=new cG(JL(bLt(t).a.Kc(),new l));bDt(i);)aL(Ket((!(n=zz(Y5(i),79)).b&&(n.b=new lR(RMe,n,4,7)),n.b),0),186)||(a=SAt(zz(Ket((!n.c&&(n.c=new lR(RMe,n,5,8)),n.c),0),82)),e.a._b(a)||(r.c[r.c.length]=a));return r}function bBt(t){var e,n,i,r,a;for(r=new Fm,e=new OH((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),i=new cG(JL(bLt(t).a.Kc(),new l));bDt(i);)aL(Ket((!(n=zz(Y5(i),79)).b&&(n.b=new lR(RMe,n,4,7)),n.b),0),186)||(a=SAt(zz(Ket((!n.c&&(n.c=new lR(RMe,n,5,8)),n.c),0),82)),e.a._b(a)||r.a.zc(a,r));return r}function wBt(t,e,n,i,r){return i<0?((i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt]),e))<0&&(i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),!(i<0||(n.k=i,0))):i>0&&(n.k=i-1,!0)}function mBt(t,e,n,i,r){return i<0?((i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt]),e))<0&&(i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),!(i<0||(n.k=i,0))):i>0&&(n.k=i-1,!0)}function yBt(t,e,n,i,r,a){var o,s,c;if(s=32,i<0){if(e[0]>=t.length)return!1;if(43!=(s=hK(t,e[0]))&&45!=s)return!1;if(++e[0],(i=ZIt(t,e))<0)return!1;45==s&&(i=-i)}return 32==s&&e[0]-n==2&&2==r.b&&(o=(c=(new DA).q.getFullYear()-lXt+lXt-80)%100,a.a=i==o,i+=100*(c/100|0)+(i=l&&(u=r);u&&(h=n.Math.max(h,u.a.o.a)),h>d&&(f=l,d=h)}return f}function TBt(t,e,n){var i,r,a;if(t.e=n,t.d=0,t.b=0,t.f=1,t.i=e,16==(16&t.e)&&(t.i=mRt(t.i)),t.j=t.i.length,VZt(t),a=Xpt(t),t.d!=t.j)throw qw(new ox(kWt((sO(),p8t))));if(t.g){for(i=0;im4t?yO(u,t.b):r<=m4t&&r>y4t?yO(u,t.d):r<=y4t&&r>v4t?yO(u,t.c):r<=v4t&&yO(u,t.a),o=MBt(t,u,o);return a}function DBt(){var t;for(DBt=M,Jee=new Z6(1,1),ene=new Z6(1,10),ine=new Z6(0,0),Qee=new Z6(-1,1),tne=Sst(Ux(une,1),lKt,91,0,[ine,Jee,new Z6(1,2),new Z6(1,3),new Z6(1,4),new Z6(1,5),new Z6(1,6),new Z6(1,7),new Z6(1,8),new Z6(1,9),ene]),nne=P8(une,lKt,91,32,0,1),t=0;t1&&(i=new PS(r,n.b),Bq(e.a,i)),eit(e.a,Sst(Ux(CEe,1),lKt,8,0,[h,l]))}function RBt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,$5t),"ELK Randomizer"),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new Vs))),s2(t,$5t,VQt,LIe),s2(t,$5t,yJt,15),s2(t,$5t,xJt,rft(0)),s2(t,$5t,XQt,bJt)}function jBt(){var t,e,n,i,r,a;for(jBt=M,XLe=P8(NNe,y6t,25,255,15,1),VLe=P8(MNe,KKt,25,16,15,1),e=0;e<255;e++)XLe[e]=-1;for(n=57;n>=48;n--)XLe[n]=n-48<<24>>24;for(i=70;i>=65;i--)XLe[i]=i-65+10<<24>>24;for(r=102;r>=97;r--)XLe[r]=r-97+10<<24>>24;for(a=0;a<10;a++)VLe[a]=48+a&VKt;for(t=10;t<=15;t++)VLe[t]=65+t-10&VKt}function $Bt(t,e,n){var i,r,a,o,s,c,u,l;return s=e.i-t.g/2,c=n.i-t.g/2,u=e.j-t.g/2,l=n.j-t.g/2,a=e.g+t.g/2,o=n.g+t.g/2,i=e.f+t.g/2,r=n.f+t.g/2,s>19!=0)return"-"+GBt(sct(t));for(n=t,i="";0!=n.l||0!=n.m||0!=n.h;){if(n=OHt(n,$5(OXt),!0),e=""+A_(dee),0!=n.l||0!=n.m||0!=n.h)for(r=9-e.length;r>0;r--)e="0"+e;i=e+i}return i}function YBt(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var t="__proto__",e=Object.create(null);return void 0===e[t]&&0==Object.getOwnPropertyNames(e).length&&(e[t]=42,42===e[t]&&0!=Object.getOwnPropertyNames(e).length)}function ZBt(t){var e,n,i,r,a,o,s;for(e=!1,n=0,r=new Wd(t.d.b);r.a=t.a)return-1;if(!iAt(e,i))return-1;if(l3(zz(r.Kb(e),20)))return 1;for(a=0,s=zz(r.Kb(e),20).Kc();s.Ob();){if(-1==(c=XBt(t,(o=zz(s.Pb(),17)).c.i==e?o.d.i:o.c.i,i,r)))return-1;if((a=n.Math.max(a,c))>t.c-1)return-1}return a+1}function VBt(t,e){var n,i,r,a,o,s;if(UI(e)===UI(t))return!0;if(!aL(e,15))return!1;if(i=zz(e,15),s=t.gc(),i.gc()!=s)return!1;if(o=i.Kc(),t.ni()){for(n=0;n0)if(t.qj(),null!=e){for(a=0;a>24;case 97:case 98:case 99:case 100:case 101:case 102:return t-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return t-65+10<<24>>24;default:throw qw(new Ex("Invalid hexadecimal"))}}function eFt(t,e,n){var i,r,a,o;for(DAt(n,"Processor order nodes",2),t.a=Uv(EB(vEt(e,(IDt(),Pxe)))),r=new VA,o=lwt(e.b,0);o.b!=o.d.c;)Hv(AB(vEt(a=zz(d3(o),86),(UHt(),pxe))))&&r5(r,a,r.c.b,r.c);CP(0!=r.b),jqt(t,i=zz(r.a.a.c,86)),!n.b&&Uit(n,1),qFt(t,i,0-Uv(EB(vEt(i,(UHt(),sxe))))/2,0),!n.b&&Uit(n,1),HTt(n)}function nFt(){nFt=M,Fie=new qT("SPIRAL",0),Oie=new qT("LINE_BY_LINE",1),Lie=new qT("MANHATTAN",2),Die=new qT("JITTER",3),Pie=new qT("QUADRANTS_LINE_BY_LINE",4),Bie=new qT("QUADRANTS_MANHATTAN",5),Nie=new qT("QUADRANTS_JITTER",6),Mie=new qT("COMBINE_LINE_BY_LINE_MANHATTAN",7),Iie=new qT("COMBINE_JITTER_MANHATTAN",8)}function iFt(t,e,n,i){var r,a,o,s,c,u;for(c=Pkt(t,n),u=Pkt(e,n),r=!1;c&&u&&(i||vvt(c,u,n));)o=Pkt(c,n),s=Pkt(u,n),D9(e),D9(t),a=c.c,aUt(c,!1),aUt(u,!1),n?(Vvt(e,u.p,a),e.p=u.p,Vvt(t,c.p+1,a),t.p=c.p):(Vvt(t,c.p,a),t.p=c.p,Vvt(e,u.p+1,a),e.p=u.p),CJ(c,null),CJ(u,null),c=o,u=s,r=!0;return r}function rFt(t,e,n,i){var r,a,o,s,c;for(r=!1,a=!1,s=new Wd(i.j);s.a=e.length)throw qw(new Dv("Greedy SwitchDecider: Free layer not in graph."));this.c=e[t],this.e=new XR(i),xrt(this.e,this.c,(kYt(),SIe)),this.i=new XR(i),xrt(this.i,this.c,cIe),this.f=new fU(this.c),this.a=!a&&r.i&&!r.s&&this.c[0].k==(cTt(),Ese),this.a&&wCt(this,t,e.length)}function uFt(t,e){var n,i,r,a,o,s;a=!t.B.Hc((ejt(),qIe)),o=t.B.Hc(GIe),t.a=new Hgt(o,a,t.c),t.n&&xX(t.a.n,t.n),kv(t.g,(Fet(),Gie),t.a),e||((i=new Mbt(1,a,t.c)).n.a=t.k,yU(t.p,(kYt(),uIe),i),(r=new Mbt(1,a,t.c)).n.d=t.k,yU(t.p,TIe,r),(s=new Mbt(0,a,t.c)).n.c=t.k,yU(t.p,SIe,s),(n=new Mbt(0,a,t.c)).n.b=t.k,yU(t.p,cIe,n))}function lFt(t){var e,n,i;switch((e=zz(vEt(t.d,(HZt(),Jpe)),218)).g){case 2:n=TZt(t);break;case 3:i=new Nw,QA(DK(OK(gtt(gtt(new FH(null,new g1(t.d.b,16)),new Mr),new Dr),new Or),new wr),new Sp(i)),n=i;break;default:throw qw(new $v("Compaction not supported for "+e+" edges."))}wHt(t,n),n5(new Sd(t.g),new Tp(t))}function hFt(t,e){var n;return n=new Qt,e&&Uot(n,zz(FZ(t.a,BMe),94)),aL(e,470)&&Uot(n,zz(FZ(t.a,FMe),94)),aL(e,354)?(Uot(n,zz(FZ(t.a,GMe),94)),n):(aL(e,82)&&Uot(n,zz(FZ(t.a,RMe),94)),aL(e,239)?(Uot(n,zz(FZ(t.a,YMe),94)),n):aL(e,186)?(Uot(n,zz(FZ(t.a,ZMe),94)),n):(aL(e,352)&&Uot(n,zz(FZ(t.a,jMe),94)),n))}function fFt(){fFt=M,Jae=new ZD((lWt(),wCe),rft(1)),aoe=new ZD(LCe,80),roe=new ZD(TCe,5),$ae=new ZD(aTe,bJt),toe=new ZD(mCe,rft(1)),ioe=new ZD(xCe,(lN(),!0)),Xae=new WD(50),Kae=new ZD(ZTe,Xae),qae=STe,Vae=sCe,zae=new ZD(pTe,!1),Wae=YTe,Zae=HTe,Yae=RTe,Gae=BTe,Qae=hCe,_Tt(),Uae=Iae,ooe=Nae,Hae=Sae,eoe=Dae,noe=Lae}function dFt(t){var e,n,i,r,a,o,s;for(s=new m5,o=new Wd(t.a);o.a0&&e=0)return!1;if(e.p=n.b,Wz(n.e,e),i==(cTt(),Cse)||i==Ise)for(r=new Wd(e.j);r.a1||-1==o)&&(a|=16),0!=(r.Bb&h6t)&&(a|=64)),0!=(n.Bb&qXt)&&(a|=T7t),a|=k6t):aL(e,457)?a|=512:(i=e.Bj())&&0!=(1&i.i)&&(a|=256),0!=(512&t.Bb)&&(a|=128),a}function LFt(t,e){var n,i,r,a,o;for(t=null==t?YWt:(xW(t),t),r=0;rt.d[s.p]&&(n+=t5(t.b,a),p3(t.a,rft(a))):++o;for(n+=t.b.d*o;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function BFt(t,e){var n;return t.f==sLe?(n=BW(z9((MCt(),JOe),e)),t.e?4==n&&e!=(EMt(),fLe)&&e!=(EMt(),uLe)&&e!=(EMt(),lLe)&&e!=(EMt(),hLe):2==n):!(!t.d||!(t.d.Hc(e)||t.d.Hc(J1(z9((MCt(),JOe),e)))||t.d.Hc(zHt((MCt(),JOe),t.b,e))))||!(!t.f||!sNt((MCt(),t.f),kK(z9(JOe,e))))&&(n=BW(z9(JOe,e)),t.e?4==n:2==n)}function FFt(t,e,i,r){var a,o,s,c,u,l,h,f;return u=(s=zz(tOt(i,(lWt(),bCe)),8)).a,h=s.b+t,(a=n.Math.atan2(h,u))<0&&(a+=t4t),(a+=e)>t4t&&(a-=t4t),l=(c=zz(tOt(r,bCe),8)).a,f=c.b+t,(o=n.Math.atan2(f,l))<0&&(o+=t4t),(o+=e)>t4t&&(o-=t4t),lO(),ait(1e-10),n.Math.abs(a-o)<=1e-10||a==o||isNaN(a)&&isNaN(o)?0:ao?1:GM(isNaN(a),isNaN(o))}function RFt(t){var e,n,i,r,a,o,s;for(s=new Pw,i=new Wd(t.a.b);i.a=t.o)throw qw(new Tm);o=e>>5,a=vG(1,pU(vG(31&e,1))),t.n[n][o]=r?i0(t.n[n][o],a):n0(t.n[n][o],sq(a)),a=vG(a,1),t.n[n][o]=i?i0(t.n[n][o],a):n0(t.n[n][o],sq(a))}catch(i){throw aL(i=dst(i),320)?qw(new Dv(TQt+t.o+"*"+t.p+CQt+e+zWt+n+SQt)):qw(i)}}function qFt(t,e,i,r){var a,o;e&&(a=Uv(EB(vEt(e,(UHt(),hxe))))+r,o=i+Uv(EB(vEt(e,sxe)))/2,hct(e,bxe,rft(pU(fot(n.Math.round(a))))),hct(e,wxe,rft(pU(fot(n.Math.round(o))))),0==e.d.b||qFt(t,zz(iL(new gb(lwt(new db(e).a.d,0))),86),i+Uv(EB(vEt(e,sxe)))+t.a,r+Uv(EB(vEt(e,cxe)))),null!=vEt(e,gxe)&&qFt(t,zz(vEt(e,gxe),86),i,r))}function HFt(t,e){var i,r,a,o,s,c,u,l,h,f,d;for(a=2*Uv(EB(vEt(u=mW(e.a),(HZt(),Awe)))),h=Uv(EB(vEt(u,Dwe))),l=n.Math.max(a,h),o=P8(PNe,UXt,25,e.f-e.c+1,15,1),r=-l,i=0,c=e.b.Kc();c.Ob();)s=zz(c.Pb(),10),r+=t.a[s.c.p]+l,o[i++]=r;for(r+=t.a[e.a.c.p]+l,o[i++]=r,d=new Wd(e.e);d.a0&&(!(i=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),i),'"'))),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function ZFt(t){var e,n,i;return 0!=(64&t.Db)?vTt(t):(e=new fN(n6t),(n=t.k)?cM(cM((e.a+=' "',e),n),'"'):(!t.n&&(t.n=new nY(GMe,t,1,7)),t.n.i>0&&(!(i=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),i),'"'))),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function WFt(t,e){var n,i,r,a,o,s;if(null==e||0==e.length)return null;if(!(r=zz(TQ(t.a,e),149))){for(i=new Rd(new Md(t.b).a.vc().Kc());i.a.Ob();)if(a=zz(i.a.Pb(),42),o=(n=zz(a.dd(),149)).c,s=e.length,yR(o.substr(o.length-s,s),e)&&(e.length==o.length||46==hK(o,o.length-e.length-1))){if(r)return null;r=n}r&&yJ(t.a,e,r)}return r}function KFt(t,e){var n,i,r;return n=new Nt,(i=zz(C4(OK(new FH(null,new g1(t.f,16)),n),P9(new X,new V,new rt,new at,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Zne),Yne]))),21).gc())<(r=zz(C4(OK(new FH(null,new g1(e.f,16)),n),P9(new X,new V,new rt,new at,Sst(Ux(tie,1),LKt,132,0,[Zne,Yne]))),21).gc())?-1:i==r?0:1}function XFt(t){var e,n,i;LP(t,(HZt(),Obe))&&((i=zz(vEt(t,Obe),21)).dc()||(n=new VR(e=zz(Kk(USe),9),zz(TF(e,e.length),9),0),i.Hc((eOt(),OSe))?urt(n,OSe):urt(n,LSe),i.Hc(MSe)||urt(n,MSe),i.Hc(ISe)?urt(n,BSe):i.Hc(SSe)?urt(n,PSe):i.Hc(DSe)&&urt(n,NSe),i.Hc(BSe)?urt(n,ISe):i.Hc(PSe)?urt(n,SSe):i.Hc(NSe)&&urt(n,DSe),hct(t,Obe,n)))}function VFt(t){var e,n,i,r,a,o,s;for(r=zz(vEt(t,(hWt(),rfe)),10),f1(0,(i=t.j).c.length),n=zz(i.c[0],11),o=new Wd(r.j);o.ar.p?(USt(a,TIe),a.d&&(s=a.o.b,e=a.a.b,a.a.b=s-e)):a.j==TIe&&r.p>t.p&&(USt(a,uIe),a.d&&(s=a.o.b,e=a.a.b,a.a.b=-(s-e)));break}return r}function QFt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g;if(a=n,n1&&(i=new PS(r,n.b),Bq(e.a,i)),eit(e.a,Sst(Ux(CEe,1),lKt,8,0,[h,l]))}function wRt(t,e,n){var i,r,a,o,s,c;if(e){if(n<=-1){if(aL(i=iet(e.Tg(),-1-n),99))return zz(i,18);for(s=0,c=(o=zz(e.ah(i),153)).gc();s0){for(r=c.length;r>0&&""==c[r-1];)--r;r=40)&&A$t(t),qqt(t),EPt(t),n=xft(t),i=0;n&&i0&&Bq(t.f,a)):(t.c[o]-=u+1,t.c[o]<=0&&t.a[o]>0&&Bq(t.e,a))))}function QRt(t){var e,n,i,r,a,o,s;for(a=new p_(zz(vZ(new Bt),62)),s=jXt,n=new Wd(t.d);n.a=0&&cn?e:n;u<=h;++u)u==n?s=i++:(a=r[u],l=g.rl(a.ak()),u==e&&(c=u!=h||l?i:i-1),l&&++i);return f=zz(Mft(t,e,n),72),s!=c&&Lm(t,new k7(t.e,7,o,rft(s),d.dd(),c)),f}return zz(Mft(t,e,n),72)}function cjt(t,e){var n,i,r,a,o,s;for(DAt(e,"Port order processing",1),s=zz(vEt(t,(HZt(),cwe)),421),n=new Wd(t.b);n.a=0&&(!Ivt(t,o)||(c<22?s.l|=1<>>1,o.m=u>>>1|(1&l)<<21,o.l=h>>>1|(1&u)<<21,--c;return n&&Dct(s),a&&(i?(dee=sct(t),r&&(dee=hst(dee,(Z9(),bee)))):dee=EO(t.l,t.m,t.h)),s}function fjt(t,e){var n,i,r,a,o,s,c,u,l,h;for(u=t.e[e.c.p][e.p]+1,c=e.c.a.c.length+1,s=new Wd(t.a);s.a0&&(d1(0,t.length),45==t.charCodeAt(0)||(d1(0,t.length),43==t.charCodeAt(0)))?1:0;in)throw qw(new Ex(FXt+t+'"'));return o}function gjt(t){var e,i,r,a,o,s;for(o=new VA,a=new Wd(t.a);a.a1)&&1==e&&zz(t.a[t.b],10).k==(cTt(),Tse)?h$t(zz(t.a[t.b],10),(Wvt(),kSe)):i&&(!n||(t.c-t.b&t.a.length-1)>1)&&1==e&&zz(t.a[t.c-1&t.a.length-1],10).k==(cTt(),Tse)?h$t(zz(t.a[t.c-1&t.a.length-1],10),(Wvt(),_Se)):2==(t.c-t.b&t.a.length-1)?(h$t(zz(Act(t),10),(Wvt(),kSe)),h$t(zz(Act(t),10),_Se)):lLt(t,r),c4(t)}function yjt(t,e,i){var r,a,o,s,c;for(o=0,a=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));a.e!=a.i.gc();)s="",0==(!(r=zz(kwt(a),33)).n&&(r.n=new nY(GMe,r,1,7)),r.n).i||(s=zz(Ket((!r.n&&(r.n=new nY(GMe,r,1,7)),r.n),0),137).a),Uot(c=new out(o++,e,s),r),hct(c,(UHt(),uxe),r),c.e.b=r.j+r.f/2,c.f.a=n.Math.max(r.g,1),c.e.a=r.i+r.g/2,c.f.b=n.Math.max(r.f,1),Bq(e.b,c),_St(i.f,r,c)}function vjt(t){var e,n,i,r,a;i=zz(vEt(t,(hWt(),pfe)),33),a=zz(tOt(i,(HZt(),$be)),174).Hc((vpt(),jIe)),t.e||(r=zz(vEt(t,Jhe),21),e=new PS(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),r.Hc((gBt(),fhe))?(Qwt(i,nwe,(V_t(),ZSe)),jYt(i,e.a,e.b,!1,!0)):Hv(AB(tOt(i,zbe)))||jYt(i,e.a,e.b,!0,!0)),Qwt(i,$be,a?edt(jIe):new VR(n=zz(Kk(VIe),9),zz(TF(n,n.length),9),0))}function xjt(t,e,n){var i,r,a,o;if(e[0]>=t.length)return n.o=0,!0;switch(hK(t,e[0])){case 43:r=1;break;case 45:r=-1;break;default:return n.o=0,!0}if(++e[0],a=e[0],0==(o=ZIt(t,e))&&e[0]==a)return!1;if(e[0]=0&&s!=n&&(a=new tY(t,1,s,o,null),i?i.Ei(a):i=a),n>=0&&(a=new tY(t,1,n,s==n?o:null,e),i?i.Ei(a):i=a)),i}function Tjt(t){var e,n,i;if(null==t.b){if(i=new Tx,null!=t.i&&(aM(i,t.i),i.a+=":"),0!=(256&t.f)){for(0!=(256&t.f)&&null!=t.a&&(rX(t.i)||(i.a+="//"),aM(i,t.a)),null!=t.d&&(i.a+="/",aM(i,t.d)),0!=(16&t.f)&&(i.a+="/"),e=0,n=t.j.length;eu)&&(c+s+oqt(i,u,!1).a<=e.b&&(w7(n,a-n.s),n.c=!0,w7(i,a-n.s),Emt(i,n.s,n.t+n.d+s),i.k=!0,Bat(n.q,i),l=!0,r&&(nit(e,i),i.j=e,t.c.length>o&&(Ext((f1(o,t.c.length),zz(t.c[o],200)),i),0==(f1(o,t.c.length),zz(t.c[o],200)).a.c.length&&u6(t,o)))),l)}function Ljt(t,e){var n,i,r,a,o;if(DAt(e,"Partition midprocessing",1),r=new wQ,QA(DK(new FH(null,new g1(t.a,16)),new pi),new fp(r)),0!=r.d){for(o=zz(C4(o1(new FH(null,(r.i||(r.i=new qL(r,r.c))).Nc())),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),n=zz((i=o.Kc()).Pb(),19);i.Ob();)a=zz(i.Pb(),19),WLt(zz(l6(r,n),21),zz(l6(r,a),21)),n=a;HTt(e)}}function Njt(t,e,n){var i,r,a,o,s;if(0==e.p){for(e.p=1,(r=n)||(r=new rI(new Nw,new VR(i=zz(Kk($Ie),9),zz(TF(i,i.length),9),0))),zz(r.a,15).Fc(e),e.k==(cTt(),Ese)&&zz(r.b,21).Fc(zz(vEt(e,(hWt(),Xhe)),61)),o=new Wd(e.j);o.a0)if(r=zz(t.Ab.g,1934),null==e){for(a=0;a1)for(i=new Wd(r);i.ai.s&&co&&(o=r,u.c=P8(Ote,HWt,1,0,5,1)),r==o&&Wz(u,new rI(n.c.i,n)));TX(),yO(u,t.c),xU(t.b,s.p,u)}}function Ujt(t,e){var n,i,r,a,o,s,c,u;for(a=new Wd(e.b);a.ao&&(o=r,u.c=P8(Ote,HWt,1,0,5,1)),r==o&&Wz(u,new rI(n.d.i,n)));TX(),yO(u,t.c),xU(t.f,s.p,u)}}function Gjt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,d5t),"ELK Box"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges."),new Bs))),s2(t,d5t,VQt,GEe),s2(t,d5t,yJt,15),s2(t,d5t,mJt,rft(0)),s2(t,d5t,O4t,vwt(jEe)),s2(t,d5t,SJt,vwt(zEe)),s2(t,d5t,CJt,vwt(HEe)),s2(t,d5t,XQt,f5t),s2(t,d5t,_Jt,vwt($Ee)),s2(t,d5t,qJt,vwt(qEe)),s2(t,d5t,g5t,vwt(FEe)),s2(t,d5t,c3t,vwt(REe))}function Yjt(t,e){var n,i,r,a,o,s,c,u,l;if(o=(r=t.i).o.a,a=r.o.b,o<=0&&a<=0)return kYt(),CIe;switch(u=t.n.a,l=t.n.b,s=t.o.a,n=t.o.b,e.g){case 2:case 1:if(u<0)return kYt(),SIe;if(u+s>o)return kYt(),cIe;break;case 4:case 3:if(l<0)return kYt(),uIe;if(l+n>a)return kYt(),TIe}return(c=(u+s/2)/o)+(i=(l+n/2)/a)<=1&&c-i<=0?(kYt(),SIe):c+i>=1&&c-i>=0?(kYt(),cIe):i<.5?(kYt(),uIe):(kYt(),TIe)}function Zjt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d;for(n=!1,c=Uv(EB(vEt(e,(HZt(),Mwe)))),f=jKt*c,r=new Wd(e.b);r.ao.n.b-o.d.d+l.a+f&&(d=u.g+l.g,l.a=(l.g*l.a+u.g*u.a)/d,l.g=d,u.f=l,n=!0)),a=o,u=l;return n}function Wjt(t,e,n,i,r,a,o){var s,c,u,l,h;for(h=new dD,c=e.Kc();c.Ob();)for(l=new Wd(zz(c.Pb(),839).wf());l.a0?s.a?r>(u=s.b.rf().b)&&(t.v||1==s.c.d.c.length?(o=(r-u)/2,s.d.d=o,s.d.a=o):(i=(zz(PH(s.c.d,0),181).rf().b-u)/2,s.d.d=n.Math.max(0,i),s.d.a=r-i-u)):s.d.a=t.t+r:qG(t.u)&&((a=$At(s.b)).d<0&&(s.d.d=-a.d),a.d+a.a>s.b.rf().b&&(s.d.a=a.d+a.a-s.b.rf().b))}function Vjt(t,e){var n;switch(mtt(t)){case 6:return ZI(e);case 7:return YI(e);case 8:return GI(e);case 3:return Array.isArray(e)&&!((n=mtt(e))>=14&&n<=16);case 11:return null!=e&&typeof e===BWt;case 12:return null!=e&&(typeof e===OWt||typeof e==BWt);case 0:return Vwt(e,t.__elementTypeId$);case 2:return BY(e)&&!(e.im===I);case 1:return BY(e)&&!(e.im===I)||Vwt(e,t.__elementTypeId$);default:return!0}}function Qjt(t,e){var i,r,a,o;return r=n.Math.min(n.Math.abs(t.c-(e.c+e.b)),n.Math.abs(t.c+t.b-e.c)),o=n.Math.min(n.Math.abs(t.d-(e.d+e.a)),n.Math.abs(t.d+t.a-e.d)),(i=n.Math.abs(t.c+t.b/2-(e.c+e.b/2)))>t.b/2+e.b/2||(a=n.Math.abs(t.d+t.a/2-(e.d+e.a/2)))>t.a/2+e.a/2?1:0==i&&0==a?0:0==i?o/a+1:0==a?r/i+1:n.Math.min(r/i,o/a)+1}function Jjt(t,e){var i,r,a,o,s,c;return(a=rit(t))==(c=rit(e))?t.e==e.e&&t.a<54&&e.a<54?t.fe.f?1:0:(r=t.e-e.e,(i=(t.d>0?t.d:n.Math.floor((t.a-1)*YXt)+1)-(e.d>0?e.d:n.Math.floor((e.a-1)*YXt)+1))>r+1?a:i0&&(s=Ntt(s,kzt(r))),nbt(o,s))):a0&&t.d!=(H9(),Doe)&&(s+=o*(i.d.a+t.a[e.b][i.b]*(e.d.a-i.d.a)/n)),n>0&&t.d!=(H9(),Ioe)&&(c+=o*(i.d.b+t.a[e.b][i.b]*(e.d.b-i.d.b)/n)));switch(t.d.g){case 1:return new PS(s/a,e.d.b);case 2:return new PS(e.d.a,c/a);default:return new PS(s/a,c/a)}}function e$t(t,e){var n,i,r,a;if(Yut(),a=zz(vEt(t.i,(HZt(),nwe)),98),0!=t.j.g-e.j.g||a!=(V_t(),YSe)&&a!=WSe&&a!=ZSe)return 0;if(a==(V_t(),YSe)&&(n=zz(vEt(t,iwe),19),i=zz(vEt(e,iwe),19),n&&i&&0!=(r=n.a-i.a)))return r;switch(t.j.g){case 1:return Sft(t.n.a,e.n.a);case 2:return Sft(t.n.b,e.n.b);case 3:return Sft(e.n.a,t.n.a);case 4:return Sft(e.n.b,t.n.b);default:throw qw(new $v(a1t))}}function n$t(t){var e,n,i,r,a;for(Wz(a=new Q6((!t.a&&(t.a=new OL(PMe,t,5)),t.a).i+2),new PS(t.j,t.k)),QA(new FH(null,(!t.a&&(t.a=new OL(PMe,t,5)),new g1(t.a,16))),new Ib(a)),Wz(a,new PS(t.b,t.c)),e=1;e0&&(Zst(c,!1,(zht(),jCe)),Zst(c,!0,$Ce)),Det(e.g,new uC(t,n)),KW(t.g,e,n)}function r$t(){var t;for(r$t=M,Nee=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),Pee=P8(DNe,hXt,25,37,15,1),Bee=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),Fee=P8(LNe,zXt,25,37,14,1),t=2;t<=36;t++)Pee[t]=SQ(n.Math.pow(t,Nee[t])),Fee[t]=Dkt(gKt,Pee[t])}function a$t(t){var e;if(1!=(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i)throw qw(new jv(q5t+(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i));return e=new xy,gst(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82))&&zrt(e,YZt(t,gst(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82)),!1)),gst(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82))&&zrt(e,YZt(t,gst(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82)),!0)),e}function o$t(t,e){var n,i,r;for(r=!1,i=new cG(JL((e.d?t.a.c==(bQ(),eve)?fdt(e.b):ddt(e.b):t.a.c==(bQ(),tve)?fdt(e.b):ddt(e.b)).a.Kc(),new l));bDt(i);)if(n=zz(Y5(i),17),(Hv(t.a.f[t.a.g[e.b.p].p])||d5(n)||n.c.i.c!=n.d.i.c)&&!Hv(t.a.n[t.a.g[e.b.p].p])&&!Hv(t.a.n[t.a.g[e.b.p].p])&&(r=!0,$A(t.b,t.a.g[Nyt(n,e.b).p])))return e.c=!0,e.a=n,e;return e.c=r,e.a=null,e}function s$t(t,e,n,i,r){var a,o,s,c,u,l,h;for(TX(),yO(t,new Ws),s=new E2(t,0),h=new Nw,a=0;s.b2*a?(l=new Get(h),u=iU(o)/nU(o),c=xZt(l,e,new dy,n,i,r,u),YF(xM(l.e),c),h.c=P8(Ote,HWt,1,0,5,1),a=0,h.c[h.c.length]=l,h.c[h.c.length]=o,a=iU(l)*nU(l)+iU(o)*nU(o)):(h.c[h.c.length]=o,a+=iU(o)*nU(o));return h}function c$t(t,e,n){var i,r,a,o,s,c,u;if(0==(i=n.gc()))return!1;if(t.ej())if(c=t.fj(),kgt(t,e,n),o=1==i?t.Zi(3,null,n.Kc().Pb(),e,c):t.Zi(5,null,n,e,c),t.bj()){for(s=i<100?null:new $k(i),a=e+i,r=e;r0){for(s=0;s>16==-15&&t.Cb.nh()&&O9(new x7(t.Cb,9,13,n,t.c,cmt(q9(zz(t.Cb,59)),t))):aL(t.Cb,88)&&t.Db>>16==-23&&t.Cb.nh()&&(aL(e=t.c,88)||(wWt(),e=pOe),aL(n,88)||(wWt(),n=pOe),O9(new x7(t.Cb,9,10,n,e,cmt(o4(zz(t.Cb,26)),t)))))),t.c}function g$t(t,e){var n,i,r,a,o,s,c,u;for(DAt(e,"Hypernodes processing",1),i=new Wd(t.b);i.an);return r}function m$t(t,e){var n,i,r;i=0!=HOt(t.d,1),!Hv(AB(vEt(e.j,(hWt(),Qhe))))&&!Hv(AB(vEt(e.j,Ife)))||UI(vEt(e.j,(HZt(),Lpe)))===UI((vct(),Nme))?e.c.Tf(e.e,i):i=Hv(AB(vEt(e.j,Qhe))),FNt(t,e,i,!0),Hv(AB(vEt(e.j,Ife)))&&hct(e.j,Ife,(lN(),!1)),Hv(AB(vEt(e.j,Qhe)))&&(hct(e.j,Qhe,(lN(),!1)),hct(e.j,Ife,!0)),n=eSt(t,e);do{if(Lrt(t),0==n)return 0;r=n,FNt(t,e,i=!i,!1),n=eSt(t,e)}while(r>n);return r}function y$t(t,e,n){var i,r,a,o,s,c,u;if(e==n)return!0;if(e=gDt(t,e),n=gDt(t,n),i=Umt(e)){if((c=Umt(n))!=i)return!!c&&(o=i.Dj())==c.Dj()&&null!=o;if(!e.d&&(e.d=new OL(KDe,e,1)),r=(a=e.d).i,!n.d&&(n.d=new OL(KDe,n,1)),r==(u=n.d).i)for(s=0;s0,s=Pdt(e,a),RN(n?s.b:s.g,e),1==kdt(s).c.length&&r5(i,s,i.c.b,i.c),r=new rI(a,e),p3(t.o,r),v9(t.e.a,a))}function E$t(t,e){var i,r,a,o;return r=n.Math.abs(HG(t.b).a-HG(e.b).a),o=n.Math.abs(HG(t.b).b-HG(e.b).b),i=1,a=1,r>t.b.b/2+e.b.b/2&&(i=1-n.Math.min(n.Math.abs(t.b.c-(e.b.c+e.b.b)),n.Math.abs(t.b.c+t.b.b-e.b.c))/r),o>t.b.a/2+e.b.a/2&&(a=1-n.Math.min(n.Math.abs(t.b.d-(e.b.d+e.b.a)),n.Math.abs(t.b.d+t.b.a-e.b.d))/o),(1-n.Math.min(i,a))*n.Math.sqrt(r*r+o*o)}function T$t(t){var e,n,i;for(eYt(t,t.e,t.f,(pQ(),Lve),!0,t.c,t.i),eYt(t,t.e,t.f,Lve,!1,t.c,t.i),eYt(t,t.e,t.f,Nve,!0,t.c,t.i),eYt(t,t.e,t.f,Nve,!1,t.c,t.i),M$t(t,t.c,t.e,t.f,t.i),n=new E2(t.i,0);n.b=65;n--)WLe[n]=n-65<<24>>24;for(i=122;i>=97;i--)WLe[i]=i-97+26<<24>>24;for(r=57;r>=48;r--)WLe[r]=r-48+52<<24>>24;for(WLe[43]=62,WLe[47]=63,a=0;a<=25;a++)KLe[a]=65+a&VKt;for(o=26,c=0;o<=51;++o,c++)KLe[o]=97+c&VKt;for(t=52,s=0;t<=61;++t,s++)KLe[t]=48+s&VKt;KLe[62]=43,KLe[63]=47}function I$t(t,e){var i,r,a,o,s,c,u,l,h,f,d;if(t.dc())return new Uk;for(u=0,h=0,r=t.Kc();r.Ob();)a=zz(r.Pb(),37).f,u=n.Math.max(u,a.a),h+=a.a*a.b;for(u=n.Math.max(u,n.Math.sqrt(h)*Uv(EB(vEt(zz(t.Kc().Pb(),37),(HZt(),_pe))))),f=0,d=0,c=0,i=e,s=t.Kc();s.Ob();)f+(l=(o=zz(s.Pb(),37)).f).a>u&&(f=0,d+=c+e,c=0),tRt(o,f,d),i=n.Math.max(i,f+l.a),c=n.Math.max(c,l.b),f+=l.a+e;return new PS(i+e,d+c+e)}function M$t(t,e,n,i,r){var a,o,s,c,u,l,h;for(o=new Wd(e);o.aa)return kYt(),cIe;break;case 4:case 3:if(c<0)return kYt(),uIe;if(c+t.f>r)return kYt(),TIe}return(o=(s+t.g/2)/a)+(n=(c+t.f/2)/r)<=1&&o-n<=0?(kYt(),SIe):o+n>=1&&o-n>=0?(kYt(),cIe):n<.5?(kYt(),uIe):(kYt(),TIe)}function O$t(t,e,n,i,r){var a,o;if(a=adt(n0(e[0],ZXt),n0(i[0],ZXt)),t[0]=pU(a),a=xG(a,32),n>=r){for(o=1;o0&&(r.b[o++]=0,r.b[o++]=a.b[0]-1),e=1;e0&&(Kf(c,c.d-r.d),r.c==(M6(),Ave)&&Zf(c,c.a-r.d),c.d<=0&&c.i>0&&r5(e,c,e.c.b,e.c));for(a=new Wd(t.f);a.a0&&(Xf(s,s.i-r.d),r.c==(M6(),Ave)&&Wf(s,s.b-r.d),s.i<=0&&s.d>0&&r5(n,s,n.c.b,n.c))}function B$t(t,e,n){var i,r,a,o,s,c,u,l;for(DAt(n,"Processor compute fanout",1),OY(t.b),OY(t.a),s=null,a=lwt(e.b,0);!s&&a.b!=a.d.c;)Hv(AB(vEt(u=zz(d3(a),86),(UHt(),pxe))))&&(s=u);for(r5(c=new VA,s,c.c.b,c.c),_Yt(t,c),l=lwt(e.b,0);l.b!=l.d.c;)o=TB(vEt(u=zz(d3(l),86),(UHt(),rxe))),r=null!=TQ(t.b,o)?zz(TQ(t.b,o),19).a:0,hct(u,ixe,rft(r)),i=1+(null!=TQ(t.a,o)?zz(TQ(t.a,o),19).a:0),hct(u,exe,rft(i));HTt(n)}function F$t(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;for(h=x_t(t,n),s=0;s0),i.a.Xb(i.c=--i.b),l>h+s&&hW(i);for(a=new Wd(f);a.a0),i.a.Xb(i.c=--i.b)}}function R$t(){var t,e,n,i,r,a;if(pWt(),SNe)return SNe;for(lqt(t=new E0(4),tZt(mte,!0)),KUt(t,tZt("M",!0)),KUt(t,tZt("C",!0)),a=new E0(4),i=0;i<11;i++)QPt(a,i,i);return lqt(e=new E0(4),tZt("M",!0)),QPt(e,4448,4607),QPt(e,65438,65439),nHt(r=new rO(2),t),nHt(r,uNe),(n=new rO(2)).$l(bU(a,tZt("L",!0))),n.$l(e),n=new l4(3,n),n=new YY(r,n),SNe=n}function j$t(t){var e,n;if(!Qat(e=TB(tOt(t,(lWt(),nTe))),t)&&!C8(t,yCe)&&(0!=(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i||Hv(AB(tOt(t,TTe))))){if(null!=e&&0!=REt(e).length)throw wGt(t,n=cM(cM(new fN("Layout algorithm '"),e),"' not found for ")),qw(new rx(n.a));if(!Qat(p1t,t))throw wGt(t,n=cM(cM(new fN("Unable to load default layout algorithm "),p1t)," for unconfigured node ")),qw(new rx(n.a))}}function $$t(t){var e,i,r,a,o,s,c,u,l,h,f,d,g;if(i=t.i,e=t.n,0==t.b)for(g=i.c+e.b,d=i.b-e.b-e.c,u=0,h=(s=t.a).length;u0&&(f-=r[0]+t.c,r[0]+=t.c),r[2]>0&&(f-=r[2]+t.c),r[1]=n.Math.max(r[1],f),YU(t.a[1],i.c+e.b+r[0]-(r[1]-f)/2,r[1]);for(c=0,l=(o=t.a).length;c0?(t.n.c.length-1)*t.i:0,i=new Wd(t.n);i.a1)for(i=lwt(r,0);i.b!=i.d.c;)for(a=0,s=new Wd((n=zz(d3(i),231)).e);s.a0&&(e[0]+=t.c,f-=e[0]),e[2]>0&&(f-=e[2]+t.c),e[1]=n.Math.max(e[1],f),ZU(t.a[1],r.d+i.d+e[0]-(e[1]-f)/2,e[1]);else for(g=r.d+i.d,d=r.a-i.d-i.a,u=0,h=(s=t.a).length;u=0&&a!=n)throw qw(new jv(s8t));for(r=0,c=0;c0||0==Mdt(a.b.d,t.b.d+t.b.a)&&r.b<0||0==Mdt(a.b.d+a.b.a,t.b.d)&&r.b>0){c=0;break}}else c=n.Math.min(c,HSt(t,a,r));c=n.Math.min(c,K$t(t,o,c,r))}return c}function X$t(t,e){var n,i,r,a,o,s;if(t.b<2)throw qw(new jv("The vector chain must contain at least a source and a target point."));for(CP(0!=t.b),SD(e,(i=zz(t.a.a.c,8)).a,i.b),s=new aP((!e.a&&(e.a=new OL(PMe,e,5)),e.a)),a=lwt(t,1);a.aUv(fL(o.g,o.d[0]).a)?(CP(c.b>0),c.a.Xb(c.c=--c.b),vF(c,o),r=!0):s.e&&s.e.gc()>0&&(a=(!s.e&&(s.e=new Nw),s.e).Mc(e),u=(!s.e&&(s.e=new Nw),s.e).Mc(n),(a||u)&&((!s.e&&(s.e=new Nw),s.e).Fc(o),++o.c));r||(i.c[i.c.length]=o)}function ozt(t){var e,n,i;if(mD(zz(vEt(t,(HZt(),nwe)),98)))for(n=new Wd(t.j);n.a>>0).toString(16),e.length-2,e.length):t>=qXt?"\\v"+hP(e="0"+(t>>>0).toString(16),e.length-6,e.length):""+String.fromCharCode(t&VKt)}return n}function czt(t,e){var n,i,r,a,o,s,c,u,l,h;if(o=t.e,0==(c=e.e))return t;if(0==o)return 0==e.e?e:new fY(-e.e,e.d,e.a);if((a=t.d)+(s=e.d)==2)return n=n0(t.a[0],ZXt),i=n0(e.a[0],ZXt),o<0&&(n=k9(n)),c<0&&(i=k9(i)),ewt(rdt(n,i));if(-1==(r=a!=s?a>s?1:-1:Tut(t.a,e.a,a)))h=-c,l=o==c?p6(e.a,s,t.a,a):N8(e.a,s,t.a,a);else if(h=o,o==c){if(0==r)return DBt(),ine;l=p6(t.a,a,e.a,s)}else l=N8(t.a,a,e.a,s);return Z0(u=new fY(h,l.length,l)),u}function uzt(t){var e,n,i,r,a,o;for(this.e=new Nw,this.a=new Nw,n=t.b-1;n<3;n++)RP(t,0,zz(Fwt(t,0),8));if(t.b<4)throw qw(new jv("At (least dimension + 1) control points are necessary!"));for(this.b=3,this.d=!0,this.c=!1,MOt(this,t.b+this.b-1),o=new Nw,a=new Wd(this.e),e=0;e=e.o&&n.f<=e.f||.5*e.a<=n.f&&1.5*e.a>=n.f){if((a=zz(PH(e.n,e.n.c.length-1),211)).e+a.d+n.g+r<=i&&(zz(PH(e.n,e.n.c.length-1),211).f-t.f+n.f<=t.b||1==t.a.c.length))return xdt(e,n),!0;if(e.s+n.g<=i&&(e.t+e.d+n.f+r<=t.b||1==t.a.c.length))return Wz(e.b,n),o=zz(PH(e.n,e.n.c.length-1),211),Wz(e.n,new FQ(e.s,o.f+o.a+e.i,e.i)),lyt(zz(PH(e.n,e.n.c.length-1),211),n),q$t(e,n),!0}return!1}function fzt(t,e,n){var i,r,a,o;return t.ej()?(r=null,a=t.fj(),i=t.Zi(1,o=ctt(t,e,n),n,e,a),t.bj()&&!(t.ni()&&null!=o?Pht(o,n):UI(o)===UI(n))?(null!=o&&(r=t.dj(o,r)),r=t.cj(n,r),t.ij()&&(r=t.lj(o,n,r)),r?(r.Ei(i),r.Fi()):t.$i(i)):(t.ij()&&(r=t.lj(o,n,r)),r?(r.Ei(i),r.Fi()):t.$i(i)),o):(o=ctt(t,e,n),t.bj()&&!(t.ni()&&null!=o?Pht(o,n):UI(o)===UI(n))&&(r=null,null!=o&&(r=t.dj(o,null)),(r=t.cj(n,r))&&r.Fi()),o)}function dzt(t,e){var i,r,a,o,s,c,u;e%=24,t.q.getHours()!=e&&((i=new n.Date(t.q.getTime())).setDate(i.getDate()+1),(s=t.q.getTimezoneOffset()-i.getTimezoneOffset())>0&&(c=s/60|0,u=s%60,r=t.q.getDate(),t.q.getHours()+c>=24&&++r,a=new n.Date(t.q.getFullYear(),t.q.getMonth(),r,e+c,t.q.getMinutes()+u,t.q.getSeconds(),t.q.getMilliseconds()),t.q.setTime(a.getTime()))),o=t.q.getTime(),t.q.setTime(o+36e5),t.q.getHours()!=e&&t.q.setTime(o)}function gzt(t,e){var n,i,r,a;if(DAt(e,"Path-Like Graph Wrapping",1),0!=t.b.c.length)if(null==(r=new TDt(t)).i&&(r.i=Krt(r,new xa)),n=Uv(r.i)*r.f/(null==r.i&&(r.i=Krt(r,new xa)),Uv(r.i)),r.b>n)HTt(e);else{switch(zz(vEt(t,(HZt(),zwe)),337).g){case 2:a=new Aa;break;case 0:a=new ga;break;default:a=new Ea}if(i=a.Vf(t,r),!a.Wf())switch(zz(vEt(t,Zwe),338).g){case 2:i=WSt(r,i);break;case 1:i=jAt(r,i)}rHt(t,r,i),HTt(e)}else HTt(e)}function pzt(t,e){var n,i,r,a;if(h1(t.d,t.e),t.c.a.$b(),0!=Uv(EB(vEt(e.j,(HZt(),Ipe))))||0!=Uv(EB(vEt(e.j,Ipe))))for(n=tJt,UI(vEt(e.j,Lpe))!==UI((vct(),Nme))&&hct(e.j,(hWt(),Qhe),(lN(),!0)),a=zz(vEt(e.j,Pwe),19).a,r=0;r(f1(a+1,e.c.length),zz(e.c[a+1],19)).a-i&&++s,Wz(r,(f1(a+s,e.c.length),zz(e.c[a+s],19))),o+=(f1(a+s,e.c.length),zz(e.c[a+s],19)).a-i,++n;n1&&(c>iU(s)*nU(s)/2||0==o.b)&&(h=new Get(f),l=iU(s)/nU(s),u=xZt(h,e,new dy,n,i,r,l),YF(xM(h.e),u),s=h,d.c[d.c.length]=h,c=0,f.c=P8(Ote,HWt,1,0,5,1)));return wst(d,f),d}function vzt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p;if(n.mh(e)&&(l=(d=e)?zz(i,49).xh(d):null))if(p=n.bh(e,t.a),(g=e.t)>1||-1==g)if(h=zz(p,69),f=zz(l,69),h.dc())f.$b();else for(o=!!Imt(e),a=0,s=t.a?h.Kc():h.Zh();s.Ob();)u=zz(s.Pb(),56),(r=zz(ftt(t,u),56))?(o?-1==(c=f.Xc(r))?f.Xh(a,r):a!=c&&f.ji(a,r):f.Xh(a,r),++a):t.b&&!o&&(f.Xh(a,u),++a);else null==p?l.Wb(null):null==(r=ftt(t,p))?t.b&&!Imt(e)&&l.Wb(p):l.Wb(r)}function xzt(t,e){var i,r,a,o,s,c,u,h;for(i=new Ln,a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)if(!d5(r=zz(Y5(a),17))&&iAt(c=r.c.i,Zse)){if(-1==(h=XBt(t,c,Zse,Yse)))continue;i.b=n.Math.max(i.b,h),!i.a&&(i.a=new Nw),Wz(i.a,c)}for(s=new cG(JL(ddt(e).a.Kc(),new l));bDt(s);)if(!d5(o=zz(Y5(s),17))&&iAt(u=o.d.i,Yse)){if(-1==(h=XBt(t,u,Yse,Zse)))continue;i.d=n.Math.max(i.d,h),!i.c&&(i.c=new Nw),Wz(i.c,u)}return i}function kzt(t){var e,n,i,r;if(LMt(),e=SQ(t),t1e6)throw qw(new Mv("power of ten too big"));if(t<=FWt)return U5(cMt(sne[1],e),e);for(r=i=cMt(sne[1],FWt),n=fot(t-FWt),e=SQ(t%FWt);Xlt(n,FWt)>0;)r=Ntt(r,i),n=rdt(n,FWt);for(r=U5(r=Ntt(r,cMt(sne[1],e)),FWt),n=fot(t-FWt);Xlt(n,FWt)>0;)r=U5(r,FWt),n=rdt(n,FWt);return r=U5(r,e)}function _zt(t,e){var n,i,r,a,o,s,c,u;for(DAt(e,"Hierarchical port dummy size processing",1),s=new Nw,u=new Nw,n=2*Uv(EB(vEt(t,(HZt(),xwe)))),r=new Wd(t.b);r.au&&i>u)){r=!1,n.n&&Mq(n,"bk node placement breaks on "+s+" which should have been after "+l);break}l=s,u=Uv(e.p[s.p])+Uv(e.d[s.p])+s.o.b+s.d.a}if(!r)break}return n.n&&Mq(n,e+" is feasible: "+r),r}function Dzt(t,e,n,i){var r,a,o,s,c,u,l;for(s=-1,l=new Wd(t);l.a=b&&t.e[u.p]>g*t.b||y>=i*b)&&(f.c[f.c.length]=c,c=new Nw,zrt(s,o),o.a.$b(),l-=h,d=n.Math.max(d,l*t.b+p),l+=y,m=y,y=0,h=0,p=0);return new rI(d,f)}function Pzt(t){var e,n,i,r,a,o,s,c,u,l,h,f;for(n=new Rd(new Md(t.c.b).a.vc().Kc());n.a.Ob();)s=zz(n.a.Pb(),42),null==(r=(e=zz(s.dd(),149)).a)&&(r=""),!(i=jB(t.c,r))&&0==r.length&&(i=xht(t)),i&&!xgt(i.c,e,!1)&&Bq(i.c,e);for(o=lwt(t.a,0);o.b!=o.d.c;)a=zz(d3(o),478),u=A5(t.c,a.a),f=A5(t.c,a.b),u&&f&&Bq(u.c,new rI(f,a.c));for(vX(t.a),h=lwt(t.b,0);h.b!=h.d.c;)l=zz(d3(h),478),e=RB(t.c,l.a),c=A5(t.c,l.b),e&&c&&BE(e,c,l.c);vX(t.b)}function Bzt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;a=new Cf(t),p5((o=new bxt).g),p5(o.j),OY(o.b),p5(o.d),p5(o.i),OY(o.k),OY(o.c),OY(o.e),d=gIt(o,a,null),DOt(o,a),r=d,e&&(s=iqt(u=new Cf(e)),yTt(r,Sst(Ux(tEe,1),HWt,527,0,[s]))),f=!1,h=!1,n&&(u=new Cf(n),d8t in u.a&&(f=GQ(u,d8t).ge().a),g8t in u.a&&(h=GQ(u,g8t).ge().a)),l=Ok(znt(new Zy,f),h),qTt(new ls,r,l),d8t in a.a&&ret(a,d8t,null),(f||h)&&(ezt(l,c=new wv,f,h),ret(a,d8t,c)),i=new Zb(o),Zct(new MD(r),i)}function Fzt(t,e,n){var i,r,a,o,s,c,u,l,h;for(o=new Qxt,u=Sst(Ux(DNe,1),hXt,25,15,[0]),r=-1,a=0,i=0,c=0;c0)){if(r=-1,32==hK(l.c,0)){if(h=u[0],vtt(e,u),u[0]>h)continue}else if(OV(e,l.c,u[0])){u[0]+=l.c.length;continue}return 0}if(r<0&&l.a&&(r=c,a=u[0],i=0),r>=0){if(s=l.b,c==r&&0==(s-=i++))return 0;if(!NYt(e,u,l,s,o)){c=r-1,u[0]=a;continue}}else if(r=-1,!NYt(e,u,l,0,o))return 0}return bYt(o,n)?u[0]:0}function Rzt(t){var e,n,i,r,a,o;if(!t.f){if(o=new Ec,a=new Ec,null==(e=COe).a.zc(t,e)){for(r=new DL(xV(t));r.e!=r.i.gc();)wZ(o,Rzt(zz(kwt(r),26)));e.a.Bc(t),e.a.gc()}for(!t.s&&(t.s=new nY($De,t,21,17)),i=new DL(t.s);i.e!=i.i.gc();)aL(n=zz(kwt(i),170),99)&&h7(a,zz(n,18));olt(a),t.r=new Aq(t,(zz(Ket(XX((XZ(),eOe).o),6),18),a.i),a.g),wZ(o,t.r),olt(o),t.f=new NM((zz(Ket(XX(eOe.o),5),18),o.i),o.g),C5(t).b&=-3}return t.f}function jzt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g;for(o=t.o,i=P8(DNe,hXt,25,o,15,1),r=P8(DNe,hXt,25,o,15,1),n=t.p,e=P8(DNe,hXt,25,n,15,1),a=P8(DNe,hXt,25,n,15,1),u=0;u=0&&!yyt(t,l,h);)--h;r[l]=h}for(d=0;d=0&&!yyt(t,s,g);)--s;a[g]=s}for(c=0;ce[f]&&fi[c]&&zFt(t,c,f,!1,!0)}function $zt(t){var e,n,i,r,a,o,s,c;n=Hv(AB(vEt(t,(fFt(),zae)))),a=t.a.c.d,s=t.a.d.d,n?(o=xL(ZF(new PS(s.a,s.b),a),.5),c=xL(zO(t.e),.5),e=ZF(YF(new PS(a.a,a.b),o),c),qP(t.d,e)):(r=Uv(EB(vEt(t.a,roe))),i=t.d,a.a>=s.a?a.b>=s.b?(i.a=s.a+(a.a-s.a)/2+r,i.b=s.b+(a.b-s.b)/2-r-t.e.b):(i.a=s.a+(a.a-s.a)/2+r,i.b=a.b+(s.b-a.b)/2+r):a.b>=s.b?(i.a=a.a+(s.a-a.a)/2+r,i.b=s.b+(a.b-s.b)/2+r):(i.a=a.a+(s.a-a.a)/2+r,i.b=a.b+(s.b-a.b)/2-r-t.e.b))}function zzt(t,e){var n,i,r,a,o,s,c;if(null==t)return null;if(0==(a=t.length))return"";for(c=P8(MNe,KKt,25,a,15,1),j8(0,a,t.length),j8(0,a,c.length),VY(t,0,a,c,0),n=null,s=e,r=0,o=0;r0?hP(n.a,0,a-1):"":t.substr(0,a-1):n?n.a:t}function qzt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,ZQt),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new ae))),s2(t,ZQt,WQt,vwt(_ae)),s2(t,ZQt,KQt,vwt(wae)),s2(t,ZQt,XQt,vwt(fae)),s2(t,ZQt,VQt,vwt(mae)),s2(t,ZQt,WVt,vwt(xae)),s2(t,ZQt,KVt,vwt(vae)),s2(t,ZQt,ZVt,vwt(kae)),s2(t,ZQt,XVt,vwt(yae)),s2(t,ZQt,qQt,vwt(gae)),s2(t,ZQt,HQt,vwt(dae)),s2(t,ZQt,UQt,vwt(pae)),s2(t,ZQt,GQt,vwt(bae))}function Hzt(t,e,n,i){var r,a,o,s,c,u,l;if(zf(a=new Lmt(t),(cTt(),Ise)),hct(a,(HZt(),nwe),(V_t(),ZSe)),r=0,e){for(hct(o=new ITt,(hWt(),pfe),e),hct(a,pfe,e.i),USt(o,(kYt(),SIe)),SJ(o,a),u=0,l=(c=J0(e.e)).length;u0)if((i-=r.length-e)>=0){for(a.a+="0.";i>Uee.length;i-=Uee.length)NH(a,Uee);bF(a,Uee,SQ(i)),cM(a,r.substr(e))}else cM(a,hP(r,e,SQ(i=e-i))),a.a+=".",cM(a,tM(r,SQ(i)));else{for(cM(a,r.substr(e));i<-Uee.length;i+=Uee.length)NH(a,Uee);bF(a,Uee,SQ(-i))}return a.a}function Yzt(t,e,i,r){var a,o,s,c,u,l,h,f,d;return l=(u=ZF(new PS(i.a,i.b),t)).a*e.b-u.b*e.a,h=e.a*r.b-e.b*r.a,f=(u.a*r.b-u.b*r.a)/h,d=l/h,0==h?0==l?(o=W8(t,a=YF(new PS(i.a,i.b),xL(new PS(r.a,r.b),.5))),s=W8(YF(new PS(t.a,t.b),e),a),c=.5*n.Math.sqrt(r.a*r.a+r.b*r.b),o=0&&f<=1&&d>=0&&d<=1?YF(new PS(t.a,t.b),xL(new PS(e.a,e.b),f)):null}function Zzt(t,e,n){var i,r,a,o,s;if(i=zz(vEt(t,(HZt(),Npe)),21),n.a>e.a&&(i.Hc((p_t(),WEe))?t.c.a+=(n.a-e.a)/2:i.Hc(XEe)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(i.Hc((p_t(),QEe))?t.c.b+=(n.b-e.b)/2:i.Hc(VEe)&&(t.c.b+=n.b-e.b)),zz(vEt(t,(hWt(),Jhe)),21).Hc((gBt(),fhe))&&(n.a>e.a||n.b>e.b))for(s=new Wd(t.a);s.ae.a&&(i.Hc((p_t(),WEe))?t.c.a+=(n.a-e.a)/2:i.Hc(XEe)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(i.Hc((p_t(),QEe))?t.c.b+=(n.b-e.b)/2:i.Hc(VEe)&&(t.c.b+=n.b-e.b)),zz(vEt(t,(hWt(),Jhe)),21).Hc((gBt(),fhe))&&(n.a>e.a||n.b>e.b))for(o=new Wd(t.a);o.ae&&(r=0,a+=u.b+n,l.c[l.c.length]=u,nit(u=new P0(a,n),i=new sut(0,u.f,u,n)),r=0),0==i.b.c.length||s.f>=i.o&&s.f<=i.f||.5*i.a<=s.f&&1.5*i.a>=s.f?xdt(i,s):(nit(u,o=new sut(i.s+i.r+n,u.f,u,n)),xdt(o,s)),r=s.i+s.g;return l.c[l.c.length]=u,l}function Qzt(t){var e,n,i,r,a,o;if(!t.a){if(t.o=null,o=new bw(t),e=new Tc,null==(n=COe).a.zc(t,n)){for(a=new DL(xV(t));a.e!=a.i.gc();)wZ(o,Qzt(zz(kwt(a),26)));n.a.Bc(t),n.a.gc()}for(!t.s&&(t.s=new nY($De,t,21,17)),r=new DL(t.s);r.e!=r.i.gc();)aL(i=zz(kwt(r),170),322)&&h7(e,zz(i,34));olt(e),t.k=new _q(t,(zz(Ket(XX((XZ(),eOe).o),7),18),e.i),e.g),wZ(o,t.k),olt(o),t.a=new NM((zz(Ket(XX(eOe.o),4),18),o.i),o.g),C5(t).b&=-2}return t.a}function Jzt(t,e,n,i,r,a,o){var s,c,u,l,h;return l=!1,s=bNt(n.q,e.f+e.b-n.q.f),!((h=r-(n.q.e+s-o))=(f1(a,t.c.length),zz(t.c[a],200)).e,!((u=oqt(i,h,!1).a)>e.b&&!c)&&((c||u<=e.b)&&(c&&u>e.b?(n.d=u,w7(n,zTt(n,u))):(s_t(n.q,s),n.c=!0),w7(i,r-(n.s+n.r)),Emt(i,n.q.e+n.q.d,e.f),nit(e,i),t.c.length>a&&(Ext((f1(a,t.c.length),zz(t.c[a],200)),i),0==(f1(a,t.c.length),zz(t.c[a],200)).a.c.length&&u6(t,a)),l=!0),l))}function tqt(t,e,n,i){var r,a,o,s,c,u,l;if(l=sPt(t.e.Tg(),e),r=0,a=zz(t.g,119),c=null,JE(),zz(e,66).Oj()){for(s=0;st.o.a&&(h=(u-t.o.a)/2,c.b=n.Math.max(c.b,h),c.c=n.Math.max(c.c,h))}}function iqt(t){var e,n,i,r,a,o;for(aD(r=new F0,(Pst(),QAe)),i=new Td(new Qv(new AA(t,_rt(t,P8(Vee,lKt,2,0,6,1))).b));i.b0?t.i:0)>e&&u>0&&(o=0,s+=u+t.i,a=n.Math.max(a,d),r+=u+t.i,u=0,d=0,i&&(++f,Wz(t.n,new FQ(t.s,s,t.i))),c=0),d+=l.g+(c>0?t.i:0),u=n.Math.max(u,l.f),i&&lyt(zz(PH(t.n,f),211),l),o+=l.g+(c>0?t.i:0),++c;return a=n.Math.max(a,d),r+=u,i&&(t.r=a,t.d=r,xvt(t.j)),new YK(t.s,t.t,a,r)}function sqt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;if(OA(),TY(t,"src"),TY(n,"dest"),f=nut(t),c=nut(n),wq(0!=(4&f.i),"srcType is not an array"),wq(0!=(4&c.i),"destType is not an array"),h=f.c,o=c.c,wq(0!=(1&h.i)?h==o:0==(1&o.i),"Array types don't match"),d=t.length,u=n.length,e<0||i<0||r<0||e+r>d||i+r>u)throw qw(new hm);if(0==(1&h.i)&&f!=c)if(l=int(t),a=int(n),UI(t)===UI(n)&&ei;)OZ(a,s,l[--e]);else for(s=i+r;i0&&$St(t,e,n,i,r,!0)}function cqt(){cqt=M,ane=Sst(Ux(DNe,1),hXt,25,15,[$Kt,1162261467,DKt,1220703125,362797056,1977326743,DKt,387420489,OXt,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,DKt,1291467969,1544804416,1838265625,60466176]),one=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}function uqt(t){var e,n,i,r,a,o,s;for(i=new Wd(t.b);i.a=t.b.length?(a[r++]=o.b[i++],a[r++]=o.b[i++]):i>=o.b.length?(a[r++]=t.b[n++],a[r++]=t.b[n++]):o.b[i]0?t.i:0)),++e;for(egt(t.n,u),t.d=i,t.r=r,t.g=0,t.f=0,t.e=0,t.o=RXt,t.p=RXt,o=new Wd(t.b);o.a0&&(!(r=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),r),'"'))),!t.b&&(t.b=new lR(RMe,t,4,7)),n=!(t.b.i<=1&&(!t.c&&(t.c=new lR(RMe,t,5,8)),t.c.i<=1)),e.a+=n?" [":" ",cM(e,QL(new yx,new DL(t.b))),n&&(e.a+="]"),e.a+=i1t,n&&(e.a+="["),cM(e,QL(new yx,new DL(t.c))),n&&(e.a+="]"),e.a)}function gqt(t,e){var n,i,r,a,o,s,c;if(t.a){if(c=null,null!=(s=t.a.ne())?e.a+=""+s:null!=(o=t.a.Dj())&&(-1!=(a=UM(o,QAt(91)))?(c=o.substr(a),e.a+=""+hP(null==o?YWt:(xW(o),o),0,a)):e.a+=""+o),t.d&&0!=t.d.i){for(r=!0,e.a+="<",i=new DL(t.d);i.e!=i.i.gc();)n=zz(kwt(i),87),r?r=!1:e.a+=zWt,gqt(n,e);e.a+=">"}null!=c&&(e.a+=""+c)}else t.e?null!=(s=t.e.zb)&&(e.a+=""+s):(e.a+="?",t.b?(e.a+=" super ",gqt(t.b,e)):t.f&&(e.a+=" extends ",gqt(t.f,e)))}function pqt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E;for(v=t.c,x=e.c,n=_9(v.a,t,0),i=_9(x.a,e,0),m=zz(Bgt(t,(sit(),qme)).Kc().Pb(),11),A=zz(Bgt(t,Hme).Kc().Pb(),11),y=zz(Bgt(e,qme).Kc().Pb(),11),E=zz(Bgt(e,Hme).Kc().Pb(),11),b=J0(m.e),k=J0(A.g),w=J0(y.e),_=J0(E.g),Vvt(t,i,x),u=0,d=(a=w).length;ul?new GJ((M6(),Eve),i,e,u-l):u>0&&l>0&&(new GJ((M6(),Eve),e,i,0),new GJ(Eve,i,e,0))),o)}function mqt(t,e){var i,r,a,o,s;for(s=new cut(new Cd(t.f.b).a);s.b;){if(a=zz((o=nnt(s)).cd(),594),1==e){if(a.gf()!=(zht(),qCe)&&a.gf()!=RCe)continue}else if(a.gf()!=(zht(),jCe)&&a.gf()!=$Ce)continue;switch(r=zz(zz(o.dd(),46).b,81),i=zz(zz(o.dd(),46).a,189).c,a.gf().g){case 2:r.g.c=t.e.a,r.g.b=n.Math.max(1,r.g.b+i);break;case 1:r.g.c=r.g.c+i,r.g.b=n.Math.max(1,r.g.b-i);break;case 4:r.g.d=t.e.b,r.g.a=n.Math.max(1,r.g.a+i);break;case 3:r.g.d=r.g.d+i,r.g.a=n.Math.max(1,r.g.a-i)}}}function yqt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(c=P8(DNe,hXt,25,e.b.c.length,15,1),l=P8(Ose,LKt,267,e.b.c.length,0,1),u=P8(Mse,s1t,10,e.b.c.length,0,1),d=0,g=(f=t.a).length;d0&&u[r]&&(p=RO(t.b,u[r],a)),b=n.Math.max(b,a.c.c.b+p);for(o=new Wd(h.e);o.a1)throw qw(new jv(M9t));c||(a=J3(e,i.Kc().Pb()),o.Fc(a))}return uct(t,ACt(t,e,n),o)}function Aqt(t,e){var n,i,r,a;for(Vet(e.b.j),QA(OK(new FH(null,new g1(e.d,16)),new aa),new oa),a=new Wd(e.d);a.at.o.b)return!1;if(n=sdt(t,cIe),e.d+e.a+(n.gc()-1)*r>t.o.b)return!1}return!0}function Lqt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;if(o=t.e,c=e.e,0==o)return e;if(0==c)return t;if((a=t.d)+(s=e.d)==2)return n=n0(t.a[0],ZXt),i=n0(e.a[0],ZXt),o==c?(g=pU(l=adt(n,i)),0==(d=pU(kG(l,32)))?new Z6(o,g):new fY(o,2,Sst(Ux(DNe,1),hXt,25,15,[g,d]))):ewt(o<0?rdt(i,n):rdt(n,i));if(o==c)f=o,h=a>=s?N8(t.a,a,e.a,s):N8(e.a,s,t.a,a);else{if(0==(r=a!=s?a>s?1:-1:Tut(t.a,e.a,a)))return DBt(),ine;1==r?(f=o,h=p6(t.a,a,e.a,s)):(f=c,h=p6(e.a,s,t.a,a))}return Z0(u=new fY(f,h.length,h)),u}function Nqt(t,e,i,r,a,o,s){var c,u,l,h,f,d,g;return f=Hv(AB(vEt(e,(HZt(),Mbe)))),d=null,o==(sit(),qme)&&r.c.i==i?d=r.c:o==Hme&&r.d.i==i&&(d=r.d),(l=s)&&f&&!d?(Wz(l.e,r),g=n.Math.max(Uv(EB(vEt(l.d,obe))),Uv(EB(vEt(r,obe)))),hct(l.d,obe,g)):(kYt(),h=CIe,d?h=d.j:mD(zz(vEt(i,nwe),98))&&(h=o==qme?SIe:cIe),u=Bqt(t,e,i,o,h,r),c=W5((mW(i),r)),o==qme?(TJ(c,zz(PH(u.j,0),11)),EJ(c,a)):(TJ(c,a),EJ(c,zz(PH(u.j,0),11))),l=new Yht(r,c,u,zz(vEt(u,(hWt(),pfe)),11),o,!d)),JIt(t.a,r,new Lj(l.d,e,o)),l}function Pqt(t,e){var n,i,r,a,o,s,c,u,l,h;if(l=null,t.d&&(l=zz(TQ(t.d,e),138)),!l){if(h=(a=t.a.Mh()).i,!t.d||NA(t.d)!=h){for(c=new Pw,t.d&&Eat(c,t.d),s=u=c.f.c+c.g.c;s0?(d=(g-1)*n,s&&(d+=i),l&&(d+=i),d=t.b[r+1])r+=2;else{if(!(n0)for(i=new ej(zz(l6(t.a,a),21)),TX(),yO(i,new jg(e)),r=new E2(a.b,0);r.bx)?(u=2,s=FWt):0==u?(u=1,s=_):(u=0,s=_):(d=_>=s||s-_0?1:GM(isNaN(r),isNaN(0)))>=0^(ait(O3t),(n.Math.abs(c)<=O3t||0==c||isNaN(c)&&isNaN(0)?0:c<0?-1:c>0?1:GM(isNaN(c),isNaN(0)))>=0)?n.Math.max(c,r):(ait(O3t),(n.Math.abs(r)<=O3t||0==r||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:GM(isNaN(r),isNaN(0)))>0?n.Math.sqrt(c*c+r*r):-n.Math.sqrt(c*c+r*r))}function nHt(t,e){var n,i,r,a,o;if(e)if(!t.a&&(t.a=new jm),2!=t.e)if(1!=e.e)0!=(o=t.a.a.c.length)?0!=(a=zz(dW(t.a,o-1),117)).e&&10!=a.e||0!=e.e&&10!=e.e?Sm(t.a,e):(0==e.e||e.bm().length,0==a.e?(n=new Cx,(i=a._l())>=qXt?aM(n,Wft(i)):NZ(n,i&VKt),a=new mQ(10,null,0),xY(t.a,a,o-1)):(a.bm().length,aM(n=new Cx,a.bm())),0==e.e?(i=e._l())>=qXt?aM(n,Wft(i)):NZ(n,i&VKt):aM(n,e.bm()),zz(a,521).b=n.a):Sm(t.a,e);else for(r=0;r0&&i>=-6?i>=0?xJ(a,n-SQ(t.e),String.fromCharCode(46)):(a.a=hP(a.a,0,e-1)+"0."+tM(a.a,e-1),xJ(a,e+1,qpt(Uee,0,-SQ(i)-1))):(n-e>=1&&(xJ(a,e,String.fromCharCode(46)),++n),xJ(a,n,String.fromCharCode(69)),i>0&&xJ(a,++n,String.fromCharCode(43)),xJ(a,++n,""+mG(fot(i)))),t.g=a.a,t.g))}function rHt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(!n.dc()){for(o=0,l=0,f=zz((i=n.Kc()).Pb(),19).a;o1&&(c=u.mg(c,t.a,s));return 1==c.c.length?zz(PH(c,c.c.length-1),220):2==c.c.length?zqt((f1(0,c.c.length),zz(c.c[0],220)),(f1(1,c.c.length),zz(c.c[1],220)),o,a):null}function cHt(t){var e,i,r,a,o,s;for(Det(t.a,new Jt),i=new Wd(t.a);i.a=n.Math.abs(r.b)?(r.b=0,o.d+o.a>s.d&&o.ds.c&&o.c0){if(e=new BI(t.i,t.g),a=(n=t.i)<100?null:new $k(n),t.ij())for(i=0;i0){for(s=t.g,u=t.i,o6(t),a=u<100?null:new $k(u),i=0;i>13|(15&t.m)<<9,r=t.m>>4&8191,a=t.m>>17|(255&t.h)<<5,o=(1048320&t.h)>>8,b=i*(s=8191&e.l),w=r*s,m=a*s,y=o*s,0!=(c=e.l>>13|(15&e.m)<<9)&&(b+=n*c,w+=i*c,m+=r*c,y+=a*c),0!=(u=e.m>>4&8191)&&(w+=n*u,m+=i*u,y+=r*u),0!=(l=e.m>>17|(255&e.h)<<5)&&(m+=n*l,y+=i*l),0!=(h=(1048320&e.h)>>8)&&(y+=n*h),d=((p=n*s)>>22)+(b>>9)+((262143&w)<<4)+((31&m)<<17),g=(w>>18)+(m>>5)+((4095&y)<<8),g+=(d+=(f=(p&CXt)+((511&b)<<13))>>22)>>22,EO(f&=CXt,d&=CXt,g&=SXt)}function dHt(t){var e,i,r,a,o,s,c;if(0!=(c=zz(PH(t.j,0),11)).g.c.length&&0!=c.e.c.length)throw qw(new $v("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(0!=c.g.c.length){for(o=RXt,i=new Wd(c.g);i.a4){if(!t.wj(e))return!1;if(t.rk()){if(s=(n=(i=zz(e,49)).Ug())==t.e&&(t.Dk()?i.Og(i.Vg(),t.zk())==t.Ak():-1-i.Vg()==t.aj()),t.Ek()&&!s&&!n&&i.Zg())for(r=0;r0&&(u=t.n.a/a);break;case 2:case 4:(r=t.i.o.b)>0&&(u=t.n.b/r)}hct(t,(hWt(),Afe),u)}if(c=t.o,o=t.a,i)o.a=i.a,o.b=i.b,t.d=!0;else if(e!=XSe&&e!=VSe&&s!=CIe)switch(s.g){case 1:o.a=c.a/2;break;case 2:o.a=c.a,o.b=c.b/2;break;case 3:o.a=c.a/2,o.b=c.b;break;case 4:o.b=c.b/2}else o.a=c.a/2,o.b=c.b/2}function yHt(t){var e,n,i,r,a,o,s,c,u,l;if(t.ej())if(l=t.Vi(),c=t.fj(),l>0)if(e=new _at(t.Gi()),a=(n=l)<100?null:new $k(n),QB(t,n,e.g),r=1==n?t.Zi(4,Ket(e,0),null,0,c):t.Zi(6,e,null,-1,c),t.bj()){for(i=new DL(e);i.e!=i.i.gc();)a=t.dj(kwt(i),a);a?(a.Ei(r),a.Fi()):t.$i(r)}else a?(a.Ei(r),a.Fi()):t.$i(r);else QB(t,t.Vi(),t.Wi()),t.$i(t.Zi(6,(TX(),lne),null,-1,c));else if(t.bj())if((l=t.Vi())>0){for(s=t.Wi(),u=l,QB(t,l,s),a=u<100?null:new $k(u),i=0;it.d[r.p]&&(n+=t5(t.b,i)*zz(o.b,19).a,p3(t.a,rft(i)));for(;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function kHt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g;for((h=new gD(zz(tOt(t,(CEt(),qEe)),8))).a=n.Math.max(h.a-i.b-i.c,0),h.b=n.Math.max(h.b-i.d-i.a,0),(null==(a=EB(tOt(t,BEe)))||(xW(a),a<=0))&&(a=1.3),s=new Nw,f=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));f.e!=f.i.gc();)o=new GP(zz(kwt(f),33)),s.c[s.c.length]=o;switch(zz(tOt(t,FEe),311).g){case 3:g=s$t(s,e,h.a,h.b,(u=r,xW(a),u));break;case 1:g=yzt(s,e,h.a,h.b,(l=r,xW(a),l));break;default:g=THt(s,e,h.a,h.b,(c=r,xW(a),c))}jYt(t,(d=xZt(new Get(g),e,i,h.a,h.b,r,(xW(a),a))).a,d.b,!1,!0)}function _Ht(t,e){var n,i,r,a;a=new ej((n=e.b).j),r=0,(i=n.j).c=P8(Ote,HWt,1,0,5,1),nZ(zz(wot(t.b,(kYt(),uIe),(Irt(),Fue)),15),n),r=Jyt(a,r,new Pr,i),nZ(zz(wot(t.b,uIe,Bue),15),n),r=Jyt(a,r,new Nr,i),nZ(zz(wot(t.b,uIe,Pue),15),n),nZ(zz(wot(t.b,cIe,Fue),15),n),nZ(zz(wot(t.b,cIe,Bue),15),n),r=Jyt(a,r,new Br,i),nZ(zz(wot(t.b,cIe,Pue),15),n),nZ(zz(wot(t.b,TIe,Fue),15),n),r=Jyt(a,r,new Fr,i),nZ(zz(wot(t.b,TIe,Bue),15),n),r=Jyt(a,r,new Rr,i),nZ(zz(wot(t.b,TIe,Pue),15),n),nZ(zz(wot(t.b,SIe,Fue),15),n),r=Jyt(a,r,new Xr,i),nZ(zz(wot(t.b,SIe,Bue),15),n),nZ(zz(wot(t.b,SIe,Pue),15),n)}function AHt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(DAt(e,"Layer size calculation",1),h=RXt,l=jXt,a=!1,c=new Wd(t.b);c.a.5?w-=2*o*(g-.5):g<.5&&(w+=2*a*(.5-g)),w<(r=s.d.b)&&(w=r),p=s.d.c,w>b.a-p-l&&(w=b.a-p-l),s.n.a=e+w}}function THt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;for(s=P8(PNe,UXt,25,t.c.length,15,1),rxt(f=new ZG(new Zs),t),u=0,d=new Nw;0!=f.b.c.length;)if(o=zz(0==f.b.c.length?null:PH(f.b,0),157),u>1&&iU(o)*nU(o)/2>s[0]){for(a=0;as[a];)++a;h=new Get(new u1(d,0,a+1)),l=iU(o)/nU(o),c=xZt(h,e,new dy,n,i,r,l),YF(xM(h.e),c),$8(iEt(f,h)),rxt(f,new u1(d,a+1,d.c.length)),d.c=P8(Ote,HWt,1,0,5,1),u=0,kU(s,s.length,0)}else null!=(0==f.b.c.length?null:PH(f.b,0))&&hrt(f,0),u>0&&(s[u]=s[u-1]),s[u]+=iU(o)*nU(o),++u,d.c[d.c.length]=o;return d}function CHt(t){var e,n,i;if((n=zz(vEt(t,(HZt(),xbe)),163))==(Edt(),$fe)){for(e=new cG(JL(fdt(t).a.Kc(),new l));bDt(e);)if(!Z5(zz(Y5(e),17)))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(n==qfe)for(i=new cG(JL(ddt(t).a.Kc(),new l));bDt(i);)if(!Z5(zz(Y5(i),17)))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}function SHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d;for(DAt(e,"Label dummy removal",1),i=Uv(EB(vEt(t,(HZt(),kwe)))),r=Uv(EB(vEt(t,Twe))),c=zz(vEt(t,Ype),103),s=new Wd(t.b);s.a0&&dCt(t,s,l);for(r=new Wd(l);r.a>19!=0&&(e=sct(e),c=!c),o=DLt(e),a=!1,r=!1,i=!1,t.h==IXt&&0==t.m&&0==t.l){if(r=!0,a=!0,-1!=o)return s=_Dt(t,o),c&&Dct(s),n&&(dee=EO(0,0,0)),s;t=WM((Z9(),gee)),i=!0,c=!c}else t.h>>19!=0&&(a=!0,t=sct(t),i=!0,c=!c);return-1!=o?qct(t,o,c,a,n):jxt(t,e)<0?(n&&(dee=a?sct(t):EO(t.l,t.m,t.h)),EO(0,0,0)):hjt(i?t:EO(t.l,t.m,t.h),e,c,a,r,n)}function LHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;if(t.e&&t.c.ce.f||e.g>t.f)){for(n=0,i=0,o=t.w.a.ec().Kc();o.Ob();)r=zz(o.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&++n;for(s=t.r.a.ec().Kc();s.Ob();)r=zz(s.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&--n;for(c=e.w.a.ec().Kc();c.Ob();)r=zz(c.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,t.g,t.f)&&++i;for(a=e.r.a.ec().Kc();a.Ob();)r=zz(a.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,t.g,t.f)&&--i;n=0)return r=bdt(t,e.substr(1,a-1)),QYt(t,e.substr(a+1,s-(a+1)),r)}else{if(n=-1,null==Aee&&(Aee=new RegExp("\\d")),Aee.test(String.fromCharCode(o))&&(n=ER(e,QAt(46),s-1))>=0){i=zz(K5(t,Set(t,e.substr(1,n-1)),!1),58),c=0;try{c=djt(e.substr(n+1),$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}if(c=0)return n;switch(BW(z9(t,n))){case 2:if(yR("",Iht(t,n.Hj()).ne())){if(c=vOt(t,e,s=kK(z9(t,n)),xK(z9(t,n))))return c;for(o=0,u=(r=_Rt(t,e)).gc();o1)throw qw(new jv(M9t));for(l=sPt(t.e.Tg(),e),i=zz(t.g,119),o=0;o1,l=new y6(d.b);vO(l.a)||vO(l.b);)f=(u=zz(vO(l.a)?t0(l.a):t0(l.b),17)).c==d?u.d:u.c,n.Math.abs(Oct(Sst(Ux(CEe,1),lKt,8,0,[f.i.n,f.n,f.a])).b-s.b)>1&&mPt(t,u,s,o,d)}}function YHt(t){var e,i,r,a,o,s;if(a=new E2(t.e,0),r=new E2(t.a,0),t.d)for(i=0;iF3t;){for(o=e,s=0;n.Math.abs(e-o)0),a.a.Xb(a.c=--a.b),F$t(t,t.b-s,o,r,a),CP(a.b0),r.a.Xb(r.c=--r.b)}if(!t.d)for(i=0;i0?(t.f[u.p]=f/(u.e.c.length+u.g.c.length),t.c=n.Math.min(t.c,t.f[u.p]),t.b=n.Math.max(t.b,t.f[u.p])):s&&(t.f[u.p]=f)}}function KHt(t){t.b=null,t.bb=null,t.fb=null,t.qb=null,t.a=null,t.c=null,t.d=null,t.e=null,t.f=null,t.n=null,t.M=null,t.L=null,t.Q=null,t.R=null,t.K=null,t.db=null,t.eb=null,t.g=null,t.i=null,t.j=null,t.k=null,t.gb=null,t.o=null,t.p=null,t.q=null,t.r=null,t.$=null,t.ib=null,t.S=null,t.T=null,t.t=null,t.s=null,t.u=null,t.v=null,t.w=null,t.B=null,t.A=null,t.C=null,t.D=null,t.F=null,t.G=null,t.H=null,t.I=null,t.J=null,t.P=null,t.Z=null,t.U=null,t.V=null,t.W=null,t.X=null,t.Y=null,t._=null,t.ab=null,t.cb=null,t.hb=null,t.nb=null,t.lb=null,t.mb=null,t.ob=null,t.pb=null,t.jb=null,t.kb=null,t.N=!1,t.O=!1}function XHt(t,e,n){var i,r;for(DAt(n,"Graph transformation ("+t.a+")",1),r=o0(e.a),i=new Wd(e.b);i.a0&&(t.a=s+(f-1)*r,e.c.b+=t.a,e.f.b+=t.a),0!=d.a.gc()&&(f=OUt(new hZ(1,r),e,d,g,e.f.b+s-e.c.b))>0&&(e.f.b+=s+(f-1)*r)}function QHt(t,e){var n,i,r,a;a=t.F,null==e?(t.F=null,Fut(t,null)):(t.F=(xW(e),e),-1!=(i=UM(e,QAt(60)))?(r=e.substr(0,i),-1==UM(e,QAt(46))&&!yR(r,LWt)&&!yR(r,C7t)&&!yR(r,S7t)&&!yR(r,I7t)&&!yR(r,M7t)&&!yR(r,D7t)&&!yR(r,O7t)&&!yR(r,L7t)&&(r=N7t),-1!=(n=yN(e,QAt(62)))&&(r+=""+e.substr(n+1)),Fut(t,r)):(r=e,-1==UM(e,QAt(46))&&(-1!=(i=UM(e,QAt(91)))&&(r=e.substr(0,i)),yR(r,LWt)||yR(r,C7t)||yR(r,S7t)||yR(r,I7t)||yR(r,M7t)||yR(r,D7t)||yR(r,O7t)||yR(r,L7t)?r=e:(r=N7t,-1!=i&&(r+=""+e.substr(i)))),Fut(t,r),r==e&&(t.F=t.D))),0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,5,a,e))}function JHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;if(!((p=e.b.c.length)<3)){for(d=P8(DNe,hXt,25,p,15,1),h=0,l=new Wd(e.b);l.ao)&&AY(t.b,zz(b.b,17));++s}a=o}}}function tUt(t,e){var n;if(null==e||yR(e,YWt))return null;if(0==e.length&&t.k!=(SCt(),wEe))return null;switch(t.k.g){case 1:return vbt(e,s5t)?(lN(),yee):vbt(e,c5t)?(lN(),mee):null;case 2:try{return rft(djt(e,$Kt,FWt))}catch(t){if(aL(t=dst(t),127))return null;throw qw(t)}case 4:try{return gTt(e)}catch(t){if(aL(t=dst(t),127))return null;throw qw(t)}case 3:return e;case 5:return alt(t),HIt(t,e);case 6:return alt(t),jOt(t,t.a,e);case 7:try{return(n=aDt(t)).Jf(e),n}catch(t){if(aL(t=dst(t),32))return null;throw qw(t)}default:throw qw(new $v("Invalid type set for this layout option."))}}function eUt(t){var e,n,i,r,a,o,s;for(Btt(),s=new Km,n=new Wd(t);n.a=s.b.c)&&(s.b=e),(!s.c||e.c<=s.c.c)&&(s.d=s.c,s.c=e),(!s.e||e.d>=s.e.d)&&(s.e=e),(!s.f||e.d<=s.f.d)&&(s.f=e);return i=new Ewt((Ost(),Joe)),i2(t,cse,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[i]))),o=new Ewt(nse),i2(t,sse,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[o]))),r=new Ewt(tse),i2(t,ose,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[r]))),a=new Ewt(ese),i2(t,ase,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[a]))),BLt(i.c,Joe),BLt(r.c,tse),BLt(a.c,ese),BLt(o.c,nse),s.a.c=P8(Ote,HWt,1,0,5,1),wst(s.a,i.c),wst(s.a,iot(r.c)),wst(s.a,a.c),wst(s.a,iot(o.c)),s}function nUt(t){var e;switch(t.d){case 1:if(t.hj())return-2!=t.o;break;case 2:if(t.hj())return-2==t.o;break;case 3:case 5:case 4:case 6:case 7:return t.o>-2;default:return!1}switch(e=t.gj(),t.p){case 0:return null!=e&&Hv(AB(e))!=QI(t.k,0);case 1:return null!=e&&zz(e,217).a!=pU(t.k)<<24>>24;case 2:return null!=e&&zz(e,172).a!=(pU(t.k)&VKt);case 6:return null!=e&&QI(zz(e,162).a,t.k);case 5:return null!=e&&zz(e,19).a!=pU(t.k);case 7:return null!=e&&zz(e,184).a!=pU(t.k)<<16>>16;case 3:return null!=e&&Uv(EB(e))!=t.j;case 4:return null!=e&&zz(e,155).a!=t.j;default:return null==e?null!=t.n:!Pht(e,t.n)}}function iUt(t,e,n){var i,r,a,o;return t.Fk()&&t.Ek()&&UI(o=UG(t,zz(n,56)))!==UI(n)?(t.Oi(e),t.Ui(e,z7(t,e,o)),t.rk()&&(r=zz(n,49),a=t.Dk()?t.Bk()?r.ih(t.b,Imt(zz(iet(kV(t.b),t.aj()),18)).n,zz(iet(kV(t.b),t.aj()).Yj(),26).Bj(),null):r.ih(t.b,Ogt(r.Tg(),Imt(zz(iet(kV(t.b),t.aj()),18))),null,null):r.ih(t.b,-1-t.aj(),null,null),!zz(o,49).eh()&&(i=zz(o,49),a=t.Dk()?t.Bk()?i.gh(t.b,Imt(zz(iet(kV(t.b),t.aj()),18)).n,zz(iet(kV(t.b),t.aj()).Yj(),26).Bj(),a):i.gh(t.b,Ogt(i.Tg(),Imt(zz(iet(kV(t.b),t.aj()),18))),null,a):i.gh(t.b,-1-t.aj(),null,a)),a&&a.Fi()),yD(t.b)&&t.$i(t.Zi(9,n,o,e,!1)),o):n}function rUt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(h=Uv(EB(vEt(t,(HZt(),_we)))),r=Uv(EB(vEt(t,Fwe))),hct(d=new Qs,_we,h+r),m=(l=e).d,b=l.c.i,y=l.d.i,w=eD(b.c),v=eD(y.c),a=new Nw,f=w;f<=v;f++)zf(c=new Lmt(t),(cTt(),Cse)),hct(c,(hWt(),pfe),l),hct(c,nwe,(V_t(),ZSe)),hct(c,Ewe,d),g=zz(PH(t.b,f),29),f==w?Vvt(c,g.a.c.length-i,g):CJ(c,g),(x=Uv(EB(vEt(l,obe))))<0&&hct(l,obe,x=0),c.o.b=x,p=n.Math.floor(x/2),USt(s=new ITt,(kYt(),SIe)),SJ(s,c),s.n.b=p,USt(u=new ITt,cIe),SJ(u,c),u.n.b=p,EJ(l,s),Uot(o=new gV,l),hct(o,mbe,null),TJ(o,u),EJ(o,m),Yxt(c,l,o),a.c[a.c.length]=o,l=o;return a}function aUt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(s=zz(FTt(t,(kYt(),SIe)).Kc().Pb(),11).e,h=zz(FTt(t,cIe).Kc().Pb(),11).g,o=s.c.length,b=b1(zz(PH(t.j,0),11));o-- >0;){for(f1(0,s.c.length),d=zz(s.c[0],17),f1(0,h.c.length),r=_9((i=zz(h.c[0],17)).d.e,i,0),D2(d,i.d,r),TJ(i,null),EJ(i,null),f=d.a,e&&Bq(f,new gD(b)),n=lwt(i.a,0);n.b!=n.d.c;)Bq(f,new gD(zz(d3(n),8)));for(p=d.b,l=new Wd(i.b);l.a0&&(s=n.Math.max(s,dat(t.C.b+r.d.b,a))),h=r,f=a,d=o;t.C&&t.C.c>0&&(g=d+t.C.c,l&&(g+=h.d.c),s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(f-1)<=fQt||1==f||isNaN(f)&&isNaN(1)?0:g/(1-f)))),i.n.b=0,i.a.a=s}function sUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g;if(i=zz(cK(t.b,e),124),(u=zz(zz(l6(t.r,e),21),84)).dc())return i.n.d=0,void(i.n.a=0);for(l=t.u.Hc((dIt(),nIe)),s=0,t.A.Hc((vpt(),jIe))&&kFt(t,e),c=u.Kc(),h=null,d=0,f=0;c.Ob();)o=Uv(EB((r=zz(c.Pb(),111)).b.We((BN(),Lre)))),a=r.b.rf().b,h?(g=f+h.d.a+t.w+r.d.d,s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(d-o)<=fQt||d==o||isNaN(d)&&isNaN(o)?0:g/(o-d)))):t.C&&t.C.d>0&&(s=n.Math.max(s,dat(t.C.d+r.d.d,o))),h=r,d=o,f=a;t.C&&t.C.a>0&&(g=f+t.C.a,l&&(g+=h.d.a),s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(d-1)<=fQt||1==d||isNaN(d)&&isNaN(1)?0:g/(1-d)))),i.n.d=0,i.a.b=s}function cUt(t,e,n){var i,r,a,o,s,c;for(this.g=t,s=e.d.length,c=n.d.length,this.d=P8(Mse,s1t,10,s+c,0,1),o=0;o0?Jet(this,this.f/this.a):null!=fL(e.g,e.d[0]).a&&null!=fL(n.g,n.d[0]).a?Jet(this,(Uv(fL(e.g,e.d[0]).a)+Uv(fL(n.g,n.d[0]).a))/2):null!=fL(e.g,e.d[0]).a?Jet(this,fL(e.g,e.d[0]).a):null!=fL(n.g,n.d[0]).a&&Jet(this,fL(n.g,n.d[0]).a)}function uUt(t,e){var n,i,r,a,o,s,c,u,l;for(t.a=new zZ(Lat(WCe)),i=new Wd(e.a);i.a=1&&(b-o>0&&h>=0?(c.n.a+=p,c.n.b+=a*o):b-o<0&&l>=0&&(c.n.a+=p*b,c.n.b+=a));t.o.a=e.a,t.o.b=e.b,hct(t,(HZt(),$be),(vpt(),new VR(i=zz(Kk(VIe),9),zz(TF(i,i.length),9),0)))}function pUt(t,e,n,i,r,a){if(null!=e&&Wdt(e,DDe,ODe))throw qw(new jv("invalid scheme: "+e));if(!(t||null!=n&&-1==UM(n,QAt(35))&&n.length>0&&(d1(0,n.length),47!=n.charCodeAt(0))))throw qw(new jv("invalid opaquePart: "+n));if(t&&(null==e||!PA(kDe,e.toLowerCase()))&&null!=n&&Wdt(n,LDe,NDe))throw qw(new jv(u7t+n));if(t&&null!=e&&PA(kDe,e.toLowerCase())&&!I_t(n))throw qw(new jv(u7t+n));if(!Zdt(i))throw qw(new jv("invalid device: "+i));if(!Rlt(r))throw qw(new jv(null==r?"invalid segments: null":"invalid segment: "+llt(r)));if(null!=a&&-1!=UM(a,QAt(35)))throw qw(new jv("invalid query: "+a))}function bUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;for(DAt(e,"Calculate Graph Size",1),e.n&&t&&v0(e,c2(t),(qut(),sMe)),c=tJt,u=tJt,o=e4t,s=e4t,f=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));f.e!=f.i.gc();)p=(l=zz(kwt(f),33)).i,b=l.j,m=l.g,r=l.f,a=zz(tOt(l,(lWt(),OTe)),142),c=n.Math.min(c,p-a.b),u=n.Math.min(u,b-a.d),o=n.Math.max(o,p+m+a.c),s=n.Math.max(s,b+r+a.a);for(d=new PS(c-(g=zz(tOt(t,(lWt(),ZTe)),116)).b,u-g.d),h=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));h.e!=h.i.gc();)Snt(l=zz(kwt(h),33),l.i-d.a),Int(l,l.j-d.b);w=o-c+(g.b+g.c),i=s-u+(g.d+g.a),Cnt(t,w),Tnt(t,i),e.n&&t&&v0(e,c2(t),(qut(),sMe))}function wUt(t){var e,n,i,r,a,o,s,c,u,l;for(i=new Nw,o=new Wd(t.e.a);o.a0?(Swt(t,n,0),n.a+=String.fromCharCode(i),Swt(t,n,r=obt(e,a)),a+=r-1):39==i?a+11)for(p=P8(DNe,hXt,25,t.b.b.c.length,15,1),h=0,l=new Wd(t.b.b);l.a=s&&r<=c)s<=r&&a<=c?(n[l++]=r,n[l++]=a,i+=2):s<=r?(n[l++]=r,n[l++]=c,t.b[i]=c+1,o+=2):a<=c?(n[l++]=s,n[l++]=a,i+=2):(n[l++]=s,n[l++]=c,t.b[i]=c+1);else{if(!(cjKt)&&c<10);ek(t.c,new ke),xUt(t),IY(t.c),fUt(t.f)}function AUt(t,e,n){var i,r,a,o,s,c,u,l,h,f;if(Hv(AB(vEt(n,(HZt(),gbe)))))for(r=new Wd(n.j);r.a=2){for(o=zz(d3(c=lwt(n,0)),8),s=zz(d3(c),8);s.a0&&Zst(c,!0,(zht(),$Ce)),o.k==(cTt(),Ese)&&gK(c),KW(t.f,o,e)):((u=(i=zz(iV(hdt(o)),17)).c.i)==o&&(u=i.d.i),h=new rI(u,ZF(zO(o.n),u.n)),KW(t.b,o,h))}function SUt(t,e,i){var r,a,o,s,c,u,l,h;switch(DAt(i,"Node promotion heuristic",1),t.g=e,xYt(t),t.q=zz(vEt(e,(HZt(),Tbe)),260),h=zz(vEt(t.g,Ebe),19).a,o=new li,t.q.g){case 2:case 1:default:$qt(t,o);break;case 3:for(t.q=(lNt(),Mme),$qt(t,o),u=0,c=new Wd(t.a);c.at.j&&(t.q=Ame,$qt(t,o));break;case 4:for(t.q=(lNt(),Mme),$qt(t,o),l=0,a=new Wd(t.b);a.at.k&&(t.q=Cme,$qt(t,o));break;case 6:$qt(t,new cp(SQ(n.Math.ceil(t.f.length*h/100))));break;case 5:$qt(t,new up(SQ(n.Math.ceil(t.d*h/100))))}uBt(t,e),HTt(i)}function IUt(t,e,n){var i,r,a,o;this.j=t,this.e=U_t(t),this.o=this.j.e,this.i=!!this.o,this.p=this.i?zz(PH(n,mW(this.o).p),214):null,r=zz(vEt(t,(hWt(),Jhe)),21),this.g=r.Hc((gBt(),fhe)),this.b=new Nw,this.d=new ppt(this.e),o=zz(vEt(this.j,Tfe),230),this.q=Hot(e,o,this.e),this.k=new oJ(this),a=s6(Sst(Ux(kue,1),HWt,225,0,[this,this.d,this.k,this.q])),e!=(uit(),Mye)||Hv(AB(vEt(t,(HZt(),Ppe))))?e==Mye&&Hv(AB(vEt(t,(HZt(),Ppe))))?(i=new Z_t(this.e),a.c[a.c.length]=i,this.c=new mrt(i,o,zz(this.q,402))):this.c=new mC(e,this):(i=new Z_t(this.e),a.c[a.c.length]=i,this.c=new U2(i,o,zz(this.q,402))),Wz(a,this.c),Iqt(a,this.e),this.s=pZt(this.k)}function MUt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;for(f=(u=zz(iL(new gb(lwt(new db(e).a.d,0))),86))?zz(vEt(u,(UHt(),axe)),86):null,r=1;u&&f;){for(o=0,m=0,n=u,i=f,a=0;a=t.i?(++t.i,Wz(t.a,rft(1)),Wz(t.b,u)):(i=t.c[e.p][1],a5(t.a,c,rft(zz(PH(t.a,c),19).a+1-i)),a5(t.b,c,Uv(EB(PH(t.b,c)))+u-i*t.e)),(t.q==(lNt(),Ame)&&(zz(PH(t.a,c),19).a>t.j||zz(PH(t.a,c-1),19).a>t.j)||t.q==Cme&&(Uv(EB(PH(t.b,c)))>t.k||Uv(EB(PH(t.b,c-1)))>t.k))&&(s=!1),a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)o=zz(Y5(a),17).c.i,t.f[o.p]==c&&(r+=zz((h=DUt(t,o)).a,19).a,s=s&&Hv(AB(h.b)));return t.f[e.p]=c,new rI(rft(r+=t.c[e.p][0]),(lN(),!!s))}function OUt(t,e,i,r,a){var o,s,c,u,l,h,f,d,g,p,b,w,m;for(f=new Pw,s=new Nw,aIt(t,i,t.d.fg(),s,f),aIt(t,r,t.d.gg(),s,f),t.b=.2*(b=qDt(gtt(new FH(null,new g1(s,16)),new Co)),w=qDt(gtt(new FH(null,new g1(s,16)),new So)),n.Math.min(b,w)),o=0,c=0;c=2&&(m=VLt(s,!0,d),!t.e&&(t.e=new fb(t)),lbt(t.e,m,s,t.b)),rAt(s,d),oGt(s),g=-1,h=new Wd(s);h.as)}function PUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(i=zz(vEt(t,(HZt(),nwe)),98),s=t.f,o=t.d,c=s.a+o.b+o.c,u=0-o.d-t.c.b,h=s.b+o.d+o.a-t.c.b,l=new Nw,f=new Nw,a=new Wd(e);a.a0),a=zz(u.a.Xb(u.c=--u.b),17);a!=i&&u.b>0;)t.a[a.p]=!0,t.a[i.p]=!0,CP(u.b>0),a=zz(u.a.Xb(u.c=--u.b),17);u.b>0&&hW(u)}}function UUt(t,e,n){var i,r,a,o,s,c,u,l,h;if(t.a!=e.Aj())throw qw(new jv(b6t+e.ne()+w6t));if(i=Iht((MCt(),JOe),e).$k())return i.Aj().Nh().Ih(i,n);if(o=Iht(JOe,e).al()){if(null==n)return null;if((s=zz(n,15)).dc())return"";for(h=new Tx,a=s.Kc();a.Ob();)r=a.Pb(),aM(h,o.Aj().Nh().Ih(o,r)),h.a+=" ";return RM(h,h.a.length-1)}if(!(l=Iht(JOe,e).bl()).dc()){for(u=l.Kc();u.Ob();)if((c=zz(u.Pb(),148)).wj(n))try{if(null!=(h=c.Aj().Nh().Ih(c,n)))return h}catch(t){if(!aL(t=dst(t),102))throw qw(t)}throw qw(new jv("Invalid value: '"+n+"' for datatype :"+e.ne()))}return zz(e,834).Fj(),null==n?null:aL(n,172)?""+zz(n,172).a:nut(n)==vee?qO(IMe[0],zz(n,199)):qdt(n)}function GUt(t){var e,i,r,a,o,s,c,u,l;for(u=new VA,s=new VA,a=new Wd(t);a.a-1){for(r=lwt(s,0);r.b!=r.d.c;)(i=zz(d3(r),128)).v=o;for(;0!=s.b;)for(e=new Wd((i=zz(nxt(s,0),128)).i);e.a0&&(n+=c.n.a+c.o.a/2,++h),d=new Wd(c.j);d.a0&&(n/=h),b=P8(PNe,UXt,25,i.a.c.length,15,1),s=0,u=new Wd(i.a);u.a=s&&r<=c)s<=r&&a<=c?i+=2:s<=r?(t.b[i]=c+1,o+=2):a<=c?(n[l++]=r,n[l++]=s-1,i+=2):(n[l++]=r,n[l++]=s-1,t.b[i]=c+1,o+=2);else{if(!(c0?r-=864e5:r+=864e5,c=new CB(adt(fot(e.q.getTime()),r))),l=new Ix,u=t.a.length,a=0;a=97&&i<=122||i>=65&&i<=90){for(o=a+1;o=u)throw qw(new jv("Missing trailing '"));o+10&&0==n.c&&(!e&&(e=new Nw),e.c[e.c.length]=n);if(e)for(;0!=e.c.length;){if((n=zz(u6(e,0),233)).b&&n.b.c.length>0)for(!n.b&&(n.b=new Nw),a=new Wd(n.b);a.a_9(t,n,0))return new rI(r,n)}else if(Uv(fL(r.g,r.d[0]).a)>Uv(fL(n.g,n.d[0]).a))return new rI(r,n);for(s=(!n.e&&(n.e=new Nw),n.e).Kc();s.Ob();)!(o=zz(s.Pb(),233)).b&&(o.b=new Nw),LJ(0,(c=o.b).c.length),ET(c.c,0,n),o.c==c.c.length&&(e.c[e.c.length]=o)}return null}function rGt(t,e){var n,i,r,a,o,s;if(null==t)return YWt;if(null!=e.a.zc(t,e))return"[...]";for(n=new Lot(zWt,"[","]"),a=0,o=(r=t).length;a=14&&s<=16?aL(i,177)?d6(n,RSt(zz(i,177))):aL(i,190)?d6(n,J_t(zz(i,190))):aL(i,195)?d6(n,kTt(zz(i,195))):aL(i,2012)?d6(n,tAt(zz(i,2012))):aL(i,48)?d6(n,FSt(zz(i,48))):aL(i,364)?d6(n,wIt(zz(i,364))):aL(i,832)?d6(n,BSt(zz(i,832))):aL(i,104)&&d6(n,PSt(zz(i,104))):e.a._b(i)?(n.a?cM(n.a,n.b):n.a=new fN(n.d),oM(n.a,"[...]")):d6(n,rGt(int(i),new OH(e))):d6(n,null==i?YWt:qdt(i));return n.a?0==n.e.length?n.a.a:n.a.a+""+n.e:n.c}function aGt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g,p,b;for(g=UTt(oBt(e,!1,!1)),r&&(g=Jct(g)),b=Uv(EB(tOt(e,(Awt(),wae)))),CP(0!=g.b),d=zz(g.a.a.c,8),l=zz(Fwt(g,1),8),g.b>2?(wst(u=new Nw,new u1(g,1,g.b)),Uot(p=new ADt(WZt(u,b+t.a)),e),i.c[i.c.length]=p):p=zz(FZ(t.b,r?SEt(e):DEt(e)),266),s=SEt(e),r&&(s=DEt(e)),o=rCt(d,s),c=b+t.a,o.a?(c+=n.Math.abs(d.b-l.b),f=new PS(l.a,(l.b+d.b)/2)):(c+=n.Math.abs(d.a-l.a),f=new PS((l.a+d.a)/2,l.b)),KW(r?t.d:t.c,e,new Myt(p,o,f,c)),KW(t.b,e,p),!e.n&&(e.n=new nY(GMe,e,1,7)),h=new DL(e.n);h.e!=h.i.gc();)a=JFt(t,zz(kwt(h),137),!0,0,0),i.c[i.c.length]=a}function oGt(t){var e,i,r,a,o,s,c,u,l;for(u=new Nw,s=new Nw,o=new Wd(t);o.a-1){for(a=new Wd(s);a.a0||(Vf(c,n.Math.min(c.o,r.o-1)),Xf(c,c.i-1),0==c.i&&(s.c[s.c.length]=c))}}function sGt(t,e,n){var i,r,a,o,s;if(s=t.c,!e&&(e=LOe),t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&(o=new tY(t,1,2,s,t.c),n?n.Ei(o):n=o),s!=e)if(aL(t.Cb,284))t.Db>>16==-10?n=zz(t.Cb,284).nk(e,n):t.Db>>16==-15&&(!e&&(wWt(),e=fOe),!s&&(wWt(),s=fOe),t.Cb.nh()&&(o=new N9(t.Cb,1,13,s,e,cmt(q9(zz(t.Cb,59)),t),!1),n?n.Ei(o):n=o));else if(aL(t.Cb,88))t.Db>>16==-23&&(aL(e,88)||(wWt(),e=pOe),aL(s,88)||(wWt(),s=pOe),t.Cb.nh()&&(o=new N9(t.Cb,1,10,s,e,cmt(o4(zz(t.Cb,26)),t),!1),n?n.Ei(o):n=o));else if(aL(t.Cb,444))for(!(a=zz(t.Cb,836)).b&&(a.b=new Aw(new Py)),r=new Ew(new cut(new Cd(a.b.a).a));r.a.b;)n=sGt(i=zz(nnt(r.a).cd(),87),kLt(i,a),n);return n}function cGt(t,e){var n,i,r,a,o,s,c,u,l,h,f;for(o=Hv(AB(tOt(t,(HZt(),gbe)))),f=zz(tOt(t,awe),21),c=!1,u=!1,h=new DL((!t.c&&(t.c=new nY(ZMe,t,9,9)),t.c));!(h.e==h.i.gc()||c&&u);){for(a=zz(kwt(h),118),s=0,r=NY(Knt(Sst(Ux(Bte,1),HWt,20,0,[(!a.d&&(a.d=new lR(jMe,a,8,5)),a.d),(!a.e&&(a.e=new lR(jMe,a,7,4)),a.e)])));bDt(r)&&(i=zz(Y5(r),79),l=o&&VIt(i)&&Hv(AB(tOt(i,pbe))),n=gHt((!i.b&&(i.b=new lR(RMe,i,4,7)),i.b),a)?t==QQ(SAt(zz(Ket((!i.c&&(i.c=new lR(RMe,i,5,8)),i.c),0),82))):t==QQ(SAt(zz(Ket((!i.b&&(i.b=new lR(RMe,i,4,7)),i.b),0),82))),!((l||n)&&++s>1)););(s>0||f.Hc((dIt(),nIe))&&(!a.n&&(a.n=new nY(GMe,a,1,7)),a.n).i>0)&&(c=!0),s>1&&(u=!0)}c&&e.Fc((gBt(),fhe)),u&&e.Fc((gBt(),dhe))}function uGt(t){var e,i,r,a,o,s,c,u,l,h,f,d;if((d=zz(tOt(t,(lWt(),RTe)),21)).dc())return null;if(c=0,s=0,d.Hc((vpt(),RIe))){for(h=zz(tOt(t,sCe),98),r=2,i=2,a=2,o=2,e=QQ(t)?zz(tOt(QQ(t),dTe),103):zz(tOt(t,dTe),103),l=new DL((!t.c&&(t.c=new nY(ZMe,t,9,9)),t.c));l.e!=l.i.gc();)if(u=zz(kwt(l),118),(f=zz(tOt(u,gCe),61))==(kYt(),CIe)&&(f=D$t(u,e),Qwt(u,gCe,f)),h==(V_t(),ZSe))switch(f.g){case 1:r=n.Math.max(r,u.i+u.g);break;case 2:i=n.Math.max(i,u.j+u.f);break;case 3:a=n.Math.max(a,u.i+u.g);break;case 4:o=n.Math.max(o,u.j+u.f)}else switch(f.g){case 1:r+=u.g+2;break;case 2:i+=u.f+2;break;case 3:a+=u.g+2;break;case 4:o+=u.f+2}c=n.Math.max(r,a),s=n.Math.max(i,o)}return jYt(t,c,s,!0,!0)}function lGt(t,e,i,r,a){var o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(y=zz(C4(xet(DK(new FH(null,new g1(e.d,16)),new Op(i)),new Lp(i)),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),f=FWt,h=$Kt,u=new Wd(e.b.j);u.a0)?u&&(l=p.p,o?++l:--l,h=!(oNt(i=rct(zz(PH(p.c.a,l),10)),v,n[0])||zG(i,v,n[0]))):h=!0),f=!1,(y=e.D.i)&&y.c&&s.e&&(o&&y.p>0||!o&&y.p0&&(e.a+=zWt),wGt(zz(kwt(o),160),e);for(e.a+=i1t,s=new aP((!i.c&&(i.c=new lR(RMe,i,5,8)),i.c));s.e!=s.i.gc();)s.e>0&&(e.a+=zWt),wGt(zz(kwt(s),160),e);e.a+=")"}}}function mGt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(a=zz(vEt(t,(hWt(),pfe)),79)){for(i=t.a,YF(r=new gD(n),Lkt(t)),pot(t.d.i,t.c.i)?(f=t.c,ZF(h=Oct(Sst(Ux(CEe,1),lKt,8,0,[f.n,f.a])),n)):h=b1(t.c),r5(i,h,i.a,i.a.a),d=b1(t.d),null!=vEt(t,Ffe)&&YF(d,zz(vEt(t,Ffe),8)),r5(i,d,i.c.b,i.c),tnt(i,r),Nit(o=oBt(a,!0,!0),zz(Ket((!a.b&&(a.b=new lR(RMe,a,4,7)),a.b),0),82)),Pit(o,zz(Ket((!a.c&&(a.c=new lR(RMe,a,5,8)),a.c),0),82)),X$t(i,o),l=new Wd(t.b);l.a=0){for(c=null,s=new E2(l.a,u+1);s.bo?1:GM(isNaN(0),isNaN(o)))<0&&(ait(O3t),(n.Math.abs(o-1)<=O3t||1==o||isNaN(o)&&isNaN(1)?0:o<1?-1:o>1?1:GM(isNaN(o),isNaN(1)))<0)&&(ait(O3t),(n.Math.abs(0-s)<=O3t||0==s||isNaN(0)&&isNaN(s)?0:0s?1:GM(isNaN(0),isNaN(s)))<0)&&(ait(O3t),(n.Math.abs(s-1)<=O3t||1==s||isNaN(s)&&isNaN(1)?0:s<1?-1:s>1?1:GM(isNaN(s),isNaN(1)))<0))}function xGt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k;for(h=new lW(new ig(t));h.b!=h.c.a.d;)for(s=zz((l=u7(h)).d,56),e=zz(l.e,56),p=0,v=(null==(o=s.Tg()).i&&U$t(o),o.i).length;p=0&&p=u.c.c.length?Z3((cTt(),Sse),Cse):Z3((cTt(),Cse),Cse),l*=2,a=i.a.g,i.a.g=n.Math.max(a,a+(l-a)),o=i.b.g,i.b.g=n.Math.max(o,o+(l-o)),r=e}else YDt(s),Oqt((f1(0,s.c.length),zz(s.c[0],17)).d.i)||Wz(t.o,s)}function AGt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;for(y=Uz(t),c=new Nw,u=(a=t.c.length)-1,l=a+1;0!=y.a.c;){for(;0!=n.b;)CP(0!=n.b),w=zz(Oet(n,n.a.a),112),OQ(y.a,w),w.g=u--,P$t(w,e,n,i);for(;0!=e.b;)CP(0!=e.b),m=zz(Oet(e,e.a.a),112),OQ(y.a,m),m.g=l++,P$t(m,e,n,i);for(s=$Kt,p=new $d(new zF(new PN(new jd(y.a).a).b));oT(p.a.a);){if(g=zz(yP(p.a).cd(),112),!i&&g.b>0&&g.a<=0){c.c=P8(Ote,HWt,1,0,5,1),c.c[c.c.length]=g;break}(d=g.i-g.d)>=s&&(d>s&&(c.c=P8(Ote,HWt,1,0,5,1),s=d),c.c[c.c.length]=g)}0!=c.c.length&&(o=zz(PH(c,mmt(r,c.c.length)),112),OQ(y.a,o),o.g=l++,P$t(o,e,n,i),c.c=P8(Ote,HWt,1,0,5,1))}for(b=t.c.length+1,f=new Wd(t);f.a0&&(d.d+=h.n.d,d.d+=h.d),d.a>0&&(d.a+=h.n.a,d.a+=h.d),d.b>0&&(d.b+=h.n.b,d.b+=h.d),d.c>0&&(d.c+=h.n.c,d.c+=h.d),d}function IGt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p;for(d=i.d,f=i.c,s=(o=new PS(i.f.a+i.d.b+i.d.c,i.f.b+i.d.d+i.d.a)).b,l=new Wd(t.a);l.a0&&(t.c[e.c.p][e.p].d+=HOt(t.i,24)*cVt*.07000000029802322-.03500000014901161,t.c[e.c.p][e.p].a=t.c[e.c.p][e.p].d/t.c[e.c.p][e.p].b)}}function FGt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g;for(f=new Wd(t);f.ar.d,r.d=n.Math.max(r.d,e),c&&i&&(r.d=n.Math.max(r.d,r.a),r.a=r.d+a);break;case 3:i=e>r.a,r.a=n.Math.max(r.a,e),c&&i&&(r.a=n.Math.max(r.a,r.d),r.d=r.a+a);break;case 2:i=e>r.c,r.c=n.Math.max(r.c,e),c&&i&&(r.c=n.Math.max(r.b,r.c),r.b=r.c+a);break;case 4:i=e>r.b,r.b=n.Math.max(r.b,e),c&&i&&(r.b=n.Math.max(r.b,r.c),r.c=r.b+a)}}}function zGt(t){var e,n,i,r,a,o,s,c,u,l,h;for(u=new Wd(t);u.a0||l.j==SIe&&l.e.c.length-l.g.c.length<0)){e=!1;break}for(r=new Wd(l.g);r.a=l&&k>=w&&(d+=p.n.b+b.n.b+b.a.b-x,++c));if(i)for(s=new Wd(y.e);s.a=l&&k>=w&&(d+=p.n.b+b.n.b+b.a.b-x,++c))}c>0&&(_+=d/c,++g)}g>0?(e.a=a*_/g,e.g=g):(e.a=0,e.g=0)}function HGt(t,e){var n,i,r,a,o,s,c,u,l,h;for(i=new Wd(t.a.b);i.ajXt||e.o==rve&&u0&&Snt(w,v*k),x>0&&Int(w,x*_);for(eot(t.b,new he),e=new Nw,s=new cut(new Cd(t.c).a);s.b;)i=zz((o=nnt(s)).cd(),79),n=zz(o.dd(),395).a,r=oBt(i,!1,!1),X$t(h=dAt(SEt(i),UTt(r),n),r),(y=IEt(i))&&-1==_9(e,y,0)&&(e.c[e.c.length]=y,uX(y,(CP(0!=h.b),zz(h.a.a.c,8)),n));for(b=new cut(new Cd(t.d).a);b.b;)i=zz((p=nnt(b)).cd(),79),n=zz(p.dd(),395).a,r=oBt(i,!1,!1),h=dAt(DEt(i),Jct(UTt(r)),n),X$t(h=Jct(h),r),(y=MEt(i))&&-1==_9(e,y,0)&&(e.c[e.c.length]=y,uX(y,(CP(0!=h.b),zz(h.c.b.c,8)),n))}function WGt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_;if(0!=i.c.length){for(g=new Nw,d=new Wd(i);d.a1)for(n5(y,new uS(t,d=new hHt(g,y,r))),s.c[s.c.length]=d,h=y.a.ec().Kc();h.Ob();)v9(o,zz(h.Pb(),46).b);if(c.a.gc()>1)for(n5(c,new lS(t,d=new hHt(g,c,r))),s.c[s.c.length]=d,h=c.a.ec().Kc();h.Ob();)v9(o,zz(h.Pb(),46).b)}}function nYt(t){NE(t,new TAt(pk(mk(gk(wk(bk(new bs,p4t),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new Ho),p4t))),s2(t,p4t,w3t,vwt(Pke)),s2(t,p4t,yJt,vwt(Rke)),s2(t,p4t,SJt,vwt(Ske)),s2(t,p4t,qJt,vwt(Ike)),s2(t,p4t,CJt,vwt(Mke)),s2(t,p4t,IJt,vwt(Cke)),s2(t,p4t,TJt,vwt(Dke)),s2(t,p4t,MJt,vwt(Nke)),s2(t,p4t,h4t,vwt(Eke)),s2(t,p4t,l4t,vwt(Tke)),s2(t,p4t,g4t,vwt(Oke)),s2(t,p4t,c4t,vwt(Lke)),s2(t,p4t,u4t,vwt(Bke)),s2(t,p4t,f4t,vwt(Fke)),s2(t,p4t,d4t,vwt(jke))}function iYt(t){var e;if(this.r=PK(new Tt,new Ct),this.b=new Hdt(zz(vZ($Ie),290)),this.p=new Hdt(zz(vZ($Ie),290)),this.i=new Hdt(zz(vZ(Rre),290)),this.e=t,this.o=new gD(t.rf()),this.D=t.Df()||Hv(AB(t.We((lWt(),TTe)))),this.A=zz(t.We((lWt(),RTe)),21),this.B=zz(t.We(HTe),21),this.q=zz(t.We(sCe),98),this.u=zz(t.We(hCe),21),!pEt(this.u))throw qw(new rx("Invalid port label placement: "+this.u));if(this.v=Hv(AB(t.We(dCe))),this.j=zz(t.We(BTe),21),!nLt(this.j))throw qw(new rx("Invalid node label placement: "+this.j));this.n=zz(ext(t,NTe),116),this.k=Uv(EB(ext(t,MCe))),this.d=Uv(EB(ext(t,ICe))),this.w=Uv(EB(ext(t,FCe))),this.s=Uv(EB(ext(t,DCe))),this.t=Uv(EB(ext(t,OCe))),this.C=zz(ext(t,PCe),142),this.c=2*this.d,e=!this.B.Hc((ejt(),qIe)),this.f=new Mbt(0,e,0),this.g=new Mbt(1,e,0),kv(this.f,(Fet(),Gie),this.g)}function rYt(t,e,i,r,a){var o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T;for(v=0,b=0,p=0,g=1,y=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));y.e!=y.i.gc();)g+=$3(new cG(JL(bLt(w=zz(kwt(y),33)).a.Kc(),new l))),A=w.g,b=n.Math.max(b,A),d=w.f,p=n.Math.max(p,d),v+=A*d;for(s=v+2*r*r*g*(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i,o=n.Math.sqrt(s),u=n.Math.max(o*i,b),c=n.Math.max(o/i,p),m=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));m.e!=m.i.gc();)w=zz(kwt(m),33),E=a.b+(HOt(e,26)*aVt+HOt(e,27)*oVt)*(u-w.g),T=a.b+(HOt(e,26)*aVt+HOt(e,27)*oVt)*(c-w.f),Snt(w,E),Int(w,T);for(_=u+(a.b+a.c),k=c+(a.d+a.a),x=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));x.e!=x.i.gc();)for(f=new cG(JL(bLt(zz(kwt(x),33)).a.Kc(),new l));bDt(f);)eDt(h=zz(Y5(f),79))||qZt(h,e,_,k);jYt(t,_+=a.b+a.c,k+=a.d+a.a,!1,!0)}function aYt(t){var e,n,i,r,a,o,s,c,u,l,h;if(null==t)throw qw(new Ex(YWt));if(u=t,c=!1,(a=t.length)>0&&(d1(0,t.length),45!=(e=t.charCodeAt(0))&&43!=e||(t=t.substr(1),--a,c=45==e)),0==a)throw qw(new Ex(FXt+u+'"'));for(;t.length>0&&(d1(0,t.length),48==t.charCodeAt(0));)t=t.substr(1),--a;if(a>(r$t(),Bee)[10])throw qw(new Ex(FXt+u+'"'));for(r=0;r0&&(h=-parseInt(t.substr(0,i),10),t=t.substr(i),a-=i,n=!1);a>=o;){if(i=parseInt(t.substr(0,o),10),t=t.substr(o),a-=o,n)n=!1;else{if(Xlt(h,s)<0)throw qw(new Ex(FXt+u+'"'));h=odt(h,l)}h=rdt(h,i)}if(Xlt(h,0)>0)throw qw(new Ex(FXt+u+'"'));if(!c&&Xlt(h=k9(h),0)<0)throw qw(new Ex(FXt+u+'"'));return h}function oYt(t,e){var n,i,r,a,o,s,c;if(Jq(),this.a=new ZO(this),this.b=t,this.c=e,this.f=MY(z9((MCt(),JOe),e)),this.f.dc())if((s=vkt(JOe,t))==e)for(this.e=!0,this.d=new Nw,this.f=new fc,this.f.Fc(C9t),zz(Pqt($9(JOe,Zet(t)),""),26)==t&&this.f.Fc(oG(JOe,Zet(t))),r=ARt(JOe,t).Kc();r.Ob();)switch(i=zz(r.Pb(),170),BW(z9(JOe,i))){case 4:this.d.Fc(i);break;case 5:this.f.Gc(MY(z9(JOe,i)))}else if(JE(),zz(e,66).Oj())for(this.e=!0,this.f=null,this.d=new Nw,o=0,c=(null==t.i&&U$t(t),t.i).length;o=0&&o0&&(zz(cK(t.b,e),124).a.b=i)}function cYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(DAt(e,"Comment pre-processing",1),n=0,c=new Wd(t.a);c.a0&&(d1(0,e.length),64!=(s=e.charCodeAt(0)))){if(37==s&&(c=!1,0!=(l=e.lastIndexOf("%"))&&(l==h-1||(d1(l+1,e.length),c=46==e.charCodeAt(l+1))))){if(m=yR("%",o=e.substr(1,l-1))?null:LYt(o),i=0,c)try{i=djt(e.substr(l+2),$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}for(p=Art(t.Wg());p.Ob();)if(aL(d=Tot(p),510)&&(w=(r=zz(d,590)).d,(null==m?null==w:yR(m,w))&&0==i--))return r;return null}if(f=-1==(u=e.lastIndexOf("."))?e:e.substr(0,u),n=0,-1!=u)try{n=djt(e.substr(u+1),$Kt,FWt)}catch(t){if(!aL(t=dst(t),127))throw qw(t);f=e}for(f=yR("%",f)?null:LYt(f),g=Art(t.Wg());g.Ob();)if(aL(d=Tot(g),191)&&(b=(a=zz(d,191)).ne(),(null==f?null==b:yR(f,b))&&0==n--))return a;return null}return $Ht(t,e)}function fYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A;for(y=new Nw,h=new Wd(t.b);h.a=t.length)return{done:!0};var i=t[n++];return{value:[i,e.get(i)],done:!1}}}},YBt()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(t){return this.obj[":"+t]},t.prototype.set=function(t,e){this.obj[":"+t]=e},t.prototype[rVt]=function(t){delete this.obj[":"+t]},t.prototype.keys=function(){var t=[];for(var e in this.obj)58==e.charCodeAt(0)&&t.push(e.substring(1));return t}),t}function pYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p;if(S$t(),null==t)return null;if(0==(h=8*t.length))return"";for(f=h/24|0,a=null,a=P8(MNe,KKt,25,4*(0!=(s=h%24)?f+1:f),15,1),u=0,l=0,e=0,n=0,i=0,o=0,r=0,c=0;c>24,u=(3&e)<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,g=0==(-128&n)?n>>4<<24>>24:(n>>4^240)<<24>>24,p=0==(-128&(i=t[r++]))?i>>6<<24>>24:(i>>6^252)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[g|u<<4],a[o++]=KLe[l<<2|p],a[o++]=KLe[63&i];return 8==s?(u=(3&(e=t[r]))<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[u<<4],a[o++]=61,a[o++]=61):16==s&&(e=t[r],l=(15&(n=t[r+1]))<<24>>24,u=(3&e)<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,g=0==(-128&n)?n>>4<<24>>24:(n>>4^240)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[g|u<<4],a[o++]=KLe[l<<2],a[o++]=61),qpt(a,0,a.length)}function bYt(t,e){var i,r,a,o,s,c;if(0==t.e&&t.p>0&&(t.p=-(t.p-1)),t.p>$Kt&&n4(e,t.p-lXt),s=e.q.getDate(),$Q(e,1),t.k>=0&&mJ(e,t.k),t.c>=0?$Q(e,t.c):t.k>=0?(r=35-new yct(e.q.getFullYear()-lXt,e.q.getMonth(),35).q.getDate(),$Q(e,n.Math.min(r,s))):$Q(e,s),t.f<0&&(t.f=e.q.getHours()),t.b>0&&t.f<12&&(t.f+=12),oL(e,24==t.f&&t.g?0:t.f),t.j>=0&&b6(e,t.j),t.n>=0&&Y8(e,t.n),t.i>=0&&pM(e,adt(odt(Dkt(fot(e.q.getTime()),XKt),XKt),t.i)),t.a&&(n4(a=new DA,a.q.getFullYear()-lXt-80),uT(fot(e.q.getTime()),fot(a.q.getTime()))&&n4(e,a.q.getFullYear()-lXt+100)),t.d>=0)if(-1==t.c)(i=(7+t.d-e.q.getDay())%7)>3&&(i-=7),c=e.q.getMonth(),$Q(e,e.q.getDate()+i),e.q.getMonth()!=c&&$Q(e,e.q.getDate()+(i>0?-7:7));else if(e.q.getDay()!=t.d)return!1;return t.o>$Kt&&(o=e.q.getTimezoneOffset(),pM(e,adt(fot(e.q.getTime()),60*(t.o-o)*XKt))),!0}function wYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;if(aL(r=vEt(e,(hWt(),pfe)),239)){for(d=zz(r,33),g=e.e,h=new gD(e.c),a=e.d,h.a+=a.b,h.b+=a.d,TN(zz(tOt(d,(HZt(),Hbe)),174),(ejt(),HIe))&&(Mf(f=zz(tOt(d,Gbe),116),a.a),jf(f,a.d),Df(f,a.b),$f(f,a.c)),n=new Nw,u=new Wd(e.a);u.a0&&Wz(t.p,f),Wz(t.o,f);p=u+(e-=r),h+=e*t.e,a5(t.a,c,rft(p)),a5(t.b,c,h),t.j=n.Math.max(t.j,p),t.k=n.Math.max(t.k,h),t.d+=e,e+=w}}function kYt(){var t;kYt=M,CIe=new WS(hQt,0),uIe=new WS(vQt,1),cIe=new WS(xQt,2),TIe=new WS(kQt,3),SIe=new WS(_Qt,4),TX(),gIe=new Dx(new VR(t=zz(Kk($Ie),9),zz(TF(t,t.length),9),0)),pIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[]))),lIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[]))),_Ie=fht(_U(TIe,Sst(Ux($Ie,1),QJt,61,0,[]))),EIe=fht(_U(SIe,Sst(Ux($Ie,1),QJt,61,0,[]))),vIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[TIe]))),dIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),kIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),bIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe]))),AIe=fht(_U(TIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),hIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[TIe]))),yIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,SIe]))),fIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe]))),xIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe]))),wIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe]))),mIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe,SIe])))}function _Yt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;if(0!=e.b){for(f=new VA,o=null,d=null,i=SQ(n.Math.floor(n.Math.log(e.b)*n.Math.LOG10E)+1),s=0,m=lwt(e,0);m.b!=m.d.c;)for(b=zz(d3(m),86),UI(d)!==UI(vEt(b,(UHt(),rxe)))&&(d=TB(vEt(b,rxe)),s=0),o=null!=d?d+p0(s++,i):p0(s++,i),hct(b,rxe,o),p=new gb(lwt(new db(b).a.d,0));__(p.a);)r5(f,g=zz(d3(p.a),188).c,f.c.b,f.c),hct(g,rxe,o);for(h=new Pw,a=0;a=u){CP(m.b>0),m.a.Xb(m.c=--m.b);break}b.a>l&&(a?(wst(a.b,b.b),a.a=n.Math.max(a.a,b.a),hW(m)):(Wz(b.b,f),b.c=n.Math.min(b.c,l),b.a=n.Math.max(b.a,u),a=b))}a||((a=new iy).c=l,a.a=u,vF(m,a),Wz(a.b,f))}for(c=e.b,h=0,w=new Wd(r);w.as?1:0:(t.b&&(t.b._b(a)&&(r=zz(t.b.xc(a),19).a),t.b._b(c)&&(s=zz(t.b.xc(c),19).a)),rs?1:0)):0!=e.e.c.length&&0!=n.g.c.length?1:-1}function TYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(DAt(e,D1t,1),g=new Nw,v=new Nw,u=new Wd(t.b);u.a0&&(x-=p),EHt(s,x),f=0,g=new Wd(s.a);g.a0),c.a.Xb(c.c=--c.b)),u=.4*r*f,!o&&c.be.d.c){if((d=t.c[e.a.d])==(b=t.c[h.a.d]))continue;ZNt(oE(aE(sE(rE(new qm,1),100),d),b))}}}function LYt(t){var e,n,i,r,a,o,s,c;if(Rqt(),null==t)return null;if((r=UM(t,QAt(37)))<0)return t;for(c=new fN(t.substr(0,r)),e=P8(NNe,y6t,25,4,15,1),s=0,i=0,o=t.length;rr+2&&nct((d1(r+1,t.length),t.charCodeAt(r+1)),IDe,MDe)&&nct((d1(r+2,t.length),t.charCodeAt(r+2)),IDe,MDe))if(n=Sq((d1(r+1,t.length),t.charCodeAt(r+1)),(d1(r+2,t.length),t.charCodeAt(r+2))),r+=2,i>0?128==(192&n)?e[s++]=n<<24>>24:i=0:n>=128&&(192==(224&n)?(e[s++]=n<<24>>24,i=2):224==(240&n)?(e[s++]=n<<24>>24,i=3):240==(248&n)&&(e[s++]=n<<24>>24,i=4)),i>0){if(s==i){switch(s){case 2:PZ(c,((31&e[0])<<6|63&e[1])&VKt);break;case 3:PZ(c,((15&e[0])<<12|(63&e[1])<<6|63&e[2])&VKt)}s=0,i=0}}else{for(a=0;a0){if(o+i>t.length)return!1;s=ZIt(t.substr(0,o+i),e)}else s=ZIt(t,e);switch(a){case 71:return s=YAt(t,o,Sst(Ux(Vee,1),lKt,2,6,[fXt,dXt]),e),r.e=s,!0;case 77:return wBt(t,e,r,s,o);case 76:return mBt(t,e,r,s,o);case 69:return aSt(t,e,o,r);case 99:return oSt(t,e,o,r);case 97:return s=YAt(t,o,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"]),e),r.b=s,!0;case 121:return yBt(t,e,o,s,n,r);case 100:return!(s<=0||(r.c=s,0));case 83:return!(s<0)&&_gt(s,o,e[0],r);case 104:12==s&&(s=0);case 75:case 72:return!(s<0||(r.f=s,r.g=!1,0));case 107:return!(s<0||(r.f=s,r.g=!0,0));case 109:return!(s<0||(r.j=s,0));case 115:return!(s<0||(r.n=s,0));case 90:if(o_&&(p.c=_-p.b),Wz(s.d,new PU(p,kft(s,p))),y=e==uIe?n.Math.max(y,b.b+l.b.rf().b):n.Math.min(y,b.b));for(y+=e==uIe?t.t:-t.t,(v=Sgt((s.e=y,s)))>0&&(zz(cK(t.b,e),124).a.b=v),h=d.Kc();h.Ob();)!(l=zz(h.Pb(),111)).c||l.c.d.c.length<=0||((p=l.c.i).c-=l.e.a,p.d-=l.e.b)}else sYt(t,e)}function BYt(t){var e,n,i,r,a,o,s,c,u,h;for(e=new Pw,o=new DL(t);o.e!=o.i.gc();){for(a=zz(kwt(o),33),n=new Fm,KW(Eae,a,n),h=new oe,i=zz(C4(new FH(null,new GY(new cG(JL(pLt(a).a.Kc(),new l)))),TU(h,y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)])))),83),Jnt(n,zz(i.xc((lN(),!0)),14),new se),r=zz(C4(DK(zz(i.xc(!1),15).Lc(),new ce),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne]))),15).Kc();r.Ob();)(u=IEt(zz(r.Pb(),79)))&&((s=zz(HI(DV(e.f,u)),21))||(s=DPt(u),_St(e.f,u,s)),zrt(n,s));for(i=zz(C4(new FH(null,new GY(new cG(JL(bLt(a).a.Kc(),new l)))),TU(h,y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne])))),83),Jnt(n,zz(i.xc(!0),14),new ue),c=zz(C4(DK(zz(i.xc(!1),15).Lc(),new le),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne]))),15).Kc();c.Ob();)(u=MEt(zz(c.Pb(),79)))&&((s=zz(HI(DV(e.f,u)),21))||(s=DPt(u),_St(e.f,u,s)),zrt(n,s))}}function FYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p;if(cqt(),(c=Xlt(t,0)<0)&&(t=k9(t)),0==Xlt(t,0))switch(e){case 0:return"0";case 1:return KXt;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return(d=new Sx).a+=e<0?"0E+":"0E",d.a+=e==$Kt?"2147483648":""+-e,d.a}h=P8(MNe,KKt,25,1+(l=18),15,1),n=l,p=t;do{u=p,p=Dkt(p,10),h[--n]=pU(adt(48,rdt(u,odt(p,10))))&VKt}while(0!=Xlt(p,0));if(r=rdt(rdt(rdt(l,n),e),1),0==e)return c&&(h[--n]=45),qpt(h,n,l-n);if(e>0&&Xlt(r,-6)>=0){if(Xlt(r,0)>=0){for(a=n+pU(r),s=l-1;s>=a;s--)h[s+1]=h[s];return h[++a]=46,c&&(h[--n]=45),qpt(h,n,l-n+1)}for(o=2;uT(o,adt(k9(r),1));o++)h[--n]=48;return h[--n]=46,h[--n]=48,c&&(h[--n]=45),qpt(h,n,l-n)}return g=n+1,i=l,f=new Ix,c&&(f.a+="-"),i-g>=1?(PZ(f,h[n]),f.a+=".",f.a+=qpt(h,n+1,l-n-1)):f.a+=qpt(h,n,l-n),f.a+="E",Xlt(r,0)>0&&(f.a+="+"),f.a+=""+mG(r),f.a}function RYt(t,e,n){var i,r,a,o,s,c,u,l,h,f;if(t.e.a.$b(),t.f.a.$b(),t.c.c=P8(Ote,HWt,1,0,5,1),t.i.c=P8(Ote,HWt,1,0,5,1),t.g.a.$b(),e)for(o=new Wd(e.a);o.a=1&&(k-l>0&&p>=0?(Snt(f,f.i+x),Int(f,f.j+u*l)):k-l<0&&g>=0&&(Snt(f,f.i+x*k),Int(f,f.j+u)));return Qwt(t,(lWt(),RTe),(vpt(),new VR(o=zz(Kk(VIe),9),zz(TF(o,o.length),9),0))),new PS(_,h)}function $Yt(t){var e,i,r,a,o,s,c,u,l,h,f;if(h=QQ(SAt(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82)))==QQ(SAt(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82))),s=new Uk,(e=zz(tOt(t,(Wut(),lSe)),74))&&e.b>=2){if(0==(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i)e_(),i=new oc,h7((!t.a&&(t.a=new nY($Me,t,6,6)),t.a),i);else if((!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i>1)for(f=new aP((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));f.e!=f.i.gc();)Vkt(f);X$t(e,zz(Ket((!t.a&&(t.a=new nY($Me,t,6,6)),t.a),0),202))}if(h)for(r=new DL((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));r.e!=r.i.gc();)for(u=new DL((!(i=zz(kwt(r),202)).a&&(i.a=new OL(PMe,i,5)),i.a));u.e!=u.i.gc();)c=zz(kwt(u),469),s.a=n.Math.max(s.a,c.a),s.b=n.Math.max(s.b,c.b);for(o=new DL((!t.n&&(t.n=new nY(GMe,t,1,7)),t.n));o.e!=o.i.gc();)a=zz(kwt(o),137),(l=zz(tOt(a,bSe),8))&&TD(a,l.a,l.b),h&&(s.a=n.Math.max(s.a,a.i+a.g),s.b=n.Math.max(s.b,a.j+a.f));return s}function zYt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_;for(m=e.c.length,a=new URt(t.a,i,null,null),_=P8(PNe,UXt,25,m,15,1),g=P8(PNe,UXt,25,m,15,1),d=P8(PNe,UXt,25,m,15,1),p=0,c=0;c_[u]&&(p=u),h=new Wd(t.a.b);h.ag&&(o&&(hM(k,d),hM(A,rft(l.b-1))),I=i.b,M+=d+e,d=0,h=n.Math.max(h,i.b+i.c+S)),Snt(c,I),Int(c,M),h=n.Math.max(h,I+S+i.c),d=n.Math.max(d,f),I+=S+e;if(h=n.Math.max(h,r),(C=M+d+i.a)dJt,T=n.Math.abs(d.b-p.b)>dJt,(!i&&E&&T||i&&(E||T))&&Bq(w.a,x)),zrt(w.a,r),0==r.b?d=x:(CP(0!=r.b),d=zz(r.c.b.c,8)),Qot(g,f,b),sat(a)==A&&(mW(A.i)!=a.a&&DCt(b=new Uk,mW(A.i),y),hct(w,Ffe,b)),TTt(g,w,y),h.a.zc(g,h);TJ(w,k),EJ(w,A)}for(l=h.a.ec().Kc();l.Ob();)TJ(u=zz(l.Pb(),17),null),EJ(u,null);HTt(e)}function GYt(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;if(1==t.gc())return zz(t.Xb(0),231);if(t.gc()<=0)return new v6;for(a=t.Kc();a.Ob();){for(i=zz(a.Pb(),231),p=0,h=FWt,f=FWt,u=$Kt,l=$Kt,g=new Wd(i.e);g.ac&&(v=0,x+=s+m,s=0),XRt(b,i,v,x),e=n.Math.max(e,v+w.a),s=n.Math.max(s,w.b),v+=w.a+m;return b}function YYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;switch(l=new xy,t.a.g){case 3:f=zz(vEt(e.e,(hWt(),Nfe)),15),d=zz(vEt(e.j,Nfe),15),g=zz(vEt(e.f,Nfe),15),n=zz(vEt(e.e,Ofe),15),i=zz(vEt(e.j,Ofe),15),r=zz(vEt(e.f,Ofe),15),wst(o=new Nw,f),d.Jc(new va),wst(o,aL(d,152)?c6(zz(d,152)):aL(d,131)?zz(d,131).a:aL(d,54)?new hv(d):new SA(d)),wst(o,g),wst(a=new Nw,n),wst(a,aL(i,152)?c6(zz(i,152)):aL(i,131)?zz(i,131).a:aL(i,54)?new hv(i):new SA(i)),wst(a,r),hct(e.f,Nfe,o),hct(e.f,Ofe,a),hct(e.f,Pfe,e.f),hct(e.e,Nfe,null),hct(e.e,Ofe,null),hct(e.j,Nfe,null),hct(e.j,Ofe,null);break;case 1:zrt(l,e.e.a),Bq(l,e.i.n),zrt(l,iot(e.j.a)),Bq(l,e.a.n),zrt(l,e.f.a);break;default:zrt(l,e.e.a),zrt(l,iot(e.j.a)),zrt(l,e.f.a)}vX(e.f.a),zrt(e.f.a,l),TJ(e.f,e.e.c),s=zz(vEt(e.e,(HZt(),mbe)),74),u=zz(vEt(e.j,mbe),74),c=zz(vEt(e.f,mbe),74),(s||u||c)&&(CY(h=new xy,c),CY(h,u),CY(h,s),hct(e.f,mbe,h)),TJ(e.j,null),EJ(e.j,null),TJ(e.e,null),EJ(e.e,null),CJ(e.a,null),CJ(e.i,null),e.g&&YYt(t,e.g)}function ZYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;if(S$t(),null==t)return null;if((g=gft(a=K9(t)))%4!=0)return null;if(0==(p=g/4|0))return P8(NNe,y6t,25,0,15,1);for(h=null,e=0,n=0,i=0,r=0,o=0,s=0,c=0,u=0,d=0,f=0,l=0,h=P8(NNe,y6t,25,3*p,15,1);d>4)<<24>>24,h[f++]=((15&n)<<4|i>>2&15)<<24>>24,h[f++]=(i<<6|r)<<24>>24}return K_(o=a[l++])&&K_(s=a[l++])?(e=WLe[o],n=WLe[s],c=a[l++],u=a[l++],-1==WLe[c]||-1==WLe[u]?61==c&&61==u?0!=(15&n)?null:(sqt(h,0,b=P8(NNe,y6t,25,3*d+1,15,1),0,3*d),b[f]=(e<<2|n>>4)<<24>>24,b):61!=c&&61==u?0!=(3&(i=WLe[c]))?null:(sqt(h,0,b=P8(NNe,y6t,25,3*d+2,15,1),0,3*d),b[f++]=(e<<2|n>>4)<<24>>24,b[f]=((15&n)<<4|i>>2&15)<<24>>24,b):null:(i=WLe[c],r=WLe[u],h[f++]=(e<<2|n>>4)<<24>>24,h[f++]=((15&n)<<4|i>>2&15)<<24>>24,h[f++]=(i<<6|r)<<24>>24,h)):null}function WYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;for(DAt(e,D1t,1),f=zz(vEt(t,(HZt(),Jpe)),218),i=new Wd(t.b);i.a=2){for(d=!0,n=zz(t0(l=new Wd(r.j)),11),h=null;l.a0&&(a=zz(PH(w.c.a,_-1),10),s=t.i[a.p],E=n.Math.ceil(RO(t.n,a,w)),o=k.a.e-w.d.d-(s.a.e+a.o.b+a.d.a)-E),l=RXt,_0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)<0,p=v.a.e.e-v.a.a-(v.b.e.e-v.b.a)<0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)>0,g=v.a.e.e+v.b.aA.b.e.e+A.a.a,x=0,!b&&!p&&(d?o+f>0?x=f:l-r>0&&(x=r):g&&(o+c>0?x=c:l-y>0&&(x=y))),k.a.e+=x,k.b&&(k.d.e+=x),1)))}function XYt(t,e,i){var r,a,o,s,c,u,l,h,f,d;if(r=new YK(e.qf().a,e.qf().b,e.rf().a,e.rf().b),a=new dD,t.c)for(s=new Wd(e.wf());s.au&&(i.a+=rL(P8(MNe,KKt,25,-u,15,1))),i.a+="Is",UM(c,QAt(32))>=0)for(r=0;r=i.o.b/2}w?(b=zz(vEt(i,(hWt(),Rfe)),15))?f?a=b:(r=zz(vEt(i,Bhe),15))?a=b.gc()<=r.gc()?b:r:(a=new Nw,hct(i,Bhe,a)):(a=new Nw,hct(i,Rfe,a)):(r=zz(vEt(i,(hWt(),Bhe)),15))?h?a=r:(b=zz(vEt(i,Rfe),15))?a=r.gc()<=b.gc()?r:b:(a=new Nw,hct(i,Rfe,a)):(a=new Nw,hct(i,Bhe,a)),a.Fc(t),hct(t,(hWt(),Rhe),n),e.d==n?(EJ(e,null),n.e.c.length+n.g.c.length==0&&SJ(n,null),wut(n)):(TJ(e,null),n.e.c.length+n.g.c.length==0&&SJ(n,null)),vX(e.a)}function nZt(t,e){var n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I;for(m=new E2(t.b,0),p=0,u=zz((h=e.Kc()).Pb(),19).a,x=0,n=new Fm,_=new hD;m.b=t.a&&(r=xzt(t,m),f=n.Math.max(f,r.b),v=n.Math.max(v,r.d),Wz(c,new rI(m,r)));for(_=new Nw,h=0;h0),b.a.Xb(b.c=--b.b),vF(b,A=new qZ(t.b)),CP(b.b0?(l=0,w&&(l+=c),l+=(E-1)*s,y&&(l+=c),A&&y&&(l=n.Math.max(l,ePt(y,s,m,_))),l0){for(f=l<100?null:new $k(l),g=(u=new _at(e)).g,b=P8(DNe,hXt,25,l,15,1),i=0,y=new wet(l),r=0;r=0;)if(null!=d?Pht(d,g[c]):UI(d)===UI(g[c])){b.length<=i&&sqt(b,0,b=P8(DNe,hXt,25,2*b.length,15,1),0,i),b[i++]=r,h7(y,g[c]);break t}if(UI(d)===UI(s))break}}if(u=y,g=y.g,l=i,i>b.length&&sqt(b,0,b=P8(DNe,hXt,25,i,15,1),0,i),i>0){for(m=!0,a=0;a=0;)Nvt(t,b[o]);if(i!=l){for(r=l;--r>=i;)Nvt(u,r);sqt(b,0,b=P8(DNe,hXt,25,i,15,1),0,i)}e=u}}}else for(e=_vt(t,e),r=t.i;--r>=0;)e.Hc(t.g[r])&&(Nvt(t,r),m=!0);if(m){if(null!=b){for(h=1==(n=e.gc())?vJ(t,4,e.Kc().Pb(),null,b[0],p):vJ(t,6,e,b,b[0],p),f=n<100?null:new $k(n),r=e.Kc();r.Ob();)f=HR(t,zz(d=r.Pb(),72),f);f?(f.Ei(h),f.Fi()):got(t.e,h)}else{for(f=OR(e.gc()),r=e.Kc();r.Ob();)f=HR(t,zz(d=r.Pb(),72),f);f&&f.Fi()}return!0}return!1}function cZt(t,e){var n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y;for((n=new hmt(e)).a||wjt(e),u=dFt(e),c=new wQ,b=new VPt,p=new Wd(e.a);p.a0||i.o==ave&&a0?(h=zz(PH(f.c.a,o-1),10),A=RO(t.b,f,h),b=f.n.b-f.d.d-(h.n.b+h.o.b+h.d.a+A)):b=f.n.b-f.d.d,u=n.Math.min(b,u),o(o=r_t(t,n))?sRt(t,e,n):sRt(t,n,e),ro?1:0}return(i=zz(vEt(e,(hWt(),gfe)),19).a)>(a=zz(vEt(n,gfe),19).a)?sRt(t,e,n):sRt(t,n,e),ia?1:0}function dZt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p;if(Hv(AB(tOt(e,(lWt(),GTe)))))return TX(),TX(),lne;if(c=0!=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,u=!(l=xIt(e)).dc(),c||u){if(!(r=zz(tOt(e,yCe),149)))throw qw(new rx("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout."));if(p=MS(r,(hDt(),tDe)),Pbt(e),!c&&u&&!p)return TX(),TX(),lne;if(s=new Nw,UI(tOt(e,_Te))===UI((cht(),wSe))&&(MS(r,VMe)||MS(r,XMe)))for(f=mFt(t,e),zrt(d=new VA,(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));0!=d.b;)Pbt(h=zz(0==d.b?null:(CP(0!=d.b),Oet(d,d.a.a)),33)),UI(tOt(h,_Te))===UI(ySe)||C8(h,nTe)&&!k5(r,tOt(h,yCe))?(wst(s,dZt(t,h,n,i)),Qwt(h,_Te,ySe),jRt(h)):zrt(d,(!h.a&&(h.a=new nY(YMe,h,10,11)),h.a));else for(f=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,o=new DL((!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));o.e!=o.i.gc();)wst(s,dZt(t,a=zz(kwt(o),33),n,i)),jRt(a);for(g=new Wd(s);g.a=0?hgt(s):Eft(hgt(s)),t.Ye(swe,d)),u=new Uk,f=!1,t.Xe(twe)?(qP(u,zz(t.We(twe),8)),f=!0):vL(u,o.a/2,o.b/2),d.g){case 4:hct(l,xbe,(Edt(),$fe)),hct(l,Uhe,(Jst(),Ole)),l.o.b=o.b,p<0&&(l.o.a=-p),USt(h,(kYt(),cIe)),f||(u.a=o.a),u.a-=o.a;break;case 2:hct(l,xbe,(Edt(),qfe)),hct(l,Uhe,(Jst(),Mle)),l.o.b=o.b,p<0&&(l.o.a=-p),USt(h,(kYt(),SIe)),f||(u.a=0);break;case 1:hct(l,ife,(G9(),She)),l.o.a=o.a,p<0&&(l.o.b=-p),USt(h,(kYt(),TIe)),f||(u.b=o.b),u.b-=o.b;break;case 3:hct(l,ife,(G9(),The)),l.o.a=o.a,p<0&&(l.o.b=-p),USt(h,(kYt(),uIe)),f||(u.b=0)}if(qP(h.n,u),hct(l,twe,u),e==YSe||e==WSe||e==ZSe){if(g=0,e==YSe&&t.Xe(iwe))switch(d.g){case 1:case 2:g=zz(t.We(iwe),19).a;break;case 3:case 4:g=-zz(t.We(iwe),19).a}else switch(d.g){case 4:case 2:g=a.b,e==WSe&&(g/=r.b);break;case 1:case 3:g=a.a,e==WSe&&(g/=r.a)}hct(l,Afe,g)}return hct(l,Xhe,d),l}function pZt(t){var e,n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_;if((n=Uv(EB(vEt(t.a.j,(HZt(),jpe)))))<-1||!t.a.i||LR(zz(vEt(t.a.o,nwe),98))||sdt(t.a.o,(kYt(),cIe)).gc()<2&&sdt(t.a.o,SIe).gc()<2)return!0;if(t.a.c.Rf())return!1;for(v=0,y=0,m=new Nw,c=0,u=(s=t.a.e).length;c=n}function bZt(){function t(t){var e=this;this.dispatch=function(e){var n=e.data;switch(n.cmd){case"algorithms":var i=Cgt((TX(),new qd(new Md(fDe.b))));t.postMessage({id:n.id,data:i});break;case"categories":var r=Cgt((TX(),new qd(new Md(fDe.c))));t.postMessage({id:n.id,data:r});break;case"options":var a=Cgt((TX(),new qd(new Md(fDe.d))));t.postMessage({id:n.id,data:a});break;case"register":dUt(n.algorithms),t.postMessage({id:n.id});break;case"layout":Bzt(n.graph,n.layoutOptions||{},n.options||{}),t.postMessage({id:n.id,data:n.graph})}},this.saveDispatch=function(n){try{e.dispatch(n)}catch(e){t.postMessage({id:n.data.id,error:e})}}}function n(e){var n=this;this.dispatcher=new t({postMessage:function(t){n.onmessage({data:t})}}),this.postMessage=function(t){setTimeout((function(){n.dispatcher.saveDispatch({data:t})}),0)}}if(o_(),typeof document===wVt&&typeof self!==wVt){var r=new t(self);self.onmessage=r.saveDispatch}else typeof e!==wVt&&e.exports&&(Object.defineProperty(i,"__esModule",{value:!0}),e.exports={default:n,Worker:n})}function wZt(t){t.N||(t.N=!0,t.b=kot(t,0),Rrt(t.b,0),Rrt(t.b,1),Rrt(t.b,2),t.bb=kot(t,1),Rrt(t.bb,0),Rrt(t.bb,1),t.fb=kot(t,2),Rrt(t.fb,3),Rrt(t.fb,4),jrt(t.fb,5),t.qb=kot(t,3),Rrt(t.qb,0),jrt(t.qb,1),jrt(t.qb,2),Rrt(t.qb,3),Rrt(t.qb,4),jrt(t.qb,5),Rrt(t.qb,6),t.a=_ot(t,4),t.c=_ot(t,5),t.d=_ot(t,6),t.e=_ot(t,7),t.f=_ot(t,8),t.g=_ot(t,9),t.i=_ot(t,10),t.j=_ot(t,11),t.k=_ot(t,12),t.n=_ot(t,13),t.o=_ot(t,14),t.p=_ot(t,15),t.q=_ot(t,16),t.s=_ot(t,17),t.r=_ot(t,18),t.t=_ot(t,19),t.u=_ot(t,20),t.v=_ot(t,21),t.w=_ot(t,22),t.B=_ot(t,23),t.A=_ot(t,24),t.C=_ot(t,25),t.D=_ot(t,26),t.F=_ot(t,27),t.G=_ot(t,28),t.H=_ot(t,29),t.J=_ot(t,30),t.I=_ot(t,31),t.K=_ot(t,32),t.M=_ot(t,33),t.L=_ot(t,34),t.P=_ot(t,35),t.Q=_ot(t,36),t.R=_ot(t,37),t.S=_ot(t,38),t.T=_ot(t,39),t.U=_ot(t,40),t.V=_ot(t,41),t.X=_ot(t,42),t.W=_ot(t,43),t.Y=_ot(t,44),t.Z=_ot(t,45),t.$=_ot(t,46),t._=_ot(t,47),t.ab=_ot(t,48),t.cb=_ot(t,49),t.db=_ot(t,50),t.eb=_ot(t,51),t.gb=_ot(t,52),t.hb=_ot(t,53),t.ib=_ot(t,54),t.jb=_ot(t,55),t.kb=_ot(t,56),t.lb=_ot(t,57),t.mb=_ot(t,58),t.nb=_ot(t,59),t.ob=_ot(t,60),t.pb=_ot(t,61))}function mZt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;if(y=0,0==e.f.a)for(w=new Wd(t);w.au&&0==(f1(u,e.c.length),zz(e.c[u],200)).a.c.length;)v9(e,(f1(u,e.c.length),e.c[u]));if(!c){--a;continue}if(Ojt(e,l,r,c,f,n,u,i)){h=!0;continue}if(f){if(Jzt(e,l,r,c,n,u,i)){h=!0;continue}if(Olt(l,r)){r.c=!0,h=!0;continue}}else if(Olt(l,r)){r.c=!0,h=!0;continue}if(h)continue}Olt(l,r)?(r.c=!0,h=!0,c&&(c.k=!1)):Gyt(r.q)}else OA(),Ext(l,r),--a,h=!0;return h}function xZt(t,e,i,r,a,o,s){var c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D;for(b=0,C=0,l=new Wd(t.b);l.ab&&(o&&(hM(_,g),hM(E,rft(h.b-1)),Wz(t.d,p),c.c=P8(Ote,HWt,1,0,5,1)),M=i.b,D+=g+e,g=0,f=n.Math.max(f,i.b+i.c+I)),c.c[c.c.length]=u,Twt(u,M,D),f=n.Math.max(f,M+I+i.c),g=n.Math.max(g,d),M+=I+e,p=u;if(wst(t.a,c),Wz(t.d,zz(PH(c,c.c.length-1),157)),f=n.Math.max(f,r),(S=D+g+i.a)1&&(s=n.Math.min(s,n.Math.abs(zz(Fwt(c.a,1),8).b-h.b)))));else for(p=new Wd(e.j);p.aa&&(o=d.a-a,s=FWt,r.c=P8(Ote,HWt,1,0,5,1),a=d.a),d.a>=a&&(r.c[r.c.length]=c,c.a.b>1&&(s=n.Math.min(s,n.Math.abs(zz(Fwt(c.a,c.a.b-2),8).b-d.b)))));if(0!=r.c.length&&o>e.o.a/2&&s>e.o.b/2){for(SJ(g=new ITt,e),USt(g,(kYt(),uIe)),g.n.a=e.o.a/2,SJ(b=new ITt,e),USt(b,TIe),b.n.a=e.o.a/2,b.n.b=e.o.b,u=new Wd(r);u.a=l.b?TJ(c,b):TJ(c,g)):(l=zz(bq(c.a),8),(0==c.a.b?b1(c.c):zz(wP(c.a),8)).b>=l.b?EJ(c,b):EJ(c,g)),(f=zz(vEt(c,(HZt(),mbe)),74))&&xgt(f,l,!0);e.n.a=a-e.o.a/2}}function AZt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(u=e,Lit(c=X3(t,L3(n),u),F2(u,U6t)),l=zz(lnt(t.g,kIt(GQ(u,E6t))),33),i=null,(o=GQ(u,"sourcePort"))&&(i=kIt(o)),h=zz(lnt(t.j,i),118),!l)throw qw(new nx("An edge must have a source node (edge id: '"+Vpt(u)+K6t));if(h&&!gW(WQ(h),l))throw qw(new nx("The source port of an edge must be a port of the edge's source node (edge id: '"+F2(u,U6t)+K6t));if(!c.b&&(c.b=new lR(RMe,c,4,7)),h7(c.b,h||l),f=zz(lnt(t.g,kIt(GQ(u,Q6t))),33),r=null,(s=GQ(u,"targetPort"))&&(r=kIt(s)),d=zz(lnt(t.j,r),118),!f)throw qw(new nx("An edge must have a target node (edge id: '"+Vpt(u)+K6t));if(d&&!gW(WQ(d),f))throw qw(new nx("The target port of an edge must be a port of the edge's target node (edge id: '"+F2(u,U6t)+K6t));if(!c.c&&(c.c=new lR(RMe,c,5,8)),h7(c.c,d||f),0==(!c.b&&(c.b=new lR(RMe,c,4,7)),c.b).i||0==(!c.c&&(c.c=new lR(RMe,c,5,8)),c.c).i)throw a=F2(u,U6t),qw(new nx(W6t+a+K6t));return CAt(u,c),lOt(u,c),Bct(t,u,c)}function EZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T;return h=I$t(qN(t,(kYt(),gIe)),e),g=svt(qN(t,pIe),e),v=svt(qN(t,_Ie),e),A=cvt(qN(t,EIe),e),f=cvt(qN(t,lIe),e),m=svt(qN(t,kIe),e),p=svt(qN(t,bIe),e),k=svt(qN(t,AIe),e),x=svt(qN(t,hIe),e),E=cvt(qN(t,dIe),e),w=svt(qN(t,vIe),e),y=svt(qN(t,yIe),e),_=svt(qN(t,fIe),e),T=cvt(qN(t,xIe),e),d=cvt(qN(t,wIe),e),b=svt(qN(t,mIe),e),n=Nct(Sst(Ux(PNe,1),UXt,25,15,[m.a,A.a,k.a,T.a])),i=Nct(Sst(Ux(PNe,1),UXt,25,15,[g.a,h.a,v.a,b.a])),r=w.a,a=Nct(Sst(Ux(PNe,1),UXt,25,15,[p.a,f.a,x.a,d.a])),u=Nct(Sst(Ux(PNe,1),UXt,25,15,[m.b,g.b,p.b,y.b])),c=Nct(Sst(Ux(PNe,1),UXt,25,15,[A.b,h.b,f.b,b.b])),l=E.b,s=Nct(Sst(Ux(PNe,1),UXt,25,15,[k.b,v.b,x.b,_.b])),g7(qN(t,gIe),n+r,u+l),g7(qN(t,mIe),n+r,u+l),g7(qN(t,pIe),n+r,0),g7(qN(t,_Ie),n+r,u+l+c),g7(qN(t,EIe),0,u+l),g7(qN(t,lIe),n+r+i,u+l),g7(qN(t,bIe),n+r+i,0),g7(qN(t,AIe),0,u+l+c),g7(qN(t,hIe),n+r+i,u+l+c),g7(qN(t,dIe),0,u),g7(qN(t,vIe),n,0),g7(qN(t,fIe),0,u+l+c),g7(qN(t,wIe),n+r+i,0),(o=new Uk).a=Nct(Sst(Ux(PNe,1),UXt,25,15,[n+i+r+a,E.a,y.a,_.a])),o.b=Nct(Sst(Ux(PNe,1),UXt,25,15,[u+c+l+s,w.b,T.b,d.b])),o}function TZt(t){var e,n,i,r,a,o,s,c,u,h,f,d,g,p,b;for(p=new Nw,f=new Wd(t.d.b);f.ar.d.d+r.d.a?h.f.d=!0:(h.f.d=!0,h.f.a=!0))),i.b!=i.d.c&&(e=n);h&&(a=zz(FZ(t.f,o.d.i),57),e.ba.d.d+a.d.a?h.f.d=!0:(h.f.d=!0,h.f.a=!0))}for(s=new cG(JL(fdt(d).a.Kc(),new l));bDt(s);)0!=(o=zz(Y5(s),17)).a.b&&(e=zz(wP(o.a),8),o.d.j==(kYt(),uIe)&&((b=new Szt(e,new PS(e.a,r.d.d),r,o)).f.a=!0,b.a=o.d,p.c[p.c.length]=b),o.d.j==TIe&&((b=new Szt(e,new PS(e.a,r.d.d+r.d.a),r,o)).f.d=!0,b.a=o.d,p.c[p.c.length]=b))}return p}function CZt(t,e,n){var i,r,a,o,s,c,u;if(DAt(n,"Network simplex node placement",1),t.e=e,t.n=zz(vEt(e,(hWt(),Dfe)),304),uHt(t),R_t(t),QA(gtt(new FH(null,new g1(t.e.b,16)),new qa),new ab(t)),QA(DK(gtt(DK(gtt(new FH(null,new g1(t.e.b,16)),new eo),new no),new io),new ro),new rb(t)),Hv(AB(vEt(t.e,(HZt(),Pbe))))&&(DAt(a=vat(n,1),"Straight Edges Pre-Processing",1),_Gt(t),HTt(a)),Tmt(t.f),r=zz(vEt(e,Pwe),19).a*t.f.a.c.length,KRt(Xx(Vx(zj(t.f),r),!1),vat(n,1)),0!=t.d.a.gc()){for(DAt(a=vat(n,1),"Flexible Where Space Processing",1),o=zz(ON(MG(OK(new FH(null,new g1(t.f.a,16)),new Ha),new Ba)),19).a,s=zz(ON(IG(OK(new FH(null,new g1(t.f.a,16)),new Ua),new Fa)),19).a-o,c=DN(new Hm,t.f),u=DN(new Hm,t.f),ZNt(oE(aE(rE(sE(new qm,2e4),s),c),u)),QA(DK(DK(LY(t.i),new Ga),new Ya),new GK(o,c,s,u)),i=t.d.a.ec().Kc();i.Ob();)zz(i.Pb(),213).g=1;KRt(Xx(Vx(zj(t.f),r),!1),vat(a,1)),HTt(a)}Hv(AB(vEt(e,Pbe)))&&(DAt(a=vat(n,1),"Straight Edges Post-Processing",1),CCt(t),HTt(a)),VUt(t),t.e=null,t.f=null,t.i=null,t.c=null,OY(t.k),t.j=null,t.a=null,t.o=null,t.d.a.$b(),HTt(n)}function SZt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(s=new Wd(t.a.b);s.a0)if(r=h.gc(),u=SQ(n.Math.floor((r+1)/2))-1,a=SQ(n.Math.ceil((r+1)/2))-1,e.o==ave)for(l=a;l>=u;l--)e.a[v.p]==v&&(p=zz(h.Xb(l),46),g=zz(p.a,10),!$A(i,p.b)&&d>t.b.e[g.p]&&(e.a[g.p]=v,e.g[v.p]=e.g[g.p],e.a[v.p]=e.g[v.p],e.f[e.g[v.p].p]=(lN(),!!(Hv(e.f[e.g[v.p].p])&v.k==(cTt(),Cse))),d=t.b.e[g.p]));else for(l=u;l<=a;l++)e.a[v.p]==v&&(w=zz(h.Xb(l),46),b=zz(w.a,10),!$A(i,w.b)&&d=g&&(m>g&&(d.c=P8(Ote,HWt,1,0,5,1),g=m),d.c[d.c.length]=o);0!=d.c.length&&(f=zz(PH(d,mmt(e,d.c.length)),128),C.a.Bc(f),f.s=p++,oLt(f,E,k),d.c=P8(Ote,HWt,1,0,5,1))}for(v=t.c.length+1,s=new Wd(t);s.aT.s&&(hW(n),v9(T.i,i),i.c>0&&(i.a=T,Wz(T.t,i),i.b=_,Wz(_.i,i)))}function DZt(t){var e,n,i,r,a;switch(e=t.c){case 11:return t.Ml();case 12:return t.Ol();case 14:return t.Ql();case 15:return t.Tl();case 16:return t.Rl();case 17:return t.Ul();case 21:return VZt(t),pWt(),pWt(),uNe;case 10:switch(t.a){case 65:return t.yl();case 90:return t.Dl();case 122:return t.Kl();case 98:return t.El();case 66:return t.zl();case 60:return t.Jl();case 62:return t.Hl()}}switch(a=kZt(t),e=t.c){case 3:return t.Zl(a);case 4:return t.Xl(a);case 5:return t.Yl(a);case 0:if(123==t.a&&t.d=48&&e<=57))throw qw(new ox(kWt((sO(),W8t))));for(i=e-48;r=48&&e<=57;)if((i=10*i+e-48)<0)throw qw(new ox(kWt((sO(),Q8t))));if(n=i,44==e){if(r>=t.j)throw qw(new ox(kWt((sO(),X8t))));if((e=hK(t.i,r++))>=48&&e<=57){for(n=e-48;r=48&&e<=57;)if((n=10*n+e-48)<0)throw qw(new ox(kWt((sO(),Q8t))));if(i>n)throw qw(new ox(kWt((sO(),V8t))))}else n=-1}if(125!=e)throw qw(new ox(kWt((sO(),K8t))));t.sl(r)?(pWt(),pWt(),a=new l4(9,a),t.d=r+1):(pWt(),pWt(),a=new l4(3,a),t.d=r),a.dm(i),a.cm(n),VZt(t)}}return a}function OZt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E;for(g=new Q6(e.b),m=new Q6(e.b),f=new Q6(e.b),k=new Q6(e.b),p=new Q6(e.b),x=lwt(e,0);x.b!=x.d.c;)for(s=new Wd((y=zz(d3(x),11)).g);s.a0,b=y.g.c.length>0,u&&b?f.c[f.c.length]=y:u?g.c[g.c.length]=y:b&&(m.c[m.c.length]=y);for(d=new Wd(g);d.a1)for(d=new aP((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));d.e!=d.i.gc();)Vkt(d);for(p=S,S>v+y?p=v+y:Sx+g?b=x+g:Iv-y&&px-g&&bS+C?_=S+C:vI+k?A=I+k:xS-C&&_I-k&&Ai&&(h=i-1),(f=L+HOt(e,24)*cVt*l-l/2)<0?f=1:f>r&&(f=r-1),e_(),_nt(a=new ac,h),Ant(a,f),h7((!s.a&&(s.a=new OL(PMe,s,5)),s.a),a)}function HZt(){HZt=M,lWt(),wwe=kCe,mwe=_Ce,ywe=ACe,vwe=ECe,kwe=TCe,_we=CCe,Twe=ICe,Swe=DCe,Iwe=OCe,Cwe=MCe,Mwe=LCe,Owe=NCe,Nwe=FCe,Ewe=SCe,fWt(),bwe=jge,xwe=$ge,Awe=zge,Dwe=qge,lwe=new ZD(wCe,rft(0)),hwe=Bge,fwe=Fge,dwe=Rge,Gwe=fpe,Fwe=Gge,Rwe=Wge,zwe=npe,jwe=Vge,$we=Jge,Zwe=wpe,Ywe=gpe,Hwe=cpe,qwe=ope,Uwe=lpe,Fbe=Cge,Rbe=Sge,rbe=Rde,abe=zde,Ybe=new WD(12),Gbe=new ZD(ZTe,Ybe),Tdt(),Jpe=new ZD(mTe,tbe=XCe),ewe=new ZD(oCe,0),gwe=new ZD(mCe,rft(1)),_pe=new ZD(aTe,bJt),Ube=GTe,nwe=sCe,swe=gCe,Gpe=fTe,xpe=iTe,ube=_Te,pwe=new ZD(xCe,(lN(),!0)),gbe=TTe,pbe=CTe,$be=RTe,Hbe=HTe,zbe=$Te,zht(),Ype=new ZD(dTe,Wpe=zCe),Obe=BTe,Dbe=NTe,awe=hCe,rwe=lCe,owe=dCe,owt(),new ZD(JTe,Kbe=HSe),Vbe=nCe,Qbe=iCe,Jbe=rCe,Xbe=eCe,Bwe=Uge,Cbe=fge,Tbe=lge,Pwe=Hge,xbe=nge,Upe=Ade,Hpe=kde,Ppe=sde,Bpe=cde,Rpe=dde,Fpe=ude,qpe=vde,Ibe=gge,Mbe=pge,wbe=Kde,jbe=Oge,Nbe=yge,sbe=Ude,Bbe=Ege,nbe=Nde,ibe=Bde,Npe=lTe,Lbe=bge,Cpe=Xfe,Tpe=Wfe,Epe=Zfe,hbe=Zde,lbe=Yde,fbe=Wde,qbe=zTe,mbe=MTe,obe=vTe,Vpe=bTe,Xpe=pTe,jpe=bde,iwe=uCe,Ape=uTe,dbe=ETe,twe=aCe,Zbe=KTe,Wbe=VTe,_be=age,Abe=sge,uwe=bCe,kpe=Yfe,Ebe=uge,Qpe=Mde,Kpe=Sde,Sbe=OTe,ybe=Jde,Pbe=kge,Lwe=PCe,Zpe=Tde,cwe=Nge,ebe=Ode,vbe=ege,$pe=mde,bbe=ITe,kbe=rge,zpe=yde,Lpe=ade,Dpe=nde,Ipe=tde,Mpe=ede,Ope=rde,Spe=Qfe,cbe=Gde}function UZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(cqt(),A=t.e,g=t.d,r=t.a,0==A)switch(e){case 0:return"0";case 1:return KXt;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return(k=new Sx).a+=e<0?"0E+":"0E",k.a+=-e,k.a}if(v=P8(MNe,KKt,25,1+(y=10*g+1+7),15,1),n=y,1==g)if((s=r[0])<0){S=n0(s,ZXt);do{p=S,S=Dkt(S,10),v[--n]=48+pU(rdt(p,odt(S,10)))&VKt}while(0!=Xlt(S,0))}else{S=s;do{p=S,S=S/10|0,v[--n]=p-10*S+48&VKt}while(0!=S)}else{sqt(r,0,T=P8(DNe,hXt,25,g,15,1),0,C=g);t:for(;;){for(_=0,u=C-1;u>=0;u--)w=fAt(adt(vG(_,32),n0(T[u],ZXt))),T[u]=pU(w),_=pU(xG(w,32));m=pU(_),b=n;do{v[--n]=48+m%10&VKt}while(0!=(m=m/10|0)&&0!=n);for(i=9-b+n,c=0;c0;c++)v[--n]=48;for(h=C-1;0==T[h];h--)if(0==h)break t;C=h+1}for(;48==v[n];)++n}if(d=A<0,o=y-n-e-1,0==e)return d&&(v[--n]=45),qpt(v,n,y-n);if(e>0&&o>=-6){if(o>=0){for(l=n+o,f=y-1;f>=l;f--)v[f+1]=v[f];return v[++l]=46,d&&(v[--n]=45),qpt(v,n,y-n+1)}for(h=2;h<1-o;h++)v[--n]=48;return v[--n]=46,v[--n]=48,d&&(v[--n]=45),qpt(v,n,y-n)}return E=n+1,a=y,x=new Ix,d&&(x.a+="-"),a-E>=1?(PZ(x,v[n]),x.a+=".",x.a+=qpt(v,n+1,y-n-1)):x.a+=qpt(v,n,y-n),x.a+="E",o>0&&(x.a+="+"),x.a+=""+o,x.a}function GZt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;switch(t.c=e,t.g=new Pw,UE(),ngt(new Cg(new Bv(t.c))),m=TB(tOt(t.c,(TEt(),pAe))),s=zz(tOt(t.c,wAe),316),v=zz(tOt(t.c,mAe),429),a=zz(tOt(t.c,lAe),482),y=zz(tOt(t.c,bAe),430),t.j=Uv(EB(tOt(t.c,yAe))),o=t.a,s.g){case 0:o=t.a;break;case 1:o=t.b;break;case 2:o=t.i;break;case 3:o=t.e;break;case 4:o=t.f;break;default:throw qw(new jv(P4t+(null!=s.f?s.f:""+s.g)))}if(t.d=new BQ(o,v,a),hct(t.d,(Wat(),Xre),AB(tOt(t.c,fAe))),t.d.c=Hv(AB(tOt(t.c,hAe))),0==VX(t.c).i)return t.d;for(l=new DL(VX(t.c));l.e!=l.i.gc();){for(f=(u=zz(kwt(l),33)).g/2,h=u.f/2,x=new PS(u.i+f,u.j+h);lY(t.g,x);)jP(x,(n.Math.random()-.5)*dJt,(n.Math.random()-.5)*dJt);g=zz(tOt(u,(lWt(),OTe)),142),p=new DJ(x,new YK(x.a-f-t.j/2-g.b,x.b-h-t.j/2-g.d,u.g+t.j+(g.b+g.c),u.f+t.j+(g.d+g.a))),Wz(t.d.i,p),KW(t.g,x,new rI(p,u))}switch(y.g){case 0:if(null==m)t.d.d=zz(PH(t.d.i,0),65);else for(w=new Wd(t.d.i);w.a1&&r5(h,m,h.c.b,h.c),vet(a)));m=y}return h}function ZZt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D;for(DAt(n,"Greedy cycle removal",1),D=(y=e.a).c.length,t.a=P8(DNe,hXt,25,D,15,1),t.c=P8(DNe,hXt,25,D,15,1),t.b=P8(DNe,hXt,25,D,15,1),u=0,w=new Wd(y);w.a0?T+1:1);for(o=new Wd(x.g);o.a0?T+1:1)}0==t.c[u]?Bq(t.e,p):0==t.a[u]&&Bq(t.f,p),++u}for(g=-1,d=1,h=new Nw,t.d=zz(vEt(e,(hWt(),Tfe)),230);D>0;){for(;0!=t.e.b;)S=zz(pq(t.e),10),t.b[S.p]=g--,VRt(t,S),--D;for(;0!=t.f.b;)I=zz(pq(t.f),10),t.b[I.p]=d++,VRt(t,I),--D;if(D>0){for(f=$Kt,m=new Wd(y);m.a=f&&(v>f&&(h.c=P8(Ote,HWt,1,0,5,1),f=v),h.c[h.c.length]=p);l=t.Zf(h),t.b[l.p]=d++,VRt(t,l),--D}}for(C=y.c.length+1,u=0;ut.b[M]&&(nzt(i,!0),hct(e,Hhe,(lN(),!0)));t.a=null,t.c=null,t.b=null,vX(t.f),vX(t.e),HTt(n)}function WZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;for(i=new Nw,s=new Nw,b=e/2,d=t.gc(),r=zz(t.Xb(0),8),w=zz(t.Xb(1),8),Wz(i,(f1(0,(g=VDt(r.a,r.b,w.a,w.b,b)).c.length),zz(g.c[0],8))),Wz(s,(f1(1,g.c.length),zz(g.c[1],8))),u=2;u=0;c--)Bq(n,(f1(c,o.c.length),zz(o.c[c],8)));return n}function KZt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d;if(o=!0,h=null,i=null,r=null,e=!1,d=xDe,u=null,a=null,(c=Xbt(t,s=0,DDe,ODe))=0&&yR(t.substr(s,"//".length),"//")?(c=Xbt(t,s+=2,LDe,NDe),i=t.substr(s,c-s),s=c):null==h||s!=t.length&&(d1(s,t.length),47==t.charCodeAt(s))||(o=!1,-1==(c=vN(t,QAt(35),s))&&(c=t.length),i=t.substr(s,c-s),s=c);if(!n&&s0&&58==hK(l,l.length-1)&&(r=l,s=c)),s=t.j)return t.a=-1,void(t.c=1);if(e=hK(t.i,t.d++),t.a=e,1!=t.b){switch(e){case 124:i=2;break;case 42:i=3;break;case 43:i=4;break;case 63:i=5;break;case 41:i=7;break;case 46:i=8;break;case 91:i=9;break;case 94:i=11;break;case 36:i=12;break;case 40:if(i=6,t.d>=t.j)break;if(63!=hK(t.i,t.d))break;if(++t.d>=t.j)throw qw(new ox(kWt((sO(),m8t))));switch(e=hK(t.i,t.d++)){case 58:i=13;break;case 61:i=14;break;case 33:i=15;break;case 91:i=19;break;case 62:i=18;break;case 60:if(t.d>=t.j)throw qw(new ox(kWt((sO(),m8t))));if(61==(e=hK(t.i,t.d++)))i=16;else{if(33!=e)throw qw(new ox(kWt((sO(),y8t))));i=17}break;case 35:for(;t.d=t.j)throw qw(new ox(kWt((sO(),w8t))));t.a=hK(t.i,t.d++);break;default:i=0}t.c=i}else{switch(e){case 92:if(i=10,t.d>=t.j)throw qw(new ox(kWt((sO(),w8t))));t.a=hK(t.i,t.d++);break;case 45:512==(512&t.e)&&t.d=k||!Ppt(m,i))&&(i=r1(e,h)),CJ(m,i),a=new cG(JL(fdt(m).a.Kc(),new l));bDt(a);)r=zz(Y5(a),17),t.a[r.p]||(b=r.c.i,--t.e[b.p],0==t.e[b.p]&&$8(iEt(g,b)));for(u=h.c.length-1;u>=0;--u)Wz(e.b,(f1(u,h.c.length),zz(h.c[u],29)));e.a.c=P8(Ote,HWt,1,0,5,1),HTt(n)}else HTt(n)}function tWt(t){var e,n,i,r,a,o,s,c;for(t.b=1,VZt(t),e=null,0==t.c&&94==t.a?(VZt(t),pWt(),pWt(),QPt(e=new E0(4),0,cte),o=new E0(4)):(pWt(),pWt(),o=new E0(4)),r=!0;1!=(c=t.c);){if(0==c&&93==t.a&&!r){e&&(KUt(e,o),o=e);break}if(n=t.a,i=!1,10==c)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:lqt(o,bjt(n)),i=!0;break;case 105:case 73:case 99:case 67:lqt(o,bjt(n)),(n=-1)<0&&(i=!0);break;case 112:case 80:if(!(s=FIt(t,n)))throw qw(new ox(kWt((sO(),D8t))));lqt(o,s),i=!0;break;default:n=UBt(t)}else if(24==c&&!r){if(e&&(KUt(e,o),o=e),KUt(o,tWt(t)),0!=t.c||93!=t.a)throw qw(new ox(kWt((sO(),P8t))));break}if(VZt(t),!i){if(0==c){if(91==n)throw qw(new ox(kWt((sO(),B8t))));if(93==n)throw qw(new ox(kWt((sO(),F8t))));if(45==n&&!r&&93!=t.a)throw qw(new ox(kWt((sO(),R8t))))}if(0!=t.c||45!=t.a||45==n&&r)QPt(o,n,n);else{if(VZt(t),1==(c=t.c))throw qw(new ox(kWt((sO(),L8t))));if(0==c&&93==t.a)QPt(o,n,n),QPt(o,45,45);else{if(0==c&&93==t.a||24==c)throw qw(new ox(kWt((sO(),R8t))));if(a=t.a,0==c){if(91==a)throw qw(new ox(kWt((sO(),B8t))));if(93==a)throw qw(new ox(kWt((sO(),F8t))));if(45==a)throw qw(new ox(kWt((sO(),R8t))))}else 10==c&&(a=UBt(t));if(VZt(t),n>a)throw qw(new ox(kWt((sO(),z8t))));QPt(o,n,a)}}}r=!1}if(1==t.c)throw qw(new ox(kWt((sO(),L8t))));return EOt(o),Uqt(o),t.b=0,VZt(t),o}function eWt(t){XOt(t.c,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#decimal"])),XOt(t.d,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#integer"])),XOt(t.e,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#boolean"])),XOt(t.f,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EBoolean",n8t,"EBoolean:Object"])),XOt(t.i,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#byte"])),XOt(t.g,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#hexBinary"])),XOt(t.j,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EByte",n8t,"EByte:Object"])),XOt(t.n,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EChar",n8t,"EChar:Object"])),XOt(t.t,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#double"])),XOt(t.u,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EDouble",n8t,"EDouble:Object"])),XOt(t.F,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#float"])),XOt(t.G,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EFloat",n8t,"EFloat:Object"])),XOt(t.I,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#int"])),XOt(t.J,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EInt",n8t,"EInt:Object"])),XOt(t.N,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#long"])),XOt(t.O,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"ELong",n8t,"ELong:Object"])),XOt(t.Z,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#short"])),XOt(t.$,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EShort",n8t,"EShort:Object"])),XOt(t._,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#string"]))}function nWt(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(1==t.c.length)return f1(0,t.c.length),zz(t.c[0],135);if(t.c.length<=0)return new C6;for(u=new Wd(t);u.af&&(C=0,S+=h+_,h=0),ALt(x,s,C,S),e=n.Math.max(e,C+k.a),h=n.Math.max(h,k.b),C+=k.a+_;for(v=new Pw,i=new Pw,E=new Wd(t);E.ayOt(a))&&(h=a);for(!h&&(f1(0,p.c.length),h=zz(p.c[0],180)),g=new Wd(e.b);g.a=-1900?1:0,cM(t,n>=4?Sst(Ux(Vee,1),lKt,2,6,[fXt,dXt])[o]:Sst(Ux(Vee,1),lKt,2,6,["BC","AD"])[o]);break;case 121:uwt(t,n,i);break;case 77:WRt(t,n,i);break;case 107:_tt(t,0==(s=r.q.getHours())?24:s,n);break;case 83:RLt(t,n,r);break;case 69:c=i.q.getDay(),cM(t,5==n?Sst(Ux(Vee,1),lKt,2,6,["S","M","T","W","T","F","S"])[c]:4==n?Sst(Ux(Vee,1),lKt,2,6,[gXt,pXt,bXt,wXt,mXt,yXt,vXt])[c]:Sst(Ux(Vee,1),lKt,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[c]);break;case 97:r.q.getHours()>=12&&r.q.getHours()<24?cM(t,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"])[1]):cM(t,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"])[0]);break;case 104:_tt(t,0==(u=r.q.getHours()%12)?12:u,n);break;case 75:_tt(t,r.q.getHours()%12,n);break;case 72:_tt(t,r.q.getHours(),n);break;case 99:l=i.q.getDay(),5==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["S","M","T","W","T","F","S"])[l]):4==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,[gXt,pXt,bXt,wXt,mXt,yXt,vXt])[l]):3==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[l]):_tt(t,l,1);break;case 76:h=i.q.getMonth(),5==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[h]):4==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt])[h]):3==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[h]):_tt(t,h+1,n);break;case 81:f=i.q.getMonth()/3|0,cM(t,n<4?Sst(Ux(Vee,1),lKt,2,6,["Q1","Q2","Q3","Q4"])[f]:Sst(Ux(Vee,1),lKt,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[f]);break;case 100:_tt(t,i.q.getDate(),n);break;case 109:_tt(t,r.q.getMinutes(),n);break;case 115:_tt(t,r.q.getSeconds(),n);break;case 122:cM(t,n<4?a.c[0]:a.c[1]);break;case 118:cM(t,a.b);break;case 90:cM(t,n<3?eIt(a):3==n?pIt(a):bIt(a.a));break;default:return!1}return!0}function cWt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(nRt(e),c=zz(Ket((!e.b&&(e.b=new lR(RMe,e,4,7)),e.b),0),82),l=zz(Ket((!e.c&&(e.c=new lR(RMe,e,5,8)),e.c),0),82),s=SAt(c),u=SAt(l),o=0==(!e.a&&(e.a=new nY($Me,e,6,6)),e.a).i?null:zz(Ket((!e.a&&(e.a=new nY($Me,e,6,6)),e.a),0),202),k=zz(FZ(t.a,s),10),T=zz(FZ(t.a,u),10),_=null,C=null,aL(c,186)&&(aL(x=zz(FZ(t.a,c),299),11)?_=zz(x,11):aL(x,10)&&(k=zz(x,10),_=zz(PH(k.j,0),11))),aL(l,186)&&(aL(E=zz(FZ(t.a,l),299),11)?C=zz(E,11):aL(E,10)&&(T=zz(E,10),C=zz(PH(T.j,0),11))),!k||!T)throw qw(new ax("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(Uot(p=new gV,e),hct(p,(hWt(),pfe),e),hct(p,(HZt(),mbe),null),d=zz(vEt(i,Jhe),21),k==T&&d.Fc((gBt(),mhe)),_||(sit(),v=Hme,A=null,o&&mD(zz(vEt(k,nwe),98))&&(V3(A=new PS(o.j,o.k),ZQ(e)),e5(A,n),Iet(u,s)&&(v=qme,YF(A,k.n))),_=bqt(k,A,v,i)),C||(sit(),v=qme,S=null,o&&mD(zz(vEt(T,nwe),98))&&(V3(S=new PS(o.b,o.c),ZQ(e)),e5(S,n)),C=bqt(T,S,v,mW(T))),TJ(p,_),EJ(p,C),(_.e.c.length>1||_.g.c.length>1||C.e.c.length>1||C.g.c.length>1)&&d.Fc((gBt(),dhe)),f=new DL((!e.n&&(e.n=new nY(GMe,e,1,7)),e.n));f.e!=f.i.gc();)if(!Hv(AB(tOt(h=zz(kwt(f),137),Ube)))&&h.a)switch(b=Hlt(h),Wz(p.b,b),zz(vEt(b,Vpe),272).g){case 1:case 2:d.Fc((gBt(),hhe));break;case 0:d.Fc((gBt(),uhe)),hct(b,Vpe,(Ret(),GCe))}if(a=zz(vEt(i,Hpe),314),w=zz(vEt(i,jbe),315),r=a==(Dit(),ule)||w==(Pmt(),wme),o&&0!=(!o.a&&(o.a=new OL(PMe,o,5)),o.a).i&&r){for(m=UTt(o),g=new xy,y=lwt(m,0);y.b!=y.d.c;)Bq(g,new gD(zz(d3(y),8)));hct(p,bfe,g)}return p}function uWt(t){t.gb||(t.gb=!0,t.b=kot(t,0),Rrt(t.b,18),jrt(t.b,19),t.a=kot(t,1),Rrt(t.a,1),jrt(t.a,2),jrt(t.a,3),jrt(t.a,4),jrt(t.a,5),t.o=kot(t,2),Rrt(t.o,8),Rrt(t.o,9),jrt(t.o,10),jrt(t.o,11),jrt(t.o,12),jrt(t.o,13),jrt(t.o,14),jrt(t.o,15),jrt(t.o,16),jrt(t.o,17),jrt(t.o,18),jrt(t.o,19),jrt(t.o,20),jrt(t.o,21),jrt(t.o,22),jrt(t.o,23),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),t.p=kot(t,3),Rrt(t.p,2),Rrt(t.p,3),Rrt(t.p,4),Rrt(t.p,5),jrt(t.p,6),jrt(t.p,7),cet(t.p),cet(t.p),t.q=kot(t,4),Rrt(t.q,8),t.v=kot(t,5),jrt(t.v,9),cet(t.v),cet(t.v),cet(t.v),t.w=kot(t,6),Rrt(t.w,2),Rrt(t.w,3),Rrt(t.w,4),jrt(t.w,5),t.B=kot(t,7),jrt(t.B,1),cet(t.B),cet(t.B),cet(t.B),t.Q=kot(t,8),jrt(t.Q,0),cet(t.Q),t.R=kot(t,9),Rrt(t.R,1),t.S=kot(t,10),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),t.T=kot(t,11),jrt(t.T,10),jrt(t.T,11),jrt(t.T,12),jrt(t.T,13),jrt(t.T,14),cet(t.T),cet(t.T),t.U=kot(t,12),Rrt(t.U,2),Rrt(t.U,3),jrt(t.U,4),jrt(t.U,5),jrt(t.U,6),jrt(t.U,7),cet(t.U),t.V=kot(t,13),jrt(t.V,10),t.W=kot(t,14),Rrt(t.W,18),Rrt(t.W,19),Rrt(t.W,20),jrt(t.W,21),jrt(t.W,22),jrt(t.W,23),t.bb=kot(t,15),Rrt(t.bb,10),Rrt(t.bb,11),Rrt(t.bb,12),Rrt(t.bb,13),Rrt(t.bb,14),Rrt(t.bb,15),Rrt(t.bb,16),jrt(t.bb,17),cet(t.bb),cet(t.bb),t.eb=kot(t,16),Rrt(t.eb,2),Rrt(t.eb,3),Rrt(t.eb,4),Rrt(t.eb,5),Rrt(t.eb,6),Rrt(t.eb,7),jrt(t.eb,8),jrt(t.eb,9),t.ab=kot(t,17),Rrt(t.ab,0),Rrt(t.ab,1),t.H=kot(t,18),jrt(t.H,0),jrt(t.H,1),jrt(t.H,2),jrt(t.H,3),jrt(t.H,4),jrt(t.H,5),cet(t.H),t.db=kot(t,19),jrt(t.db,2),t.c=_ot(t,20),t.d=_ot(t,21),t.e=_ot(t,22),t.f=_ot(t,23),t.i=_ot(t,24),t.g=_ot(t,25),t.j=_ot(t,26),t.k=_ot(t,27),t.n=_ot(t,28),t.r=_ot(t,29),t.s=_ot(t,30),t.t=_ot(t,31),t.u=_ot(t,32),t.fb=_ot(t,33),t.A=_ot(t,34),t.C=_ot(t,35),t.D=_ot(t,36),t.F=_ot(t,37),t.G=_ot(t,38),t.I=_ot(t,39),t.J=_ot(t,40),t.L=_ot(t,41),t.M=_ot(t,42),t.N=_ot(t,43),t.O=_ot(t,44),t.P=_ot(t,45),t.X=_ot(t,46),t.Y=_ot(t,47),t.Z=_ot(t,48),t.$=_ot(t,49),t._=_ot(t,50),t.cb=_ot(t,51),t.K=_ot(t,52))}function lWt(){var t,e;lWt=M,nTe=new sw(p5t),yCe=new sw(b5t),pmt(),iTe=new OM(K2t,rTe=SEe),new Ow,aTe=new OM(XQt,null),oTe=new sw(w5t),p_t(),hTe=_U(JEe,Sst(Ux(HCe,1),LKt,291,0,[KEe])),lTe=new OM(c3t,hTe),fTe=new OM(W2t,(lN(),!1)),zht(),dTe=new OM(J2t,gTe=zCe),Tdt(),mTe=new OM(x2t,yTe=JCe),kTe=new OM(O4t,!1),cht(),_Te=new OM(b2t,ATe=mSe),WTe=new WD(12),ZTe=new OM(VQt,WTe),STe=new OM(_Jt,!1),ITe=new OM(v3t,!1),YTe=new OM(TJt,!1),V_t(),sCe=new OM(AJt,cCe=VSe),bCe=new sw(w3t),wCe=new sw(mJt),mCe=new sw(xJt),xCe=new sw(kJt),DTe=new xy,MTe=new OM(u3t,DTe),uTe=new OM(f3t,!1),ETe=new OM(d3t,!1),new sw(m5t),LTe=new fy,OTe=new OM(m3t,LTe),GTe=new OM(Y2t,!1),new Ow,vCe=new OM(y5t,1),new OM(v5t,!0),rft(0),new OM(x5t,rft(100)),new OM(k5t,!1),rft(0),new OM(_5t,rft(4e3)),rft(0),new OM(A5t,rft(400)),new OM(E5t,!1),new OM(T5t,!1),new OM(C5t,!0),new OM(S5t,!1),zgt(),sTe=new OM(g5t,cTe=nMe),kCe=new OM(N2t,10),_Ce=new OM(P2t,10),ACe=new OM(WQt,20),ECe=new OM(B2t,10),TCe=new OM(vJt,2),CCe=new OM(F2t,10),ICe=new OM(R2t,0),MCe=new OM(z2t,5),DCe=new OM(j2t,1),OCe=new OM($2t,1),LCe=new OM(yJt,20),NCe=new OM(q2t,10),FCe=new OM(H2t,10),SCe=new sw(U2t),BCe=new fD,PCe=new OM(y3t,BCe),VTe=new sw(b3t),KTe=new OM(p3t,XTe=!1),PTe=new WD(5),NTe=new OM(t3t,PTe),eOt(),e=zz(Kk(USe),9),FTe=new VR(e,zz(TF(e,e.length),9),0),BTe=new OM(IJt,FTe),owt(),JTe=new OM(i3t,tCe=zSe),nCe=new sw(r3t),iCe=new sw(a3t),rCe=new sw(o3t),eCe=new sw(s3t),t=zz(Kk(VIe),9),jTe=new VR(t,zz(TF(t,t.length),9),0),RTe=new OM(SJt,jTe),UTe=edt((ejt(),UIe)),HTe=new OM(CJt,UTe),qTe=new PS(0,0),zTe=new OM(qJt,qTe),$Te=new OM(Q2t,!1),Ret(),bTe=new OM(l3t,wTe=GCe),pTe=new OM(EJt,!1),new sw(I5t),rft(1),new OM(M5t,null),aCe=new sw(g3t),uCe=new sw(h3t),kYt(),gCe=new OM(Z2t,pCe=CIe),oCe=new sw(G2t),dIt(),fCe=edt(rIe),hCe=new OM(MJt,fCe),lCe=new OM(e3t,!1),dCe=new OM(n3t,!0),TTe=new OM(X2t,!1),CTe=new OM(V2t,!1),vTe=new OM(KQt,1),eEt(),new OM(D5t,xTe=oSe),QTe=!0}function hWt(){var t,e;hWt=M,pfe=new sw(DJt),$he=new sw("coordinateOrigin"),Efe=new sw("processors"),jhe=new iF("compoundNode",(lN(),!1)),nfe=new iF("insideConnections",!1),bfe=new sw("originalBendpoints"),wfe=new sw("originalDummyNodePosition"),mfe=new sw("originalLabelEdge"),Cfe=new sw("representedLabels"),Ghe=new sw("endLabels"),Yhe=new sw("endLabel.origin"),sfe=new iF("labelSide",(Wvt(),ESe)),dfe=new iF("maxEdgeThickness",0),Sfe=new iF("reversed",!1),Tfe=new sw(OJt),lfe=new iF("longEdgeSource",null),hfe=new iF("longEdgeTarget",null),ufe=new iF("longEdgeHasLabelDummies",!1),cfe=new iF("longEdgeBeforeLabelDummy",!1),Uhe=new iF("edgeConstraint",(Jst(),Dle)),rfe=new sw("inLayerLayoutUnit"),ife=new iF("inLayerConstraint",(G9(),Che)),afe=new iF("inLayerSuccessorConstraint",new Nw),ofe=new iF("inLayerSuccessorConstraintBetweenNonDummies",!1),_fe=new sw("portDummy"),zhe=new iF("crossingHint",rft(0)),Jhe=new iF("graphProperties",new VR(e=zz(Kk(Ahe),9),zz(TF(e,e.length),9),0)),Xhe=new iF("externalPortSide",(kYt(),CIe)),Vhe=new iF("externalPortSize",new Uk),Whe=new sw("externalPortReplacedDummies"),Khe=new sw("externalPortReplacedDummy"),Zhe=new iF("externalPortConnections",new VR(t=zz(Kk($Ie),9),zz(TF(t,t.length),9),0)),Afe=new iF(bQt,0),Phe=new sw("barycenterAssociates"),Rfe=new sw("TopSideComments"),Bhe=new sw("BottomSideComments"),Rhe=new sw("CommentConnectionPort"),efe=new iF("inputCollect",!1),xfe=new iF("outputCollect",!1),Hhe=new iF("cyclic",!1),qhe=new sw("crossHierarchyMap"),Ffe=new sw("targetOffset"),new iF("splineLabelSize",new Uk),Dfe=new sw("spacings"),kfe=new iF("partitionConstraint",!1),Fhe=new sw("breakingPoint.info"),Pfe=new sw("splines.survivingEdge"),Nfe=new sw("splines.route.start"),Ofe=new sw("splines.edgeChain"),vfe=new sw("originalPortConstraints"),Mfe=new sw("selfLoopHolder"),Lfe=new sw("splines.nsPortY"),gfe=new sw("modelOrder"),ffe=new sw("longEdgeTargetNode"),Qhe=new iF(Y1t,!1),Ife=new iF(Y1t,!1),tfe=new sw("layerConstraints.hiddenNodes"),yfe=new sw("layerConstraints.opposidePort"),Bfe=new sw("targetNode.modelOrder")}function fWt(){fWt=M,jtt(),Tde=new OM(Z1t,Cde=Tle),Ude=new OM(W1t,(lN(),!1)),G2(),Kde=new OM(K1t,Xde=Dhe),gge=new OM(X1t,!1),pge=new OM(V1t,!0),Yfe=new OM(Q1t,!1),Y9(),Nge=new OM(J1t,Pge=Rme),rft(1),Hge=new OM(t0t,rft(7)),Uge=new OM(e0t,!1),Gde=new OM(n0t,!1),Xmt(),Ade=new OM(i0t,Ede=vle),EAt(),fge=new OM(r0t,dge=eme),Edt(),nge=new OM(a0t,ige=Hfe),rft(-1),ege=new OM(o0t,rft(-1)),rft(-1),rge=new OM(s0t,rft(-1)),rft(-1),age=new OM(c0t,rft(4)),rft(-1),sge=new OM(u0t,rft(2)),lNt(),lge=new OM(l0t,hge=Ime),rft(0),uge=new OM(h0t,rft(0)),Jde=new OM(f0t,rft(FWt)),Dit(),kde=new OM(d0t,_de=lle),sde=new OM(g0t,!1),bde=new OM(p0t,.1),vde=new OM(b0t,!1),rft(-1),mde=new OM(w0t,rft(-1)),rft(-1),yde=new OM(m0t,rft(-1)),rft(0),cde=new OM(y0t,rft(40)),jot(),dde=new OM(v0t,gde=_he),ude=new OM(x0t,lde=xhe),Pmt(),Oge=new OM(k0t,Lge=bme),kge=new sw(_0t),b9(),bge=new OM(A0t,wge=Hle),qkt(),yge=new OM(E0t,vge=Xle),new Ow,Ege=new OM(T0t,.3),Cge=new sw(C0t),gmt(),Sge=new OM(S0t,Ige=fme),Hat(),Nde=new OM(I0t,Pde=Wme),D6(),Bde=new OM(M0t,Fde=Jme),Zut(),Rde=new OM(D0t,jde=rye),zde=new OM(O0t,.2),Ode=new OM(L0t,2),jge=new OM(N0t,null),zge=new OM(P0t,10),$ge=new OM(B0t,10),qge=new OM(F0t,20),rft(0),Bge=new OM(R0t,rft(0)),rft(0),Fge=new OM(j0t,rft(0)),rft(0),Rge=new OM($0t,rft(0)),Zfe=new OM(z0t,!1),JEt(),Xfe=new OM(q0t,Vfe=ahe),K8(),Wfe=new OM(H0t,Kfe=ole),Zde=new OM(U0t,!1),rft(0),Yde=new OM(G0t,rft(16)),rft(0),Wde=new OM(Y0t,rft(5)),Lst(),fpe=new OM(Z0t,dpe=dye),Gge=new OM(W0t,10),Wge=new OM(K0t,1),cit(),npe=new OM(X0t,ipe=ble),Vge=new sw(V0t),tpe=rft(1),rft(0),Jge=new OM(Q0t,tpe),bat(),wpe=new OM(J0t,mpe=sye),gpe=new sw(t2t),cpe=new OM(e2t,!0),ope=new OM(n2t,2),lpe=new OM(i2t,!0),wTt(),Mde=new OM(r2t,Dde=jle),LCt(),Sde=new OM(a2t,Ide=Jue),vct(),ade=new OM(o2t,ode=Nme),rde=new OM(s2t,!1),qht(),Qfe=new OM(c2t,Jfe=gse),Tlt(),nde=new OM(u2t,ide=ame),tde=new OM(l2t,0),ede=new OM(h2t,0),Qde=kle,Vde=ule,oge=tme,cge=tme,tge=Vwe,cht(),wde=wSe,xde=lle,pde=lle,hde=lle,fde=wSe,_ge=yme,Age=bme,mge=bme,xge=bme,Tge=mme,Dge=yme,Mge=yme,Tdt(),$de=QCe,qde=QCe,Hde=rye,Lde=VCe,Yge=gye,Zge=fye,Kge=gye,Xge=fye,rpe=gye,ape=fye,Qge=ple,epe=ble,ype=gye,vpe=fye,ppe=gye,bpe=fye,upe=fye,spe=fye,hpe=fye}function dWt(){dWt=M,rce=new tC("DIRECTION_PREPROCESSOR",0),ece=new tC("COMMENT_PREPROCESSOR",1),ace=new tC("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),xce=new tC("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),$ce=new tC("PARTITION_PREPROCESSOR",4),Ece=new tC("LABEL_DUMMY_INSERTER",5),Yce=new tC("SELF_LOOP_PREPROCESSOR",6),Mce=new tC("LAYER_CONSTRAINT_PREPROCESSOR",7),Rce=new tC("PARTITION_MIDPROCESSOR",8),bce=new tC("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),Nce=new tC("NODE_PROMOTION",10),Ice=new tC("LAYER_CONSTRAINT_POSTPROCESSOR",11),jce=new tC("PARTITION_POSTPROCESSOR",12),fce=new tC("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),Wce=new tC("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),Kse=new tC("BREAKING_POINT_INSERTER",15),Lce=new tC("LONG_EDGE_SPLITTER",16),qce=new tC("PORT_SIDE_PROCESSOR",17),kce=new tC("INVERTED_PORT_PROCESSOR",18),zce=new tC("PORT_LIST_SORTER",19),Xce=new tC("SORT_BY_INPUT_ORDER_OF_MODEL",20),Bce=new tC("NORTH_SOUTH_PORT_PREPROCESSOR",21),Xse=new tC("BREAKING_POINT_PROCESSOR",22),Fce=new tC(A1t,23),Vce=new tC(E1t,24),Uce=new tC("SELF_LOOP_PORT_RESTORER",25),Kce=new tC("SINGLE_EDGE_GRAPH_WRAPPER",26),_ce=new tC("IN_LAYER_CONSTRAINT_PROCESSOR",27),uce=new tC("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),Ace=new tC("LABEL_AND_NODE_SIZE_PROCESSOR",29),vce=new tC("INNERMOST_NODE_MARGIN_CALCULATOR",30),Zce=new tC("SELF_LOOP_ROUTER",31),Jse=new tC("COMMENT_NODE_MARGIN_CALCULATOR",32),sce=new tC("END_LABEL_PREPROCESSOR",33),Cce=new tC("LABEL_DUMMY_SWITCHER",34),Qse=new tC("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),Sce=new tC("LABEL_SIDE_SELECTOR",36),mce=new tC("HYPEREDGE_DUMMY_MERGER",37),dce=new tC("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),Dce=new tC("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),pce=new tC("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),nce=new tC("CONSTRAINTS_POSTPROCESSOR",41),tce=new tC("COMMENT_POSTPROCESSOR",42),yce=new tC("HYPERNODE_PROCESSOR",43),gce=new tC("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),Oce=new tC("LONG_EDGE_JOINER",45),Gce=new tC("SELF_LOOP_POSTPROCESSOR",46),Vse=new tC("BREAKING_POINT_REMOVER",47),Pce=new tC("NORTH_SOUTH_PORT_POSTPROCESSOR",48),wce=new tC("HORIZONTAL_COMPACTOR",49),Tce=new tC("LABEL_DUMMY_REMOVER",50),lce=new tC("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),cce=new tC("END_LABEL_SORTER",52),Hce=new tC("REVERSED_EDGE_RESTORER",53),oce=new tC("END_LABEL_POSTPROCESSOR",54),hce=new tC("HIERARCHICAL_NODE_RESIZER",55),ice=new tC("DIRECTION_POSTPROCESSOR",56)}function gWt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D,O,L,N,P,B,F,R,j,$,z,q,H,U,G,Y,Z,W,K,X,V,Q,J,tt,et,nt,it,rt,at,ot,st;for(Q=0,L=0,B=(M=e).length;L0&&(t.a[H.p]=Q++)}for(it=0,N=0,F=(D=i).length;N0;){for(CP(Z.b>0),Y=0,c=new Wd((H=zz(Z.a.Xb(Z.c=--Z.b),11)).e);c.a0&&(H.j==(kYt(),uIe)?(t.a[H.p]=it,++it):(t.a[H.p]=it+R+$,++$))}it+=$}for(G=new Pw,p=new hD,O=0,P=(I=e).length;Ol.b&&(l.b=W)):H.i.c==V&&(Wl.c&&(l.c=W));for(G7(b,0,b.length,null),nt=P8(DNe,hXt,25,b.length,15,1),r=P8(DNe,hXt,25,it+1,15,1),m=0;m0;)A%2>0&&(a+=ot[A+1]),++ot[A=(A-1)/2|0];for(T=P8(Hye,HWt,362,2*b.length,0,1),x=0;x'?":yR(y8t,t)?"'(?<' or '(? toIndex: ",kVt=", toIndex: ",_Vt="Index: ",AVt=", Size: ",EVt="org.eclipse.elk.alg.common",TVt={62:1},CVt="org.eclipse.elk.alg.common.compaction",SVt="Scanline/EventHandler",IVt="org.eclipse.elk.alg.common.compaction.oned",MVt="CNode belongs to another CGroup.",DVt="ISpacingsHandler/1",OVt="The ",LVt=" instance has been finished already.",NVt="The direction ",PVt=" is not supported by the CGraph instance.",BVt="OneDimensionalCompactor",FVt="OneDimensionalCompactor/lambda$0$Type",RVt="Quadruplet",jVt="ScanlineConstraintCalculator",$Vt="ScanlineConstraintCalculator/ConstraintsScanlineHandler",zVt="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",qVt="ScanlineConstraintCalculator/Timestamp",HVt="ScanlineConstraintCalculator/lambda$0$Type",UVt={169:1,45:1},GVt="org.eclipse.elk.alg.common.compaction.options",YVt="org.eclipse.elk.core.data",ZVt="org.eclipse.elk.polyomino.traversalStrategy",WVt="org.eclipse.elk.polyomino.lowLevelSort",KVt="org.eclipse.elk.polyomino.highLevelSort",XVt="org.eclipse.elk.polyomino.fill",VVt={130:1},QVt="polyomino",JVt="org.eclipse.elk.alg.common.networksimplex",tQt={177:1,3:1,4:1},eQt="org.eclipse.elk.alg.common.nodespacing",nQt="org.eclipse.elk.alg.common.nodespacing.cellsystem",iQt="CENTER",rQt={212:1,326:1},aQt={3:1,4:1,5:1,595:1},oQt="LEFT",sQt="RIGHT",cQt="Vertical alignment cannot be null",uQt="BOTTOM",lQt="org.eclipse.elk.alg.common.nodespacing.internal",hQt="UNDEFINED",fQt=.01,dQt="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",gQt="LabelPlacer/lambda$0$Type",pQt="LabelPlacer/lambda$1$Type",bQt="portRatioOrPosition",wQt="org.eclipse.elk.alg.common.overlaps",mQt="DOWN",yQt="org.eclipse.elk.alg.common.polyomino",vQt="NORTH",xQt="EAST",kQt="SOUTH",_Qt="WEST",AQt="org.eclipse.elk.alg.common.polyomino.structures",EQt="Direction",TQt="Grid is only of size ",CQt=". Requested point (",SQt=") is out of bounds.",IQt=" Given center based coordinates were (",MQt="org.eclipse.elk.graph.properties",DQt="IPropertyHolder",OQt={3:1,94:1,134:1},LQt="org.eclipse.elk.alg.common.spore",NQt="org.eclipse.elk.alg.common.utils",PQt={209:1},BQt="org.eclipse.elk.core",FQt="Connected Components Compaction",RQt="org.eclipse.elk.alg.disco",jQt="org.eclipse.elk.alg.disco.graph",$Qt="org.eclipse.elk.alg.disco.options",zQt="CompactionStrategy",qQt="org.eclipse.elk.disco.componentCompaction.strategy",HQt="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",UQt="org.eclipse.elk.disco.debug.discoGraph",GQt="org.eclipse.elk.disco.debug.discoPolys",YQt="componentCompaction",ZQt="org.eclipse.elk.disco",WQt="org.eclipse.elk.spacing.componentComponent",KQt="org.eclipse.elk.edge.thickness",XQt="org.eclipse.elk.aspectRatio",VQt="org.eclipse.elk.padding",QQt="org.eclipse.elk.alg.disco.transform",JQt=1.5707963267948966,tJt=17976931348623157e292,eJt={3:1,4:1,5:1,192:1},nJt={3:1,6:1,4:1,5:1,106:1,120:1},iJt="org.eclipse.elk.alg.force",rJt="ComponentsProcessor",aJt="ComponentsProcessor/1",oJt="org.eclipse.elk.alg.force.graph",sJt="Component Layout",cJt="org.eclipse.elk.alg.force.model",uJt="org.eclipse.elk.force.model",lJt="org.eclipse.elk.force.iterations",hJt="org.eclipse.elk.force.repulsivePower",fJt="org.eclipse.elk.force.temperature",dJt=.001,gJt="org.eclipse.elk.force.repulsion",pJt="org.eclipse.elk.alg.force.options",bJt=1.600000023841858,wJt="org.eclipse.elk.force",mJt="org.eclipse.elk.priority",yJt="org.eclipse.elk.spacing.nodeNode",vJt="org.eclipse.elk.spacing.edgeLabel",xJt="org.eclipse.elk.randomSeed",kJt="org.eclipse.elk.separateConnectedComponents",_Jt="org.eclipse.elk.interactive",AJt="org.eclipse.elk.portConstraints",EJt="org.eclipse.elk.edgeLabels.inline",TJt="org.eclipse.elk.omitNodeMicroLayout",CJt="org.eclipse.elk.nodeSize.options",SJt="org.eclipse.elk.nodeSize.constraints",IJt="org.eclipse.elk.nodeLabels.placement",MJt="org.eclipse.elk.portLabels.placement",DJt="origin",OJt="random",LJt="boundingBox.upLeft",NJt="boundingBox.lowRight",PJt="org.eclipse.elk.stress.fixed",BJt="org.eclipse.elk.stress.desiredEdgeLength",FJt="org.eclipse.elk.stress.dimension",RJt="org.eclipse.elk.stress.epsilon",jJt="org.eclipse.elk.stress.iterationLimit",$Jt="org.eclipse.elk.stress",zJt="ELK Stress",qJt="org.eclipse.elk.nodeSize.minimum",HJt="org.eclipse.elk.alg.force.stress",UJt="Layered layout",GJt="org.eclipse.elk.alg.layered",YJt="org.eclipse.elk.alg.layered.compaction.components",ZJt="org.eclipse.elk.alg.layered.compaction.oned",WJt="org.eclipse.elk.alg.layered.compaction.oned.algs",KJt="org.eclipse.elk.alg.layered.compaction.recthull",XJt="org.eclipse.elk.alg.layered.components",VJt="NONE",QJt={3:1,6:1,4:1,9:1,5:1,122:1},JJt={3:1,6:1,4:1,5:1,141:1,106:1,120:1},t1t="org.eclipse.elk.alg.layered.compound",e1t={51:1},n1t="org.eclipse.elk.alg.layered.graph",i1t=" -> ",r1t="Not supported by LGraph",a1t="Port side is undefined",o1t={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},s1t={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},c1t={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},u1t="([{\"' \t\r\n",l1t=")]}\"' \t\r\n",h1t="The given string contains parts that cannot be parsed as numbers.",f1t="org.eclipse.elk.core.math",d1t={3:1,4:1,142:1,207:1,414:1},g1t={3:1,4:1,116:1,207:1,414:1},p1t="org.eclipse.elk.layered",b1t="org.eclipse.elk.alg.layered.graph.transform",w1t="ElkGraphImporter",m1t="ElkGraphImporter/lambda$0$Type",y1t="ElkGraphImporter/lambda$1$Type",v1t="ElkGraphImporter/lambda$2$Type",x1t="ElkGraphImporter/lambda$4$Type",k1t="Node margin calculation",_1t="org.eclipse.elk.alg.layered.intermediate",A1t="ONE_SIDED_GREEDY_SWITCH",E1t="TWO_SIDED_GREEDY_SWITCH",T1t="No implementation is available for the layout processor ",C1t="IntermediateProcessorStrategy",S1t="Node '",I1t="FIRST_SEPARATE",M1t="LAST_SEPARATE",D1t="Odd port side processing",O1t="org.eclipse.elk.alg.layered.intermediate.compaction",L1t="org.eclipse.elk.alg.layered.intermediate.greedyswitch",N1t="org.eclipse.elk.alg.layered.p3order.counting",P1t={225:1},B1t="org.eclipse.elk.alg.layered.intermediate.loops",F1t="org.eclipse.elk.alg.layered.intermediate.loops.ordering",R1t="org.eclipse.elk.alg.layered.intermediate.loops.routing",j1t="org.eclipse.elk.alg.layered.intermediate.preserveorder",$1t="org.eclipse.elk.alg.layered.intermediate.wrapping",z1t="org.eclipse.elk.alg.layered.options",q1t="INTERACTIVE",H1t="DEPTH_FIRST",U1t="EDGE_LENGTH",G1t="SELF_LOOPS",Y1t="firstTryWithInitialOrder",Z1t="org.eclipse.elk.layered.directionCongruency",W1t="org.eclipse.elk.layered.feedbackEdges",K1t="org.eclipse.elk.layered.interactiveReferencePoint",X1t="org.eclipse.elk.layered.mergeEdges",V1t="org.eclipse.elk.layered.mergeHierarchyEdges",Q1t="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",J1t="org.eclipse.elk.layered.portSortingStrategy",t0t="org.eclipse.elk.layered.thoroughness",e0t="org.eclipse.elk.layered.unnecessaryBendpoints",n0t="org.eclipse.elk.layered.generatePositionAndLayerIds",i0t="org.eclipse.elk.layered.cycleBreaking.strategy",r0t="org.eclipse.elk.layered.layering.strategy",a0t="org.eclipse.elk.layered.layering.layerConstraint",o0t="org.eclipse.elk.layered.layering.layerChoiceConstraint",s0t="org.eclipse.elk.layered.layering.layerId",c0t="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",u0t="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",l0t="org.eclipse.elk.layered.layering.nodePromotion.strategy",h0t="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",f0t="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",d0t="org.eclipse.elk.layered.crossingMinimization.strategy",g0t="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",p0t="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",b0t="org.eclipse.elk.layered.crossingMinimization.semiInteractive",w0t="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",m0t="org.eclipse.elk.layered.crossingMinimization.positionId",y0t="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",v0t="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",x0t="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",k0t="org.eclipse.elk.layered.nodePlacement.strategy",_0t="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",A0t="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",E0t="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",T0t="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",C0t="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",S0t="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",I0t="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",M0t="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",D0t="org.eclipse.elk.layered.edgeRouting.splines.mode",O0t="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",L0t="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",N0t="org.eclipse.elk.layered.spacing.baseValue",P0t="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",B0t="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",F0t="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",R0t="org.eclipse.elk.layered.priority.direction",j0t="org.eclipse.elk.layered.priority.shortness",$0t="org.eclipse.elk.layered.priority.straightness",z0t="org.eclipse.elk.layered.compaction.connectedComponents",q0t="org.eclipse.elk.layered.compaction.postCompaction.strategy",H0t="org.eclipse.elk.layered.compaction.postCompaction.constraints",U0t="org.eclipse.elk.layered.highDegreeNodes.treatment",G0t="org.eclipse.elk.layered.highDegreeNodes.threshold",Y0t="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Z0t="org.eclipse.elk.layered.wrapping.strategy",W0t="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",K0t="org.eclipse.elk.layered.wrapping.correctionFactor",X0t="org.eclipse.elk.layered.wrapping.cutting.strategy",V0t="org.eclipse.elk.layered.wrapping.cutting.cuts",Q0t="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",J0t="org.eclipse.elk.layered.wrapping.validify.strategy",t2t="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",e2t="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",n2t="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",i2t="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",r2t="org.eclipse.elk.layered.edgeLabels.sideSelection",a2t="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",o2t="org.eclipse.elk.layered.considerModelOrder.strategy",s2t="org.eclipse.elk.layered.considerModelOrder.noModelOrder",c2t="org.eclipse.elk.layered.considerModelOrder.components",u2t="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",l2t="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",h2t="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",f2t="layering",d2t="layering.minWidth",g2t="layering.nodePromotion",p2t="crossingMinimization",b2t="org.eclipse.elk.hierarchyHandling",w2t="crossingMinimization.greedySwitch",m2t="nodePlacement",y2t="nodePlacement.bk",v2t="edgeRouting",x2t="org.eclipse.elk.edgeRouting",k2t="spacing",_2t="priority",A2t="compaction",E2t="compaction.postCompaction",T2t="Specifies whether and how post-process compaction is applied.",C2t="highDegreeNodes",S2t="wrapping",I2t="wrapping.cutting",M2t="wrapping.validify",D2t="wrapping.multiEdge",O2t="edgeLabels",L2t="considerModelOrder",N2t="org.eclipse.elk.spacing.commentComment",P2t="org.eclipse.elk.spacing.commentNode",B2t="org.eclipse.elk.spacing.edgeEdge",F2t="org.eclipse.elk.spacing.edgeNode",R2t="org.eclipse.elk.spacing.labelLabel",j2t="org.eclipse.elk.spacing.labelPortHorizontal",$2t="org.eclipse.elk.spacing.labelPortVertical",z2t="org.eclipse.elk.spacing.labelNode",q2t="org.eclipse.elk.spacing.nodeSelfLoop",H2t="org.eclipse.elk.spacing.portPort",U2t="org.eclipse.elk.spacing.individual",G2t="org.eclipse.elk.port.borderOffset",Y2t="org.eclipse.elk.noLayout",Z2t="org.eclipse.elk.port.side",W2t="org.eclipse.elk.debugMode",K2t="org.eclipse.elk.alignment",X2t="org.eclipse.elk.insideSelfLoops.activate",V2t="org.eclipse.elk.insideSelfLoops.yo",Q2t="org.eclipse.elk.nodeSize.fixedGraphSize",J2t="org.eclipse.elk.direction",t3t="org.eclipse.elk.nodeLabels.padding",e3t="org.eclipse.elk.portLabels.nextToPortIfPossible",n3t="org.eclipse.elk.portLabels.treatAsGroup",i3t="org.eclipse.elk.portAlignment.default",r3t="org.eclipse.elk.portAlignment.north",a3t="org.eclipse.elk.portAlignment.south",o3t="org.eclipse.elk.portAlignment.west",s3t="org.eclipse.elk.portAlignment.east",c3t="org.eclipse.elk.contentAlignment",u3t="org.eclipse.elk.junctionPoints",l3t="org.eclipse.elk.edgeLabels.placement",h3t="org.eclipse.elk.port.index",f3t="org.eclipse.elk.commentBox",d3t="org.eclipse.elk.hypernode",g3t="org.eclipse.elk.port.anchor",p3t="org.eclipse.elk.partitioning.activate",b3t="org.eclipse.elk.partitioning.partition",w3t="org.eclipse.elk.position",m3t="org.eclipse.elk.margins",y3t="org.eclipse.elk.spacing.portsSurrounding",v3t="org.eclipse.elk.interactiveLayout",x3t="org.eclipse.elk.core.util",k3t={3:1,4:1,5:1,593:1},_3t="NETWORK_SIMPLEX",A3t={123:1,51:1},E3t="org.eclipse.elk.alg.layered.p1cycles",T3t="org.eclipse.elk.alg.layered.p2layers",C3t={402:1,225:1},S3t={832:1,3:1,4:1},I3t="org.eclipse.elk.alg.layered.p3order",M3t="org.eclipse.elk.alg.layered.p4nodes",D3t={3:1,4:1,5:1,840:1},O3t=1e-5,L3t="org.eclipse.elk.alg.layered.p4nodes.bk",N3t="org.eclipse.elk.alg.layered.p5edges",P3t="org.eclipse.elk.alg.layered.p5edges.orthogonal",B3t="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",F3t=1e-6,R3t="org.eclipse.elk.alg.layered.p5edges.splines",j3t=.09999999999999998,$3t=1e-8,z3t=4.71238898038469,q3t=3.141592653589793,H3t="org.eclipse.elk.alg.mrtree",U3t="org.eclipse.elk.alg.mrtree.graph",G3t="org.eclipse.elk.alg.mrtree.intermediate",Y3t="Set neighbors in level",Z3t="DESCENDANTS",W3t="org.eclipse.elk.mrtree.weighting",K3t="org.eclipse.elk.mrtree.searchOrder",X3t="org.eclipse.elk.alg.mrtree.options",V3t="org.eclipse.elk.mrtree",Q3t="org.eclipse.elk.tree",J3t="org.eclipse.elk.alg.radial",t4t=6.283185307179586,e4t=5e-324,n4t="org.eclipse.elk.alg.radial.intermediate",i4t="org.eclipse.elk.alg.radial.intermediate.compaction",r4t={3:1,4:1,5:1,106:1},a4t="org.eclipse.elk.alg.radial.intermediate.optimization",o4t="No implementation is available for the layout option ",s4t="org.eclipse.elk.alg.radial.options",c4t="org.eclipse.elk.radial.orderId",u4t="org.eclipse.elk.radial.radius",l4t="org.eclipse.elk.radial.compactor",h4t="org.eclipse.elk.radial.compactionStepSize",f4t="org.eclipse.elk.radial.sorter",d4t="org.eclipse.elk.radial.wedgeCriteria",g4t="org.eclipse.elk.radial.optimizationCriteria",p4t="org.eclipse.elk.radial",b4t="org.eclipse.elk.alg.radial.p1position.wedge",w4t="org.eclipse.elk.alg.radial.sorting",m4t=5.497787143782138,y4t=3.9269908169872414,v4t=2.356194490192345,x4t="org.eclipse.elk.alg.rectpacking",k4t="org.eclipse.elk.alg.rectpacking.firstiteration",_4t="org.eclipse.elk.alg.rectpacking.options",A4t="org.eclipse.elk.rectpacking.optimizationGoal",E4t="org.eclipse.elk.rectpacking.lastPlaceShift",T4t="org.eclipse.elk.rectpacking.currentPosition",C4t="org.eclipse.elk.rectpacking.desiredPosition",S4t="org.eclipse.elk.rectpacking.onlyFirstIteration",I4t="org.eclipse.elk.rectpacking.rowCompaction",M4t="org.eclipse.elk.rectpacking.expandToAspectRatio",D4t="org.eclipse.elk.rectpacking.targetWidth",O4t="org.eclipse.elk.expandNodes",L4t="org.eclipse.elk.rectpacking",N4t="org.eclipse.elk.alg.rectpacking.util",P4t="No implementation available for ",B4t="org.eclipse.elk.alg.spore",F4t="org.eclipse.elk.alg.spore.options",R4t="org.eclipse.elk.sporeCompaction",j4t="org.eclipse.elk.underlyingLayoutAlgorithm",$4t="org.eclipse.elk.processingOrder.treeConstruction",z4t="org.eclipse.elk.processingOrder.spanningTreeCostFunction",q4t="org.eclipse.elk.processingOrder.preferredRoot",H4t="org.eclipse.elk.processingOrder.rootSelection",U4t="org.eclipse.elk.structure.structureExtractionStrategy",G4t="org.eclipse.elk.compaction.compactionStrategy",Y4t="org.eclipse.elk.compaction.orthogonal",Z4t="org.eclipse.elk.overlapRemoval.maxIterations",W4t="org.eclipse.elk.overlapRemoval.runScanline",K4t="processingOrder",X4t="overlapRemoval",V4t="org.eclipse.elk.sporeOverlap",Q4t="org.eclipse.elk.alg.spore.p1structure",J4t="org.eclipse.elk.alg.spore.p2processingorder",t5t="org.eclipse.elk.alg.spore.p3execution",e5t="Invalid index: ",n5t="org.eclipse.elk.core.alg",i5t={331:1},r5t={288:1},a5t="Make sure its type is registered with the ",o5t=" utility class.",s5t="true",c5t="false",u5t="Couldn't clone property '",l5t=.05,h5t="org.eclipse.elk.core.options",f5t=1.2999999523162842,d5t="org.eclipse.elk.box",g5t="org.eclipse.elk.box.packingMode",p5t="org.eclipse.elk.algorithm",b5t="org.eclipse.elk.resolvedAlgorithm",w5t="org.eclipse.elk.bendPoints",m5t="org.eclipse.elk.labelManager",y5t="org.eclipse.elk.scaleFactor",v5t="org.eclipse.elk.animate",x5t="org.eclipse.elk.animTimeFactor",k5t="org.eclipse.elk.layoutAncestors",_5t="org.eclipse.elk.maxAnimTime",A5t="org.eclipse.elk.minAnimTime",E5t="org.eclipse.elk.progressBar",T5t="org.eclipse.elk.validateGraph",C5t="org.eclipse.elk.validateOptions",S5t="org.eclipse.elk.zoomToFit",I5t="org.eclipse.elk.font.name",M5t="org.eclipse.elk.font.size",D5t="org.eclipse.elk.edge.type",O5t="partitioning",L5t="nodeLabels",N5t="portAlignment",P5t="nodeSize",B5t="port",F5t="portLabels",R5t="insideSelfLoops",j5t="org.eclipse.elk.fixed",$5t="org.eclipse.elk.random",z5t="port must have a parent node to calculate the port side",q5t="The edge needs to have exactly one edge section. Found: ",H5t="org.eclipse.elk.core.util.adapters",U5t="org.eclipse.emf.ecore",G5t="org.eclipse.elk.graph",Y5t="EMapPropertyHolder",Z5t="ElkBendPoint",W5t="ElkGraphElement",K5t="ElkConnectableShape",X5t="ElkEdge",V5t="ElkEdgeSection",Q5t="EModelElement",J5t="ENamedElement",t6t="ElkLabel",e6t="ElkNode",n6t="ElkPort",i6t={92:1,90:1},r6t="org.eclipse.emf.common.notify.impl",a6t="The feature '",o6t="' is not a valid changeable feature",s6t="Expecting null",c6t="' is not a valid feature",u6t="The feature ID",l6t=" is not a valid feature ID",h6t=32768,f6t={105:1,92:1,90:1,56:1,49:1,97:1},d6t="org.eclipse.emf.ecore.impl",g6t="org.eclipse.elk.graph.impl",p6t="Recursive containment not allowed for ",b6t="The datatype '",w6t="' is not a valid classifier",m6t="The value '",y6t={190:1,3:1,4:1},v6t="The class '",x6t="http://www.eclipse.org/elk/ElkGraph",k6t=1024,_6t="property",A6t="value",E6t="source",T6t="properties",C6t="identifier",S6t="height",I6t="width",M6t="parent",D6t="text",O6t="children",L6t="hierarchical",N6t="sources",P6t="targets",B6t="sections",F6t="bendPoints",R6t="outgoingShape",j6t="incomingShape",$6t="outgoingSections",z6t="incomingSections",q6t="org.eclipse.emf.common.util",H6t="Severe implementation error in the Json to ElkGraph importer.",U6t="id",G6t="org.eclipse.elk.graph.json",Y6t="Unhandled parameter types: ",Z6t="startPoint",W6t="An edge must have at least one source and one target (edge id: '",K6t="').",X6t="Referenced edge section does not exist: ",V6t=" (edge id: '",Q6t="target",J6t="sourcePoint",t8t="targetPoint",e8t="group",n8t="name",i8t="connectableShape cannot be null",r8t="edge cannot be null",a8t="Passed edge is not 'simple'.",o8t="org.eclipse.elk.graph.util",s8t="The 'no duplicates' constraint is violated",c8t="targetIndex=",u8t=", size=",l8t="sourceIndex=",h8t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},f8t={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},d8t="logging",g8t="measureExecutionTime",p8t="parser.parse.1",b8t="parser.parse.2",w8t="parser.next.1",m8t="parser.next.2",y8t="parser.next.3",v8t="parser.next.4",x8t="parser.factor.1",k8t="parser.factor.2",_8t="parser.factor.3",A8t="parser.factor.4",E8t="parser.factor.5",T8t="parser.factor.6",C8t="parser.atom.1",S8t="parser.atom.2",I8t="parser.atom.3",M8t="parser.atom.4",D8t="parser.atom.5",O8t="parser.cc.1",L8t="parser.cc.2",N8t="parser.cc.3",P8t="parser.cc.5",B8t="parser.cc.6",F8t="parser.cc.7",R8t="parser.cc.8",j8t="parser.ope.1",$8t="parser.ope.2",z8t="parser.ope.3",q8t="parser.descape.1",H8t="parser.descape.2",U8t="parser.descape.3",G8t="parser.descape.4",Y8t="parser.descape.5",Z8t="parser.process.1",W8t="parser.quantifier.1",K8t="parser.quantifier.2",X8t="parser.quantifier.3",V8t="parser.quantifier.4",Q8t="parser.quantifier.5",J8t="org.eclipse.emf.common.notify",t7t={415:1,672:1},e7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},n7t={366:1,143:1},i7t="index=",r7t={3:1,4:1,5:1,126:1},a7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},o7t={3:1,6:1,4:1,5:1,192:1},s7t={3:1,4:1,5:1,165:1,367:1},c7t=";/?:@&=+$,",u7t="invalid authority: ",l7t="EAnnotation",h7t="ETypedElement",f7t="EStructuralFeature",d7t="EAttribute",g7t="EClassifier",p7t="EEnumLiteral",b7t="EGenericType",w7t="EOperation",m7t="EParameter",y7t="EReference",v7t="ETypeParameter",x7t="org.eclipse.emf.ecore.util",k7t={76:1},_7t={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},A7t="org.eclipse.emf.ecore.util.FeatureMap$Entry",E7t=8192,T7t=2048,C7t="byte",S7t="char",I7t="double",M7t="float",D7t="int",O7t="long",L7t="short",N7t="java.lang.Object",P7t={3:1,4:1,5:1,247:1},B7t={3:1,4:1,5:1,673:1},F7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},R7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},j7t="mixed",$7t="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",z7t="kind",q7t={3:1,4:1,5:1,674:1},H7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},U7t={20:1,28:1,52:1,14:1,15:1,58:1,69:1},G7t={47:1,125:1,279:1},Y7t={72:1,332:1},Z7t="The value of type '",W7t="' must be of type '",K7t=1316,X7t="http://www.eclipse.org/emf/2002/Ecore",V7t=-32768,Q7t="constraints",J7t="baseType",t9t="getEStructuralFeature",e9t="getFeatureID",n9t="feature",i9t="getOperationID",r9t="operation",a9t="defaultValue",o9t="eTypeParameters",s9t="isInstance",c9t="getEEnumLiteral",u9t="eContainingClass",l9t={55:1},h9t={3:1,4:1,5:1,119:1},f9t="org.eclipse.emf.ecore.resource",d9t={92:1,90:1,591:1,1935:1},g9t="org.eclipse.emf.ecore.resource.impl",p9t="unspecified",b9t="simple",w9t="attribute",m9t="attributeWildcard",y9t="element",v9t="elementWildcard",x9t="collapse",k9t="itemType",_9t="namespace",A9t="##targetNamespace",E9t="whiteSpace",T9t="wildcards",C9t="http://www.eclipse.org/emf/2003/XMLType",S9t="##any",I9t="uninitialized",M9t="The multiplicity constraint is violated",D9t="org.eclipse.emf.ecore.xml.type",O9t="ProcessingInstruction",L9t="SimpleAnyType",N9t="XMLTypeDocumentRoot",P9t="org.eclipse.emf.ecore.xml.type.impl",B9t="INF",F9t="processing",R9t="ENTITIES_._base",j9t="minLength",$9t="ENTITY",z9t="NCName",q9t="IDREFS_._base",H9t="integer",U9t="token",G9t="pattern",Y9t="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",Z9t="\\i\\c*",W9t="[\\i-[:]][\\c-[:]]*",K9t="nonPositiveInteger",X9t="maxInclusive",V9t="NMTOKEN",Q9t="NMTOKENS_._base",J9t="nonNegativeInteger",tte="minInclusive",ete="normalizedString",nte="unsignedByte",ite="unsignedInt",rte="18446744073709551615",ate="unsignedShort",ote="processingInstruction",ste="org.eclipse.emf.ecore.xml.type.internal",cte=1114111,ute="Internal Error: shorthands: \\u",lte="xml:isDigit",hte="xml:isWord",fte="xml:isSpace",dte="xml:isNameChar",gte="xml:isInitialNameChar",pte="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",bte="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",wte="Private Use",mte="ASSIGNED",yte="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\ufeff\ufeff＀￯",vte="UNASSIGNED",xte={3:1,117:1},kte="org.eclipse.emf.ecore.xml.type.util",_te={3:1,4:1,5:1,368:1},Ate="org.eclipse.xtext.xbase.lib",Ete="Cannot add elements to a Range",Tte="Cannot set elements in a Range",Cte="Cannot remove elements from a Range",Ste="locale",Ite="default",Mte="user.agent";n.goog=n.goog||{},n.goog.global=n.goog.global||n,KEt(),pDt(1,null,{},r),TWt.Fb=function(t){return $M(this,t)},TWt.Gb=function(){return this.gm},TWt.Hb=function(){return CN(this)},TWt.Ib=function(){return t_(nut(this))+"@"+(eut(this)>>>0).toString(16)},TWt.equals=function(t){return this.Fb(t)},TWt.hashCode=function(){return this.Hb()},TWt.toString=function(){return this.Ib()},pDt(290,1,{290:1,2026:1},mct),TWt.le=function(t){var e;return(e=new mct).i=4,e.c=t>1?bJ(this,t-1):this,e},TWt.me=function(){return _B(this),this.b},TWt.ne=function(){return t_(this)},TWt.oe=function(){return _B(this),this.k},TWt.pe=function(){return 0!=(4&this.i)},TWt.qe=function(){return 0!=(1&this.i)},TWt.Ib=function(){return set(this)},TWt.i=0;var Dte,Ote=mZ(RWt,"Object",1),Lte=mZ(RWt,"Class",290);pDt(1998,1,jWt),mZ($Wt,"Optional",1998),pDt(1170,1998,jWt,a),TWt.Fb=function(t){return t===this},TWt.Hb=function(){return 2040732332},TWt.Ib=function(){return"Optional.absent()"},TWt.Jb=function(t){return vZ(t),iv(),Dte},mZ($Wt,"Absent",1170),pDt(628,1,{},yx),mZ($Wt,"Joiner",628);var Nte=dH($Wt,"Predicate");pDt(582,1,{169:1,582:1,3:1,45:1},zh),TWt.Mb=function(t){return jct(this,t)},TWt.Lb=function(t){return jct(this,t)},TWt.Fb=function(t){var e;return!!aL(t,582)&&(e=zz(t,582),PDt(this.a,e.a))},TWt.Hb=function(){return zct(this.a)+306654252},TWt.Ib=function(){return pCt(this.a)},mZ($Wt,"Predicates/AndPredicate",582),pDt(408,1998,{408:1,3:1},qh),TWt.Fb=function(t){var e;return!!aL(t,408)&&(e=zz(t,408),Pht(this.a,e.a))},TWt.Hb=function(){return 1502476572+eut(this.a)},TWt.Ib=function(){return GWt+this.a+")"},TWt.Jb=function(t){return new qh(WX(t.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},mZ($Wt,"Present",408),pDt(198,1,ZWt),TWt.Nb=function(t){hY(this,t)},TWt.Qb=function(){dx()},mZ(WWt,"UnmodifiableIterator",198),pDt(1978,198,KWt),TWt.Qb=function(){dx()},TWt.Rb=function(t){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(WWt,"UnmodifiableListIterator",1978),pDt(386,1978,KWt),TWt.Ob=function(){return this.c0},TWt.Pb=function(){if(this.c>=this.d)throw qw(new vm);return this.Xb(this.c++)},TWt.Tb=function(){return this.c},TWt.Ub=function(){if(this.c<=0)throw qw(new vm);return this.Xb(--this.c)},TWt.Vb=function(){return this.c-1},TWt.c=0,TWt.d=0,mZ(WWt,"AbstractIndexedListIterator",386),pDt(699,198,ZWt),TWt.Ob=function(){return trt(this)},TWt.Pb=function(){return C9(this)},TWt.e=1,mZ(WWt,"AbstractIterator",699),pDt(1986,1,{224:1}),TWt.Zb=function(){return this.f||(this.f=this.ac())},TWt.Fb=function(t){return _ut(this,t)},TWt.Hb=function(){return eut(this.Zb())},TWt.dc=function(){return 0==this.gc()},TWt.ec=function(){return bG(this)},TWt.Ib=function(){return qdt(this.Zb())},mZ(WWt,"AbstractMultimap",1986),pDt(726,1986,XWt),TWt.$b=function(){pit(this)},TWt._b=function(t){return Wk(this,t)},TWt.ac=function(){return new wA(this,this.c)},TWt.ic=function(t){return this.hc()},TWt.bc=function(){return new qL(this,this.c)},TWt.jc=function(){return this.mc(this.hc())},TWt.kc=function(){return new qy(this)},TWt.lc=function(){return UAt(this.c.vc().Nc(),new s,64,this.d)},TWt.cc=function(t){return l6(this,t)},TWt.fc=function(t){return Plt(this,t)},TWt.gc=function(){return this.d},TWt.mc=function(t){return TX(),new qd(t)},TWt.nc=function(){return new zy(this)},TWt.oc=function(){return UAt(this.c.Cc().Nc(),new o,64,this.d)},TWt.pc=function(t,e){return new W6(this,t,e,null)},TWt.d=0,mZ(WWt,"AbstractMapBasedMultimap",726),pDt(1631,726,XWt),TWt.hc=function(){return new Q6(this.a)},TWt.jc=function(){return TX(),TX(),lne},TWt.cc=function(t){return zz(l6(this,t),15)},TWt.fc=function(t){return zz(Plt(this,t),15)},TWt.Zb=function(){return MX(this)},TWt.Fb=function(t){return _ut(this,t)},TWt.qc=function(t){return zz(l6(this,t),15)},TWt.rc=function(t){return zz(Plt(this,t),15)},TWt.mc=function(t){return rV(zz(t,15))},TWt.pc=function(t,e){return i3(this,t,zz(e,15),null)},mZ(WWt,"AbstractListMultimap",1631),pDt(732,1,VWt),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.c.Ob()||this.e.Ob()},TWt.Pb=function(){var t;return this.e.Ob()||(t=zz(this.c.Pb(),42),this.b=t.cd(),this.a=zz(t.dd(),14),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},TWt.Qb=function(){this.e.Qb(),this.a.dc()&&this.c.Qb(),--this.d.d},mZ(WWt,"AbstractMapBasedMultimap/Itr",732),pDt(1099,732,VWt,zy),TWt.sc=function(t,e){return e},mZ(WWt,"AbstractMapBasedMultimap/1",1099),pDt(1100,1,{},o),TWt.Kb=function(t){return zz(t,14).Nc()},mZ(WWt,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1100),pDt(1101,732,VWt,qy),TWt.sc=function(t,e){return new mA(t,e)},mZ(WWt,"AbstractMapBasedMultimap/2",1101);var Pte=dH(QWt,"Map");pDt(1967,1,JWt),TWt.wc=function(t){eot(this,t)},TWt.yc=function(t,e,n){return tdt(this,t,e,n)},TWt.$b=function(){this.vc().$b()},TWt.tc=function(t){return Tyt(this,t)},TWt._b=function(t){return!!z_t(this,t,!1)},TWt.uc=function(t){var e,n;for(e=this.vc().Kc();e.Ob();)if(n=zz(e.Pb(),42).dd(),UI(t)===UI(n)||null!=t&&Pht(t,n))return!0;return!1},TWt.Fb=function(t){var e,n,i;if(t===this)return!0;if(!aL(t,83))return!1;if(i=zz(t,83),this.gc()!=i.gc())return!1;for(n=i.vc().Kc();n.Ob();)if(e=zz(n.Pb(),42),!this.tc(e))return!1;return!0},TWt.xc=function(t){return HI(z_t(this,t,!1))},TWt.Hb=function(){return Hst(this.vc())},TWt.dc=function(){return 0==this.gc()},TWt.ec=function(){return new Sd(this)},TWt.zc=function(t,e){throw qw(new ex("Put not supported on this map"))},TWt.Ac=function(t){Eat(this,t)},TWt.Bc=function(t){return HI(z_t(this,t,!0))},TWt.gc=function(){return this.vc().gc()},TWt.Ib=function(){return eAt(this)},TWt.Cc=function(){return new Md(this)},mZ(QWt,"AbstractMap",1967),pDt(1987,1967,JWt),TWt.bc=function(){return new TA(this)},TWt.vc=function(){return pG(this)},TWt.ec=function(){return this.g||(this.g=this.bc())},TWt.Cc=function(){return this.i||(this.i=new CA(this))},mZ(WWt,"Maps/ViewCachingAbstractMap",1987),pDt(389,1987,JWt,wA),TWt.xc=function(t){return ket(this,t)},TWt.Bc=function(t){return tlt(this,t)},TWt.$b=function(){this.d==this.e.c?this.e.$b():SH(new MH(this))},TWt._b=function(t){return wht(this.d,t)},TWt.Ec=function(){return new Yh(this)},TWt.Dc=function(){return this.Ec()},TWt.Fb=function(t){return this===t||Pht(this.d,t)},TWt.Hb=function(){return eut(this.d)},TWt.ec=function(){return this.e.ec()},TWt.gc=function(){return this.d.gc()},TWt.Ib=function(){return qdt(this.d)},mZ(WWt,"AbstractMapBasedMultimap/AsMap",389);var Bte=dH(RWt,"Iterable");pDt(28,1,tKt),TWt.Jc=function(t){n5(this,t)},TWt.Lc=function(){return this.Oc()},TWt.Nc=function(){return new g1(this,0)},TWt.Oc=function(){return new FH(null,this.Nc())},TWt.Fc=function(t){throw qw(new ex("Add not supported on this collection"))},TWt.Gc=function(t){return zrt(this,t)},TWt.$b=function(){AK(this)},TWt.Hc=function(t){return xgt(this,t,!1)},TWt.Ic=function(t){return ust(this,t)},TWt.dc=function(){return 0==this.gc()},TWt.Mc=function(t){return xgt(this,t,!0)},TWt.Pc=function(){return aG(this)},TWt.Qc=function(t){return Ayt(this,t)},TWt.Ib=function(){return NEt(this)},mZ(QWt,"AbstractCollection",28);var Fte=dH(QWt,"Set");pDt(eKt,28,nKt),TWt.Nc=function(){return new g1(this,1)},TWt.Fb=function(t){return rbt(this,t)},TWt.Hb=function(){return Hst(this)},mZ(QWt,"AbstractSet",eKt),pDt(1970,eKt,nKt),mZ(WWt,"Sets/ImprovedAbstractSet",1970),pDt(1971,1970,nKt),TWt.$b=function(){this.Rc().$b()},TWt.Hc=function(t){return rpt(this,t)},TWt.dc=function(){return this.Rc().dc()},TWt.Mc=function(t){var e;return!!this.Hc(t)&&(e=zz(t,42),this.Rc().ec().Mc(e.cd()))},TWt.gc=function(){return this.Rc().gc()},mZ(WWt,"Maps/EntrySet",1971),pDt(1097,1971,nKt,Yh),TWt.Hc=function(t){return pht(this.a.d.vc(),t)},TWt.Kc=function(){return new MH(this.a)},TWt.Rc=function(){return this.a},TWt.Mc=function(t){var e;return!!pht(this.a.d.vc(),t)&&(e=zz(t,42),q5(this.a.e,e.cd()),!0)},TWt.Nc=function(){return Fz(this.a.d.vc().Nc(),new Zh(this.a))},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1097),pDt(1098,1,{},Zh),TWt.Kb=function(t){return i5(this.a,zz(t,42))},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1098),pDt(730,1,VWt,MH),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){var t;return t=zz(this.b.Pb(),42),this.a=zz(t.dd(),14),i5(this.c,t)},TWt.Ob=function(){return this.b.Ob()},TWt.Qb=function(){hot(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapIterator",730),pDt(532,1970,nKt,TA),TWt.$b=function(){this.b.$b()},TWt.Hc=function(t){return this.b._b(t)},TWt.Jc=function(t){vZ(t),this.b.wc(new mf(t))},TWt.dc=function(){return this.b.dc()},TWt.Kc=function(){return new fv(this.b.vc().Kc())},TWt.Mc=function(t){return!!this.b._b(t)&&(this.b.Bc(t),!0)},TWt.gc=function(){return this.b.gc()},mZ(WWt,"Maps/KeySet",532),pDt(318,532,nKt,qL),TWt.$b=function(){SH(new nA(this,this.b.vc().Kc()))},TWt.Ic=function(t){return this.b.ec().Ic(t)},TWt.Fb=function(t){return this===t||Pht(this.b.ec(),t)},TWt.Hb=function(){return eut(this.b.ec())},TWt.Kc=function(){return new nA(this,this.b.vc().Kc())},TWt.Mc=function(t){var e,n;return n=0,(e=zz(this.b.Bc(t),14))&&(n=e.gc(),e.$b(),this.a.d-=n),n>0},TWt.Nc=function(){return this.b.ec().Nc()},mZ(WWt,"AbstractMapBasedMultimap/KeySet",318),pDt(731,1,VWt,nA),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.c.Ob()},TWt.Pb=function(){return this.a=zz(this.c.Pb(),42),this.a.cd()},TWt.Qb=function(){var t;hot(!!this.a),t=zz(this.a.dd(),14),this.c.Qb(),this.b.a.d-=t.gc(),t.$b(),this.a=null},mZ(WWt,"AbstractMapBasedMultimap/KeySet/1",731),pDt(491,389,{83:1,161:1},SB),TWt.bc=function(){return this.Sc()},TWt.ec=function(){return this.Tc()},TWt.Sc=function(){return new tA(this.c,this.Uc())},TWt.Tc=function(){return this.b||(this.b=this.Sc())},TWt.Uc=function(){return zz(this.d,161)},mZ(WWt,"AbstractMapBasedMultimap/SortedAsMap",491),pDt(542,491,iKt,IB),TWt.bc=function(){return new eA(this.a,zz(zz(this.d,161),171))},TWt.Sc=function(){return new eA(this.a,zz(zz(this.d,161),171))},TWt.ec=function(){return zz(this.b||(this.b=new eA(this.a,zz(zz(this.d,161),171))),271)},TWt.Tc=function(){return zz(this.b||(this.b=new eA(this.a,zz(zz(this.d,161),171))),271)},TWt.Uc=function(){return zz(zz(this.d,161),171)},mZ(WWt,"AbstractMapBasedMultimap/NavigableAsMap",542),pDt(490,318,rKt,tA),TWt.Nc=function(){return this.b.ec().Nc()},mZ(WWt,"AbstractMapBasedMultimap/SortedKeySet",490),pDt(388,490,aKt,eA),mZ(WWt,"AbstractMapBasedMultimap/NavigableKeySet",388),pDt(541,28,tKt,W6),TWt.Fc=function(t){var e,n;return Ydt(this),n=this.d.dc(),(e=this.d.Fc(t))&&(++this.f.d,n&&kF(this)),e},TWt.Gc=function(t){var e,n,i;return!t.dc()&&(Ydt(this),i=this.d.gc(),(e=this.d.Gc(t))&&(n=this.d.gc(),this.f.d+=n-i,0==i&&kF(this)),e)},TWt.$b=function(){var t;Ydt(this),0!=(t=this.d.gc())&&(this.d.$b(),this.f.d-=t,OU(this))},TWt.Hc=function(t){return Ydt(this),this.d.Hc(t)},TWt.Ic=function(t){return Ydt(this),this.d.Ic(t)},TWt.Fb=function(t){return t===this||(Ydt(this),Pht(this.d,t))},TWt.Hb=function(){return Ydt(this),eut(this.d)},TWt.Kc=function(){return Ydt(this),new Xz(this)},TWt.Mc=function(t){var e;return Ydt(this),(e=this.d.Mc(t))&&(--this.f.d,OU(this)),e},TWt.gc=function(){return eM(this)},TWt.Nc=function(){return Ydt(this),this.d.Nc()},TWt.Ib=function(){return Ydt(this),qdt(this.d)},mZ(WWt,"AbstractMapBasedMultimap/WrappedCollection",541);var Rte=dH(QWt,"List");pDt(728,541,{20:1,28:1,14:1,15:1},uG),TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return Ydt(this),this.d.Nc()},TWt.Vc=function(t,e){var n;Ydt(this),n=this.d.dc(),zz(this.d,15).Vc(t,e),++this.a.d,n&&kF(this)},TWt.Wc=function(t,e){var n,i,r;return!e.dc()&&(Ydt(this),r=this.d.gc(),(n=zz(this.d,15).Wc(t,e))&&(i=this.d.gc(),this.a.d+=i-r,0==r&&kF(this)),n)},TWt.Xb=function(t){return Ydt(this),zz(this.d,15).Xb(t)},TWt.Xc=function(t){return Ydt(this),zz(this.d,15).Xc(t)},TWt.Yc=function(){return Ydt(this),new bO(this)},TWt.Zc=function(t){return Ydt(this),new bX(this,t)},TWt.$c=function(t){var e;return Ydt(this),e=zz(this.d,15).$c(t),--this.a.d,OU(this),e},TWt._c=function(t,e){return Ydt(this),zz(this.d,15)._c(t,e)},TWt.bd=function(t,e){return Ydt(this),i3(this.a,this.e,zz(this.d,15).bd(t,e),this.b?this.b:this)},mZ(WWt,"AbstractMapBasedMultimap/WrappedList",728),pDt(1096,728,{20:1,28:1,14:1,15:1,54:1},MP),mZ(WWt,"AbstractMapBasedMultimap/RandomAccessWrappedList",1096),pDt(620,1,VWt,Xz),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return EK(this),this.b.Ob()},TWt.Pb=function(){return EK(this),this.b.Pb()},TWt.Qb=function(){nN(this)},mZ(WWt,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",620),pDt(729,620,oKt,bO,bX),TWt.Qb=function(){nN(this)},TWt.Rb=function(t){var e;e=0==eM(this.a),(EK(this),zz(this.b,125)).Rb(t),++this.a.a.d,e&&kF(this.a)},TWt.Sb=function(){return(EK(this),zz(this.b,125)).Sb()},TWt.Tb=function(){return(EK(this),zz(this.b,125)).Tb()},TWt.Ub=function(){return(EK(this),zz(this.b,125)).Ub()},TWt.Vb=function(){return(EK(this),zz(this.b,125)).Vb()},TWt.Wb=function(t){(EK(this),zz(this.b,125)).Wb(t)},mZ(WWt,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",729),pDt(727,541,rKt,NB),TWt.Nc=function(){return Ydt(this),this.d.Nc()},mZ(WWt,"AbstractMapBasedMultimap/WrappedSortedSet",727),pDt(1095,727,aKt,DD),mZ(WWt,"AbstractMapBasedMultimap/WrappedNavigableSet",1095),pDt(1094,541,nKt,PB),TWt.Nc=function(){return Ydt(this),this.d.Nc()},mZ(WWt,"AbstractMapBasedMultimap/WrappedSet",1094),pDt(1103,1,{},s),TWt.Kb=function(t){return $6(zz(t,42))},mZ(WWt,"AbstractMapBasedMultimap/lambda$1$Type",1103),pDt(1102,1,{},Wh),TWt.Kb=function(t){return new mA(this.a,t)},mZ(WWt,"AbstractMapBasedMultimap/lambda$2$Type",1102);var jte,$te,zte,qte,Hte=dH(QWt,"Map/Entry");pDt(345,1,sKt),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),gW(this.cd(),e.cd())&&gW(this.dd(),e.dd()))},TWt.Hb=function(){var t,e;return t=this.cd(),e=this.dd(),(null==t?0:eut(t))^(null==e?0:eut(e))},TWt.ed=function(t){throw qw(new wm)},TWt.Ib=function(){return this.cd()+"="+this.dd()},mZ(WWt,cKt,345),pDt(1988,28,tKt),TWt.$b=function(){this.fd().$b()},TWt.Hc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),q0(this.fd(),e.cd(),e.dd()))},TWt.Mc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),H0(this.fd(),e.cd(),e.dd()))},TWt.gc=function(){return this.fd().d},mZ(WWt,"Multimaps/Entries",1988),pDt(733,1988,tKt,Kh),TWt.Kc=function(){return this.a.kc()},TWt.fd=function(){return this.a},TWt.Nc=function(){return this.a.lc()},mZ(WWt,"AbstractMultimap/Entries",733),pDt(734,733,nKt,Hy),TWt.Nc=function(){return this.a.lc()},TWt.Fb=function(t){return YTt(this,t)},TWt.Hb=function(){return qrt(this)},mZ(WWt,"AbstractMultimap/EntrySet",734),pDt(735,28,tKt,Xh),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return Mut(this.a,t)},TWt.Kc=function(){return this.a.nc()},TWt.gc=function(){return this.a.d},TWt.Nc=function(){return this.a.oc()},mZ(WWt,"AbstractMultimap/Values",735),pDt(1989,28,{835:1,20:1,28:1,14:1}),TWt.Jc=function(t){vZ(t),_K(this).Jc(new wf(t))},TWt.Nc=function(){var t;return UAt(t=_K(this).Nc(),new v,64|1296&t.qd(),this.a.d)},TWt.Fc=function(t){return gx(),!0},TWt.Gc=function(t){return vZ(this),vZ(t),aL(t,543)?f2(zz(t,835)):!t.dc()&&htt(this,t.Kc())},TWt.Hc=function(t){var e;return((e=zz(dht(MX(this.a),t),14))?e.gc():0)>0},TWt.Fb=function(t){return hOt(this,t)},TWt.Hb=function(){return eut(_K(this))},TWt.dc=function(){return _K(this).dc()},TWt.Mc=function(t){return AIt(this,t,1)>0},TWt.Ib=function(){return qdt(_K(this))},mZ(WWt,"AbstractMultiset",1989),pDt(1991,1970,nKt),TWt.$b=function(){pit(this.a.a)},TWt.Hc=function(t){var e;return!(!aL(t,492)||(e=zz(t,416),zz(e.a.dd(),14).gc()<=0||a1(this.a,e.a.cd())!=zz(e.a.dd(),14).gc()))},TWt.Mc=function(t){var e,n,i;return!(!aL(t,492)||(e=(n=zz(t,416)).a.cd(),0==(i=zz(n.a.dd(),14).gc())))&&EIt(this.a,e,i)},mZ(WWt,"Multisets/EntrySet",1991),pDt(1109,1991,nKt,Vh),TWt.Kc=function(){return new gv(pG(MX(this.a.a)).Kc())},TWt.gc=function(){return MX(this.a.a).gc()},mZ(WWt,"AbstractMultiset/EntrySet",1109),pDt(619,726,XWt),TWt.hc=function(){return this.gd()},TWt.jc=function(){return this.hd()},TWt.cc=function(t){return this.jd(t)},TWt.fc=function(t){return this.kd(t)},TWt.Zb=function(){return this.f||(this.f=this.ac())},TWt.hd=function(){return TX(),TX(),fne},TWt.Fb=function(t){return _ut(this,t)},TWt.jd=function(t){return zz(l6(this,t),21)},TWt.kd=function(t){return zz(Plt(this,t),21)},TWt.mc=function(t){return TX(),new Dx(zz(t,21))},TWt.pc=function(t,e){return new PB(this,t,zz(e,21))},mZ(WWt,"AbstractSetMultimap",619),pDt(1657,619,XWt),TWt.hc=function(){return new p_(this.b)},TWt.gd=function(){return new p_(this.b)},TWt.jc=function(){return IZ(new p_(this.b))},TWt.hd=function(){return IZ(new p_(this.b))},TWt.cc=function(t){return zz(zz(l6(this,t),21),84)},TWt.jd=function(t){return zz(zz(l6(this,t),21),84)},TWt.fc=function(t){return zz(zz(Plt(this,t),21),84)},TWt.kd=function(t){return zz(zz(Plt(this,t),21),84)},TWt.mc=function(t){return aL(t,271)?IZ(zz(t,271)):(TX(),new pN(zz(t,84)))},TWt.Zb=function(){return this.f||(this.f=aL(this.c,171)?new IB(this,zz(this.c,171)):aL(this.c,161)?new SB(this,zz(this.c,161)):new wA(this,this.c))},TWt.pc=function(t,e){return aL(e,271)?new DD(this,t,zz(e,271)):new NB(this,t,zz(e,84))},mZ(WWt,"AbstractSortedSetMultimap",1657),pDt(1658,1657,XWt),TWt.Zb=function(){return zz(zz(this.f||(this.f=aL(this.c,171)?new IB(this,zz(this.c,171)):aL(this.c,161)?new SB(this,zz(this.c,161)):new wA(this,this.c)),161),171)},TWt.ec=function(){return zz(zz(this.i||(this.i=aL(this.c,171)?new eA(this,zz(this.c,171)):aL(this.c,161)?new tA(this,zz(this.c,161)):new qL(this,this.c)),84),271)},TWt.bc=function(){return aL(this.c,171)?new eA(this,zz(this.c,171)):aL(this.c,161)?new tA(this,zz(this.c,161)):new qL(this,this.c)},mZ(WWt,"AbstractSortedKeySortedSetMultimap",1658),pDt(2010,1,{1947:1}),TWt.Fb=function(t){return Ikt(this,t)},TWt.Hb=function(){return Hst(this.g||(this.g=new Qh(this)))},TWt.Ib=function(){return eAt(this.f||(this.f=new YL(this)))},mZ(WWt,"AbstractTable",2010),pDt(665,eKt,nKt,Qh),TWt.$b=function(){px()},TWt.Hc=function(t){var e,n;return!!aL(t,468)&&(e=zz(t,682),!!(n=zz(dht(kZ(this.a),WI(e.c.e,e.b)),83))&&pht(n.vc(),new mA(WI(e.c.c,e.a),Y6(e.c,e.b,e.a))))},TWt.Kc=function(){return JX(this.a)},TWt.Mc=function(t){var e,n;return!!aL(t,468)&&(e=zz(t,682),!!(n=zz(dht(kZ(this.a),WI(e.c.e,e.b)),83))&&bht(n.vc(),new mA(WI(e.c.c,e.a),Y6(e.c,e.b,e.a))))},TWt.gc=function(){return GH(this.a)},TWt.Nc=function(){return C2(this.a)},mZ(WWt,"AbstractTable/CellSet",665),pDt(1928,28,tKt,Jh),TWt.$b=function(){px()},TWt.Hc=function(t){return hAt(this.a,t)},TWt.Kc=function(){return tV(this.a)},TWt.gc=function(){return GH(this.a)},TWt.Nc=function(){return V0(this.a)},mZ(WWt,"AbstractTable/Values",1928),pDt(1632,1631,XWt),mZ(WWt,"ArrayListMultimapGwtSerializationDependencies",1632),pDt(513,1632,XWt,cx,c1),TWt.hc=function(){return new Q6(this.a)},TWt.a=0,mZ(WWt,"ArrayListMultimap",513),pDt(664,2010,{664:1,1947:1,3:1},yMt),mZ(WWt,"ArrayTable",664),pDt(1924,386,KWt,HL),TWt.Xb=function(t){return new wct(this.a,t)},mZ(WWt,"ArrayTable/1",1924),pDt(1925,1,{},Hh),TWt.ld=function(t){return new wct(this.a,t)},mZ(WWt,"ArrayTable/1methodref$getCell$Type",1925),pDt(2011,1,{682:1}),TWt.Fb=function(t){var e;return t===this||!!aL(t,468)&&(e=zz(t,682),gW(WI(this.c.e,this.b),WI(e.c.e,e.b))&&gW(WI(this.c.c,this.a),WI(e.c.c,e.a))&&gW(Y6(this.c,this.b,this.a),Y6(e.c,e.b,e.a)))},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[WI(this.c.e,this.b),WI(this.c.c,this.a),Y6(this.c,this.b,this.a)]))},TWt.Ib=function(){return"("+WI(this.c.e,this.b)+","+WI(this.c.c,this.a)+")="+Y6(this.c,this.b,this.a)},mZ(WWt,"Tables/AbstractCell",2011),pDt(468,2011,{468:1,682:1},wct),TWt.a=0,TWt.b=0,TWt.d=0,mZ(WWt,"ArrayTable/2",468),pDt(1927,1,{},Uh),TWt.ld=function(t){return V7(this.a,t)},mZ(WWt,"ArrayTable/2methodref$getValue$Type",1927),pDt(1926,386,KWt,UL),TWt.Xb=function(t){return V7(this.a,t)},mZ(WWt,"ArrayTable/3",1926),pDt(1979,1967,JWt),TWt.$b=function(){SH(this.kc())},TWt.vc=function(){return new yf(this)},TWt.lc=function(){return new SK(this.kc(),this.gc())},mZ(WWt,"Maps/IteratorBasedAbstractMap",1979),pDt(828,1979,JWt),TWt.$b=function(){throw qw(new wm)},TWt._b=function(t){return Vk(this.c,t)},TWt.kc=function(){return new GL(this,this.c.b.c.gc())},TWt.lc=function(){return vH(this.c.b.c.gc(),16,new Gh(this))},TWt.xc=function(t){var e;return(e=zz(YR(this.c,t),19))?this.nd(e.a):null},TWt.dc=function(){return this.c.b.c.dc()},TWt.ec=function(){return dG(this.c)},TWt.zc=function(t,e){var n;if(!(n=zz(YR(this.c,t),19)))throw qw(new jv(this.md()+" "+t+" not in "+dG(this.c)));return this.od(n.a,e)},TWt.Bc=function(t){throw qw(new wm)},TWt.gc=function(){return this.c.b.c.gc()},mZ(WWt,"ArrayTable/ArrayMap",828),pDt(1923,1,{},Gh),TWt.ld=function(t){return MZ(this.a,t)},mZ(WWt,"ArrayTable/ArrayMap/0methodref$getEntry$Type",1923),pDt(1921,345,sKt,uA),TWt.cd=function(){return VL(this.a,this.b)},TWt.dd=function(){return this.a.nd(this.b)},TWt.ed=function(t){return this.a.od(this.b,t)},TWt.b=0,mZ(WWt,"ArrayTable/ArrayMap/1",1921),pDt(1922,386,KWt,GL),TWt.Xb=function(t){return MZ(this.a,t)},mZ(WWt,"ArrayTable/ArrayMap/2",1922),pDt(1920,828,JWt,aY),TWt.md=function(){return"Column"},TWt.nd=function(t){return Y6(this.b,this.a,t)},TWt.od=function(t,e){return Cst(this.b,this.a,t,e)},TWt.a=0,mZ(WWt,"ArrayTable/Row",1920),pDt(829,828,JWt,YL),TWt.nd=function(t){return new aY(this.a,t)},TWt.zc=function(t,e){return zz(e,83),bx()},TWt.od=function(t,e){return zz(e,83),wx()},TWt.md=function(){return"Row"},mZ(WWt,"ArrayTable/RowMap",829),pDt(1120,1,fKt,lA),TWt.qd=function(){return-262&this.a.qd()},TWt.rd=function(){return this.a.rd()},TWt.Nb=function(t){this.a.Nb(new aA(t,this.b))},TWt.sd=function(t){return this.a.sd(new rA(t,this.b))},mZ(WWt,"CollectSpliterators/1",1120),pDt(1121,1,dKt,rA),TWt.td=function(t){this.a.td(this.b.Kb(t))},mZ(WWt,"CollectSpliterators/1/lambda$0$Type",1121),pDt(1122,1,dKt,aA),TWt.td=function(t){this.a.td(this.b.Kb(t))},mZ(WWt,"CollectSpliterators/1/lambda$1$Type",1122),pDt(1123,1,fKt,H2),TWt.qd=function(){return this.a},TWt.rd=function(){return this.d&&(this.b=AO(this.b,this.d.rd())),AO(this.b,0)},TWt.Nb=function(t){this.d&&(this.d.Nb(t),this.d=null),this.c.Nb(new iA(this.e,t)),this.b=0},TWt.sd=function(t){for(;;){if(this.d&&this.d.sd(t))return QI(this.b,gKt)&&(this.b=rdt(this.b,1)),!0;if(this.d=null,!this.c.sd(new oA(this,this.e)))return!1}},TWt.a=0,TWt.b=0,mZ(WWt,"CollectSpliterators/1FlatMapSpliterator",1123),pDt(1124,1,dKt,oA),TWt.td=function(t){pR(this.a,this.b,t)},mZ(WWt,"CollectSpliterators/1FlatMapSpliterator/lambda$0$Type",1124),pDt(1125,1,dKt,iA),TWt.td=function(t){cL(this.b,this.a,t)},mZ(WWt,"CollectSpliterators/1FlatMapSpliterator/lambda$1$Type",1125),pDt(1117,1,fKt,gR),TWt.qd=function(){return 16464|this.b},TWt.rd=function(){return this.a.rd()},TWt.Nb=function(t){this.a.xe(new cA(t,this.c))},TWt.sd=function(t){return this.a.ye(new sA(t,this.c))},TWt.b=0,mZ(WWt,"CollectSpliterators/1WithCharacteristics",1117),pDt(1118,1,pKt,sA),TWt.ud=function(t){this.a.td(this.b.ld(t))},mZ(WWt,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1118),pDt(1119,1,pKt,cA),TWt.ud=function(t){this.a.td(this.b.ld(t))},mZ(WWt,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1119),pDt(245,1,bKt),TWt.wd=function(t){return this.vd(zz(t,245))},TWt.vd=function(t){var e;return t==(ev(),$te)?1:t==(nv(),jte)?-1:(tH(),0!=(e=Pat(this.a,t.a))?e:aL(this,519)==aL(t,519)?0:aL(this,519)?1:-1)},TWt.zd=function(){return this.a},TWt.Fb=function(t){return Bpt(this,t)},mZ(WWt,"Cut",245),pDt(1761,245,bKt,Nx),TWt.vd=function(t){return t==this?0:1},TWt.xd=function(t){throw qw(new lm)},TWt.yd=function(t){t.a+="+∞)"},TWt.zd=function(){throw qw(new $v(wKt))},TWt.Hb=function(){return OA(),imt(this)},TWt.Ad=function(t){return!1},TWt.Ib=function(){return"+∞"},mZ(WWt,"Cut/AboveAll",1761),pDt(519,245,{245:1,519:1,3:1,35:1},iN),TWt.xd=function(t){sM((t.a+="(",t),this.a)},TWt.yd=function(t){PZ(sM(t,this.a),93)},TWt.Hb=function(){return~eut(this.a)},TWt.Ad=function(t){return tH(),Pat(this.a,t)<0},TWt.Ib=function(){return"/"+this.a+"\\"},mZ(WWt,"Cut/AboveValue",519),pDt(1760,245,bKt,Px),TWt.vd=function(t){return t==this?0:-1},TWt.xd=function(t){t.a+="(-∞"},TWt.yd=function(t){throw qw(new lm)},TWt.zd=function(){throw qw(new $v(wKt))},TWt.Hb=function(){return OA(),imt(this)},TWt.Ad=function(t){return!0},TWt.Ib=function(){return"-∞"},mZ(WWt,"Cut/BelowAll",1760),pDt(1762,245,bKt,rN),TWt.xd=function(t){sM((t.a+="[",t),this.a)},TWt.yd=function(t){PZ(sM(t,this.a),41)},TWt.Hb=function(){return eut(this.a)},TWt.Ad=function(t){return tH(),Pat(this.a,t)<=0},TWt.Ib=function(){return"\\"+this.a+"/"},mZ(WWt,"Cut/BelowValue",1762),pDt(537,1,mKt),TWt.Jc=function(t){n5(this,t)},TWt.Ib=function(){return Hft(zz(WX(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},mZ(WWt,"FluentIterable",537),pDt(433,537,mKt,MM),TWt.Kc=function(){return new cG(JL(this.a.Kc(),new l))},mZ(WWt,"FluentIterable/2",433),pDt(1046,537,mKt,DM),TWt.Kc=function(){return NY(this)},mZ(WWt,"FluentIterable/3",1046),pDt(708,386,KWt,WL),TWt.Xb=function(t){return this.a[t].Kc()},mZ(WWt,"FluentIterable/3/1",708),pDt(1972,1,{}),TWt.Ib=function(){return qdt(this.Bd().b)},mZ(WWt,"ForwardingObject",1972),pDt(1973,1972,yKt),TWt.Bd=function(){return this.Cd()},TWt.Jc=function(t){n5(this,t)},TWt.Lc=function(){return this.Oc()},TWt.Nc=function(){return new g1(this,0)},TWt.Oc=function(){return new FH(null,this.Nc())},TWt.Fc=function(t){return this.Cd(),c_()},TWt.Gc=function(t){return this.Cd(),u_()},TWt.$b=function(){this.Cd(),l_()},TWt.Hc=function(t){return this.Cd().Hc(t)},TWt.Ic=function(t){return this.Cd().Ic(t)},TWt.dc=function(){return this.Cd().b.dc()},TWt.Kc=function(){return this.Cd().Kc()},TWt.Mc=function(t){return this.Cd(),h_()},TWt.gc=function(){return this.Cd().b.gc()},TWt.Pc=function(){return this.Cd().Pc()},TWt.Qc=function(t){return this.Cd().Qc(t)},mZ(WWt,"ForwardingCollection",1973),pDt(1980,28,vKt),TWt.Kc=function(){return this.Ed()},TWt.Fc=function(t){throw qw(new wm)},TWt.Gc=function(t){throw qw(new wm)},TWt.$b=function(){throw qw(new wm)},TWt.Hc=function(t){return null!=t&&xgt(this,t,!1)},TWt.Dd=function(){switch(this.gc()){case 0:return WZ(),WZ(),zte;case 1:return WZ(),new CH(vZ(this.Ed().Pb()));default:return new oY(this,this.Pc())}},TWt.Mc=function(t){throw qw(new wm)},mZ(WWt,"ImmutableCollection",1980),pDt(712,1980,vKt,rm),TWt.Kc=function(){return L7(this.a.Kc())},TWt.Hc=function(t){return null!=t&&this.a.Hc(t)},TWt.Ic=function(t){return this.a.Ic(t)},TWt.dc=function(){return this.a.dc()},TWt.Ed=function(){return L7(this.a.Kc())},TWt.gc=function(){return this.a.gc()},TWt.Pc=function(){return this.a.Pc()},TWt.Qc=function(t){return this.a.Qc(t)},TWt.Ib=function(){return qdt(this.a)},mZ(WWt,"ForwardingImmutableCollection",712),pDt(152,1980,xKt),TWt.Kc=function(){return this.Ed()},TWt.Yc=function(){return this.Fd(0)},TWt.Zc=function(t){return this.Fd(t)},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.bd=function(t,e){return this.Gd(t,e)},TWt.Vc=function(t,e){throw qw(new wm)},TWt.Wc=function(t,e){throw qw(new wm)},TWt.Fb=function(t){return UDt(this,t)},TWt.Hb=function(){return Mot(this)},TWt.Xc=function(t){return null==t?-1:Eyt(this,t)},TWt.Ed=function(){return this.Fd(0)},TWt.Fd=function(t){return iP(this,t)},TWt.$c=function(t){throw qw(new wm)},TWt._c=function(t,e){throw qw(new wm)},TWt.Gd=function(t,e){return lht(new u1(new IA(this),t,e))},mZ(WWt,"ImmutableList",152),pDt(2006,152,xKt),TWt.Kc=function(){return L7(this.Hd().Kc())},TWt.bd=function(t,e){return lht(this.Hd().bd(t,e))},TWt.Hc=function(t){return null!=t&&this.Hd().Hc(t)},TWt.Ic=function(t){return this.Hd().Ic(t)},TWt.Fb=function(t){return Pht(this.Hd(),t)},TWt.Xb=function(t){return WI(this,t)},TWt.Hb=function(){return eut(this.Hd())},TWt.Xc=function(t){return this.Hd().Xc(t)},TWt.dc=function(){return this.Hd().dc()},TWt.Ed=function(){return L7(this.Hd().Kc())},TWt.gc=function(){return this.Hd().gc()},TWt.Gd=function(t,e){return lht(this.Hd().bd(t,e))},TWt.Pc=function(){return this.Hd().Qc(P8(Ote,HWt,1,this.Hd().gc(),5,1))},TWt.Qc=function(t){return this.Hd().Qc(t)},TWt.Ib=function(){return qdt(this.Hd())},mZ(WWt,"ForwardingImmutableList",2006),pDt(714,1,_Kt),TWt.vc=function(){return fG(this)},TWt.wc=function(t){eot(this,t)},TWt.ec=function(){return dG(this)},TWt.yc=function(t,e,n){return tdt(this,t,e,n)},TWt.Cc=function(){return this.Ld()},TWt.$b=function(){throw qw(new wm)},TWt._b=function(t){return null!=this.xc(t)},TWt.uc=function(t){return this.Ld().Hc(t)},TWt.Jd=function(){return new am(this)},TWt.Kd=function(){return new om(this)},TWt.Fb=function(t){return Lut(this,t)},TWt.Hb=function(){return fG(this).Hb()},TWt.dc=function(){return 0==this.gc()},TWt.zc=function(t,e){return mx()},TWt.Bc=function(t){throw qw(new wm)},TWt.Ib=function(){return fTt(this)},TWt.Ld=function(){return this.e?this.e:this.e=this.Kd()},TWt.c=null,TWt.d=null,TWt.e=null,mZ(WWt,"ImmutableMap",714),pDt(715,714,_Kt),TWt._b=function(t){return Vk(this,t)},TWt.uc=function(t){return jA(this.b,t)},TWt.Id=function(){return hht(new ef(this))},TWt.Jd=function(){return hht(iK(this.b))},TWt.Kd=function(){return uj(),new rm(eK(this.b))},TWt.Fb=function(t){return zA(this.b,t)},TWt.xc=function(t){return YR(this,t)},TWt.Hb=function(){return eut(this.b.c)},TWt.dc=function(){return this.b.c.dc()},TWt.gc=function(){return this.b.c.gc()},TWt.Ib=function(){return qdt(this.b.c)},mZ(WWt,"ForwardingImmutableMap",715),pDt(1974,1973,AKt),TWt.Bd=function(){return this.Md()},TWt.Cd=function(){return this.Md()},TWt.Nc=function(){return new g1(this,1)},TWt.Fb=function(t){return t===this||this.Md().Fb(t)},TWt.Hb=function(){return this.Md().Hb()},mZ(WWt,"ForwardingSet",1974),pDt(1069,1974,AKt,ef),TWt.Bd=function(){return nK(this.a.b)},TWt.Cd=function(){return nK(this.a.b)},TWt.Hc=function(t){if(aL(t,42)&&null==zz(t,42).cd())return!1;try{return RA(nK(this.a.b),t)}catch(t){if(aL(t=dst(t),205))return!1;throw qw(t)}},TWt.Md=function(){return nK(this.a.b)},TWt.Qc=function(t){var e;return e=IV(nK(this.a.b),t),nK(this.a.b).b.gc()=0?"+":"")+(i/60|0),e=YM(n.Math.abs(i)%60),(mEt(),wne)[this.q.getDay()]+" "+mne[this.q.getMonth()]+" "+YM(this.q.getDate())+" "+YM(this.q.getHours())+":"+YM(this.q.getMinutes())+":"+YM(this.q.getSeconds())+" GMT"+t+e+" "+this.q.getFullYear()};var uee,lee,hee,fee,dee,gee,pee,bee,wee,mee,yee,vee=mZ(QWt,"Date",199);pDt(1915,199,EXt,Qxt),TWt.a=!1,TWt.b=0,TWt.c=0,TWt.d=0,TWt.e=0,TWt.f=0,TWt.g=!1,TWt.i=0,TWt.j=0,TWt.k=0,TWt.n=0,TWt.o=0,TWt.p=0,mZ("com.google.gwt.i18n.shared.impl","DateRecord",1915),pDt(1966,1,{}),TWt.fe=function(){return null},TWt.ge=function(){return null},TWt.he=function(){return null},TWt.ie=function(){return null},TWt.je=function(){return null},mZ(TXt,"JSONValue",1966),pDt(216,1966,{216:1},Sf,Af),TWt.Fb=function(t){return!!aL(t,216)&&m0(this.a,zz(t,216).a)},TWt.ee=function(){return Hw},TWt.Hb=function(){return eV(this.a)},TWt.fe=function(){return this},TWt.Ib=function(){var t,e,n;for(n=new fN("["),e=0,t=this.a.length;e0&&(n.a+=","),sM(n,ptt(this,e));return n.a+="]",n.a},mZ(TXt,"JSONArray",216),pDt(483,1966,{483:1},Ef),TWt.ee=function(){return Uw},TWt.ge=function(){return this},TWt.Ib=function(){return lN(),""+this.a},TWt.a=!1,mZ(TXt,"JSONBoolean",483),pDt(985,60,qKt,bv),mZ(TXt,"JSONException",985),pDt(1023,1966,{},m),TWt.ee=function(){return Kw},TWt.Ib=function(){return YWt},mZ(TXt,"JSONNull",1023),pDt(258,1966,{258:1},Tf),TWt.Fb=function(t){return!!aL(t,258)&&this.a==zz(t,258).a},TWt.ee=function(){return Gw},TWt.Hb=function(){return KM(this.a)},TWt.he=function(){return this},TWt.Ib=function(){return this.a+""},TWt.a=0,mZ(TXt,"JSONNumber",258),pDt(183,1966,{183:1},wv,Cf),TWt.Fb=function(t){return!!aL(t,183)&&m0(this.a,zz(t,183).a)},TWt.ee=function(){return Yw},TWt.Hb=function(){return eV(this.a)},TWt.ie=function(){return this},TWt.Ib=function(){var t,e,n,i,r,a;for(a=new fN("{"),t=!0,i=0,r=(n=_rt(this,P8(Vee,lKt,2,0,6,1))).length;i=0?":"+this.c:"")+")"},TWt.c=0;var zee=mZ(RWt,"StackTraceElement",310);DWt={3:1,475:1,35:1,2:1};var qee,Hee,Uee,Gee,Yee,Zee,Wee,Kee,Xee,Vee=mZ(RWt,UKt,2);pDt(107,418,{475:1},Tx,Cx,hN),mZ(RWt,"StringBuffer",107),pDt(100,418,{475:1},Sx,Ix,fN),mZ(RWt,"StringBuilder",100),pDt(687,73,PXt,Mx),mZ(RWt,"StringIndexOutOfBoundsException",687),pDt(2043,1,{}),pDt(844,1,{},P),TWt.Kb=function(t){return zz(t,78).e},mZ(RWt,"Throwable/lambda$0$Type",844),pDt(41,60,{3:1,102:1,60:1,78:1,41:1},wm,ex),mZ(RWt,"UnsupportedOperationException",41),pDt(240,236,{3:1,35:1,236:1,240:1},xtt,g_),TWt.wd=function(t){return Jjt(this,zz(t,240))},TWt.ke=function(){return gTt(iHt(this))},TWt.Fb=function(t){var e;return this===t||!!aL(t,240)&&(e=zz(t,240),this.e==e.e&&0==Jjt(this,e))},TWt.Hb=function(){var t;return 0!=this.b?this.b:this.a<54?(t=fot(this.f),this.b=pU(n0(t,-1)),this.b=33*this.b+pU(n0(xG(t,32),-1)),this.b=17*this.b+SQ(this.e),this.b):(this.b=17*jlt(this.c)+SQ(this.e),this.b)},TWt.Ib=function(){return iHt(this)},TWt.a=0,TWt.b=0,TWt.d=0,TWt.e=0,TWt.f=0;var Qee,Jee,tne,ene,nne,ine,rne=mZ("java.math","BigDecimal",240);pDt(91,236,{3:1,35:1,236:1,91:1},Rwt,Z6,fY,y_t,Ibt,OD),TWt.wd=function(t){return nbt(this,zz(t,91))},TWt.ke=function(){return gTt(UZt(this,0))},TWt.Fb=function(t){return lgt(this,t)},TWt.Hb=function(){return jlt(this)},TWt.Ib=function(){return UZt(this,0)},TWt.b=-2,TWt.c=0,TWt.d=0,TWt.e=0;var ane,one,sne,cne,une=mZ("java.math","BigInteger",91);pDt(488,1967,JWt),TWt.$b=function(){OY(this)},TWt._b=function(t){return lY(this,t)},TWt.uc=function(t){return Nut(this,t,this.g)||Nut(this,t,this.f)},TWt.vc=function(){return new Cd(this)},TWt.xc=function(t){return FZ(this,t)},TWt.zc=function(t,e){return KW(this,t,e)},TWt.Bc=function(t){return m6(this,t)},TWt.gc=function(){return NA(this)},mZ(QWt,"AbstractHashMap",488),pDt(261,eKt,nKt,Cd),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return y2(this,t)},TWt.Kc=function(){return new cut(this.a)},TWt.Mc=function(t){var e;return!!y2(this,t)&&(e=zz(t,42).cd(),this.a.Bc(e),!0)},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractHashMap/EntrySet",261),pDt(262,1,VWt,cut),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return nnt(this)},TWt.Ob=function(){return this.b},TWt.Qb=function(){c7(this)},TWt.b=!1,mZ(QWt,"AbstractHashMap/EntrySetIterator",262),pDt(417,1,VWt,Td),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return oT(this)},TWt.Pb=function(){return yX(this)},TWt.Qb=function(){hW(this)},TWt.b=0,TWt.c=-1,mZ(QWt,"AbstractList/IteratorImpl",417),pDt(96,417,oKt,E2),TWt.Qb=function(){hW(this)},TWt.Rb=function(t){vF(this,t)},TWt.Sb=function(){return this.b>0},TWt.Tb=function(){return this.b},TWt.Ub=function(){return CP(this.b>0),this.a.Xb(this.c=--this.b)},TWt.Vb=function(){return this.b-1},TWt.Wb=function(t){EP(-1!=this.c),this.a._c(this.c,t)},mZ(QWt,"AbstractList/ListIteratorImpl",96),pDt(219,52,NKt,u1),TWt.Vc=function(t,e){LJ(t,this.b),this.c.Vc(this.a+t,e),++this.b},TWt.Xb=function(t){return f1(t,this.b),this.c.Xb(this.a+t)},TWt.$c=function(t){var e;return f1(t,this.b),e=this.c.$c(this.a+t),--this.b,e},TWt._c=function(t,e){return f1(t,this.b),this.c._c(this.a+t,e)},TWt.gc=function(){return this.b},TWt.a=0,TWt.b=0,mZ(QWt,"AbstractList/SubList",219),pDt(384,eKt,nKt,Sd),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return this.a._b(t)},TWt.Kc=function(){return new Id(this.a.vc().Kc())},TWt.Mc=function(t){return!!this.a._b(t)&&(this.a.Bc(t),!0)},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractMap/1",384),pDt(691,1,VWt,Id),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a.Ob()},TWt.Pb=function(){return zz(this.a.Pb(),42).cd()},TWt.Qb=function(){this.a.Qb()},mZ(QWt,"AbstractMap/1/1",691),pDt(226,28,tKt,Md),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return this.a.uc(t)},TWt.Kc=function(){return new Rd(this.a.vc().Kc())},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractMap/2",226),pDt(294,1,VWt,Rd),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a.Ob()},TWt.Pb=function(){return zz(this.a.Pb(),42).dd()},TWt.Qb=function(){this.a.Qb()},mZ(QWt,"AbstractMap/2/1",294),pDt(484,1,{484:1,42:1}),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),aK(this.d,e.cd())&&aK(this.e,e.dd()))},TWt.cd=function(){return this.d},TWt.dd=function(){return this.e},TWt.Hb=function(){return RD(this.d)^RD(this.e)},TWt.ed=function(t){return wF(this,t)},TWt.Ib=function(){return this.d+"="+this.e},mZ(QWt,"AbstractMap/AbstractEntry",484),pDt(383,484,{484:1,383:1,42:1},CT),mZ(QWt,"AbstractMap/SimpleEntry",383),pDt(1984,1,XXt),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),aK(this.cd(),e.cd())&&aK(this.dd(),e.dd()))},TWt.Hb=function(){return RD(this.cd())^RD(this.dd())},TWt.Ib=function(){return this.cd()+"="+this.dd()},mZ(QWt,cKt,1984),pDt(1992,1967,iKt),TWt.tc=function(t){return H5(this,t)},TWt._b=function(t){return BR(this,t)},TWt.vc=function(){return new zd(this)},TWt.xc=function(t){return HI(dut(this,t))},TWt.ec=function(){return new jd(this)},mZ(QWt,"AbstractNavigableMap",1992),pDt(739,eKt,nKt,zd),TWt.Hc=function(t){return aL(t,42)&&H5(this.b,zz(t,42))},TWt.Kc=function(){return new zF(this.b)},TWt.Mc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),G8(this.b,e))},TWt.gc=function(){return this.b.c},mZ(QWt,"AbstractNavigableMap/EntrySet",739),pDt(493,eKt,aKt,jd),TWt.Nc=function(){return new gT(this)},TWt.$b=function(){yv(this.a)},TWt.Hc=function(t){return BR(this.a,t)},TWt.Kc=function(){return new $d(new zF(new PN(this.a).b))},TWt.Mc=function(t){return!!BR(this.a,t)&&(OQ(this.a,t),!0)},TWt.gc=function(){return this.a.c},mZ(QWt,"AbstractNavigableMap/NavigableKeySet",493),pDt(494,1,VWt,$d),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return oT(this.a.a)},TWt.Pb=function(){return yP(this.a).cd()},TWt.Qb=function(){nj(this.a)},mZ(QWt,"AbstractNavigableMap/NavigableKeySet/1",494),pDt(2004,28,tKt),TWt.Fc=function(t){return $8(iEt(this,t)),!0},TWt.Gc=function(t){return xW(t),mq(t!=this,"Can't add a queue to itself"),zrt(this,t)},TWt.$b=function(){for(;null!=ytt(this););},mZ(QWt,"AbstractQueue",2004),pDt(302,28,{4:1,20:1,28:1,14:1},Lw,p1),TWt.Fc=function(t){return g3(this,t),!0},TWt.$b=function(){c4(this)},TWt.Hc=function(t){return pst(new dK(this),t)},TWt.dc=function(){return Wv(this)},TWt.Kc=function(){return new dK(this)},TWt.Mc=function(t){return UQ(new dK(this),t)},TWt.gc=function(){return this.c-this.b&this.a.length-1},TWt.Nc=function(){return new g1(this,272)},TWt.Qc=function(t){var e;return e=this.c-this.b&this.a.length-1,t.lengthe&&OZ(t,e,null),t},TWt.b=0,TWt.c=0,mZ(QWt,"ArrayDeque",302),pDt(446,1,VWt,dK),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a!=this.b},TWt.Pb=function(){return $lt(this)},TWt.Qb=function(){iit(this)},TWt.a=0,TWt.b=0,TWt.c=-1,mZ(QWt,"ArrayDeque/IteratorImpl",446),pDt(12,52,VXt,Nw,Q6,ej),TWt.Vc=function(t,e){xU(this,t,e)},TWt.Fc=function(t){return Wz(this,t)},TWt.Wc=function(t,e){return ult(this,t,e)},TWt.Gc=function(t){return wst(this,t)},TWt.$b=function(){this.c=P8(Ote,HWt,1,0,5,1)},TWt.Hc=function(t){return-1!=_9(this,t,0)},TWt.Jc=function(t){Det(this,t)},TWt.Xb=function(t){return PH(this,t)},TWt.Xc=function(t){return _9(this,t,0)},TWt.dc=function(){return 0==this.c.length},TWt.Kc=function(){return new Wd(this)},TWt.$c=function(t){return u6(this,t)},TWt.Mc=function(t){return v9(this,t)},TWt.Ud=function(t,e){l1(this,t,e)},TWt._c=function(t,e){return a5(this,t,e)},TWt.gc=function(){return this.c.length},TWt.ad=function(t){yO(this,t)},TWt.Pc=function(){return dP(this)},TWt.Qc=function(t){return Vbt(this,t)};var lne,hne,fne,dne,gne,pne,bne,wne,mne,yne=mZ(QWt,"ArrayList",12);pDt(7,1,VWt,Wd),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return vO(this)},TWt.Pb=function(){return t0(this)},TWt.Qb=function(){DY(this)},TWt.a=0,TWt.b=-1,mZ(QWt,"ArrayList/1",7),pDt(2013,n.Function,{},A),TWt.te=function(t,e){return Sft(t,e)},pDt(154,52,QXt,Qv),TWt.Hc=function(t){return-1!=git(this,t)},TWt.Jc=function(t){var e,n,i,r;for(xW(t),i=0,r=(n=this.a).length;i>>0).toString(16))},TWt.f=0,TWt.i=jXt;var uie,lie,hie,fie,die=mZ(IVt,"CNode",57);pDt(814,1,{},Wm),mZ(IVt,"CNode/CNodeBuilder",814),pDt(1525,1,{},gt),TWt.Oe=function(t,e){return 0},TWt.Pe=function(t,e){return 0},mZ(IVt,DVt,1525),pDt(1790,1,{},pt),TWt.Le=function(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(l=RXt,r=new Wd(t.a.b);r.an.d.c||n.d.c==r.d.c&&n.d.b0?t+this.n.d+this.n.a:0},TWt.Se=function(){var t,e,i,r,a;if(a=0,this.e)this.b?a=this.b.a:this.a[1][1]&&(a=this.a[1][1].Se());else if(this.g)a=Qdt(this,Dxt(this,null,!0));else for(Fet(),i=0,r=(e=Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])).length;i0?a+this.n.b+this.n.c:0},TWt.Te=function(){var t,e,n,i,r;if(this.g)for(t=Dxt(this,null,!1),Fet(),i=0,r=(n=Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])).length;i0&&(r[0]+=this.d,i-=r[0]),r[2]>0&&(r[2]+=this.d,i-=r[2]),this.c.a=n.Math.max(0,i),this.c.d=e.d+t.d+(this.c.a-i)/2,r[1]=n.Math.max(r[1],i),X5(this,Gie,e.d+t.d+r[0]-(r[1]-i)/2,r)},TWt.b=null,TWt.d=0,TWt.e=!1,TWt.f=!1,TWt.g=!1;var Xie,Vie,Qie,Jie=0,tre=0;mZ(nQt,"GridContainerCell",1473),pDt(461,22,{3:1,35:1,22:1,461:1},UT);var ere,nre=qnt(nQt,"HorizontalLabelAlignment",461,Zte,y1,bj);pDt(306,212,{212:1,306:1},vQ,pet,RV),TWt.Re=function(){return Wq(this)},TWt.Se=function(){return Kq(this)},TWt.a=0,TWt.c=!1;var ire,rre,are,ore=mZ(nQt,"LabelCell",306);pDt(244,326,{212:1,326:1,244:1},Mbt),TWt.Re=function(){return TIt(this)},TWt.Se=function(){return CIt(this)},TWt.Te=function(){$$t(this)},TWt.Ue=function(){G$t(this)},TWt.b=0,TWt.c=0,TWt.d=!1,mZ(nQt,"StripContainerCell",244),pDt(1626,1,FKt,kt),TWt.Mb=function(t){return Xv(zz(t,212))},mZ(nQt,"StripContainerCell/lambda$0$Type",1626),pDt(1627,1,{},_t),TWt.Fe=function(t){return zz(t,212).Se()},mZ(nQt,"StripContainerCell/lambda$1$Type",1627),pDt(1628,1,FKt,At),TWt.Mb=function(t){return Vv(zz(t,212))},mZ(nQt,"StripContainerCell/lambda$2$Type",1628),pDt(1629,1,{},Et),TWt.Fe=function(t){return zz(t,212).Re()},mZ(nQt,"StripContainerCell/lambda$3$Type",1629),pDt(462,22,{3:1,35:1,22:1,462:1},GT);var sre,cre,ure,lre,hre,fre,dre,gre,pre,bre,wre,mre,yre,vre,xre,kre,_re,Are,Ere,Tre,Cre,Sre,Ire,Mre=qnt(nQt,"VerticalLabelAlignment",462,Zte,v1,wj);pDt(789,1,{},iYt),TWt.c=0,TWt.d=0,TWt.k=0,TWt.s=0,TWt.t=0,TWt.v=!1,TWt.w=0,TWt.D=!1,mZ(lQt,"NodeContext",789),pDt(1471,1,TVt,Tt),TWt.ue=function(t,e){return VM(zz(t,61),zz(e,61))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(lQt,"NodeContext/0methodref$comparePortSides$Type",1471),pDt(1472,1,TVt,Ct),TWt.ue=function(t,e){return ZAt(zz(t,111),zz(e,111))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(lQt,"NodeContext/1methodref$comparePortContexts$Type",1472),pDt(159,22,{3:1,35:1,22:1,159:1},uat);var Dre,Ore,Lre,Nre,Pre,Bre,Fre,Rre=qnt(lQt,"NodeLabelLocation",159,Zte,nwt,mj);pDt(111,1,{111:1},TMt),TWt.a=!1,mZ(lQt,"PortContext",111),pDt(1476,1,dKt,St),TWt.td=function(t){S_(zz(t,306))},mZ(dQt,gQt,1476),pDt(1477,1,FKt,It),TWt.Mb=function(t){return!!zz(t,111).c},mZ(dQt,pQt,1477),pDt(1478,1,dKt,Mt),TWt.td=function(t){S_(zz(t,111).c)},mZ(dQt,"LabelPlacer/lambda$2$Type",1478),pDt(1475,1,dKt,Ot),TWt.td=function(t){HB(),Vw(zz(t,111))},mZ(dQt,"NodeLabelAndSizeUtilities/lambda$0$Type",1475),pDt(790,1,dKt,Oj),TWt.td=function(t){FE(this.b,this.c,this.a,zz(t,181))},TWt.a=!1,TWt.c=!1,mZ(dQt,"NodeLabelCellCreator/lambda$0$Type",790),pDt(1474,1,dKt,Sg),TWt.td=function(t){Im(this.a,zz(t,181))},mZ(dQt,"PortContextCreator/lambda$0$Type",1474),pDt(1829,1,{},Lt),mZ(wQt,"GreedyRectangleStripOverlapRemover",1829),pDt(1830,1,TVt,Dt),TWt.ue=function(t,e){return $N(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1830),pDt(1786,1,{},Jm),TWt.a=5,TWt.e=0,mZ(wQt,"RectangleStripOverlapRemover",1786),pDt(1787,1,TVt,Pt),TWt.ue=function(t,e){return zN(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1787),pDt(1789,1,TVt,Bt),TWt.ue=function(t,e){return QY(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1789),pDt(406,22,{3:1,35:1,22:1,406:1},YT);var jre,$re,zre,qre,Hre,Ure=qnt(wQt,"RectangleStripOverlapRemover/OverlapRemovalDirection",406,Zte,V2,yj);pDt(222,1,{222:1},PU),mZ(wQt,"RectangleStripOverlapRemover/RectangleNode",222),pDt(1788,1,dKt,Ig),TWt.td=function(t){Iyt(this.a,zz(t,222))},mZ(wQt,"RectangleStripOverlapRemover/lambda$1$Type",1788),pDt(1304,1,TVt,Ft),TWt.ue=function(t,e){return Yqt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1304),pDt(1307,1,{},Rt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1307),pDt(1308,1,FKt,jt),TWt.Mb=function(t){return zz(t,323).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1308),pDt(1309,1,FKt,$t),TWt.Mb=function(t){return zz(t,323).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1309),pDt(1302,1,TVt,zt),TWt.ue=function(t,e){return KFt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1302),pDt(1305,1,{},Nt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1305),pDt(767,1,TVt,qt),TWt.ue=function(t,e){return Zot(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionsComparator",767),pDt(1300,1,TVt,Ht),TWt.ue=function(t,e){return Vit(zz(t,321),zz(e,321))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinPerimeterComparator",1300),pDt(1301,1,TVt,Ut),TWt.ue=function(t,e){return smt(zz(t,321),zz(e,321))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinPerimeterComparatorWithShape",1301),pDt(1303,1,TVt,Gt),TWt.ue=function(t,e){return qRt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1303),pDt(1306,1,{},Yt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1306),pDt(777,1,{},BT),TWt.Ce=function(t,e){return M2(this,zz(t,46),zz(e,167))},mZ(yQt,"SuccessorCombination",777),pDt(644,1,{},Zt),TWt.Ce=function(t,e){var n;return WIt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorJitter",644),pDt(643,1,{},Wt),TWt.Ce=function(t,e){var n;return gPt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorLineByLine",643),pDt(568,1,{},Kt),TWt.Ce=function(t,e){var n;return fOt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorManhattan",568),pDt(1356,1,{},Xt),TWt.Ce=function(t,e){var n;return _Nt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorMaxNormWindingInMathPosSense",1356),pDt(400,1,{},Mg),TWt.Ce=function(t,e){return zY(this,t,e)},TWt.c=!1,TWt.d=!1,TWt.e=!1,TWt.f=!1,mZ(yQt,"SuccessorQuadrantsGeneric",400),pDt(1357,1,{},Vt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"SuccessorQuadrantsGeneric/lambda$0$Type",1357),pDt(323,22,{3:1,35:1,22:1,323:1},jT),TWt.a=!1;var Gre,Yre=qnt(AQt,EQt,323,Zte,t3,vj);pDt(1298,1,{}),TWt.Ib=function(){var t,e,n,i,r,a;for(n=" ",t=rft(0),r=0;r=0?"b"+t+"["+s5(this.a)+"]":"b["+s5(this.a)+"]":"b_"+CN(this)},mZ(oJt,"FBendpoint",559),pDt(282,134,{3:1,282:1,94:1,134:1},IF),TWt.Ib=function(){return s5(this)},mZ(oJt,"FEdge",282),pDt(231,134,{3:1,231:1,94:1,134:1},v6);var Sae,Iae,Mae,Dae,Oae,Lae,Nae,Pae,Bae,Fae,Rae=mZ(oJt,"FGraph",231);pDt(447,357,{3:1,447:1,357:1,94:1,134:1},y4),TWt.Ib=function(){return null==this.b||0==this.b.length?"l["+s5(this.a)+"]":"l_"+this.b},mZ(oJt,"FLabel",447),pDt(144,357,{3:1,144:1,357:1,94:1,134:1},HZ),TWt.Ib=function(){return w0(this)},TWt.b=0,mZ(oJt,"FNode",144),pDt(2003,1,{}),TWt.bf=function(t){l$t(this,t)},TWt.cf=function(){Uyt(this)},TWt.d=0,mZ(cJt,"AbstractForceModel",2003),pDt(631,2003,{631:1},Not),TWt.af=function(t,e){var i,r,a,o;return nIt(this.f,t,e),a=ZF(zO(e.d),t.d),o=n.Math.sqrt(a.a*a.a+a.b*a.b),r=n.Math.max(0,o-fW(t.e)/2-fW(e.e)/2),xL(a,((i=Uct(this.e,t,e))>0?-jY(r,this.c)*i:PP(r,this.b)*zz(vEt(t,(fFt(),Jae)),19).a)/o),a},TWt.bf=function(t){l$t(this,t),this.a=zz(vEt(t,(fFt(),Hae)),19).a,this.c=Uv(EB(vEt(t,aoe))),this.b=Uv(EB(vEt(t,eoe)))},TWt.df=function(t){return t0&&(o-=Tv(r,this.a)*i),xL(a,o*this.b/s),a},TWt.bf=function(t){var e,i,r,a,o,s,c;for(l$t(this,t),this.b=Uv(EB(vEt(t,(fFt(),ooe)))),this.c=this.b/zz(vEt(t,Hae),19).a,r=t.e.c.length,o=0,a=0,c=new Wd(t.e);c.a0},TWt.a=0,TWt.b=0,TWt.c=0,mZ(cJt,"FruchtermanReingoldModel",632),pDt(849,1,VVt,Gl),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,uJt),""),"Force Model"),"Determines the model for force calculation."),Mae),(SCt(),bEe)),Ooe),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,lJt),""),"Iterations"),"The number of iterations on the force model."),rft(300)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,hJt),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,fJt),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),dJt),pEe),See),edt(lEe)))),o2(t,fJt,uJt,Pae),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,gJt),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),pEe),See),edt(lEe)))),o2(t,gJt,uJt,Oae),mYt((new Yl,t))},mZ(pJt,"ForceMetaDataProvider",849),pDt(424,22,{3:1,35:1,22:1,424:1},ZT);var jae,$ae,zae,qae,Hae,Uae,Gae,Yae,Zae,Wae,Kae,Xae,Vae,Qae,Jae,toe,eoe,noe,ioe,roe,aoe,ooe,soe,coe,uoe,loe,hoe,foe,doe,goe,poe,boe,woe,moe,yoe,voe,xoe,koe,_oe,Aoe,Eoe,Toe,Coe,Soe,Ioe,Moe,Doe,Ooe=qnt(pJt,"ForceModelStrategy",424,Zte,oQ,_j);pDt(988,1,VVt,Yl),TWt.Qe=function(t){mYt(t)},mZ(pJt,"ForceOptions",988),pDt(989,1,{},ge),TWt.$e=function(){return new Um},TWt._e=function(t){},mZ(pJt,"ForceOptions/ForceFactory",989),pDt(850,1,VVt,Zl),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,PJt),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(lN(),!1)),(SCt(),gEe)),kee),edt((awt(),uEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,BJt),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),pEe),See),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[sEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,FJt),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),doe),bEe),qoe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,RJt),""),"Stress Epsilon"),"Termination criterion for the iterative process."),dJt),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,jJt),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),rft(FWt)),mEe),Oee),edt(lEe)))),ZUt((new Wl,t))},mZ(pJt,"StressMetaDataProvider",850),pDt(992,1,VVt,Wl),TWt.Qe=function(t){ZUt(t)},mZ(pJt,"StressOptions",992),pDt(993,1,{},pe),TWt.$e=function(){return new MF},TWt._e=function(t){},mZ(pJt,"StressOptions/StressFactory",993),pDt(1128,209,PQt,MF),TWt.Ze=function(t,e){var n,i,r,a;for(DAt(e,zJt,1),Hv(AB(tOt(t,(axt(),xoe))))?Hv(AB(tOt(t,Coe)))||kQ(new Ag((UE(),new Bv(t)))):yLt(new Um,t,vat(e,1)),i=fct(t),a=(n=H$t(this.a,i)).Kc();a.Ob();)(r=zz(a.Pb(),231)).e.c.length<=1||(Hqt(this.b,r),rOt(this.b),Det(r.d,new be));CYt(i=GYt(n)),HTt(e)},mZ(HJt,"StressLayoutProvider",1128),pDt(1129,1,dKt,be),TWt.td=function(t){$zt(zz(t,447))},mZ(HJt,"StressLayoutProvider/lambda$0$Type",1129),pDt(990,1,{},Am),TWt.c=0,TWt.e=0,TWt.g=0,mZ(HJt,"StressMajorization",990),pDt(379,22,{3:1,35:1,22:1,379:1},WT);var Loe,Noe,Poe,Boe,Foe,Roe,joe,$oe,zoe,qoe=qnt(HJt,"StressMajorization/Dimension",379,Zte,k1,Aj);pDt(991,1,TVt,Pg),TWt.ue=function(t,e){return TR(this.a,zz(t,144),zz(e,144))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(HJt,"StressMajorization/lambda$0$Type",991),pDt(1229,1,{},B0),mZ(GJt,"ElkLayered",1229),pDt(1230,1,dKt,we),TWt.td=function(t){RIt(zz(t,37))},mZ(GJt,"ElkLayered/lambda$0$Type",1230),pDt(1231,1,dKt,Bg),TWt.td=function(t){CR(this.a,zz(t,37))},mZ(GJt,"ElkLayered/lambda$1$Type",1231),pDt(1263,1,{},OO),mZ(GJt,"GraphConfigurator",1263),pDt(759,1,dKt,Fg),TWt.td=function(t){XEt(this.a,zz(t,10))},mZ(GJt,"GraphConfigurator/lambda$0$Type",759),pDt(760,1,{},me),TWt.Kb=function(t){return nkt(),new FH(null,new g1(zz(t,29).a,16))},mZ(GJt,"GraphConfigurator/lambda$1$Type",760),pDt(761,1,dKt,Rg),TWt.td=function(t){XEt(this.a,zz(t,10))},mZ(GJt,"GraphConfigurator/lambda$2$Type",761),pDt(1127,209,PQt,Ym),TWt.Ze=function(t,e){var n;n=Czt(new ey,t),UI(tOt(t,(HZt(),ube)))===UI((cht(),wSe))?agt(this.a,n,e):pMt(this.a,n,e),wYt(new Xl,n)},mZ(GJt,"LayeredLayoutProvider",1127),pDt(356,22,{3:1,35:1,22:1,356:1},KT);var Hoe,Uoe,Goe,Yoe=qnt(GJt,"LayeredPhases",356,Zte,u5,Ej);pDt(1651,1,{},yit),TWt.i=0,mZ(YJt,"ComponentsToCGraphTransformer",1651),pDt(1652,1,{},ye),TWt.ef=function(t,e){return n.Math.min(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},TWt.ff=function(t,e){return n.Math.min(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},mZ(YJt,"ComponentsToCGraphTransformer/1",1652),pDt(81,1,{81:1}),TWt.i=0,TWt.k=!0,TWt.o=jXt;var Zoe,Woe,Koe,Xoe=mZ(ZJt,"CNode",81);pDt(460,81,{460:1,81:1},NN,Cbt),TWt.Ib=function(){return""},mZ(YJt,"ComponentsToCGraphTransformer/CRectNode",460),pDt(1623,1,{},ve),mZ(YJt,"OneDimensionalComponentsCompaction",1623),pDt(1624,1,{},xe),TWt.Kb=function(t){return PJ(zz(t,46))},TWt.Fb=function(t){return this===t},mZ(YJt,"OneDimensionalComponentsCompaction/lambda$0$Type",1624),pDt(1625,1,{},ke),TWt.Kb=function(t){return Agt(zz(t,46))},TWt.Fb=function(t){return this===t},mZ(YJt,"OneDimensionalComponentsCompaction/lambda$1$Type",1625),pDt(1654,1,{},zZ),mZ(ZJt,"CGraph",1654),pDt(189,1,{189:1},Sbt),TWt.b=0,TWt.c=0,TWt.e=0,TWt.g=!0,TWt.i=jXt,mZ(ZJt,"CGroup",189),pDt(1653,1,{},Te),TWt.ef=function(t,e){return n.Math.max(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},TWt.ff=function(t,e){return n.Math.max(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},mZ(ZJt,DVt,1653),pDt(1655,1,{},lMt),TWt.d=!1;var Voe=mZ(ZJt,BVt,1655);pDt(1656,1,{},Ce),TWt.Kb=function(t){return xE(),lN(),0!=zz(zz(t,46).a,81).d.e},TWt.Fb=function(t){return this===t},mZ(ZJt,FVt,1656),pDt(823,1,{},TH),TWt.a=!1,TWt.b=!1,TWt.c=!1,TWt.d=!1,mZ(ZJt,RVt,823),pDt(1825,1,{},BU),mZ(WJt,jVt,1825);var Qoe=dH(KJt,SVt);pDt(1826,1,{369:1},fV),TWt.Ke=function(t){GPt(this,zz(t,466))},mZ(WJt,$Vt,1826),pDt(1827,1,TVt,Se),TWt.ue=function(t,e){return cX(zz(t,81),zz(e,81))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(WJt,zVt,1827),pDt(466,1,{466:1},hC),TWt.a=!1,mZ(WJt,qVt,466),pDt(1828,1,TVt,Ie),TWt.ue=function(t,e){return ekt(zz(t,466),zz(e,466))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(WJt,HVt,1828),pDt(140,1,{140:1},pC,yq),TWt.Fb=function(t){var e;return null!=t&&ise==nut(t)&&(e=zz(t,140),aK(this.c,e.c)&&aK(this.d,e.d))},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[this.c,this.d]))},TWt.Ib=function(){return"("+this.c+zWt+this.d+(this.a?"cx":"")+this.b+")"},TWt.a=!0,TWt.c=0,TWt.d=0;var Joe,tse,ese,nse,ise=mZ(KJt,"Point",140);pDt(405,22,{3:1,35:1,22:1,405:1},XT);var rse,ase,ose,sse,cse,use,lse,hse,fse,dse,gse,pse=qnt(KJt,"Point/Quadrant",405,Zte,e3,Tj);pDt(1642,1,{},Km),TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,TWt.f=null,mZ(KJt,"RectilinearConvexHull",1642),pDt(574,1,{369:1},Ewt),TWt.Ke=function(t){j7(this,zz(t,140))},TWt.b=0,mZ(KJt,"RectilinearConvexHull/MaximalElementsEventHandler",574),pDt(1644,1,TVt,Ae),TWt.ue=function(t,e){return BK(EB(t),EB(e))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1644),pDt(1643,1,{369:1},fet),TWt.Ke=function(t){SNt(this,zz(t,140))},TWt.a=0,TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,mZ(KJt,"RectilinearConvexHull/RectangleEventHandler",1643),pDt(1645,1,TVt,Ee),TWt.ue=function(t,e){return s0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$0$Type",1645),pDt(1646,1,TVt,_e),TWt.ue=function(t,e){return c0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$1$Type",1646),pDt(1647,1,TVt,Me),TWt.ue=function(t,e){return l0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$2$Type",1647),pDt(1648,1,TVt,De),TWt.ue=function(t,e){return u0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$3$Type",1648),pDt(1649,1,TVt,Oe),TWt.ue=function(t,e){return _Et(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$4$Type",1649),pDt(1650,1,{},MJ),mZ(KJt,"Scanline",1650),pDt(2005,1,{}),mZ(XJt,"AbstractGraphPlacer",2005),pDt(325,1,{325:1},ZP),TWt.mf=function(t){return!!this.nf(t)&&(JIt(this.b,zz(vEt(t,(hWt(),Zhe)),21),t),!0)},TWt.nf=function(t){var e,n,i;for(e=zz(vEt(t,(hWt(),Zhe)),21),i=zz(l6(hse,e),21).Kc();i.Ob();)if(n=zz(i.Pb(),21),!zz(l6(this.b,n),15).dc())return!1;return!0},mZ(XJt,"ComponentGroup",325),pDt(765,2005,{},Xm),TWt.of=function(t){var e;for(e=new Wd(this.a);e.ad&&(x=0,k+=f+a,f=0),tRt(s,x+(b=s.c).a,k+b.b),xM(b),i=n.Math.max(i,x+m.a),f=n.Math.max(f,m.b),x+=m.a+a;if(e.f.a=i,e.f.b=k+f,Hv(AB(vEt(o,Epe)))){for(jZt(r=new Le,t,a),h=t.Kc();h.Ob();)YF(xM(zz(h.Pb(),37).c),r.e);YF(xM(e.f),r.a)}p7(e,t)}else(y=zz(t.Xb(0),37))!=e&&(e.a.c=P8(Ote,HWt,1,0,5,1),LRt(e,y,0,0),Uot(e,y),xX(e.d,y.d),e.f.a=y.f.a,e.f.b=y.f.b)},mZ(XJt,"SimpleRowGraphPlacer",1291),pDt(1292,1,TVt,Be),TWt.ue=function(t,e){return Yot(zz(t,37),zz(e,37))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(XJt,"SimpleRowGraphPlacer/1",1292),pDt(1262,1,UVt,Fe),TWt.Lb=function(t){var e;return!!(e=zz(vEt(zz(t,243).b,(HZt(),mbe)),74))&&0!=e.b},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){var e;return!!(e=zz(vEt(zz(t,243).b,(HZt(),mbe)),74))&&0!=e.b},mZ(t1t,"CompoundGraphPostprocessor/1",1262),pDt(1261,1,e1t,ny),TWt.pf=function(t,e){vmt(this,zz(t,37),e)},mZ(t1t,"CompoundGraphPreprocessor",1261),pDt(441,1,{441:1},Yht),TWt.c=!1,mZ(t1t,"CompoundGraphPreprocessor/ExternalPort",441),pDt(243,1,{243:1},Lj),TWt.Ib=function(){return pP(this.c)+":"+DIt(this.b)},mZ(t1t,"CrossHierarchyEdge",243),pDt(763,1,TVt,jg),TWt.ue=function(t,e){return Xvt(this,zz(t,243),zz(e,243))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(t1t,"CrossHierarchyEdgeComparator",763),pDt(299,134,{3:1,299:1,94:1,134:1}),TWt.p=0,mZ(n1t,"LGraphElement",299),pDt(17,299,{3:1,17:1,299:1,94:1,134:1},gV),TWt.Ib=function(){return DIt(this)};var vse=mZ(n1t,"LEdge",17);pDt(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},vit),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Wd(this.b)},TWt.Ib=function(){return 0==this.b.c.length?"G-unlayered"+NEt(this.a):0==this.a.c.length?"G-layered"+NEt(this.b):"G[layerless"+NEt(this.a)+", layers"+NEt(this.b)+"]"};var xse,kse=mZ(n1t,"LGraph",37);pDt(657,1,{}),TWt.qf=function(){return this.e.n},TWt.We=function(t){return vEt(this.e,t)},TWt.rf=function(){return this.e.o},TWt.sf=function(){return this.e.p},TWt.Xe=function(t){return LP(this.e,t)},TWt.tf=function(t){this.e.n.a=t.a,this.e.n.b=t.b},TWt.uf=function(t){this.e.o.a=t.a,this.e.o.b=t.b},TWt.vf=function(t){this.e.p=t},mZ(n1t,"LGraphAdapters/AbstractLShapeAdapter",657),pDt(577,1,{839:1},$g),TWt.wf=function(){var t,e;if(!this.b)for(this.b=uP(this.a.b.c.length),e=new Wd(this.a.b);e.a0&&Flt((d1(e-1,t.length),t.charCodeAt(e-1)),l1t);)--e;if(r> ",t),mvt(n)),cM(sM((t.a+="[",t),n.i),"]")),t.a},TWt.c=!0,TWt.d=!1;var $se,zse,qse,Hse,Use=mZ(n1t,"LPort",11);pDt(397,1,mKt,qg),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Hg(new Wd(this.a.e))},mZ(n1t,"LPort/1",397),pDt(1290,1,VWt,Hg),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(t0(this.a),17).c},TWt.Ob=function(){return vO(this.a)},TWt.Qb=function(){DY(this.a)},mZ(n1t,"LPort/1/1",1290),pDt(359,1,mKt,Ug),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Gg(new Wd(this.a.g))},mZ(n1t,"LPort/2",359),pDt(762,1,VWt,Gg),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(t0(this.a),17).d},TWt.Ob=function(){return vO(this.a)},TWt.Qb=function(){DY(this.a)},mZ(n1t,"LPort/2/1",762),pDt(1283,1,mKt,lC),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new y6(this)},mZ(n1t,"LPort/CombineIter",1283),pDt(201,1,VWt,y6),TWt.Nb=function(t){hY(this,t)},TWt.Qb=function(){s_()},TWt.Ob=function(){return GN(this)},TWt.Pb=function(){return vO(this.a)?t0(this.a):t0(this.b)},mZ(n1t,"LPort/CombineIter/1",201),pDt(1285,1,UVt,$e),TWt.Lb=function(t){return DG(t)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),0!=zz(t,11).e.c.length},mZ(n1t,"LPort/lambda$0$Type",1285),pDt(1284,1,UVt,ze),TWt.Lb=function(t){return OG(t)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),0!=zz(t,11).g.c.length},mZ(n1t,"LPort/lambda$1$Type",1284),pDt(1286,1,UVt,qe),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),uIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),uIe)},mZ(n1t,"LPort/lambda$2$Type",1286),pDt(1287,1,UVt,He),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),cIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),cIe)},mZ(n1t,"LPort/lambda$3$Type",1287),pDt(1288,1,UVt,Ue),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),TIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),TIe)},mZ(n1t,"LPort/lambda$4$Type",1288),pDt(1289,1,UVt,Ge),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),SIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),SIe)},mZ(n1t,"LPort/lambda$5$Type",1289),pDt(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},qZ),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Wd(this.a)},TWt.Ib=function(){return"L_"+_9(this.b.b,this,0)+NEt(this.a)},mZ(n1t,"Layer",29),pDt(1342,1,{},ey),mZ(b1t,w1t,1342),pDt(1346,1,{},Ye),TWt.Kb=function(t){return SAt(zz(t,82))},mZ(b1t,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1346),pDt(1349,1,{},Ze),TWt.Kb=function(t){return SAt(zz(t,82))},mZ(b1t,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1349),pDt(1343,1,dKt,Yg),TWt.td=function(t){SMt(this.a,zz(t,118))},mZ(b1t,m1t,1343),pDt(1344,1,dKt,Zg),TWt.td=function(t){SMt(this.a,zz(t,118))},mZ(b1t,y1t,1344),pDt(1345,1,{},We),TWt.Kb=function(t){return new FH(null,new g1(wK(zz(t,79)),16))},mZ(b1t,v1t,1345),pDt(1347,1,FKt,Wg),TWt.Mb=function(t){return jD(this.a,zz(t,33))},mZ(b1t,x1t,1347),pDt(1348,1,{},Ke),TWt.Kb=function(t){return new FH(null,new g1(mK(zz(t,79)),16))},mZ(b1t,"ElkGraphImporter/lambda$5$Type",1348),pDt(1350,1,FKt,Kg),TWt.Mb=function(t){return $D(this.a,zz(t,33))},mZ(b1t,"ElkGraphImporter/lambda$7$Type",1350),pDt(1351,1,FKt,Xe),TWt.Mb=function(t){return DX(zz(t,79))},mZ(b1t,"ElkGraphImporter/lambda$8$Type",1351),pDt(1278,1,{},Xl),mZ(b1t,"ElkGraphLayoutTransferrer",1278),pDt(1279,1,FKt,Xg),TWt.Mb=function(t){return QF(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$0$Type",1279),pDt(1280,1,dKt,Vg),TWt.td=function(t){yE(),Wz(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$1$Type",1280),pDt(1281,1,FKt,Qg),TWt.Mb=function(t){return YB(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$2$Type",1281),pDt(1282,1,dKt,Jg),TWt.td=function(t){yE(),Wz(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$3$Type",1282),pDt(1485,1,e1t,Ve),TWt.pf=function(t,e){Xrt(zz(t,37),e)},mZ(_1t,"CommentNodeMarginCalculator",1485),pDt(1486,1,{},Qe),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"CommentNodeMarginCalculator/lambda$0$Type",1486),pDt(1487,1,dKt,Je),TWt.td=function(t){nqt(zz(t,10))},mZ(_1t,"CommentNodeMarginCalculator/lambda$1$Type",1487),pDt(1488,1,e1t,tn),TWt.pf=function(t,e){sBt(zz(t,37),e)},mZ(_1t,"CommentPostprocessor",1488),pDt(1489,1,e1t,en),TWt.pf=function(t,e){cYt(zz(t,37),e)},mZ(_1t,"CommentPreprocessor",1489),pDt(1490,1,e1t,nn),TWt.pf=function(t,e){_Lt(zz(t,37),e)},mZ(_1t,"ConstraintsPostprocessor",1490),pDt(1491,1,e1t,rn),TWt.pf=function(t,e){oot(zz(t,37),e)},mZ(_1t,"EdgeAndLayerConstraintEdgeReverser",1491),pDt(1492,1,e1t,an),TWt.pf=function(t,e){Ggt(zz(t,37),e)},mZ(_1t,"EndLabelPostprocessor",1492),pDt(1493,1,{},on),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelPostprocessor/lambda$0$Type",1493),pDt(1494,1,FKt,sn),TWt.Mb=function(t){return EV(zz(t,10))},mZ(_1t,"EndLabelPostprocessor/lambda$1$Type",1494),pDt(1495,1,dKt,cn),TWt.td=function(t){ikt(zz(t,10))},mZ(_1t,"EndLabelPostprocessor/lambda$2$Type",1495),pDt(1496,1,e1t,un),TWt.pf=function(t,e){tSt(zz(t,37),e)},mZ(_1t,"EndLabelPreprocessor",1496),pDt(1497,1,{},ln),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelPreprocessor/lambda$0$Type",1497),pDt(1498,1,dKt,Bj),TWt.td=function(t){RE(this.a,this.b,this.c,zz(t,10))},TWt.a=0,TWt.b=0,TWt.c=!1,mZ(_1t,"EndLabelPreprocessor/lambda$1$Type",1498),pDt(1499,1,FKt,hn),TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),ZCe))},mZ(_1t,"EndLabelPreprocessor/lambda$2$Type",1499),pDt(1500,1,dKt,tp),TWt.td=function(t){Bq(this.a,zz(t,70))},mZ(_1t,"EndLabelPreprocessor/lambda$3$Type",1500),pDt(1501,1,FKt,fn),TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),YCe))},mZ(_1t,"EndLabelPreprocessor/lambda$4$Type",1501),pDt(1502,1,dKt,ep),TWt.td=function(t){Bq(this.a,zz(t,70))},mZ(_1t,"EndLabelPreprocessor/lambda$5$Type",1502),pDt(1551,1,e1t,Kl),TWt.pf=function(t,e){Ift(zz(t,37),e)},mZ(_1t,"EndLabelSorter",1551),pDt(1552,1,TVt,dn),TWt.ue=function(t,e){return Hbt(zz(t,456),zz(e,456))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"EndLabelSorter/1",1552),pDt(456,1,{456:1},AX),mZ(_1t,"EndLabelSorter/LabelGroup",456),pDt(1553,1,{},gn),TWt.Kb=function(t){return _E(),new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelSorter/lambda$0$Type",1553),pDt(1554,1,FKt,pn),TWt.Mb=function(t){return _E(),zz(t,10).k==(cTt(),Sse)},mZ(_1t,"EndLabelSorter/lambda$1$Type",1554),pDt(1555,1,dKt,bn),TWt.td=function(t){uTt(zz(t,10))},mZ(_1t,"EndLabelSorter/lambda$2$Type",1555),pDt(1556,1,FKt,wn),TWt.Mb=function(t){return _E(),UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),YCe))},mZ(_1t,"EndLabelSorter/lambda$3$Type",1556),pDt(1557,1,FKt,mn),TWt.Mb=function(t){return _E(),UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),ZCe))},mZ(_1t,"EndLabelSorter/lambda$4$Type",1557),pDt(1503,1,e1t,yn),TWt.pf=function(t,e){Mqt(this,zz(t,37))},TWt.b=0,TWt.c=0,mZ(_1t,"FinalSplineBendpointsCalculator",1503),pDt(1504,1,{},vn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$0$Type",1504),pDt(1505,1,{},xn),TWt.Kb=function(t){return new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$1$Type",1505),pDt(1506,1,FKt,kn),TWt.Mb=function(t){return!d5(zz(t,17))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$2$Type",1506),pDt(1507,1,FKt,_n),TWt.Mb=function(t){return LP(zz(t,17),(hWt(),Nfe))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$3$Type",1507),pDt(1508,1,dKt,np),TWt.td=function(t){YRt(this.a,zz(t,128))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$4$Type",1508),pDt(1509,1,dKt,An),TWt.td=function(t){JCt(zz(t,17).a)},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$5$Type",1509),pDt(792,1,e1t,ip),TWt.pf=function(t,e){XHt(this,zz(t,37),e)},mZ(_1t,"GraphTransformer",792),pDt(511,22,{3:1,35:1,22:1,511:1},JT);var Gse,Yse,Zse,Wse=qnt(_1t,"GraphTransformer/Mode",511,Zte,sQ,ez);pDt(1510,1,e1t,En),TWt.pf=function(t,e){iPt(zz(t,37),e)},mZ(_1t,"HierarchicalNodeResizingProcessor",1510),pDt(1511,1,e1t,Tn),TWt.pf=function(t,e){drt(zz(t,37),e)},mZ(_1t,"HierarchicalPortConstraintProcessor",1511),pDt(1512,1,TVt,Cn),TWt.ue=function(t,e){return Mwt(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortConstraintProcessor/NodeComparator",1512),pDt(1513,1,e1t,Sn),TWt.pf=function(t,e){_zt(zz(t,37),e)},mZ(_1t,"HierarchicalPortDummySizeProcessor",1513),pDt(1514,1,e1t,In),TWt.pf=function(t,e){JBt(this,zz(t,37),e)},TWt.a=0,mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter",1514),pDt(1515,1,TVt,Mn),TWt.ue=function(t,e){return jN(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter/1",1515),pDt(1516,1,TVt,Dn),TWt.ue=function(t,e){return C7(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter/2",1516),pDt(1517,1,e1t,On),TWt.pf=function(t,e){AEt(zz(t,37),e)},mZ(_1t,"HierarchicalPortPositionProcessor",1517),pDt(1518,1,e1t,Vl),TWt.pf=function(t,e){aZt(this,zz(t,37))},TWt.a=0,TWt.c=0,mZ(_1t,"HighDegreeNodeLayeringProcessor",1518),pDt(571,1,{571:1},Ln),TWt.b=-1,TWt.d=-1,mZ(_1t,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",571),pDt(1519,1,{},Nn),TWt.Kb=function(t){return Hj(),fdt(zz(t,10))},TWt.Fb=function(t){return this===t},mZ(_1t,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1519),pDt(1520,1,{},Pn),TWt.Kb=function(t){return Hj(),ddt(zz(t,10))},TWt.Fb=function(t){return this===t},mZ(_1t,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1520),pDt(1526,1,e1t,Bn),TWt.pf=function(t,e){b$t(this,zz(t,37),e)},mZ(_1t,"HyperedgeDummyMerger",1526),pDt(793,1,{},Fj),TWt.a=!1,TWt.b=!1,TWt.c=!1,mZ(_1t,"HyperedgeDummyMerger/MergeState",793),pDt(1527,1,{},Fn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"HyperedgeDummyMerger/lambda$0$Type",1527),pDt(1528,1,{},Rn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,10).j,16))},mZ(_1t,"HyperedgeDummyMerger/lambda$1$Type",1528),pDt(1529,1,dKt,jn),TWt.td=function(t){zz(t,11).p=-1},mZ(_1t,"HyperedgeDummyMerger/lambda$2$Type",1529),pDt(1530,1,e1t,$n),TWt.pf=function(t,e){g$t(zz(t,37),e)},mZ(_1t,"HypernodesProcessor",1530),pDt(1531,1,e1t,zn),TWt.pf=function(t,e){p$t(zz(t,37),e)},mZ(_1t,"InLayerConstraintProcessor",1531),pDt(1532,1,e1t,qn),TWt.pf=function(t,e){Nat(zz(t,37),e)},mZ(_1t,"InnermostNodeMarginCalculator",1532),pDt(1533,1,e1t,Hn),TWt.pf=function(t,e){XGt(this,zz(t,37))},TWt.a=jXt,TWt.b=jXt,TWt.c=RXt,TWt.d=RXt;var Kse,Xse,Vse,Qse,Jse,tce,ece,nce,ice,rce,ace,oce,sce,cce,uce,lce,hce,fce,dce,gce,pce,bce,wce,mce,yce,vce,xce,kce,_ce,Ace,Ece,Tce,Cce,Sce,Ice,Mce,Dce,Oce,Lce,Nce,Pce,Bce,Fce,Rce,jce,$ce,zce,qce,Hce,Uce,Gce,Yce,Zce,Wce,Kce,Xce,Vce,Qce=mZ(_1t,"InteractiveExternalPortPositioner",1533);pDt(1534,1,{},Un),TWt.Kb=function(t){return zz(t,17).d.i},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$0$Type",1534),pDt(1535,1,{},rp),TWt.Kb=function(t){return HN(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$1$Type",1535),pDt(1536,1,{},Gn),TWt.Kb=function(t){return zz(t,17).c.i},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$2$Type",1536),pDt(1537,1,{},ap),TWt.Kb=function(t){return UN(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$3$Type",1537),pDt(1538,1,{},op),TWt.Kb=function(t){return WF(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$4$Type",1538),pDt(1539,1,{},sp),TWt.Kb=function(t){return KF(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$5$Type",1539),pDt(77,22,{3:1,35:1,22:1,77:1,234:1},tC),TWt.Kf=function(){switch(this.g){case 15:return new pa;case 22:return new ba;case 47:return new ya;case 28:case 35:return new ni;case 32:return new Ve;case 42:return new tn;case 1:return new en;case 41:return new nn;case 56:return new ip((Crt(),Hse));case 0:return new ip((Crt(),qse));case 2:return new rn;case 54:return new an;case 33:return new un;case 51:return new yn;case 55:return new En;case 13:return new Tn;case 38:return new Sn;case 44:return new In;case 40:return new On;case 9:return new Vl;case 49:return new cP;case 37:return new Bn;case 43:return new $n;case 27:return new zn;case 30:return new qn;case 3:return new Hn;case 18:return new Zn;case 29:return new Wn;case 5:return new Ql;case 50:return new Yn;case 34:return new Jl;case 36:return new ii;case 52:return new Kl;case 11:return new ai;case 7:return new eh;case 39:return new oi;case 45:return new si;case 16:return new ci;case 10:return new ui;case 48:return new hi;case 21:return new fi;case 23:return new Nv((uit(),Dye));case 8:return new gi;case 12:return new bi;case 4:return new wi;case 19:return new ah;case 17:return new Ci;case 53:return new Si;case 6:return new zi;case 25:return new oy;case 46:return new Ni;case 31:return new PF;case 14:return new Ki;case 26:return new Ta;case 20:return new tr;case 24:return new Nv((uit(),Oye));default:throw qw(new jv(T1t+(null!=this.f?this.f:""+this.g)))}};var Jce,tue,eue,nue,iue,rue,aue,oue,sue=qnt(_1t,C1t,77,Zte,ANt,tz);pDt(1540,1,e1t,Zn),TWt.pf=function(t,e){JGt(zz(t,37),e)},mZ(_1t,"InvertedPortProcessor",1540),pDt(1541,1,e1t,Wn),TWt.pf=function(t,e){NRt(zz(t,37),e)},mZ(_1t,"LabelAndNodeSizeProcessor",1541),pDt(1542,1,FKt,Kn),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"LabelAndNodeSizeProcessor/lambda$0$Type",1542),pDt(1543,1,FKt,Xn),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Ese)},mZ(_1t,"LabelAndNodeSizeProcessor/lambda$1$Type",1543),pDt(1544,1,dKt,Rj),TWt.td=function(t){jE(this.b,this.a,this.c,zz(t,10))},TWt.a=!1,TWt.c=!1,mZ(_1t,"LabelAndNodeSizeProcessor/lambda$2$Type",1544),pDt(1545,1,e1t,Ql),TWt.pf=function(t,e){fGt(zz(t,37),e)},mZ(_1t,"LabelDummyInserter",1545),pDt(1546,1,UVt,Vn),TWt.Lb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),GCe))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),GCe))},mZ(_1t,"LabelDummyInserter/1",1546),pDt(1547,1,e1t,Yn),TWt.pf=function(t,e){SHt(zz(t,37),e)},mZ(_1t,"LabelDummyRemover",1547),pDt(1548,1,FKt,Qn),TWt.Mb=function(t){return Hv(AB(vEt(zz(t,70),(HZt(),Xpe))))},mZ(_1t,"LabelDummyRemover/lambda$0$Type",1548),pDt(1359,1,e1t,Jl),TWt.pf=function(t,e){EUt(this,zz(t,37),e)},TWt.a=null,mZ(_1t,"LabelDummySwitcher",1359),pDt(286,1,{286:1},oRt),TWt.c=0,TWt.d=null,TWt.f=0,mZ(_1t,"LabelDummySwitcher/LabelDummyInfo",286),pDt(1360,1,{},Jn),TWt.Kb=function(t){return Mrt(),new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"LabelDummySwitcher/lambda$0$Type",1360),pDt(1361,1,FKt,ti),TWt.Mb=function(t){return Mrt(),zz(t,10).k==(cTt(),Tse)},mZ(_1t,"LabelDummySwitcher/lambda$1$Type",1361),pDt(1362,1,{},lp),TWt.Kb=function(t){return ZB(this.a,zz(t,10))},mZ(_1t,"LabelDummySwitcher/lambda$2$Type",1362),pDt(1363,1,dKt,hp),TWt.td=function(t){VZ(this.a,zz(t,286))},mZ(_1t,"LabelDummySwitcher/lambda$3$Type",1363),pDt(1364,1,TVt,ei),TWt.ue=function(t,e){return LG(zz(t,286),zz(e,286))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"LabelDummySwitcher/lambda$4$Type",1364),pDt(791,1,e1t,ni),TWt.pf=function(t,e){V6(zz(t,37),e)},mZ(_1t,"LabelManagementProcessor",791),pDt(1549,1,e1t,ii),TWt.pf=function(t,e){PPt(zz(t,37),e)},mZ(_1t,"LabelSideSelector",1549),pDt(1550,1,FKt,ri),TWt.Mb=function(t){return Hv(AB(vEt(zz(t,70),(HZt(),Xpe))))},mZ(_1t,"LabelSideSelector/lambda$0$Type",1550),pDt(1558,1,e1t,ai),TWt.pf=function(t,e){Azt(zz(t,37),e)},mZ(_1t,"LayerConstraintPostprocessor",1558),pDt(1559,1,e1t,eh),TWt.pf=function(t,e){aOt(zz(t,37),e)},mZ(_1t,"LayerConstraintPreprocessor",1559),pDt(360,22,{3:1,35:1,22:1,360:1},eC);var cue,uue,lue,hue,fue,due,gue,pue,bue,wue=qnt(_1t,"LayerConstraintPreprocessor/HiddenNodeConnections",360,Zte,n3,Gj);pDt(1560,1,e1t,oi),TWt.pf=function(t,e){AHt(zz(t,37),e)},mZ(_1t,"LayerSizeAndGraphHeightCalculator",1560),pDt(1561,1,e1t,si),TWt.pf=function(t,e){OLt(zz(t,37),e)},mZ(_1t,"LongEdgeJoiner",1561),pDt(1562,1,e1t,ci),TWt.pf=function(t,e){Kqt(zz(t,37),e)},mZ(_1t,"LongEdgeSplitter",1562),pDt(1563,1,e1t,ui),TWt.pf=function(t,e){SUt(this,zz(t,37),e)},TWt.d=0,TWt.e=0,TWt.i=0,TWt.j=0,TWt.k=0,TWt.n=0,mZ(_1t,"NodePromotion",1563),pDt(1564,1,{},li),TWt.Kb=function(t){return zz(t,46),lN(),!0},TWt.Fb=function(t){return this===t},mZ(_1t,"NodePromotion/lambda$0$Type",1564),pDt(1565,1,{},cp),TWt.Kb=function(t){return oK(this.a,zz(t,46))},TWt.Fb=function(t){return this===t},TWt.a=0,mZ(_1t,"NodePromotion/lambda$1$Type",1565),pDt(1566,1,{},up),TWt.Kb=function(t){return sK(this.a,zz(t,46))},TWt.Fb=function(t){return this===t},TWt.a=0,mZ(_1t,"NodePromotion/lambda$2$Type",1566),pDt(1567,1,e1t,hi),TWt.pf=function(t,e){WYt(zz(t,37),e)},mZ(_1t,"NorthSouthPortPostprocessor",1567),pDt(1568,1,e1t,fi),TWt.pf=function(t,e){TYt(zz(t,37),e)},mZ(_1t,"NorthSouthPortPreprocessor",1568),pDt(1569,1,TVt,di),TWt.ue=function(t,e){return tst(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"NorthSouthPortPreprocessor/lambda$0$Type",1569),pDt(1570,1,e1t,gi),TWt.pf=function(t,e){Ljt(zz(t,37),e)},mZ(_1t,"PartitionMidprocessor",1570),pDt(1571,1,FKt,pi),TWt.Mb=function(t){return LP(zz(t,10),(HZt(),Wbe))},mZ(_1t,"PartitionMidprocessor/lambda$0$Type",1571),pDt(1572,1,dKt,fp),TWt.td=function(t){OX(this.a,zz(t,10))},mZ(_1t,"PartitionMidprocessor/lambda$1$Type",1572),pDt(1573,1,e1t,bi),TWt.pf=function(t,e){pNt(zz(t,37),e)},mZ(_1t,"PartitionPostprocessor",1573),pDt(1574,1,e1t,wi),TWt.pf=function(t,e){PMt(zz(t,37),e)},mZ(_1t,"PartitionPreprocessor",1574),pDt(1575,1,FKt,mi),TWt.Mb=function(t){return LP(zz(t,10),(HZt(),Wbe))},mZ(_1t,"PartitionPreprocessor/lambda$0$Type",1575),pDt(1576,1,{},yi),TWt.Kb=function(t){return new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(_1t,"PartitionPreprocessor/lambda$1$Type",1576),pDt(1577,1,FKt,vi),TWt.Mb=function(t){return Nbt(zz(t,17))},mZ(_1t,"PartitionPreprocessor/lambda$2$Type",1577),pDt(1578,1,dKt,xi),TWt.td=function(t){Rst(zz(t,17))},mZ(_1t,"PartitionPreprocessor/lambda$3$Type",1578),pDt(1579,1,e1t,ah),TWt.pf=function(t,e){cjt(zz(t,37),e)},mZ(_1t,"PortListSorter",1579),pDt(1580,1,{},ki),TWt.Kb=function(t){return Yut(),zz(t,11).e},mZ(_1t,"PortListSorter/lambda$0$Type",1580),pDt(1581,1,{},_i),TWt.Kb=function(t){return Yut(),zz(t,11).g},mZ(_1t,"PortListSorter/lambda$1$Type",1581),pDt(1582,1,TVt,Ai),TWt.ue=function(t,e){return A4(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$2$Type",1582),pDt(1583,1,TVt,Ei),TWt.ue=function(t,e){return Dvt(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$3$Type",1583),pDt(1584,1,TVt,Ti),TWt.ue=function(t,e){return e$t(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$4$Type",1584),pDt(1585,1,e1t,Ci),TWt.pf=function(t,e){KDt(zz(t,37),e)},mZ(_1t,"PortSideProcessor",1585),pDt(1586,1,e1t,Si),TWt.pf=function(t,e){MFt(zz(t,37),e)},mZ(_1t,"ReversedEdgeRestorer",1586),pDt(1591,1,e1t,oy),TWt.pf=function(t,e){Qyt(this,zz(t,37),e)},mZ(_1t,"SelfLoopPortRestorer",1591),pDt(1592,1,{},Ii),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopPortRestorer/lambda$0$Type",1592),pDt(1593,1,FKt,Mi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopPortRestorer/lambda$1$Type",1593),pDt(1594,1,FKt,Di),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopPortRestorer/lambda$2$Type",1594),pDt(1595,1,{},Oi),TWt.Kb=function(t){return zz(vEt(zz(t,10),(hWt(),Mfe)),403)},mZ(_1t,"SelfLoopPortRestorer/lambda$3$Type",1595),pDt(1596,1,dKt,dp),TWt.td=function(t){CTt(this.a,zz(t,403))},mZ(_1t,"SelfLoopPortRestorer/lambda$4$Type",1596),pDt(794,1,dKt,Li),TWt.td=function(t){eCt(zz(t,101))},mZ(_1t,"SelfLoopPortRestorer/lambda$5$Type",794),pDt(1597,1,e1t,Ni),TWt.pf=function(t,e){Nwt(zz(t,37),e)},mZ(_1t,"SelfLoopPostProcessor",1597),pDt(1598,1,{},Pi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopPostProcessor/lambda$0$Type",1598),pDt(1599,1,FKt,Bi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopPostProcessor/lambda$1$Type",1599),pDt(1600,1,FKt,Fi),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopPostProcessor/lambda$2$Type",1600),pDt(1601,1,dKt,Ri),TWt.td=function(t){Nkt(zz(t,10))},mZ(_1t,"SelfLoopPostProcessor/lambda$3$Type",1601),pDt(1602,1,{},ji),TWt.Kb=function(t){return new FH(null,new g1(zz(t,101).f,1))},mZ(_1t,"SelfLoopPostProcessor/lambda$4$Type",1602),pDt(1603,1,dKt,gp),TWt.td=function(t){o3(this.a,zz(t,409))},mZ(_1t,"SelfLoopPostProcessor/lambda$5$Type",1603),pDt(1604,1,FKt,$i),TWt.Mb=function(t){return!!zz(t,101).i},mZ(_1t,"SelfLoopPostProcessor/lambda$6$Type",1604),pDt(1605,1,dKt,pp),TWt.td=function(t){Av(this.a,zz(t,101))},mZ(_1t,"SelfLoopPostProcessor/lambda$7$Type",1605),pDt(1587,1,e1t,zi),TWt.pf=function(t,e){tLt(zz(t,37),e)},mZ(_1t,"SelfLoopPreProcessor",1587),pDt(1588,1,{},qi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,101).f,1))},mZ(_1t,"SelfLoopPreProcessor/lambda$0$Type",1588),pDt(1589,1,{},Hi),TWt.Kb=function(t){return zz(t,409).a},mZ(_1t,"SelfLoopPreProcessor/lambda$1$Type",1589),pDt(1590,1,dKt,Ui),TWt.td=function(t){HO(zz(t,17))},mZ(_1t,"SelfLoopPreProcessor/lambda$2$Type",1590),pDt(1606,1,e1t,PF),TWt.pf=function(t,e){lTt(this,zz(t,37),e)},mZ(_1t,"SelfLoopRouter",1606),pDt(1607,1,{},Gi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopRouter/lambda$0$Type",1607),pDt(1608,1,FKt,Yi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopRouter/lambda$1$Type",1608),pDt(1609,1,FKt,Zi),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopRouter/lambda$2$Type",1609),pDt(1610,1,{},Wi),TWt.Kb=function(t){return zz(vEt(zz(t,10),(hWt(),Mfe)),403)},mZ(_1t,"SelfLoopRouter/lambda$3$Type",1610),pDt(1611,1,dKt,nC),TWt.td=function(t){XK(this.a,this.b,zz(t,403))},mZ(_1t,"SelfLoopRouter/lambda$4$Type",1611),pDt(1612,1,e1t,Ki),TWt.pf=function(t,e){fPt(zz(t,37),e)},mZ(_1t,"SemiInteractiveCrossMinProcessor",1612),pDt(1613,1,FKt,Xi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1613),pDt(1614,1,FKt,Vi),TWt.Mb=function(t){return UH(zz(t,10))._b((HZt(),uwe))},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1614),pDt(1615,1,TVt,Qi),TWt.ue=function(t,e){return brt(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1615),pDt(1616,1,{},Ji),TWt.Ce=function(t,e){return ZX(zz(t,10),zz(e,10))},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1616),pDt(1618,1,e1t,tr),TWt.pf=function(t,e){Tzt(zz(t,37),e)},mZ(_1t,"SortByInputModelProcessor",1618),pDt(1619,1,FKt,er),TWt.Mb=function(t){return 0!=zz(t,11).g.c.length},mZ(_1t,"SortByInputModelProcessor/lambda$0$Type",1619),pDt(1620,1,dKt,bp),TWt.td=function(t){fCt(this.a,zz(t,11))},mZ(_1t,"SortByInputModelProcessor/lambda$1$Type",1620),pDt(1693,803,{},wrt),TWt.Me=function(t){var e,n,i,r;switch(this.c=t,this.a.g){case 2:e=new Nw,QA(DK(new FH(null,new g1(this.c.a.b,16)),new pr),new sC(this,e)),mSt(this,new rr),Det(e,new ar),e.c=P8(Ote,HWt,1,0,5,1),QA(DK(new FH(null,new g1(this.c.a.b,16)),new or),new mp(e)),mSt(this,new sr),Det(e,new cr),e.c=P8(Ote,HWt,1,0,5,1),n=kO(rat(LK(new FH(null,new g1(this.c.a.b,16)),new yp(this))),new ur),QA(new FH(null,new g1(this.c.a.a,16)),new rC(n,e)),mSt(this,new hr),Det(e,new nr),e.c=P8(Ote,HWt,1,0,5,1);break;case 3:i=new Nw,mSt(this,new ir),r=kO(rat(LK(new FH(null,new g1(this.c.a.b,16)),new wp(this))),new lr),QA(DK(new FH(null,new g1(this.c.a.b,16)),new fr),new oC(r,i)),mSt(this,new dr),Det(i,new gr),i.c=P8(Ote,HWt,1,0,5,1);break;default:throw qw(new xm)}},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation",1693),pDt(1694,1,UVt,ir),TWt.Lb=function(t){return aL(zz(t,57).g,145)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1694),pDt(1695,1,{},wp),TWt.Fe=function(t){return GSt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1695),pDt(1703,1,RKt,iC),TWt.Vd=function(){zxt(this.a,this.b,-1)},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1703),pDt(1705,1,UVt,rr),TWt.Lb=function(t){return aL(zz(t,57).g,145)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1705),pDt(1706,1,dKt,ar),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1706),pDt(1707,1,FKt,or),TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1707),pDt(1709,1,dKt,mp),TWt.td=function(t){Adt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1709),pDt(1708,1,RKt,fC),TWt.Vd=function(){zxt(this.b,this.a,-1)},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1708),pDt(1710,1,UVt,sr),TWt.Lb=function(t){return aL(zz(t,57).g,10)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1710),pDt(1711,1,dKt,cr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1711),pDt(1712,1,{},yp),TWt.Fe=function(t){return YSt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1712),pDt(1713,1,{},ur),TWt.De=function(){return 0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1713),pDt(1696,1,{},lr),TWt.De=function(){return 0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1696),pDt(1715,1,dKt,rC),TWt.td=function(t){qU(this.a,this.b,zz(t,307))},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1715),pDt(1714,1,RKt,aC),TWt.Vd=function(){XDt(this.a,this.b,-1)},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1714),pDt(1716,1,UVt,hr),TWt.Lb=function(t){return zz(t,57),!0},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return zz(t,57),!0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1716),pDt(1717,1,dKt,nr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1717),pDt(1697,1,FKt,fr),TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1697),pDt(1699,1,dKt,oC),TWt.td=function(t){HU(this.a,this.b,zz(t,57))},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1699),pDt(1698,1,RKt,dC),TWt.Vd=function(){zxt(this.b,this.a,-1)},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1698),pDt(1700,1,UVt,dr),TWt.Lb=function(t){return zz(t,57),!0},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return zz(t,57),!0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1700),pDt(1701,1,dKt,gr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1701),pDt(1702,1,FKt,pr),TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1702),pDt(1704,1,dKt,sC),TWt.td=function(t){Eet(this.a,this.b,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1704),pDt(1521,1,e1t,cP),TWt.pf=function(t,e){oHt(this,zz(t,37),e)},mZ(O1t,"HorizontalGraphCompactor",1521),pDt(1522,1,{},vp),TWt.Oe=function(t,e){var n,i;return J9(t,e)?0:(n=h2(t),i=h2(e),n&&n.k==(cTt(),Ese)||i&&i.k==(cTt(),Ese)?0:YN(zz(vEt(this.a.a,(hWt(),Dfe)),304),n?n.k:(cTt(),Cse),i?i.k:(cTt(),Cse)))},TWt.Pe=function(t,e){var n,i;return J9(t,e)?1:(n=h2(t),i=h2(e),ZN(zz(vEt(this.a.a,(hWt(),Dfe)),304),n?n.k:(cTt(),Cse),i?i.k:(cTt(),Cse)))},mZ(O1t,"HorizontalGraphCompactor/1",1522),pDt(1523,1,{},br),TWt.Ne=function(t,e){return EE(),0==t.a.i},mZ(O1t,"HorizontalGraphCompactor/lambda$0$Type",1523),pDt(1524,1,{},xp),TWt.Ne=function(t,e){return jX(this.a,t,e)},mZ(O1t,"HorizontalGraphCompactor/lambda$1$Type",1524),pDt(1664,1,{},I9),mZ(O1t,"LGraphToCGraphTransformer",1664),pDt(1672,1,FKt,wr),TWt.Mb=function(t){return null!=t},mZ(O1t,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1672),pDt(1665,1,{},mr),TWt.Kb=function(t){return Uj(),qdt(vEt(zz(zz(t,57).g,10),(hWt(),pfe)))},mZ(O1t,"LGraphToCGraphTransformer/lambda$0$Type",1665),pDt(1666,1,{},yr),TWt.Kb=function(t){return Uj(),vht(zz(zz(t,57).g,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$1$Type",1666),pDt(1675,1,FKt,vr),TWt.Mb=function(t){return Uj(),aL(zz(t,57).g,10)},mZ(O1t,"LGraphToCGraphTransformer/lambda$10$Type",1675),pDt(1676,1,dKt,xr),TWt.td=function(t){RX(zz(t,57))},mZ(O1t,"LGraphToCGraphTransformer/lambda$11$Type",1676),pDt(1677,1,FKt,kr),TWt.Mb=function(t){return Uj(),aL(zz(t,57).g,145)},mZ(O1t,"LGraphToCGraphTransformer/lambda$12$Type",1677),pDt(1681,1,dKt,_r),TWt.td=function(t){yht(zz(t,57))},mZ(O1t,"LGraphToCGraphTransformer/lambda$13$Type",1681),pDt(1678,1,dKt,kp),TWt.td=function(t){sD(this.a,zz(t,8))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$14$Type",1678),pDt(1679,1,dKt,_p),TWt.td=function(t){uD(this.a,zz(t,110))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$15$Type",1679),pDt(1680,1,dKt,Ap),TWt.td=function(t){cD(this.a,zz(t,8))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$16$Type",1680),pDt(1682,1,{},Ar),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$17$Type",1682),pDt(1683,1,FKt,Er),TWt.Mb=function(t){return Uj(),d5(zz(t,17))},mZ(O1t,"LGraphToCGraphTransformer/lambda$18$Type",1683),pDt(1684,1,dKt,Ep),TWt.td=function(t){Ttt(this.a,zz(t,17))},mZ(O1t,"LGraphToCGraphTransformer/lambda$19$Type",1684),pDt(1668,1,dKt,Tp),TWt.td=function(t){f0(this.a,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$2$Type",1668),pDt(1685,1,{},Tr),TWt.Kb=function(t){return Uj(),new FH(null,new g1(zz(t,29).a,16))},mZ(O1t,"LGraphToCGraphTransformer/lambda$20$Type",1685),pDt(1686,1,{},Cr),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$21$Type",1686),pDt(1687,1,{},Sr),TWt.Kb=function(t){return Uj(),zz(vEt(zz(t,17),(hWt(),Nfe)),15)},mZ(O1t,"LGraphToCGraphTransformer/lambda$22$Type",1687),pDt(1688,1,FKt,Ir),TWt.Mb=function(t){return eP(zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$23$Type",1688),pDt(1689,1,dKt,Cp),TWt.td=function(t){SSt(this.a,zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$24$Type",1689),pDt(1667,1,dKt,cC),TWt.td=function(t){q3(this.a,this.b,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$3$Type",1667),pDt(1669,1,{},Mr),TWt.Kb=function(t){return Uj(),new FH(null,new g1(zz(t,29).a,16))},mZ(O1t,"LGraphToCGraphTransformer/lambda$4$Type",1669),pDt(1670,1,{},Dr),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$5$Type",1670),pDt(1671,1,{},Or),TWt.Kb=function(t){return Uj(),zz(vEt(zz(t,17),(hWt(),Nfe)),15)},mZ(O1t,"LGraphToCGraphTransformer/lambda$6$Type",1671),pDt(1673,1,dKt,Sp),TWt.td=function(t){jIt(this.a,zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$8$Type",1673),pDt(1674,1,dKt,uC),TWt.td=function(t){PO(this.a,this.b,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$9$Type",1674),pDt(1663,1,{},Lr),TWt.Le=function(t){var e,n,i,r,a;for(this.a=t,this.d=new $m,this.c=P8(Hie,HWt,121,this.a.a.a.c.length,0,1),this.b=0,n=new Wd(this.a.a.a);n.a=b&&(Wz(o,rft(h)),y=n.Math.max(y,v[h-1]-f),c+=p,w+=v[h-1]-w,f=v[h-1],p=u[h]),p=n.Math.max(p,u[h]),++h;c+=p}(g=n.Math.min(1/y,1/e.b/c))>r&&(r=g,i=o)}return i},TWt.Wf=function(){return!1},mZ($1t,"MSDCutIndexHeuristic",802),pDt(1617,1,e1t,Ta),TWt.pf=function(t,e){gzt(zz(t,37),e)},mZ($1t,"SingleEdgeGraphWrapper",1617),pDt(227,22,{3:1,35:1,22:1,227:1},kC);var rle,ale,ole,sle=qnt(z1t,"CenterEdgeLabelPlacementStrategy",227,Zte,J8,Wj);pDt(422,22,{3:1,35:1,22:1,422:1},_C);var cle,ule,lle,hle,fle=qnt(z1t,"ConstraintCalculationStrategy",422,Zte,UV,Kj);pDt(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},AC),TWt.Kf=function(){return lIt(this)},TWt.Xf=function(){return lIt(this)};var dle,gle,ple,ble,wle=qnt(z1t,"CrossingMinimizationStrategy",314,Zte,A1,Xj);pDt(337,22,{3:1,35:1,22:1,337:1},EC);var mle,yle,vle,xle,kle,_le,Ale=qnt(z1t,"CuttingStrategy",337,Zte,E1,Jj);pDt(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},TC),TWt.Kf=function(){return RDt(this)},TWt.Xf=function(){return RDt(this)};var Ele,Tle,Cle,Sle=qnt(z1t,"CycleBreakingStrategy",335,Zte,L5,t$);pDt(419,22,{3:1,35:1,22:1,419:1},CC);var Ile,Mle,Dle,Ole,Lle=qnt(z1t,"DirectionCongruency",419,Zte,HV,e$);pDt(450,22,{3:1,35:1,22:1,450:1},SC);var Nle,Ple,Ble,Fle,Rle,jle,$le,zle=qnt(z1t,"EdgeConstraint",450,Zte,T1,n$);pDt(276,22,{3:1,35:1,22:1,276:1},IC);var qle,Hle,Ule,Gle=qnt(z1t,"EdgeLabelSideSelection",276,Zte,i7,i$);pDt(479,22,{3:1,35:1,22:1,479:1},MC);var Yle,Zle,Wle,Kle,Xle,Vle,Qle,Jle=qnt(z1t,"EdgeStraighteningStrategy",479,Zte,qV,r$);pDt(274,22,{3:1,35:1,22:1,274:1},DC);var the,ehe,nhe,ihe,rhe,ahe,ohe,she=qnt(z1t,"FixedAlignment",274,Zte,e7,a$);pDt(275,22,{3:1,35:1,22:1,275:1},OC);var che,uhe,lhe,hhe,fhe,dhe,ghe,phe,bhe,whe,mhe,yhe=qnt(z1t,"GraphCompactionStrategy",275,Zte,t7,o$);pDt(256,22,{3:1,35:1,22:1,256:1},LC);var vhe,xhe,khe,_he,Ahe=qnt(z1t,"GraphProperties",256,Zte,gat,s$);pDt(292,22,{3:1,35:1,22:1,292:1},NC);var Ehe,The,Che,She,Ihe=qnt(z1t,"GreedySwitchType",292,Zte,I1,c$);pDt(303,22,{3:1,35:1,22:1,303:1},PC);var Mhe,Dhe,Ohe,Lhe=qnt(z1t,"InLayerConstraint",303,Zte,S1,u$);pDt(420,22,{3:1,35:1,22:1,420:1},BC);var Nhe,Phe,Bhe,Fhe,Rhe,jhe,$he,zhe,qhe,Hhe,Uhe,Ghe,Yhe,Zhe,Whe,Khe,Xhe,Vhe,Qhe,Jhe,tfe,efe,nfe,ife,rfe,afe,ofe,sfe,cfe,ufe,lfe,hfe,ffe,dfe,gfe,pfe,bfe,wfe,mfe,yfe,vfe,xfe,kfe,_fe,Afe,Efe,Tfe,Cfe,Sfe,Ife,Mfe,Dfe,Ofe,Lfe,Nfe,Pfe,Bfe,Ffe,Rfe,jfe,$fe,zfe,qfe,Hfe,Ufe=qnt(z1t,"InteractiveReferencePoint",420,Zte,GV,l$);pDt(163,22,{3:1,35:1,22:1,163:1},zC);var Gfe,Yfe,Zfe,Wfe,Kfe,Xfe,Vfe,Qfe,Jfe,tde,ede,nde,ide,rde,ade,ode,sde,cde,ude,lde,hde,fde,dde,gde,pde,bde,wde,mde,yde,vde,xde,kde,_de,Ade,Ede,Tde,Cde,Sde,Ide,Mde,Dde,Ode,Lde,Nde,Pde,Bde,Fde,Rde,jde,$de,zde,qde,Hde,Ude,Gde,Yde,Zde,Wde,Kde,Xde,Vde,Qde,Jde,tge,ege,nge,ige,rge,age,oge,sge,cge,uge,lge,hge,fge,dge,gge,pge,bge,wge,mge,yge,vge,xge,kge,_ge,Age,Ege,Tge,Cge,Sge,Ige,Mge,Dge,Oge,Lge,Nge,Pge,Bge,Fge,Rge,jge,$ge,zge,qge,Hge,Uge,Gge,Yge,Zge,Wge,Kge,Xge,Vge,Qge,Jge,tpe,epe,npe,ipe,rpe,ape,ope,spe,cpe,upe,lpe,hpe,fpe,dpe,gpe,ppe,bpe,wpe,mpe,ype,vpe,xpe,kpe,_pe,Ape,Epe,Tpe,Cpe,Spe,Ipe,Mpe,Dpe,Ope,Lpe,Npe,Ppe,Bpe,Fpe,Rpe,jpe,$pe,zpe,qpe,Hpe,Upe,Gpe,Ype,Zpe,Wpe,Kpe,Xpe,Vpe,Qpe,Jpe,tbe,ebe,nbe,ibe,rbe,abe,obe,sbe,cbe,ube,lbe,hbe,fbe,dbe,gbe,pbe,bbe,wbe,mbe,ybe,vbe,xbe,kbe,_be,Abe,Ebe,Tbe,Cbe,Sbe,Ibe,Mbe,Dbe,Obe,Lbe,Nbe,Pbe,Bbe,Fbe,Rbe,jbe,$be,zbe,qbe,Hbe,Ube,Gbe,Ybe,Zbe,Wbe,Kbe,Xbe,Vbe,Qbe,Jbe,twe,ewe,nwe,iwe,rwe,awe,owe,swe,cwe,uwe,lwe,hwe,fwe,dwe,gwe,pwe,bwe,wwe,mwe,ywe,vwe,xwe,kwe,_we,Awe,Ewe,Twe,Cwe,Swe,Iwe,Mwe,Dwe,Owe,Lwe,Nwe,Pwe,Bwe,Fwe,Rwe,jwe,$we,zwe,qwe,Hwe,Uwe,Gwe,Ywe,Zwe,Wwe,Kwe,Xwe,Vwe,Qwe,Jwe,tme,eme,nme,ime=qnt(z1t,"LayerConstraint",163,Zte,B5,h$);pDt(848,1,VVt,uh),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z1t),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),Cde),(SCt(),bEe)),Lle),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W1t),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(lN(),!1)),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K1t),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),Xde),bEe),Ufe),edt(lEe)))),o2(t,K1t,i0t,Qde),o2(t,K1t,d0t,Vde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X1t),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,V1t),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Ck(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q1t),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),gEe),kee),edt(hEe)),Sst(Ux(Vee,1),lKt,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J1t),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),Pge),bEe),Gme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,t0t),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),rft(7)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e0t),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n0t),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i0t),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),Ede),bEe),Sle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,r0t),f2t),"Node Layering Strategy"),"Strategy for node layering."),dge),bEe),cme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,a0t),f2t),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),ige),bEe),ime),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,o0t),f2t),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,s0t),f2t),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c0t),d2t),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),rft(4)),mEe),Oee),edt(lEe)))),o2(t,c0t,r0t,oge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u0t),d2t),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),rft(2)),mEe),Oee),edt(lEe)))),o2(t,u0t,r0t,cge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l0t),g2t),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),hge),bEe),Bme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,h0t),g2t),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),rft(0)),mEe),Oee),edt(lEe)))),o2(t,h0t,l0t,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,f0t),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),rft(FWt)),mEe),Oee),edt(lEe)))),o2(t,f0t,r0t,tge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,d0t),p2t),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),_de),bEe),wle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,g0t),p2t),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,p0t),p2t),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),pEe),See),edt(lEe)))),o2(t,p0t,b2t,wde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,b0t),p2t),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),gEe),kee),edt(lEe)))),o2(t,b0t,d0t,xde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,w0t),p2t),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,m0t),p2t),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y0t),w2t),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),rft(40)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v0t),w2t),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),gde),bEe),Ihe),edt(lEe)))),o2(t,v0t,d0t,pde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x0t),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),lde),bEe),Ihe),edt(lEe)))),o2(t,x0t,d0t,hde),o2(t,x0t,b2t,fde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,k0t),m2t),"Node Placement Strategy"),"Strategy for node placement."),Lge),bEe),Dme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,_0t),m2t),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),gEe),kee),edt(lEe)))),o2(t,_0t,k0t,_ge),o2(t,_0t,k0t,Age),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,A0t),y2t),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),wge),bEe),Jle),edt(lEe)))),o2(t,A0t,k0t,mge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,E0t),y2t),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),vge),bEe),she),edt(lEe)))),o2(t,E0t,k0t,xge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,T0t),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),pEe),See),edt(lEe)))),o2(t,T0t,k0t,Tge),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,C0t),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),bEe),xme),edt(uEe)))),o2(t,C0t,k0t,Dge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,S0t),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),Ige),bEe),xme),edt(lEe)))),o2(t,S0t,k0t,Mge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,I0t),v2t),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),Pde),bEe),tye),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,M0t),v2t),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),Fde),bEe),aye),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,D0t),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),jde),bEe),lye),edt(lEe)))),o2(t,D0t,x2t,$de),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,O0t),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),pEe),See),edt(lEe)))),o2(t,O0t,x2t,qde),o2(t,O0t,D0t,Hde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,L0t),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),pEe),See),edt(lEe)))),o2(t,L0t,x2t,Lde),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,N0t),k2t),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,P0t),k2t),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,B0t),k2t),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,F0t),k2t),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,R0t),_2t),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,j0t),_2t),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,$0t),_2t),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,z0t),A2t),FQt),"Tries to further compact components (disconnected sub-graphs)."),!1),gEe),kee),edt(lEe)))),o2(t,z0t,kJt,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,q0t),E2t),"Post Compaction Strategy"),T2t),Vfe),bEe),yhe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,H0t),E2t),"Post Compaction Constraint Calculation"),T2t),Kfe),bEe),fle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,U0t),C2t),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,G0t),C2t),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),rft(16)),mEe),Oee),edt(lEe)))),o2(t,G0t,U0t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Y0t),C2t),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),rft(5)),mEe),Oee),edt(lEe)))),o2(t,Y0t,U0t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z0t),S2t),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),dpe),bEe),Tye),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W0t),S2t),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),pEe),See),edt(lEe)))),o2(t,W0t,Z0t,Yge),o2(t,W0t,Z0t,Zge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K0t),S2t),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),pEe),See),edt(lEe)))),o2(t,K0t,Z0t,Kge),o2(t,K0t,Z0t,Xge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X0t),I2t),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),ipe),bEe),Ale),edt(lEe)))),o2(t,X0t,Z0t,rpe),o2(t,X0t,Z0t,ape),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,V0t),I2t),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),yEe),Rte),edt(lEe)))),o2(t,V0t,X0t,Qge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q0t),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),tpe),mEe),Oee),edt(lEe)))),o2(t,Q0t,X0t,epe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J0t),M2t),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),mpe),bEe),pye),edt(lEe)))),o2(t,J0t,Z0t,ype),o2(t,J0t,Z0t,vpe),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,t2t),M2t),"Valid Indices for Wrapping"),null),yEe),Rte),edt(lEe)))),o2(t,t2t,Z0t,ppe),o2(t,t2t,Z0t,bpe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e2t),D2t),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),gEe),kee),edt(lEe)))),o2(t,e2t,Z0t,upe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n2t),D2t),"Distance Penalty When Improving Cuts"),null),2),pEe),See),edt(lEe)))),o2(t,n2t,Z0t,spe),o2(t,n2t,e2t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i2t),D2t),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),gEe),kee),edt(lEe)))),o2(t,i2t,Z0t,hpe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,r2t),O2t),"Edge Label Side Selection"),"Method to decide on edge label sides."),Dde),bEe),Gle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,a2t),O2t),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),Ide),bEe),sle),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,o2t),L2t),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),ode),bEe),$me),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,s2t),L2t),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c2t),L2t),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),Jfe),bEe),yse),edt(lEe)))),o2(t,c2t,kJt,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u2t),L2t),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),ide),bEe),gme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l2t),L2t),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),pEe),See),edt(lEe)))),o2(t,l2t,o2t,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,h2t),L2t),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),pEe),See),edt(lEe)))),o2(t,h2t,o2t,null),yWt((new fh,t))},mZ(z1t,"LayeredMetaDataProvider",848),pDt(986,1,VVt,fh),TWt.Qe=function(t){yWt(t)},mZ(z1t,"LayeredOptions",986),pDt(987,1,{},Sa),TWt.$e=function(){return new Ym},TWt._e=function(t){},mZ(z1t,"LayeredOptions/LayeredFactory",987),pDt(1372,1,{}),TWt.a=0,mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder",1372),pDt(779,1372,{},cgt),mZ(z1t,"LayeredSpacings/LayeredSpacingsBuilder",779),pDt(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},FC),TWt.Kf=function(){return aLt(this)},TWt.Xf=function(){return aLt(this)};var rme,ame,ome,sme,cme=qnt(z1t,"LayeringStrategy",313,Zte,n7,f$);pDt(378,22,{3:1,35:1,22:1,378:1},RC);var ume,lme,hme,fme,dme,gme=qnt(z1t,"LongEdgeOrderingStrategy",378,Zte,_1,d$);pDt(197,22,{3:1,35:1,22:1,197:1},jC);var pme,bme,wme,mme,yme,vme,xme=qnt(z1t,"NodeFlexibility",197,Zte,x3,g$);pDt(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},$C),TWt.Kf=function(){return FDt(this)},TWt.Xf=function(){return FDt(this)};var kme,_me,Ame,Eme,Tme,Cme,Sme,Ime,Mme,Dme=qnt(z1t,"NodePlacementStrategy",315,Zte,O5,v$);pDt(260,22,{3:1,35:1,22:1,260:1},qC);var Ome,Lme,Nme,Pme,Bme=qnt(z1t,"NodePromotionStrategy",260,Zte,qet,b$);pDt(339,22,{3:1,35:1,22:1,339:1},HC);var Fme,Rme,jme,$me=qnt(z1t,"OrderingStrategy",339,Zte,D1,w$);pDt(421,22,{3:1,35:1,22:1,421:1},UC);var zme,qme,Hme,Ume,Gme=qnt(z1t,"PortSortingStrategy",421,Zte,YV,m$);pDt(452,22,{3:1,35:1,22:1,452:1},GC);var Yme,Zme,Wme,Kme,Xme=qnt(z1t,"PortType",452,Zte,M1,p$);pDt(375,22,{3:1,35:1,22:1,375:1},YC);var Vme,Qme,Jme,tye=qnt(z1t,"SelfLoopDistributionStrategy",375,Zte,O1,y$);pDt(376,22,{3:1,35:1,22:1,376:1},ZC);var eye,nye,iye,rye,aye=qnt(z1t,"SelfLoopOrderingStrategy",376,Zte,zV,x$);pDt(304,1,{304:1},lUt),mZ(z1t,"Spacings",304),pDt(336,22,{3:1,35:1,22:1,336:1},WC);var oye,sye,cye,uye,lye=qnt(z1t,"SplineRoutingMode",336,Zte,N1,k$);pDt(338,22,{3:1,35:1,22:1,338:1},KC);var hye,fye,dye,gye,pye=qnt(z1t,"ValidifyStrategy",338,Zte,P1,_$);pDt(377,22,{3:1,35:1,22:1,377:1},XC);var bye,wye,mye,yye,vye,xye,kye,_ye,Aye,Eye,Tye=qnt(z1t,"WrappingStrategy",377,Zte,L1,A$);pDt(1383,1,A3t,dh),TWt.Yf=function(t){return zz(t,37),wye},TWt.pf=function(t,e){Jqt(this,zz(t,37),e)},mZ(E3t,"DepthFirstCycleBreaker",1383),pDt(782,1,A3t,RU),TWt.Yf=function(t){return zz(t,37),mye},TWt.pf=function(t,e){ZZt(this,zz(t,37),e)},TWt.Zf=function(t){return zz(PH(t,mmt(this.d,t.c.length)),10)},mZ(E3t,"GreedyCycleBreaker",782),pDt(1386,782,A3t,AI),TWt.Zf=function(t){var e,n,i,r;for(r=null,e=FWt,i=new Wd(t);i.a1&&(Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),(HZt(),Ppe))))?ROt(t,this.d,zz(this,660)):(TX(),yO(t,this.d)),qot(this.e,t))},TWt.Sf=function(t,e,n,i){var r,a,o,s,c,u,l;for(e!=QH(n,t.length)&&(a=t[e-(n?1:-1)],U6(this.f,a,n?(sit(),Hme):(sit(),qme))),r=t[e][0],l=!i||r.k==(cTt(),Ese),u=s6(t[e]),this.ag(u,l,!1,n),o=0,c=new Wd(u);c.a"),t0?sJ(this.a,t[e-1],t[e]):!n&&e1&&(Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),(HZt(),Ppe))))?ROt(t,this.d,this):(TX(),yO(t,this.d)),Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),Ppe)))||qot(this.e,t))},mZ(I3t,"ModelOrderBarycenterHeuristic",660),pDt(1803,1,TVt,Wp),TWt.ue=function(t,e){return jTt(this.a,zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(I3t,"ModelOrderBarycenterHeuristic/lambda$0$Type",1803),pDt(1403,1,A3t,xh),TWt.Yf=function(t){var e;return zz(t,37),pH(e=xD(Bye),(xEt(),joe),(dWt(),zce)),e},TWt.pf=function(t,e){yV((zz(t,37),e))},mZ(I3t,"NoCrossingMinimizer",1403),pDt(796,402,C3t,Fk),TWt.$f=function(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;switch(h=this.g,n.g){case 1:for(r=0,a=0,l=new Wd(t.j);l.a1&&(r.j==(kYt(),cIe)?this.b[t]=!0:r.j==SIe&&t>0&&(this.b[t-1]=!0))},TWt.f=0,mZ(N1t,"AllCrossingsCounter",1798),pDt(587,1,{},vrt),TWt.b=0,TWt.d=0,mZ(N1t,"BinaryIndexedTree",587),pDt(524,1,{},XR),mZ(N1t,"CrossingsCounter",524),pDt(1906,1,TVt,Kp),TWt.ue=function(t,e){return ZH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$0$Type",1906),pDt(1907,1,TVt,Xp),TWt.ue=function(t,e){return WH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$1$Type",1907),pDt(1908,1,TVt,Vp),TWt.ue=function(t,e){return KH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$2$Type",1908),pDt(1909,1,TVt,Qp),TWt.ue=function(t,e){return XH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$3$Type",1909),pDt(1910,1,dKt,Jp),TWt.td=function(t){w9(this.a,zz(t,11))},mZ(N1t,"CrossingsCounter/lambda$4$Type",1910),pDt(1911,1,FKt,tb),TWt.Mb=function(t){return vI(this.a,zz(t,11))},mZ(N1t,"CrossingsCounter/lambda$5$Type",1911),pDt(1912,1,dKt,eb),TWt.td=function(t){yI(this,t)},mZ(N1t,"CrossingsCounter/lambda$6$Type",1912),pDt(1913,1,dKt,JC),TWt.td=function(t){var e;lq(),p3(this.b,(e=this.a,zz(t,11),e))},mZ(N1t,"CrossingsCounter/lambda$7$Type",1913),pDt(826,1,UVt,Pa),TWt.Lb=function(t){return lq(),LP(zz(t,11),(hWt(),_fe))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return lq(),LP(zz(t,11),(hWt(),_fe))},mZ(N1t,"CrossingsCounter/lambda$8$Type",826),pDt(1905,1,{},nb),mZ(N1t,"HyperedgeCrossingsCounter",1905),pDt(467,1,{35:1,467:1},BF),TWt.wd=function(t){return ybt(this,zz(t,467))},TWt.b=0,TWt.c=0,TWt.e=0,TWt.f=0;var $ye=mZ(N1t,"HyperedgeCrossingsCounter/Hyperedge",467);pDt(362,1,{35:1,362:1},HK),TWt.wd=function(t){return dOt(this,zz(t,362))},TWt.b=0,TWt.c=0;var zye,qye,Hye=mZ(N1t,"HyperedgeCrossingsCounter/HyperedgeCorner",362);pDt(523,22,{3:1,35:1,22:1,523:1},QC);var Uye,Gye,Yye,Zye,Wye,Kye=qnt(N1t,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",523,Zte,ZV,T$);pDt(1405,1,A3t,hh),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Gye:null},TWt.pf=function(t,e){dkt(this,zz(t,37),e)},mZ(M3t,"InteractiveNodePlacer",1405),pDt(1406,1,A3t,lh),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Yye:null},TWt.pf=function(t,e){_yt(this,zz(t,37),e)},mZ(M3t,"LinearSegmentsNodePlacer",1406),pDt(257,1,{35:1,257:1},ry),TWt.wd=function(t){return sk(this,zz(t,257))},TWt.Fb=function(t){var e;return!!aL(t,257)&&(e=zz(t,257),this.b==e.b)},TWt.Hb=function(){return this.b},TWt.Ib=function(){return"ls"+NEt(this.e)},TWt.a=0,TWt.b=0,TWt.c=-1,TWt.d=-1,TWt.g=0;var Xye,Vye=mZ(M3t,"LinearSegmentsNodePlacer/LinearSegment",257);pDt(1408,1,A3t,jU),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Xye:null},TWt.pf=function(t,e){CZt(this,zz(t,37),e)},TWt.b=0,TWt.g=0,mZ(M3t,"NetworkSimplexPlacer",1408),pDt(1427,1,TVt,Ba),TWt.ue=function(t,e){return _O(zz(t,19).a,zz(e,19).a)},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(M3t,"NetworkSimplexPlacer/0methodref$compare$Type",1427),pDt(1429,1,TVt,Fa),TWt.ue=function(t,e){return _O(zz(t,19).a,zz(e,19).a)},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(M3t,"NetworkSimplexPlacer/1methodref$compare$Type",1429),pDt(649,1,{649:1},tS);var Qye=mZ(M3t,"NetworkSimplexPlacer/EdgeRep",649);pDt(401,1,{401:1},UK),TWt.b=!1;var Jye,tve,eve,nve=mZ(M3t,"NetworkSimplexPlacer/NodeRep",401);pDt(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},sy),mZ(M3t,"NetworkSimplexPlacer/Path",508),pDt(1409,1,{},Ra),TWt.Kb=function(t){return zz(t,17).d.i.k},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$0$Type",1409),pDt(1410,1,FKt,ja),TWt.Mb=function(t){return zz(t,267)==(cTt(),Cse)},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$1$Type",1410),pDt(1411,1,{},$a),TWt.Kb=function(t){return zz(t,17).d.i},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$2$Type",1411),pDt(1412,1,FKt,ib),TWt.Mb=function(t){return qB(npt(zz(t,10)))},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$3$Type",1412),pDt(1413,1,FKt,za),TWt.Mb=function(t){return lH(zz(t,11))},mZ(M3t,"NetworkSimplexPlacer/lambda$0$Type",1413),pDt(1414,1,dKt,eS),TWt.td=function(t){BO(this.a,this.b,zz(t,11))},mZ(M3t,"NetworkSimplexPlacer/lambda$1$Type",1414),pDt(1423,1,dKt,rb),TWt.td=function(t){KSt(this.a,zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$10$Type",1423),pDt(1424,1,{},qa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$11$Type",1424),pDt(1425,1,dKt,ab),TWt.td=function(t){qBt(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$12$Type",1425),pDt(1426,1,{},Ha),TWt.Kb=function(t){return zJ(),rft(zz(t,121).e)},mZ(M3t,"NetworkSimplexPlacer/lambda$13$Type",1426),pDt(1428,1,{},Ua),TWt.Kb=function(t){return zJ(),rft(zz(t,121).e)},mZ(M3t,"NetworkSimplexPlacer/lambda$15$Type",1428),pDt(1430,1,FKt,Ga),TWt.Mb=function(t){return zJ(),zz(t,401).c.k==(cTt(),Sse)},mZ(M3t,"NetworkSimplexPlacer/lambda$17$Type",1430),pDt(1431,1,FKt,Ya),TWt.Mb=function(t){return zJ(),zz(t,401).c.j.c.length>1},mZ(M3t,"NetworkSimplexPlacer/lambda$18$Type",1431),pDt(1432,1,dKt,GK),TWt.td=function(t){ogt(this.c,this.b,this.d,this.a,zz(t,401))},TWt.c=0,TWt.d=0,mZ(M3t,"NetworkSimplexPlacer/lambda$19$Type",1432),pDt(1415,1,{},Za),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$2$Type",1415),pDt(1433,1,dKt,ob),TWt.td=function(t){NO(this.a,zz(t,11))},TWt.a=0,mZ(M3t,"NetworkSimplexPlacer/lambda$20$Type",1433),pDt(1434,1,{},Wa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$21$Type",1434),pDt(1435,1,dKt,sb),TWt.td=function(t){pL(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$22$Type",1435),pDt(1436,1,FKt,Ka),TWt.Mb=function(t){return qB(t)},mZ(M3t,"NetworkSimplexPlacer/lambda$23$Type",1436),pDt(1437,1,{},Xa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$24$Type",1437),pDt(1438,1,FKt,cb),TWt.Mb=function(t){return _M(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$25$Type",1438),pDt(1439,1,dKt,nS),TWt.td=function(t){TCt(this.a,this.b,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$26$Type",1439),pDt(1440,1,FKt,Va),TWt.Mb=function(t){return zJ(),!d5(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$27$Type",1440),pDt(1441,1,FKt,Qa),TWt.Mb=function(t){return zJ(),!d5(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$28$Type",1441),pDt(1442,1,{},ub),TWt.Ce=function(t,e){return uL(this.a,zz(t,29),zz(e,29))},mZ(M3t,"NetworkSimplexPlacer/lambda$29$Type",1442),pDt(1416,1,{},Ja),TWt.Kb=function(t){return zJ(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(M3t,"NetworkSimplexPlacer/lambda$3$Type",1416),pDt(1417,1,FKt,to),TWt.Mb=function(t){return zJ(),e2(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$4$Type",1417),pDt(1418,1,dKt,lb),TWt.td=function(t){rzt(this.a,zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$5$Type",1418),pDt(1419,1,{},eo),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$6$Type",1419),pDt(1420,1,FKt,no),TWt.Mb=function(t){return zJ(),zz(t,10).k==(cTt(),Sse)},mZ(M3t,"NetworkSimplexPlacer/lambda$7$Type",1420),pDt(1421,1,{},io),TWt.Kb=function(t){return zJ(),new FH(null,new GY(new cG(JL(hdt(zz(t,10)).a.Kc(),new l))))},mZ(M3t,"NetworkSimplexPlacer/lambda$8$Type",1421),pDt(1422,1,FKt,ro),TWt.Mb=function(t){return zJ(),Yq(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$9$Type",1422),pDt(1404,1,A3t,Ch),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Jye:null},TWt.pf=function(t,e){kqt(zz(t,37),e)},mZ(M3t,"SimpleNodePlacer",1404),pDt(180,1,{180:1},URt),TWt.Ib=function(){var t;return t="",this.c==(bQ(),eve)?t+=sQt:this.c==tve&&(t+=oQt),this.o==(cJ(),rve)?t+=mQt:this.o==ave?t+="UP":t+="BALANCED",t},mZ(L3t,"BKAlignedLayout",180),pDt(516,22,{3:1,35:1,22:1,516:1},aS);var ive,rve,ave,ove=qnt(L3t,"BKAlignedLayout/HDirection",516,Zte,KV,C$);pDt(515,22,{3:1,35:1,22:1,515:1},rS);var sve,cve,uve,lve,hve,fve,dve,gve,pve,bve,wve,mve,yve,vve,xve,kve,_ve,Ave,Eve,Tve=qnt(L3t,"BKAlignedLayout/VDirection",515,Zte,XV,S$);pDt(1634,1,{},iS),mZ(L3t,"BKAligner",1634),pDt(1637,1,{},Jvt),mZ(L3t,"BKCompactor",1637),pDt(654,1,{654:1},ao),TWt.a=0,mZ(L3t,"BKCompactor/ClassEdge",654),pDt(458,1,{458:1},ay),TWt.a=null,TWt.b=0,mZ(L3t,"BKCompactor/ClassNode",458),pDt(1407,1,A3t,kI),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?cve:null},TWt.pf=function(t,e){aWt(this,zz(t,37),e)},TWt.d=!1,mZ(L3t,"BKNodePlacer",1407),pDt(1635,1,{},oo),TWt.d=0,mZ(L3t,"NeighborhoodInformation",1635),pDt(1636,1,TVt,hb),TWt.ue=function(t,e){return Tet(this,zz(t,46),zz(e,46))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(L3t,"NeighborhoodInformation/NeighborComparator",1636),pDt(808,1,{}),mZ(L3t,"ThresholdStrategy",808),pDt(1763,808,{},py),TWt.bg=function(t,e,n){return this.a.o==(cJ(),ave)?RXt:jXt},TWt.cg=function(){},mZ(L3t,"ThresholdStrategy/NullThresholdStrategy",1763),pDt(579,1,{579:1},oS),TWt.c=!1,TWt.d=!1,mZ(L3t,"ThresholdStrategy/Postprocessable",579),pDt(1764,808,{},by),TWt.bg=function(t,e,n){var i,r,a;return r=e==n,i=this.a.a[n.p]==e,r||i?(a=t,this.a.c,bQ(),r&&(a=Eqt(this,e,!0)),!isNaN(a)&&!isFinite(a)&&i&&(a=Eqt(this,n,!1)),a):t},TWt.cg=function(){for(var t,e,n;0!=this.d.b;)(e=o$t(this,n=zz(CQ(this.d),579))).a&&(t=e.a,(Hv(this.a.f[this.a.g[n.b.p].p])||d5(t)||t.c.i.c!=t.d.i.c)&&(gOt(this,n)||rD(this.e,n)));for(;0!=this.e.a.c.length;)gOt(this,zz(nlt(this.e),579))},mZ(L3t,"ThresholdStrategy/SimpleThresholdStrategy",1764),pDt(635,1,{635:1,246:1,234:1},so),TWt.Kf=function(){return Eot(this)},TWt.Xf=function(){return Eot(this)},mZ(N3t,"EdgeRouterFactory",635),pDt(1458,1,A3t,Sh),TWt.Yf=function(t){return ZPt(zz(t,37))},TWt.pf=function(t,e){Fqt(zz(t,37),e)},mZ(N3t,"OrthogonalEdgeRouter",1458),pDt(1451,1,A3t,_I),TWt.Yf=function(t){return Akt(zz(t,37))},TWt.pf=function(t,e){DYt(this,zz(t,37),e)},mZ(N3t,"PolylineEdgeRouter",1451),pDt(1452,1,UVt,co),TWt.Lb=function(t){return Vot(zz(t,10))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return Vot(zz(t,10))},mZ(N3t,"PolylineEdgeRouter/1",1452),pDt(1809,1,FKt,uo),TWt.Mb=function(t){return zz(t,129).c==(M6(),Ave)},mZ(P3t,"HyperEdgeCycleDetector/lambda$0$Type",1809),pDt(1810,1,{},lo),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$1$Type",1810),pDt(1811,1,FKt,ho),TWt.Mb=function(t){return zz(t,129).c==(M6(),Ave)},mZ(P3t,"HyperEdgeCycleDetector/lambda$2$Type",1811),pDt(1812,1,{},fo),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$3$Type",1812),pDt(1813,1,{},go),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$4$Type",1813),pDt(1814,1,{},po),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$5$Type",1814),pDt(112,1,{35:1,112:1},zot),TWt.wd=function(t){return ck(this,zz(t,112))},TWt.Fb=function(t){var e;return!!aL(t,112)&&(e=zz(t,112),this.g==e.g)},TWt.Hb=function(){return this.g},TWt.Ib=function(){var t,e,n,i;for(t=new fN("{"),i=new Wd(this.n);i.a"+this.b+" ("+gP(this.c)+")"},TWt.d=0,mZ(P3t,"HyperEdgeSegmentDependency",129),pDt(520,22,{3:1,35:1,22:1,520:1},sS);var Cve,Sve,Ive,Mve,Dve,Ove,Lve,Nve,Pve=qnt(P3t,"HyperEdgeSegmentDependency/DependencyType",520,Zte,WV,I$);pDt(1815,1,{},fb),mZ(P3t,"HyperEdgeSegmentSplitter",1815),pDt(1816,1,{},Gk),TWt.a=0,TWt.b=0,mZ(P3t,"HyperEdgeSegmentSplitter/AreaRating",1816),pDt(329,1,{329:1},xz),TWt.a=0,TWt.b=0,TWt.c=0,mZ(P3t,"HyperEdgeSegmentSplitter/FreeArea",329),pDt(1817,1,TVt,_o),TWt.ue=function(t,e){return MR(zz(t,112),zz(e,112))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$0$Type",1817),pDt(1818,1,dKt,ZK),TWt.td=function(t){t4(this.a,this.d,this.c,this.b,zz(t,112))},TWt.b=0,mZ(P3t,"HyperEdgeSegmentSplitter/lambda$1$Type",1818),pDt(1819,1,{},Ao),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).e,16))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$2$Type",1819),pDt(1820,1,{},Eo),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).j,16))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$3$Type",1820),pDt(1821,1,{},To),TWt.Fe=function(t){return Uv(EB(t))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$4$Type",1821),pDt(655,1,{},hZ),TWt.a=0,TWt.b=0,TWt.c=0,mZ(P3t,"OrthogonalRoutingGenerator",655),pDt(1638,1,{},Co),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).e,16))},mZ(P3t,"OrthogonalRoutingGenerator/lambda$0$Type",1638),pDt(1639,1,{},So),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).j,16))},mZ(P3t,"OrthogonalRoutingGenerator/lambda$1$Type",1639),pDt(661,1,{}),mZ(B3t,"BaseRoutingDirectionStrategy",661),pDt(1807,661,{},wy),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e+t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(f,o=h),Bq(s.a,r),zjt(this,s,a,r,!1),(d=t.r)&&(r=new PS(g=Uv(EB(Fwt(d.e,0))),o),Bq(s.a,r),zjt(this,s,a,r,!1),a=d,r=new PS(g,o=e+d.o*i),Bq(s.a,r),zjt(this,s,a,r,!1)),r=new PS(b,o),Bq(s.a,r),zjt(this,s,a,r,!1)))},TWt.eg=function(t){return t.i.n.a+t.n.a+t.a.a},TWt.fg=function(){return kYt(),TIe},TWt.gg=function(){return kYt(),uIe},mZ(B3t,"NorthToSouthRoutingStrategy",1807),pDt(1808,661,{},my),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e-t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(f,o=h),Bq(s.a,r),zjt(this,s,a,r,!1),(d=t.r)&&(r=new PS(g=Uv(EB(Fwt(d.e,0))),o),Bq(s.a,r),zjt(this,s,a,r,!1),a=d,r=new PS(g,o=e-d.o*i),Bq(s.a,r),zjt(this,s,a,r,!1)),r=new PS(b,o),Bq(s.a,r),zjt(this,s,a,r,!1)))},TWt.eg=function(t){return t.i.n.a+t.n.a+t.a.a},TWt.fg=function(){return kYt(),uIe},TWt.gg=function(){return kYt(),TIe},mZ(B3t,"SouthToNorthRoutingStrategy",1808),pDt(1806,661,{},yy),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e+t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(o=h,f),Bq(s.a,r),zjt(this,s,a,r,!0),(d=t.r)&&(r=new PS(o,g=Uv(EB(Fwt(d.e,0)))),Bq(s.a,r),zjt(this,s,a,r,!0),a=d,r=new PS(o=e+d.o*i,g),Bq(s.a,r),zjt(this,s,a,r,!0)),r=new PS(o,b),Bq(s.a,r),zjt(this,s,a,r,!0)))},TWt.eg=function(t){return t.i.n.b+t.n.b+t.a.b},TWt.fg=function(){return kYt(),cIe},TWt.gg=function(){return kYt(),SIe},mZ(B3t,"WestToEastRoutingStrategy",1806),pDt(813,1,{},uzt),TWt.Ib=function(){return NEt(this.a)},TWt.b=0,TWt.c=!1,TWt.d=!1,TWt.f=0,mZ(R3t,"NubSpline",813),pDt(407,1,{407:1},APt,gQ),mZ(R3t,"NubSpline/PolarCP",407),pDt(1453,1,A3t,hvt),TWt.Yf=function(t){return aAt(zz(t,37))},TWt.pf=function(t,e){oZt(this,zz(t,37),e)},mZ(R3t,"SplineEdgeRouter",1453),pDt(268,1,{268:1},T6),TWt.Ib=function(){return this.a+" ->("+this.c+") "+this.b},TWt.c=0,mZ(R3t,"SplineEdgeRouter/Dependency",268),pDt(455,22,{3:1,35:1,22:1,455:1},cS);var Bve,Fve,Rve,jve,$ve,zve=qnt(R3t,"SplineEdgeRouter/SideToProcess",455,Zte,VV,M$);pDt(1454,1,FKt,xo),TWt.Mb=function(t){return wPt(),!zz(t,128).o},mZ(R3t,"SplineEdgeRouter/lambda$0$Type",1454),pDt(1455,1,{},vo),TWt.Ge=function(t){return wPt(),zz(t,128).v+1},mZ(R3t,"SplineEdgeRouter/lambda$1$Type",1455),pDt(1456,1,dKt,uS),TWt.td=function(t){iH(this.a,this.b,zz(t,46))},mZ(R3t,"SplineEdgeRouter/lambda$2$Type",1456),pDt(1457,1,dKt,lS),TWt.td=function(t){rH(this.a,this.b,zz(t,46))},mZ(R3t,"SplineEdgeRouter/lambda$3$Type",1457),pDt(128,1,{35:1,128:1},nSt,hHt),TWt.wd=function(t){return uk(this,zz(t,128))},TWt.b=0,TWt.e=!1,TWt.f=0,TWt.g=0,TWt.j=!1,TWt.k=!1,TWt.n=0,TWt.o=!1,TWt.p=!1,TWt.q=!1,TWt.s=0,TWt.u=0,TWt.v=0,TWt.F=0,mZ(R3t,"SplineSegment",128),pDt(459,1,{459:1},ko),TWt.a=0,TWt.b=!1,TWt.c=!1,TWt.d=!1,TWt.e=!1,TWt.f=0,mZ(R3t,"SplineSegment/EdgeInformation",459),pDt(1234,1,{},bo),mZ(H3t,rJt,1234),pDt(1235,1,TVt,wo),TWt.ue=function(t,e){return MIt(zz(t,135),zz(e,135))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(H3t,aJt,1235),pDt(1233,1,{},D_),mZ(H3t,"MrTree",1233),pDt(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},hS),TWt.Kf=function(){return OIt(this)},TWt.Xf=function(){return OIt(this)};var qve,Hve=qnt(H3t,"TreeLayoutPhases",393,Zte,k3,D$);pDt(1130,209,PQt,jF),TWt.Ze=function(t,e){var n,i,r,a,o,s;for(Hv(AB(tOt(t,(IDt(),Sxe))))||kQ(new Ag((UE(),new Bv(t)))),Uot(o=new C6,t),hct(o,(UHt(),uxe),t),yjt(t,o,s=new Pw),Kjt(t,o,s),a=o,i=new Wd(r=Bjt(this.a,a));i.a"+b0(this.c):"e_"+eut(this)},mZ(U3t,"TEdge",188),pDt(135,134,{3:1,135:1,94:1,134:1},C6),TWt.Ib=function(){var t,e,n,i,r;for(r=null,i=lwt(this.b,0);i.b!=i.d.c;)r+=(null==(n=zz(d3(i),86)).c||0==n.c.length?"n_"+n.g:"n_"+n.c)+"\n";for(e=lwt(this.a,0);e.b!=e.d.c;)r+=((t=zz(d3(e),188)).b&&t.c?b0(t.b)+"->"+b0(t.c):"e_"+eut(t))+"\n";return r};var Uve=mZ(U3t,"TGraph",135);pDt(633,502,{3:1,502:1,633:1,94:1,134:1}),mZ(U3t,"TShape",633),pDt(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},out),TWt.Ib=function(){return b0(this)};var Gve,Yve,Zve,Wve,Kve,Xve,Vve=mZ(U3t,"TNode",86);pDt(255,1,mKt,db),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new gb(lwt(this.a.d,0))},mZ(U3t,"TNode/2",255),pDt(358,1,VWt,gb),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(d3(this.a),188).c},TWt.Ob=function(){return __(this.a)},TWt.Qb=function(){vet(this.a)},mZ(U3t,"TNode/2/1",358),pDt(1840,1,e1t,RF),TWt.pf=function(t,e){B$t(this,zz(t,135),e)},mZ(G3t,"FanProcessor",1840),pDt(327,22,{3:1,35:1,22:1,327:1,234:1},fS),TWt.Kf=function(){switch(this.g){case 0:return new Xy;case 1:return new RF;case 2:return new Do;case 3:return new Io;case 4:return new Lo;case 5:return new No;default:throw qw(new jv(T1t+(null!=this.f?this.f:""+this.g)))}};var Qve,Jve,txe,exe,nxe,ixe,rxe,axe,oxe,sxe,cxe,uxe,lxe,hxe,fxe,dxe,gxe,pxe,bxe,wxe,mxe,yxe,vxe,xxe,kxe,_xe,Axe,Exe,Txe,Cxe,Sxe,Ixe,Mxe,Dxe,Oxe,Lxe,Nxe,Pxe,Bxe,Fxe,Rxe,jxe=qnt(G3t,C1t,327,Zte,r7,O$);pDt(1843,1,e1t,Io),TWt.pf=function(t,e){cOt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"LevelHeightProcessor",1843),pDt(1844,1,mKt,Mo),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return TX(),LA(),dne},mZ(G3t,"LevelHeightProcessor/1",1844),pDt(1841,1,e1t,Do),TWt.pf=function(t,e){VCt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"NeighborsProcessor",1841),pDt(1842,1,mKt,Oo),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return TX(),LA(),dne},mZ(G3t,"NeighborsProcessor/1",1842),pDt(1845,1,e1t,Lo),TWt.pf=function(t,e){sOt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"NodePositionProcessor",1845),pDt(1839,1,e1t,Xy),TWt.pf=function(t,e){tHt(this,zz(t,135))},mZ(G3t,"RootProcessor",1839),pDt(1846,1,e1t,No),TWt.pf=function(t,e){bft(zz(t,135))},mZ(G3t,"Untreeifyer",1846),pDt(851,1,VVt,Th),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W3t),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),xxe),(SCt(),bEe)),Hxe),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K3t),""),"Search Order"),"Which search order to use when computing a spanning tree."),yxe),bEe),Qxe),edt(lEe)))),jUt((new Eh,t))},mZ(X3t,"MrTreeMetaDataProvider",851),pDt(994,1,VVt,Eh),TWt.Qe=function(t){jUt(t)},mZ(X3t,"MrTreeOptions",994),pDt(995,1,{},Po),TWt.$e=function(){return new jF},TWt._e=function(t){},mZ(X3t,"MrTreeOptions/MrtreeFactory",995),pDt(480,22,{3:1,35:1,22:1,480:1},dS);var $xe,zxe,qxe,Hxe=qnt(X3t,"OrderWeighting",480,Zte,JV,L$);pDt(425,22,{3:1,35:1,22:1,425:1},gS);var Uxe,Gxe,Yxe,Zxe,Wxe,Kxe,Xxe,Vxe,Qxe=qnt(X3t,"TreeifyingOrder",425,Zte,QV,P$);pDt(1459,1,A3t,bh),TWt.Yf=function(t){return zz(t,135),Gxe},TWt.pf=function(t,e){xat(this,zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1459),pDt(1460,1,A3t,wh),TWt.Yf=function(t){return zz(t,135),Yxe},TWt.pf=function(t,e){fSt(this,zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p2order","NodeOrderer",1460),pDt(1461,1,A3t,ph),TWt.Yf=function(t){return zz(t,135),Zxe},TWt.pf=function(t,e){eFt(this,zz(t,135),e)},TWt.a=0,mZ("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1461),pDt(1462,1,A3t,mh),TWt.Yf=function(t){return zz(t,135),Wxe},TWt.pf=function(t,e){Bxt(zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p4route","EdgeRouter",1462),pDt(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},pS),TWt.Kf=function(){return ggt(this)},TWt.Xf=function(){return ggt(this)};var Jxe,tke,eke,nke,ike=qnt(J3t,"RadialLayoutPhases",495,Zte,tQ,N$);pDt(1131,209,PQt,M_),TWt.Ze=function(t,e){var n,i,r;if(DAt(e,"Radial layout",ASt(this,t).c.length),Hv(AB(tOt(t,(Zvt(),Dke))))||kQ(new Ag((UE(),new Bv(t)))),r=cAt(t),Qwt(t,(gB(),Kxe),r),!r)throw qw(new jv("The given graph is not a tree!"));for(0==(n=Uv(EB(tOt(t,Bke))))&&(n=fIt(t)),Qwt(t,Bke,n),i=new Wd(ASt(this,t));i.a0&&Blt((d1(e-1,t.length),t.charCodeAt(e-1)),l1t);)--e;if(n>=e)throw qw(new jv("The given string does not contain any numbers."));if(2!=(i=kRt(t.substr(n,e-n),",|;|\r|\n")).length)throw qw(new jv("Exactly two numbers are expected, "+i.length+" were found."));try{this.a=gTt(REt(i[0])),this.b=gTt(REt(i[1]))}catch(t){throw aL(t=dst(t),127)?qw(new jv(h1t+t)):qw(t)}},TWt.Ib=function(){return"("+this.a+","+this.b+")"},TWt.a=0,TWt.b=0;var CEe=mZ(f1t,"KVector",8);pDt(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},xy,Rk,YP),TWt.Pc=function(){return Xut(this)},TWt.Jf=function(t){var e,n,i,r,a;n=kRt(t,",|;|\\(|\\)|\\[|\\]|\\{|\\}| |\t|\n"),vX(this);try{for(e=0,r=0,i=0,a=0;e0&&(r%2==0?i=gTt(n[e]):a=gTt(n[e]),r>0&&r%2!=0&&Bq(this,new PS(i,a)),++r),++e}catch(t){throw aL(t=dst(t),127)?qw(new jv("The given string does not match the expected format for vectors."+t)):qw(t)}},TWt.Ib=function(){var t,e,n;for(t=new fN("("),e=lwt(this,0);e.b!=e.d.c;)cM(t,(n=zz(d3(e),8)).a+","+n.b),e.b!=e.d.c&&(t.a+="; ");return(t.a+=")",t).a};var SEe,IEe,MEe,DEe,OEe,LEe,NEe=mZ(f1t,"KVectorChain",74);pDt(248,22,{3:1,35:1,22:1,248:1},BS);var PEe,BEe,FEe,REe,jEe,$Ee,zEe,qEe,HEe,UEe,GEe,YEe,ZEe,WEe,KEe,XEe,VEe,QEe,JEe,tTe=qnt(h5t,"Alignment",248,Zte,Q8,Q$);pDt(979,1,VVt,Oh),TWt.Qe=function(t){Gjt(t)},mZ(h5t,"BoxLayouterOptions",979),pDt(980,1,{},Bs),TWt.$e=function(){return new Gs},TWt._e=function(t){},mZ(h5t,"BoxLayouterOptions/BoxFactory",980),pDt(291,22,{3:1,35:1,22:1,291:1},FS);var eTe,nTe,iTe,rTe,aTe,oTe,sTe,cTe,uTe,lTe,hTe,fTe,dTe,gTe,pTe,bTe,wTe,mTe,yTe,vTe,xTe,kTe,_Te,ATe,ETe,TTe,CTe,STe,ITe,MTe,DTe,OTe,LTe,NTe,PTe,BTe,FTe,RTe,jTe,$Te,zTe,qTe,HTe,UTe,GTe,YTe,ZTe,WTe,KTe,XTe,VTe,QTe,JTe,tCe,eCe,nCe,iCe,rCe,aCe,oCe,sCe,cCe,uCe,lCe,hCe,fCe,dCe,gCe,pCe,bCe,wCe,mCe,yCe,vCe,xCe,kCe,_Ce,ACe,ECe,TCe,CCe,SCe,ICe,MCe,DCe,OCe,LCe,NCe,PCe,BCe,FCe,RCe,jCe,$Ce,zCe,qCe,HCe=qnt(h5t,"ContentAlignment",291,Zte,V8,J$);pDt(684,1,VVt,Lh),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,p5t),""),"Layout Algorithm"),"Select a specific layout algorithm."),(SCt(),vEe)),Vee),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,b5t),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),yEe),oEe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K2t),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),rTe),bEe),tTe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,XQt),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,w5t),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),yEe),NEe),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c3t),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),hTe),wEe),HCe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W2t),""),"Debug Mode"),"Whether additional debug information shall be generated."),(lN(),!1)),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J2t),""),EQt),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),gTe),bEe),WCe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x2t),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),yTe),bEe),cSe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,O4t),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,b2t),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),ATe),bEe),TSe),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,VQt),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),WTe),yEe),jse),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,_Jt),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v3t),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,TJt),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,AJt),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),cCe),bEe),oIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,w3t),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),yEe),CEe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,mJt),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),mEe),Oee),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,xJt),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,kJt),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u3t),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),DTe),yEe),NEe),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,f3t),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,d3t),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,m5t),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),yEe),RNe),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,m3t),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),LTe),yEe),_se),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Y2t),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),gEe),kee),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe,hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y5t),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),pEe),See),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v5t),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x5t),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),rft(100)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,k5t),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,_5t),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),rft(4e3)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,A5t),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),rft(400)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,E5t),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,T5t),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,C5t),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,S5t),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,g5t),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),cTe),bEe),aMe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,N2t),k2t),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,P2t),k2t),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,WQt),k2t),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,B2t),k2t),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,vJt),k2t),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,F2t),k2t),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,R2t),k2t),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,z2t),k2t),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,j2t),k2t),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,$2t),k2t),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,yJt),k2t),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,q2t),k2t),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,H2t),k2t),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),pEe),See),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,U2t),k2t),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),yEe),lMe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe,hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y3t),k2t),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),BCe),yEe),_se),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,b3t),O5t),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),mEe),Oee),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),o2(t,b3t,p3t,QTe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,p3t),O5t),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),XTe),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,t3t),L5t),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),PTe),yEe),jse),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,IJt),L5t),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),FTe),wEe),USe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i3t),N5t),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),tCe),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,r3t),N5t),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,a3t),N5t),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,o3t),N5t),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,s3t),N5t),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,SJt),P5t),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),jTe),wEe),VIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,CJt),P5t),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),UTe),wEe),iMe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,qJt),P5t),"Node Size Minimum"),"The minimal size to which a node can be reduced."),qTe),yEe),CEe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q2t),P5t),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l3t),O2t),"Edge Label Placement"),"Gives a hint on where to put edge labels."),wTe),bEe),tSe),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,EJt),O2t),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),gEe),kee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,I5t),"font"),"Font Name"),"Font name used for a label."),vEe),Vee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,M5t),"font"),"Font Size"),"Font size used for a label."),mEe),Oee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,g3t),B5t),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),yEe),CEe),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,h3t),B5t),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),mEe),Oee),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z2t),B5t),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),pCe),bEe),$Ie),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,G2t),B5t),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),pEe),See),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,MJt),F5t),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),fCe),wEe),IIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e3t),F5t),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n3t),F5t),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X2t),R5t),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,V2t),R5t),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),gEe),kee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,KQt),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),pEe),See),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,D5t),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),xTe),bEe),vSe),edt(sEe)))),PE(t,new YJ(vk(kk(xk(new ms,p1t),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.orthogonal"),"Orthogonal"),'Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia \'86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.'))),PE(t,new YJ(vk(kk(xk(new ms,wJt),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),PE(t,new YJ(vk(kk(xk(new ms,Q3t),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),PE(t,new YJ(vk(kk(xk(new ms,p4t),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),gRt((new Nh,t)),Gjt((new Oh,t)),RBt((new Ph,t))},mZ(h5t,"CoreOptions",684),pDt(103,22,{3:1,35:1,22:1,103:1},RS);var UCe,GCe,YCe,ZCe,WCe=qnt(h5t,EQt,103,Zte,S5,nz);pDt(272,22,{3:1,35:1,22:1,272:1},jS);var KCe,XCe,VCe,QCe,JCe,tSe=qnt(h5t,"EdgeLabelPlacement",272,Zte,H1,iz);pDt(218,22,{3:1,35:1,22:1,218:1},$S);var eSe,nSe,iSe,rSe,aSe,oSe,sSe,cSe=qnt(h5t,"EdgeRouting",218,Zte,T3,rz);pDt(312,22,{3:1,35:1,22:1,312:1},zS);var uSe,lSe,hSe,fSe,dSe,gSe,pSe,bSe,wSe,mSe,ySe,vSe=qnt(h5t,"EdgeType",312,Zte,o7,az);pDt(977,1,VVt,Nh),TWt.Qe=function(t){gRt(t)},mZ(h5t,"FixedLayouterOptions",977),pDt(978,1,{},Xs),TWt.$e=function(){return new Hs},TWt._e=function(t){},mZ(h5t,"FixedLayouterOptions/FixedFactory",978),pDt(334,22,{3:1,35:1,22:1,334:1},qS);var xSe,kSe,_Se,ASe,ESe,TSe=qnt(h5t,"HierarchyHandling",334,Zte,q1,oz);pDt(285,22,{3:1,35:1,22:1,285:1},HS);var CSe,SSe,ISe,MSe,DSe,OSe,LSe,NSe,PSe,BSe,FSe=qnt(h5t,"LabelSide",285,Zte,E3,sz);pDt(93,22,{3:1,35:1,22:1,93:1},US);var RSe,jSe,$Se,zSe,qSe,HSe,USe=qnt(h5t,"NodeLabelPlacement",93,Zte,knt,cz);pDt(249,22,{3:1,35:1,22:1,249:1},GS);var GSe,YSe,ZSe,WSe,KSe,XSe,VSe,QSe=qnt(h5t,"PortAlignment",249,Zte,I5,uz);pDt(98,22,{3:1,35:1,22:1,98:1},YS);var JSe,tIe,eIe,nIe,iIe,rIe,aIe,oIe=qnt(h5t,"PortConstraints",98,Zte,T8,lz);pDt(273,22,{3:1,35:1,22:1,273:1},ZS);var sIe,cIe,uIe,lIe,hIe,fIe,dIe,gIe,pIe,bIe,wIe,mIe,yIe,vIe,xIe,kIe,_Ie,AIe,EIe,TIe,CIe,SIe,IIe=qnt(h5t,"PortLabelPlacement",273,Zte,a7,hz);pDt(61,22,{3:1,35:1,22:1,61:1},WS);var MIe,DIe,OIe,LIe,NIe,PIe,BIe,FIe,RIe,jIe,$Ie=qnt(h5t,"PortSide",61,Zte,l5,gz);pDt(981,1,VVt,Ph),TWt.Qe=function(t){RBt(t)},mZ(h5t,"RandomLayouterOptions",981),pDt(982,1,{},Vs),TWt.$e=function(){return new ec},TWt._e=function(t){},mZ(h5t,"RandomLayouterOptions/RandomFactory",982),pDt(374,22,{3:1,35:1,22:1,374:1},KS);var zIe,qIe,HIe,UIe,GIe,YIe,ZIe,WIe,KIe,XIe,VIe=qnt(h5t,"SizeConstraint",374,Zte,A3,fz);pDt(259,22,{3:1,35:1,22:1,259:1},XS);var QIe,JIe,tMe,eMe,nMe,iMe=qnt(h5t,"SizeOptions",259,Zte,Ait,dz);pDt(370,1,{1949:1},Zy),TWt.b=!1,TWt.c=0,TWt.d=-1,TWt.e=null,TWt.f=null,TWt.g=-1,TWt.j=!1,TWt.k=!1,TWt.n=!1,TWt.o=0,TWt.q=0,TWt.r=0,mZ(x3t,"BasicProgressMonitor",370),pDt(972,209,PQt,Gs),TWt.Ze=function(t,e){var n,i,r,a,o,s,c,u,l;DAt(e,"Box layout",2),r=Gv(EB(tOt(t,(CEt(),ZEe)))),a=zz(tOt(t,UEe),116),n=Hv(AB(tOt(t,jEe))),i=Hv(AB(tOt(t,$Ee))),0===zz(tOt(t,FEe),311).g?(s=new ej((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),TX(),yO(s,new Tb(i)),o=s,c=WCt(t),(null==(u=EB(tOt(t,BEe)))||(xW(u),u<=0))&&(u=1.3),jYt(t,(l=HYt(o,r,a,c.a,c.b,n,(xW(u),u))).a,l.b,!1,!0)):kHt(t,r,a,n),HTt(e)},mZ(x3t,"BoxLayoutProvider",972),pDt(973,1,TVt,Tb),TWt.ue=function(t,e){return hNt(this,zz(t,33),zz(e,33))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},TWt.a=!1,mZ(x3t,"BoxLayoutProvider/1",973),pDt(157,1,{157:1},Get,GP),TWt.Ib=function(){return this.c?YFt(this.c):NEt(this.b)},mZ(x3t,"BoxLayoutProvider/Group",157),pDt(311,22,{3:1,35:1,22:1,311:1},VS);var rMe,aMe=qnt(x3t,"BoxLayoutProvider/PackingMode",311,Zte,C3,pz);pDt(974,1,TVt,Ys),TWt.ue=function(t,e){return BX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$0$Type",974),pDt(975,1,TVt,Zs),TWt.ue=function(t,e){return aX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$1$Type",975),pDt(976,1,TVt,Ws),TWt.ue=function(t,e){return oX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$2$Type",976),pDt(1365,1,{831:1},Ks),TWt.qg=function(t,e){return DE(),!aL(e,160)||T_((Pst(),zz(t,160)),e)},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1365),pDt(1366,1,dKt,Cb),TWt.td=function(t){Jut(this.a,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1366),pDt(1367,1,dKt,Us),TWt.td=function(t){zz(t,94),DE()},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1367),pDt(1371,1,dKt,Sb),TWt.td=function(t){Drt(this.a,zz(t,94))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1371),pDt(1369,1,FKt,QS),TWt.Mb=function(t){return Xct(this.a,this.b,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1369),pDt(1368,1,FKt,JS),TWt.Mb=function(t){return OP(this.a,this.b,zz(t,831))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1368),pDt(1370,1,dKt,tI),TWt.td=function(t){$G(this.a,this.b,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1370),pDt(935,1,{},qs),TWt.Kb=function(t){return vD(t)},TWt.Fb=function(t){return this===t},mZ(x3t,"ElkUtil/lambda$0$Type",935),pDt(936,1,dKt,eI),TWt.td=function(t){aMt(this.a,this.b,zz(t,79))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$1$Type",936),pDt(937,1,dKt,nI),TWt.td=function(t){_v(this.a,this.b,zz(t,202))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$2$Type",937),pDt(938,1,dKt,iI),TWt.td=function(t){eO(this.a,this.b,zz(t,137))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$3$Type",938),pDt(939,1,dKt,Ib),TWt.td=function(t){aH(this.a,zz(t,469))},mZ(x3t,"ElkUtil/lambda$4$Type",939),pDt(342,1,{35:1,342:1},Ow),TWt.wd=function(t){return mL(this,zz(t,236))},TWt.Fb=function(t){var e;return!!aL(t,342)&&(e=zz(t,342),this.a==e.a)},TWt.Hb=function(){return SQ(this.a)},TWt.Ib=function(){return this.a+" (exclusive)"},TWt.a=0,mZ(x3t,"ExclusiveBounds/ExclusiveLowerBound",342),pDt(1138,209,PQt,Hs),TWt.Ze=function(t,e){var i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A;for(DAt(e,"Fixed Layout",1),o=zz(tOt(t,(lWt(),mTe)),218),d=0,g=0,m=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));m.e!=m.i.gc();){for(b=zz(kwt(m),33),(A=zz(tOt(b,(Wut(),bSe)),8))&&(TD(b,A.a,A.b),zz(tOt(b,hSe),174).Hc((vpt(),BIe))&&(p=zz(tOt(b,dSe),8)).a>0&&p.b>0&&jYt(b,p.a,p.b,!0,!0)),d=n.Math.max(d,b.i+b.g),g=n.Math.max(g,b.j+b.f),h=new DL((!b.n&&(b.n=new nY(GMe,b,1,7)),b.n));h.e!=h.i.gc();)c=zz(kwt(h),137),(A=zz(tOt(c,bSe),8))&&TD(c,A.a,A.b),d=n.Math.max(d,b.i+c.i+c.g),g=n.Math.max(g,b.j+c.j+c.f);for(x=new DL((!b.c&&(b.c=new nY(ZMe,b,9,9)),b.c));x.e!=x.i.gc();)for(v=zz(kwt(x),118),(A=zz(tOt(v,bSe),8))&&TD(v,A.a,A.b),k=b.i+v.i,_=b.j+v.j,d=n.Math.max(d,k+v.g),g=n.Math.max(g,_+v.f),u=new DL((!v.n&&(v.n=new nY(GMe,v,1,7)),v.n));u.e!=u.i.gc();)c=zz(kwt(u),137),(A=zz(tOt(c,bSe),8))&&TD(c,A.a,A.b),d=n.Math.max(d,k+c.i+c.g),g=n.Math.max(g,_+c.j+c.f);for(a=new cG(JL(bLt(b).a.Kc(),new l));bDt(a);)f=$Yt(i=zz(Y5(a),79)),d=n.Math.max(d,f.a),g=n.Math.max(g,f.b);for(r=new cG(JL(pLt(b).a.Kc(),new l));bDt(r);)QQ(SEt(i=zz(Y5(r),79)))!=t&&(f=$Yt(i),d=n.Math.max(d,f.a),g=n.Math.max(g,f.b))}if(o==(Tdt(),XCe))for(w=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));w.e!=w.i.gc();)for(r=new cG(JL(bLt(b=zz(kwt(w),33)).a.Kc(),new l));bDt(r);)0==(s=a$t(i=zz(Y5(r),79))).b?Qwt(i,MTe,null):Qwt(i,MTe,s);Hv(AB(tOt(t,(Wut(),fSe))))||jYt(t,d+(y=zz(tOt(t,gSe),116)).b+y.c,g+y.d+y.a,!0,!0),HTt(e)},mZ(x3t,"FixedLayoutProvider",1138),pDt(373,134,{3:1,414:1,373:1,94:1,134:1},Qs,rtt),TWt.Jf=function(t){var e,n,i,r,a,o,s;if(t)try{for(o=kRt(t,";,;"),r=0,a=(i=o).length;r>16&VKt|t^(n&VKt)<<16},TWt.Kc=function(){return new Mb(this)},TWt.Ib=function(){return null==this.a&&null==this.b?"pair(null,null)":null==this.a?"pair(null,"+qdt(this.b)+")":null==this.b?"pair("+qdt(this.a)+",null)":"pair("+qdt(this.a)+","+qdt(this.b)+")"},mZ(x3t,"Pair",46),pDt(983,1,VWt,Mb),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return!this.c&&(!this.b&&null!=this.a.a||null!=this.a.b)},TWt.Pb=function(){if(!this.c&&!this.b&&null!=this.a.a)return this.b=!0,this.a.a;if(!this.c&&null!=this.a.b)return this.c=!0,this.a.b;throw qw(new vm)},TWt.Qb=function(){throw this.c&&null!=this.a.b?this.a.b=null:this.b&&null!=this.a.a&&(this.a.a=null),qw(new pm)},TWt.b=!1,TWt.c=!1,mZ(x3t,"Pair/1",983),pDt(448,1,{448:1},KK),TWt.Fb=function(t){return aK(this.a,zz(t,448).a)&&aK(this.c,zz(t,448).c)&&aK(this.d,zz(t,448).d)&&aK(this.b,zz(t,448).b)},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[this.a,this.c,this.d,this.b]))},TWt.Ib=function(){return"("+this.a+zWt+this.c+zWt+this.d+zWt+this.b+")"},mZ(x3t,"Quadruple",448),pDt(1126,209,PQt,ec),TWt.Ze=function(t,e){var n;DAt(e,"Random Layout",1),0!=(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i?(rYt(t,(n=zz(tOt(t,(ypt(),NIe)),19))&&0!=n.a?new S4(n.a):new ldt,Gv(EB(tOt(t,DIe))),Gv(EB(tOt(t,PIe))),zz(tOt(t,OIe),116)),HTt(e)):HTt(e)},mZ(x3t,"RandomLayoutProvider",1126),pDt(553,1,{}),TWt.qf=function(){return new PS(this.f.i,this.f.j)},TWt.We=function(t){return _V(t,(lWt(),oCe))?tOt(this.f,dMe):tOt(this.f,t)},TWt.rf=function(){return new PS(this.f.g,this.f.f)},TWt.sf=function(){return this.g},TWt.Xe=function(t){return C8(this.f,t)},TWt.tf=function(t){Snt(this.f,t.a),Int(this.f,t.b)},TWt.uf=function(t){Cnt(this.f,t.a),Tnt(this.f,t.b)},TWt.vf=function(t){this.g=t},TWt.g=0,mZ(H5t,"ElkGraphAdapters/AbstractElkGraphElementAdapter",553),pDt(554,1,{839:1},Db),TWt.wf=function(){var t,e;if(!this.b)for(this.b=S2(yK(this.a).i),e=new DL(yK(this.a));e.e!=e.i.gc();)t=zz(kwt(e),137),Wz(this.b,new Fv(t));return this.b},TWt.b=null,mZ(H5t,"ElkGraphAdapters/ElkEdgeAdapter",554),pDt(301,553,{},Bv),TWt.xf=function(){return ivt(this)},TWt.a=null,mZ(H5t,"ElkGraphAdapters/ElkGraphAdapter",301),pDt(630,553,{181:1},Fv),mZ(H5t,"ElkGraphAdapters/ElkLabelAdapter",630),pDt(629,553,{680:1},QN),TWt.wf=function(){return evt(this)},TWt.Af=function(){var t;return!(t=zz(tOt(this.f,(lWt(),OTe)),142))&&(t=new fy),t},TWt.Cf=function(){return nvt(this)},TWt.Ef=function(t){var e;e=new Dj(t),Qwt(this.f,(lWt(),OTe),e)},TWt.Ff=function(t){Qwt(this.f,(lWt(),ZTe),new Mj(t))},TWt.yf=function(){return this.d},TWt.zf=function(){var t,e;if(!this.a)for(this.a=new Nw,e=new cG(JL(pLt(zz(this.f,33)).a.Kc(),new l));bDt(e);)t=zz(Y5(e),79),Wz(this.a,new Db(t));return this.a},TWt.Bf=function(){var t,e;if(!this.c)for(this.c=new Nw,e=new cG(JL(bLt(zz(this.f,33)).a.Kc(),new l));bDt(e);)t=zz(Y5(e),79),Wz(this.c,new Db(t));return this.c},TWt.Df=function(){return 0!=VX(zz(this.f,33)).i||Hv(AB(zz(this.f,33).We((lWt(),TTe))))},TWt.Gf=function(){j9(this,(UE(),fMe))},TWt.a=null,TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,mZ(H5t,"ElkGraphAdapters/ElkNodeAdapter",629),pDt(1266,553,{838:1},cw),TWt.wf=function(){return kvt(this)},TWt.zf=function(){var t,e;if(!this.a)for(this.a=uP(zz(this.f,118).xg().i),e=new DL(zz(this.f,118).xg());e.e!=e.i.gc();)t=zz(kwt(e),79),Wz(this.a,new Db(t));return this.a},TWt.Bf=function(){var t,e;if(!this.c)for(this.c=uP(zz(this.f,118).yg().i),e=new DL(zz(this.f,118).yg());e.e!=e.i.gc();)t=zz(kwt(e),79),Wz(this.c,new Db(t));return this.c},TWt.Hf=function(){return zz(zz(this.f,118).We((lWt(),gCe)),61)},TWt.If=function(){var t,e,n,i,r,a,o;for(i=WQ(zz(this.f,118)),n=new DL(zz(this.f,118).yg());n.e!=n.i.gc();)for(o=new DL((!(t=zz(kwt(n),79)).c&&(t.c=new lR(RMe,t,5,8)),t.c));o.e!=o.i.gc();){if(Iet(SAt(a=zz(kwt(o),82)),i))return!0;if(SAt(a)==i&&Hv(AB(tOt(t,(lWt(),CTe)))))return!0}for(e=new DL(zz(this.f,118).xg());e.e!=e.i.gc();)for(r=new DL((!(t=zz(kwt(e),79)).b&&(t.b=new lR(RMe,t,4,7)),t.b));r.e!=r.i.gc();)if(Iet(SAt(zz(kwt(r),82)),i))return!0;return!1},TWt.a=null,TWt.b=null,TWt.c=null,mZ(H5t,"ElkGraphAdapters/ElkPortAdapter",1266),pDt(1267,1,TVt,nc),TWt.ue=function(t,e){return GFt(zz(t,118),zz(e,118))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(H5t,"ElkGraphAdapters/PortComparator",1267);var pMe,bMe,wMe,mMe,yMe,vMe,xMe,kMe,_Me,AMe,EMe,TMe,CMe,SMe,IMe,MMe,DMe,OMe,LMe=dH(U5t,"EObject"),NMe=dH(G5t,Y5t),PMe=dH(G5t,Z5t),BMe=dH(G5t,W5t),FMe=dH(G5t,"ElkShape"),RMe=dH(G5t,K5t),jMe=dH(G5t,X5t),$Me=dH(G5t,V5t),zMe=dH(U5t,Q5t),qMe=dH(U5t,"EFactory"),HMe=dH(U5t,J5t),UMe=dH(U5t,"EPackage"),GMe=dH(G5t,t6t),YMe=dH(G5t,e6t),ZMe=dH(G5t,n6t);pDt(90,1,i6t),TWt.Jg=function(){return this.Kg(),null},TWt.Kg=function(){return null},TWt.Lg=function(){return this.Kg(),!1},TWt.Mg=function(){return!1},TWt.Ng=function(t){got(this,t)},mZ(r6t,"BasicNotifierImpl",90),pDt(97,90,f6t),TWt.nh=function(){return yD(this)},TWt.Og=function(t,e){return t},TWt.Pg=function(){throw qw(new wm)},TWt.Qg=function(t){var e;return e=Imt(zz(iet(this.Tg(),this.Vg()),18)),this.eh().ih(this,e.n,e.f,t)},TWt.Rg=function(t,e){throw qw(new wm)},TWt.Sg=function(t,e,n){return Ejt(this,t,e,n)},TWt.Tg=function(){var t;return this.Pg()&&(t=this.Pg().ck())?t:this.zh()},TWt.Ug=function(){return oDt(this)},TWt.Vg=function(){throw qw(new wm)},TWt.Wg=function(){var t,e;return!(e=this.ph().dk())&&this.Pg().ik((XE(),e=null==(t=fQ(U$t(this.Tg())))?NOe:new XN(this,t))),e},TWt.Xg=function(t,e){return t},TWt.Yg=function(t){return t.Gj()?t.aj():Ogt(this.Tg(),t)},TWt.Zg=function(){var t;return(t=this.Pg())?t.fk():null},TWt.$g=function(){return this.Pg()?this.Pg().ck():null},TWt._g=function(t,e,n){return tmt(this,t,e,n)},TWt.ah=function(t){return T7(this,t)},TWt.bh=function(t,e){return K5(this,t,e)},TWt.dh=function(){var t;return!!(t=this.Pg())&&t.gk()},TWt.eh=function(){throw qw(new wm)},TWt.fh=function(){return Qpt(this)},TWt.gh=function(t,e,n,i){return Pwt(this,t,e,i)},TWt.hh=function(t,e,n){return zz(iet(this.Tg(),e),66).Nj().Qj(this,this.yh(),e-this.Ah(),t,n)},TWt.ih=function(t,e,n,i){return cQ(this,t,e,i)},TWt.jh=function(t,e,n){return zz(iet(this.Tg(),e),66).Nj().Rj(this,this.yh(),e-this.Ah(),t,n)},TWt.kh=function(){return!!this.Pg()&&!!this.Pg().ek()},TWt.lh=function(t){return ywt(this,t)},TWt.mh=function(t){return JQ(this,t)},TWt.oh=function(t){return $Ht(this,t)},TWt.ph=function(){throw qw(new wm)},TWt.qh=function(){return this.Pg()?this.Pg().ek():null},TWt.rh=function(){return Qpt(this)},TWt.sh=function(t,e){xSt(this,t,e)},TWt.th=function(t){this.ph().hk(t)},TWt.uh=function(t){this.ph().kk(t)},TWt.vh=function(t){this.ph().jk(t)},TWt.wh=function(t,e){var n,i,r,a;return(a=this.Zg())&&t&&(e=$wt(a.Vk(),this,e),a.Zk(this)),(i=this.eh())&&(0!=(wRt(this,this.eh(),this.Vg()).Bb&qXt)?(r=i.fh())&&(t?!a&&r.Zk(this):r.Yk(this)):(e=(n=this.Vg())>=0?this.Qg(e):this.eh().ih(this,-1-n,null,e),e=this.Sg(null,-1,e))),this.uh(t),e},TWt.xh=function(t){var e,n,i,r,a,o,s;if((a=Ogt(n=this.Tg(),t))>=(e=this.Ah()))return zz(t,66).Nj().Uj(this,this.yh(),a-e);if(a<=-1){if(!(o=zHt((MCt(),JOe),n,t)))throw qw(new jv(a6t+t.ne()+c6t));if(JE(),zz(o,66).Oj()||(o=J1(z9(JOe,o))),r=zz((i=this.Yg(o))>=0?this._g(i,!0,!0):oMt(this,o,!0),153),(s=o.Zj())>1||-1==s)return zz(zz(r,215).hl(t,!1),76)}else if(t.$j())return zz((i=this.Yg(t))>=0?this._g(i,!1,!0):oMt(this,t,!1),76);return new II(this,t)},TWt.yh=function(){return X9(this)},TWt.zh=function(){return(XZ(),eOe).S},TWt.Ah=function(){return dZ(this.zh())},TWt.Bh=function(t){vCt(this,t)},TWt.Ib=function(){return SOt(this)},mZ(d6t,"BasicEObjectImpl",97),pDt(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1}),TWt.Ch=function(t){return V9(this)[t]},TWt.Dh=function(t,e){OZ(V9(this),t,e)},TWt.Eh=function(t){OZ(V9(this),t,null)},TWt.Jg=function(){return zz(xot(this,4),126)},TWt.Kg=function(){throw qw(new wm)},TWt.Lg=function(){return 0!=(4&this.Db)},TWt.Pg=function(){throw qw(new wm)},TWt.Fh=function(t){hbt(this,2,t)},TWt.Rg=function(t,e){this.Db=e<<16|255&this.Db,this.Fh(t)},TWt.Tg=function(){return kV(this)},TWt.Vg=function(){return this.Db>>16},TWt.Wg=function(){var t;return XE(),null==(t=fQ(U$t(zz(xot(this,16),26)||this.zh())))?NOe:new XN(this,t)},TWt.Mg=function(){return 0==(1&this.Db)},TWt.Zg=function(){return zz(xot(this,128),1935)},TWt.$g=function(){return zz(xot(this,16),26)},TWt.dh=function(){return 0!=(32&this.Db)},TWt.eh=function(){return zz(xot(this,2),49)},TWt.kh=function(){return 0!=(64&this.Db)},TWt.ph=function(){throw qw(new wm)},TWt.qh=function(){return zz(xot(this,64),281)},TWt.th=function(t){hbt(this,16,t)},TWt.uh=function(t){hbt(this,128,t)},TWt.vh=function(t){hbt(this,64,t)},TWt.yh=function(){return fbt(this)},TWt.Db=0,mZ(d6t,"MinimalEObjectImpl",114),pDt(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt.Fh=function(t){this.Cb=t},TWt.eh=function(){return this.Cb},mZ(d6t,"MinimalEObjectImpl/Container",115),pDt(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Avt(this,t,e,n)},TWt.jh=function(t,e,n){return iTt(this,t,e,n)},TWt.lh=function(t){return y0(this,t)},TWt.sh=function(t,e){aut(this,t,e)},TWt.zh=function(){return IZt(),CMe},TWt.Bh=function(t){Yst(this,t)},TWt.Ve=function(){return dwt(this)},TWt.We=function(t){return tOt(this,t)},TWt.Xe=function(t){return C8(this,t)},TWt.Ye=function(t,e){return Qwt(this,t,e)},mZ(g6t,"EMapPropertyHolderImpl",1985),pDt(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ac),TWt._g=function(t,e,n){switch(t){case 0:return this.a;case 1:return this.b}return tmt(this,t,e,n)},TWt.lh=function(t){switch(t){case 0:return 0!=this.a;case 1:return 0!=this.b}return ywt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return void _nt(this,Uv(EB(e)));case 1:return void Ant(this,Uv(EB(e)))}xSt(this,t,e)},TWt.zh=function(){return IZt(),wMe},TWt.Bh=function(t){switch(t){case 0:return void _nt(this,0);case 1:return void Ant(this,0)}vCt(this,t)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):((t=new hN(SOt(this))).a+=" (x: ",m_(t,this.a),t.a+=", y: ",m_(t,this.b),t.a+=")",t.a)},TWt.a=0,TWt.b=0,mZ(g6t,"ElkBendPointImpl",567),pDt(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return $ht(this,t,e,n)},TWt.hh=function(t,e,n){return zAt(this,t,e,n)},TWt.jh=function(t,e,n){return ast(this,t,e,n)},TWt.lh=function(t){return Aot(this,t)},TWt.sh=function(t,e){Gkt(this,t,e)},TWt.zh=function(){return IZt(),xMe},TWt.Bh=function(t){uht(this,t)},TWt.zg=function(){return this.k},TWt.Ag=function(){return yK(this)},TWt.Ib=function(){return Qft(this)},TWt.k=null,mZ(g6t,"ElkGraphElementImpl",723),pDt(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Rdt(this,t,e,n)},TWt.lh=function(t){return fgt(this,t)},TWt.sh=function(t,e){Ykt(this,t,e)},TWt.zh=function(){return IZt(),TMe},TWt.Bh=function(t){Fgt(this,t)},TWt.Bg=function(){return this.f},TWt.Cg=function(){return this.g},TWt.Dg=function(){return this.i},TWt.Eg=function(){return this.j},TWt.Fg=function(t,e){ED(this,t,e)},TWt.Gg=function(t,e){TD(this,t,e)},TWt.Hg=function(t){Snt(this,t)},TWt.Ig=function(t){Int(this,t)},TWt.Ib=function(){return vTt(this)},TWt.f=0,TWt.g=0,TWt.i=0,TWt.j=0,mZ(g6t,"ElkShapeImpl",724),pDt(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Hmt(this,t,e,n)},TWt.hh=function(t,e,n){return bkt(this,t,e,n)},TWt.jh=function(t,e,n){return wkt(this,t,e,n)},TWt.lh=function(t){return Gct(this,t)},TWt.sh=function(t,e){NDt(this,t,e)},TWt.zh=function(){return IZt(),mMe},TWt.Bh=function(t){Bwt(this,t)},TWt.xg=function(){return!this.d&&(this.d=new lR(jMe,this,8,5)),this.d},TWt.yg=function(){return!this.e&&(this.e=new lR(jMe,this,7,4)),this.e},mZ(g6t,"ElkConnectableShapeImpl",725),pDt(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},rc),TWt.Qg=function(t){return Txt(this,t)},TWt._g=function(t,e,n){switch(t){case 3:return ZQ(this);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),this.b;case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),this.c;case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),this.a;case 7:return lN(),!this.b&&(this.b=new lR(RMe,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new lR(RMe,this,5,8)),this.c.i<=1));case 8:return lN(),!!eDt(this);case 9:return lN(),!!VIt(this);case 10:return lN(),!this.b&&(this.b=new lR(RMe,this,4,7)),0!=this.b.i&&(!this.c&&(this.c=new lR(RMe,this,5,8)),0!=this.c.i)}return $ht(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 3:return this.Cb&&(n=(i=this.Db>>16)>=0?Txt(this,n):this.Cb.ih(this,-1-i,null,n)),KB(this,zz(t,33),n);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),Qgt(this.b,t,n);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),Qgt(this.c,t,n);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),Qgt(this.a,t,n)}return zAt(this,t,e,n)},TWt.jh=function(t,e,n){switch(e){case 3:return KB(this,null,n);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),$wt(this.b,t,n);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),$wt(this.c,t,n);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),$wt(this.a,t,n)}return ast(this,t,e,n)},TWt.lh=function(t){switch(t){case 3:return!!ZQ(this);case 4:return!!this.b&&0!=this.b.i;case 5:return!!this.c&&0!=this.c.i;case 6:return!!this.a&&0!=this.a.i;case 7:return!this.b&&(this.b=new lR(RMe,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new lR(RMe,this,5,8)),this.c.i<=1));case 8:return eDt(this);case 9:return VIt(this);case 10:return!this.b&&(this.b=new lR(RMe,this,4,7)),0!=this.b.i&&(!this.c&&(this.c=new lR(RMe,this,5,8)),0!=this.c.i)}return Aot(this,t)},TWt.sh=function(t,e){switch(t){case 3:return void HLt(this,zz(e,33));case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),lHt(this.b),!this.b&&(this.b=new lR(RMe,this,4,7)),void wZ(this.b,zz(e,14));case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),lHt(this.c),!this.c&&(this.c=new lR(RMe,this,5,8)),void wZ(this.c,zz(e,14));case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),lHt(this.a),!this.a&&(this.a=new nY($Me,this,6,6)),void wZ(this.a,zz(e,14))}Gkt(this,t,e)},TWt.zh=function(){return IZt(),yMe},TWt.Bh=function(t){switch(t){case 3:return void HLt(this,null);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),void lHt(this.b);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),void lHt(this.c);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),void lHt(this.a)}uht(this,t)},TWt.Ib=function(){return dqt(this)},mZ(g6t,"ElkEdgeImpl",352),pDt(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},oc),TWt.Qg=function(t){return lxt(this,t)},TWt._g=function(t,e,n){switch(t){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new OL(PMe,this,5)),this.a;case 6:return KQ(this);case 7:return e?Smt(this):this.i;case 8:return e?Cmt(this):this.f;case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),this.g;case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),this.e;case 11:return this.d}return Avt(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?lxt(this,n):this.Cb.ih(this,-1-i,null,n)),XB(this,zz(t,79),n);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),Qgt(this.g,t,n);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),Qgt(this.e,t,n)}return zz(iet(zz(xot(this,16),26)||(IZt(),vMe),e),66).Nj().Qj(this,fbt(this),e-dZ((IZt(),vMe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 5:return!this.a&&(this.a=new OL(PMe,this,5)),$wt(this.a,t,n);case 6:return XB(this,null,n);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),$wt(this.g,t,n);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),$wt(this.e,t,n)}return iTt(this,t,e,n)},TWt.lh=function(t){switch(t){case 1:return 0!=this.j;case 2:return 0!=this.k;case 3:return 0!=this.b;case 4:return 0!=this.c;case 5:return!!this.a&&0!=this.a.i;case 6:return!!KQ(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&0!=this.g.i;case 10:return!!this.e&&0!=this.e.i;case 11:return null!=this.d}return y0(this,t)},TWt.sh=function(t,e){switch(t){case 1:return void Mnt(this,Uv(EB(e)));case 2:return void Ont(this,Uv(EB(e)));case 3:return void Ent(this,Uv(EB(e)));case 4:return void Dnt(this,Uv(EB(e)));case 5:return!this.a&&(this.a=new OL(PMe,this,5)),lHt(this.a),!this.a&&(this.a=new OL(PMe,this,5)),void wZ(this.a,zz(e,14));case 6:return void zLt(this,zz(e,79));case 7:return void Pit(this,zz(e,82));case 8:return void Nit(this,zz(e,82));case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),lHt(this.g),!this.g&&(this.g=new lR($Me,this,9,10)),void wZ(this.g,zz(e,14));case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),lHt(this.e),!this.e&&(this.e=new lR($Me,this,10,9)),void wZ(this.e,zz(e,14));case 11:return void ort(this,TB(e))}aut(this,t,e)},TWt.zh=function(){return IZt(),vMe},TWt.Bh=function(t){switch(t){case 1:return void Mnt(this,0);case 2:return void Ont(this,0);case 3:return void Ent(this,0);case 4:return void Dnt(this,0);case 5:return!this.a&&(this.a=new OL(PMe,this,5)),void lHt(this.a);case 6:return void zLt(this,null);case 7:return void Pit(this,null);case 8:return void Nit(this,null);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),void lHt(this.g);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),void lHt(this.e);case 11:return void ort(this,null)}Yst(this,t)},TWt.Ib=function(){return RMt(this)},TWt.b=0,TWt.c=0,TWt.d=null,TWt.j=0,TWt.k=0,mZ(g6t,"ElkEdgeSectionImpl",439),pDt(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),TWt._g=function(t,e,n){return 0==t?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab):Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){return 0==e?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n)):zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){return 0==e?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n)):zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){return 0==t?!!this.Ab&&0!=this.Ab.i:M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.oh=function(t){return hYt(this,t)},TWt.sh=function(t,e){if(0===t)return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.uh=function(t){hbt(this,128,t)},TWt.zh=function(){return wWt(),dOe},TWt.Bh=function(t){if(0===t)return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){this.Bb|=1},TWt.Hh=function(t){return Pjt(this,t)},TWt.Bb=0,mZ(d6t,"EModelElementImpl",150),pDt(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},Bh),TWt.Ih=function(t,e){return UUt(this,t,e)},TWt.Jh=function(t){var e,n,i,r;if(this.a!=Zet(t)||0!=(256&t.Bb))throw qw(new jv(v6t+t.zb+w6t));for(n=xV(t);0!=o4(n.a).i;){if(rvt(e=zz(iUt(n,0,aL(r=zz(Ket(o4(n.a),0),87).c,88)?zz(r,26):(wWt(),pOe)),26)))return zz(i=Zet(e).Nh().Jh(e),49).th(t),i;n=xV(e)}return"java.util.Map$Entry"==(null!=t.D?t.D:t.B)?new hH(t):new kq(t)},TWt.Kh=function(t,e){return BZt(this,t,e)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.a}return Y7(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t),e,n)},TWt.hh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 1:return this.a&&(n=zz(this.a,49).ih(this,4,UMe,n)),Jlt(this,zz(t,235),n)}return zz(iet(zz(xot(this,16),26)||(wWt(),lOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),lOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 1:return Jlt(this,null,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),lOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),lOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return!!this.a}return M3(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void BEt(this,zz(e,235))}Ndt(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t),e)},TWt.zh=function(){return wWt(),lOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void BEt(this,null)}Uht(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t))},mZ(d6t,"EFactoryImpl",704),pDt(k6t,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},sc),TWt.Ih=function(t,e){switch(t.yj()){case 12:return zz(e,146).tg();case 13:return qdt(e);default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 4:return new cc;case 6:return new ky;case 7:return new _y;case 8:return new rc;case 9:return new ac;case 10:return new oc;case 11:return new lc;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){switch(t.yj()){case 13:case 12:return null;default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(g6t,"ElkGraphFactoryImpl",k6t),pDt(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),TWt.Wg=function(){var t;return null==(t=fQ(U$t(zz(xot(this,16),26)||this.zh())))?(XE(),XE(),NOe):new WP(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.ne()}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void this.Lh(TB(e))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),gOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void this.Lh(null)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.ne=function(){return this.zb},TWt.Lh=function(t){Prt(this,t)},TWt.Ib=function(){return kht(this)},TWt.zb=null,mZ(d6t,"ENamedElementImpl",438),pDt(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},mV),TWt.Qg=function(t){return pxt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),this.rb;case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),this.vb;case 7:return e?this.Db>>16==7?zz(this.Cb,235):null:XQ(this)}return Y7(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 4:return this.sb&&(n=zz(this.sb,49).ih(this,1,qMe,n)),_ht(this,zz(t,471),n);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),Qgt(this.rb,t,n);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),Qgt(this.vb,t,n);case 7:return this.Cb&&(n=(i=this.Db>>16)>=0?pxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,7,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),mOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),mOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 4:return _ht(this,null,n);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),$wt(this.rb,t,n);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),$wt(this.vb,t,n);case 7:return Ejt(this,null,7,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),mOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),mOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.yb;case 3:return null!=this.xb;case 4:return!!this.sb;case 5:return!!this.rb&&0!=this.rb.i;case 6:return!!this.vb&&0!=this.vb.i;case 7:return!!XQ(this)}return M3(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t))},TWt.oh=function(t){return NNt(this,t)||hYt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Frt(this,TB(e));case 3:return void Brt(this,TB(e));case 4:return void rTt(this,zz(e,471));case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),lHt(this.rb),!this.rb&&(this.rb=new QG(this,qDe,this)),void wZ(this.rb,zz(e,14));case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),lHt(this.vb),!this.vb&&(this.vb=new nR(UMe,this,6,7)),void wZ(this.vb,zz(e,14))}Ndt(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t),e)},TWt.vh=function(t){var e,n;if(t&&this.rb)for(n=new DL(this.rb);n.e!=n.i.gc();)aL(e=kwt(n),351)&&(zz(e,351).w=null);hbt(this,64,t)},TWt.zh=function(){return wWt(),mOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Frt(this,null);case 3:return void Brt(this,null);case 4:return void rTt(this,null);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),void lHt(this.rb);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),void lHt(this.vb)}Uht(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t))},TWt.Gh=function(){Evt(this)},TWt.Mh=function(){return!this.rb&&(this.rb=new QG(this,qDe,this)),this.rb},TWt.Nh=function(){return this.sb},TWt.Oh=function(){return this.ub},TWt.Ph=function(){return this.xb},TWt.Qh=function(){return this.yb},TWt.Rh=function(t){this.ub=t},TWt.Ib=function(){var t;return 0!=(64&this.Db)?kht(this):((t=new hN(kht(this))).a+=" (nsURI: ",aM(t,this.yb),t.a+=", nsPrefix: ",aM(t,this.xb),t.a+=")",t.a)},TWt.xb=null,TWt.yb=null,mZ(d6t,"EPackageImpl",179),pDt(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},lDt),TWt.q=!1,TWt.r=!1;var WMe=!1;mZ(g6t,"ElkGraphPackageImpl",555),pDt(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},cc),TWt.Qg=function(t){return hxt(this,t)},TWt._g=function(t,e,n){switch(t){case 7:return VQ(this);case 8:return this.a}return Rdt(this,t,e,n)},TWt.hh=function(t,e,n){var i;return 7===e?(this.Cb&&(n=(i=this.Db>>16)>=0?hxt(this,n):this.Cb.ih(this,-1-i,null,n)),KU(this,zz(t,160),n)):zAt(this,t,e,n)},TWt.jh=function(t,e,n){return 7==e?KU(this,null,n):ast(this,t,e,n)},TWt.lh=function(t){switch(t){case 7:return!!VQ(this);case 8:return!yR("",this.a)}return fgt(this,t)},TWt.sh=function(t,e){switch(t){case 7:return void MNt(this,zz(e,160));case 8:return void Bit(this,TB(e))}Ykt(this,t,e)},TWt.zh=function(){return IZt(),kMe},TWt.Bh=function(t){switch(t){case 7:return void MNt(this,null);case 8:return void Bit(this,"")}Fgt(this,t)},TWt.Ib=function(){return oCt(this)},TWt.a="",mZ(g6t,"ElkLabelImpl",354),pDt(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ky),TWt.Qg=function(t){return Cxt(this,t)},TWt._g=function(t,e,n){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),this.c;case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),this.a;case 11:return QQ(this);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),this.b;case 13:return lN(),!this.a&&(this.a=new nY(YMe,this,10,11)),this.a.i>0}return Hmt(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),Qgt(this.c,t,n);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),Qgt(this.a,t,n);case 11:return this.Cb&&(n=(i=this.Db>>16)>=0?Cxt(this,n):this.Cb.ih(this,-1-i,null,n)),GF(this,zz(t,33),n);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),Qgt(this.b,t,n)}return bkt(this,t,e,n)},TWt.jh=function(t,e,n){switch(e){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),$wt(this.c,t,n);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),$wt(this.a,t,n);case 11:return GF(this,null,n);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),$wt(this.b,t,n)}return wkt(this,t,e,n)},TWt.lh=function(t){switch(t){case 9:return!!this.c&&0!=this.c.i;case 10:return!!this.a&&0!=this.a.i;case 11:return!!QQ(this);case 12:return!!this.b&&0!=this.b.i;case 13:return!this.a&&(this.a=new nY(YMe,this,10,11)),this.a.i>0}return Gct(this,t)},TWt.sh=function(t,e){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),lHt(this.c),!this.c&&(this.c=new nY(ZMe,this,9,9)),void wZ(this.c,zz(e,14));case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),lHt(this.a),!this.a&&(this.a=new nY(YMe,this,10,11)),void wZ(this.a,zz(e,14));case 11:return void eNt(this,zz(e,33));case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),lHt(this.b),!this.b&&(this.b=new nY(jMe,this,12,3)),void wZ(this.b,zz(e,14))}NDt(this,t,e)},TWt.zh=function(){return IZt(),_Me},TWt.Bh=function(t){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),void lHt(this.c);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),void lHt(this.a);case 11:return void eNt(this,null);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),void lHt(this.b)}Bwt(this,t)},TWt.Ib=function(){return YFt(this)},mZ(g6t,"ElkNodeImpl",239),pDt(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},_y),TWt.Qg=function(t){return fxt(this,t)},TWt._g=function(t,e,n){return 9==t?WQ(this):Hmt(this,t,e,n)},TWt.hh=function(t,e,n){var i;return 9===e?(this.Cb&&(n=(i=this.Db>>16)>=0?fxt(this,n):this.Cb.ih(this,-1-i,null,n)),VB(this,zz(t,33),n)):bkt(this,t,e,n)},TWt.jh=function(t,e,n){return 9==e?VB(this,null,n):wkt(this,t,e,n)},TWt.lh=function(t){return 9==t?!!WQ(this):Gct(this,t)},TWt.sh=function(t,e){9!==t?NDt(this,t,e):qLt(this,zz(e,33))},TWt.zh=function(){return IZt(),AMe},TWt.Bh=function(t){9!==t?Bwt(this,t):qLt(this,null)},TWt.Ib=function(){return ZFt(this)},mZ(g6t,"ElkPortImpl",186);var KMe=dH(q6t,"BasicEMap/Entry");pDt(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},lc),TWt.Fb=function(t){return this===t},TWt.cd=function(){return this.b},TWt.Hb=function(){return CN(this)},TWt.Uh=function(t){Fit(this,zz(t,146))},TWt._g=function(t,e,n){switch(t){case 0:return this.b;case 1:return this.c}return tmt(this,t,e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.b;case 1:return null!=this.c}return ywt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return void Fit(this,zz(e,146));case 1:return void $it(this,e)}xSt(this,t,e)},TWt.zh=function(){return IZt(),EMe},TWt.Bh=function(t){switch(t){case 0:return void Fit(this,null);case 1:return void $it(this,null)}vCt(this,t)},TWt.Sh=function(){var t;return-1==this.a&&(t=this.b,this.a=t?eut(t):0),this.a},TWt.dd=function(){return this.c},TWt.Th=function(t){this.a=t},TWt.ed=function(t){var e;return e=this.c,$it(this,t),e},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):(cM(cM(cM(t=new Sx,this.b?this.b.tg():YWt),i1t),xN(this.c)),t.a)},TWt.a=-1,TWt.c=null;var XMe,VMe,QMe,JMe,tDe,eDe,nDe,iDe,rDe=mZ(g6t,"ElkPropertyToValueMapEntryImpl",1092);pDt(984,1,{},dc),mZ(G6t,"JsonAdapter",984),pDt(210,60,qKt,nx),mZ(G6t,"JsonImportException",210),pDt(857,1,{},bxt),mZ(G6t,"JsonImporter",857),pDt(891,1,{},oI),mZ(G6t,"JsonImporter/lambda$0$Type",891),pDt(892,1,{},sI),mZ(G6t,"JsonImporter/lambda$1$Type",892),pDt(900,1,{},Ob),mZ(G6t,"JsonImporter/lambda$10$Type",900),pDt(902,1,{},cI),mZ(G6t,"JsonImporter/lambda$11$Type",902),pDt(903,1,{},uI),mZ(G6t,"JsonImporter/lambda$12$Type",903),pDt(909,1,{},hX),mZ(G6t,"JsonImporter/lambda$13$Type",909),pDt(908,1,{},lX),mZ(G6t,"JsonImporter/lambda$14$Type",908),pDt(904,1,{},lI),mZ(G6t,"JsonImporter/lambda$15$Type",904),pDt(905,1,{},hI),mZ(G6t,"JsonImporter/lambda$16$Type",905),pDt(906,1,{},fI),mZ(G6t,"JsonImporter/lambda$17$Type",906),pDt(907,1,{},dI),mZ(G6t,"JsonImporter/lambda$18$Type",907),pDt(912,1,{},Lb),mZ(G6t,"JsonImporter/lambda$19$Type",912),pDt(893,1,{},Nb),mZ(G6t,"JsonImporter/lambda$2$Type",893),pDt(910,1,{},Pb),mZ(G6t,"JsonImporter/lambda$20$Type",910),pDt(911,1,{},Bb),mZ(G6t,"JsonImporter/lambda$21$Type",911),pDt(915,1,{},Fb),mZ(G6t,"JsonImporter/lambda$22$Type",915),pDt(913,1,{},Rb),mZ(G6t,"JsonImporter/lambda$23$Type",913),pDt(914,1,{},jb),mZ(G6t,"JsonImporter/lambda$24$Type",914),pDt(917,1,{},$b),mZ(G6t,"JsonImporter/lambda$25$Type",917),pDt(916,1,{},zb),mZ(G6t,"JsonImporter/lambda$26$Type",916),pDt(918,1,dKt,gI),TWt.td=function(t){_7(this.b,this.a,TB(t))},mZ(G6t,"JsonImporter/lambda$27$Type",918),pDt(919,1,dKt,pI),TWt.td=function(t){A7(this.b,this.a,TB(t))},mZ(G6t,"JsonImporter/lambda$28$Type",919),pDt(920,1,{},bI),mZ(G6t,"JsonImporter/lambda$29$Type",920),pDt(896,1,{},qb),mZ(G6t,"JsonImporter/lambda$3$Type",896),pDt(921,1,{},wI),mZ(G6t,"JsonImporter/lambda$30$Type",921),pDt(922,1,{},Hb),mZ(G6t,"JsonImporter/lambda$31$Type",922),pDt(923,1,{},Ub),mZ(G6t,"JsonImporter/lambda$32$Type",923),pDt(924,1,{},Gb),mZ(G6t,"JsonImporter/lambda$33$Type",924),pDt(925,1,{},Yb),mZ(G6t,"JsonImporter/lambda$34$Type",925),pDt(859,1,{},Zb),mZ(G6t,"JsonImporter/lambda$35$Type",859),pDt(929,1,{},Ez),mZ(G6t,"JsonImporter/lambda$36$Type",929),pDt(926,1,dKt,Wb),TWt.td=function(t){V4(this.a,zz(t,469))},mZ(G6t,"JsonImporter/lambda$37$Type",926),pDt(927,1,dKt,TI),TWt.td=function(t){fM(this.a,this.b,zz(t,202))},mZ(G6t,"JsonImporter/lambda$38$Type",927),pDt(928,1,dKt,CI),TWt.td=function(t){dM(this.a,this.b,zz(t,202))},mZ(G6t,"JsonImporter/lambda$39$Type",928),pDt(894,1,{},Kb),mZ(G6t,"JsonImporter/lambda$4$Type",894),pDt(930,1,dKt,Xb),TWt.td=function(t){Q4(this.a,zz(t,8))},mZ(G6t,"JsonImporter/lambda$40$Type",930),pDt(895,1,{},Vb),mZ(G6t,"JsonImporter/lambda$5$Type",895),pDt(899,1,{},Qb),mZ(G6t,"JsonImporter/lambda$6$Type",899),pDt(897,1,{},Jb),mZ(G6t,"JsonImporter/lambda$7$Type",897),pDt(898,1,{},tw),mZ(G6t,"JsonImporter/lambda$8$Type",898),pDt(901,1,{},ew),mZ(G6t,"JsonImporter/lambda$9$Type",901),pDt(948,1,dKt,nw),TWt.td=function(t){tW(this.a,new UZ(TB(t)))},mZ(G6t,"JsonMetaDataConverter/lambda$0$Type",948),pDt(949,1,dKt,iw),TWt.td=function(t){jZ(this.a,zz(t,237))},mZ(G6t,"JsonMetaDataConverter/lambda$1$Type",949),pDt(950,1,dKt,rw),TWt.td=function(t){e1(this.a,zz(t,149))},mZ(G6t,"JsonMetaDataConverter/lambda$2$Type",950),pDt(951,1,dKt,aw),TWt.td=function(t){$Z(this.a,zz(t,175))},mZ(G6t,"JsonMetaDataConverter/lambda$3$Type",951),pDt(237,22,{3:1,35:1,22:1,237:1},EI);var aDe,oDe=qnt(MQt,"GraphFeature",237,Zte,jet,wz);pDt(13,1,{35:1,146:1},sw,iF,OM,ZD),TWt.wd=function(t){return wL(this,zz(t,146))},TWt.Fb=function(t){return _V(this,t)},TWt.wg=function(){return vwt(this)},TWt.tg=function(){return this.b},TWt.Hb=function(){return ymt(this.b)},TWt.Ib=function(){return this.b},mZ(MQt,"Property",13),pDt(818,1,TVt,ow),TWt.ue=function(t,e){return $ft(this,zz(t,94),zz(e,94))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(MQt,"PropertyHolderComparator",818),pDt(695,1,VWt,uw),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return D7(this)},TWt.Qb=function(){s_()},TWt.Ob=function(){return!!this.a},mZ(o8t,"ElkGraphUtil/AncestorIterator",695);var sDe=dH(q6t,"EList");pDt(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1}),TWt.Vc=function(t,e){lft(this,t,e)},TWt.Fc=function(t){return h7(this,t)},TWt.Wc=function(t,e){return uct(this,t,e)},TWt.Gc=function(t){return wZ(this,t)},TWt.Zh=function(){return new oP(this)},TWt.$h=function(){return new sP(this)},TWt._h=function(t){return lit(this,t)},TWt.ai=function(){return!0},TWt.bi=function(t,e){},TWt.ci=function(){},TWt.di=function(t,e){L8(this,t,e)},TWt.ei=function(t,e,n){},TWt.fi=function(t,e){},TWt.gi=function(t,e,n){},TWt.Fb=function(t){return VBt(this,t)},TWt.Hb=function(){return Tst(this)},TWt.hi=function(){return!1},TWt.Kc=function(){return new DL(this)},TWt.Yc=function(){return new aP(this)},TWt.Zc=function(t){var e;if(e=this.gc(),t<0||t>e)throw qw(new eR(t,e));return new UY(this,t)},TWt.ji=function(t,e){this.ii(t,this.Xc(e))},TWt.Mc=function(t){return utt(this,t)},TWt.li=function(t,e){return e},TWt._c=function(t,e){return umt(this,t,e)},TWt.Ib=function(){return Jdt(this)},TWt.ni=function(){return!0},TWt.oi=function(t,e){return But(this,e)},mZ(q6t,"AbstractEList",67),pDt(63,67,h8t,bc,wet,_at),TWt.Vh=function(t,e){return qAt(this,t,e)},TWt.Wh=function(t){return gyt(this,t)},TWt.Xh=function(t,e){Mht(this,t,e)},TWt.Yh=function(t){a6(this,t)},TWt.pi=function(t){return $7(this,t)},TWt.$b=function(){o6(this)},TWt.Hc=function(t){return Ckt(this,t)},TWt.Xb=function(t){return Ket(this,t)},TWt.qi=function(t){var e,n,i;++this.j,t>(n=null==this.g?0:this.g.length)&&(i=this.g,(e=n+(n/2|0)+4)=0&&(this.$c(e),!0)},TWt.mi=function(t,e){return this.Ui(t,this.oi(t,e))},TWt.gc=function(){return this.Vi()},TWt.Pc=function(){return this.Wi()},TWt.Qc=function(t){return this.Xi(t)},TWt.Ib=function(){return this.Yi()},mZ(q6t,"DelegatingEList",1995),pDt(1996,1995,e7t),TWt.Vh=function(t,e){return c$t(this,t,e)},TWt.Wh=function(t){return this.Vh(this.Vi(),t)},TWt.Xh=function(t,e){iDt(this,t,e)},TWt.Yh=function(t){DMt(this,t)},TWt.ai=function(){return!this.bj()},TWt.$b=function(){yHt(this)},TWt.Zi=function(t,e,n,i,r){return new NV(this,t,e,n,i,r)},TWt.$i=function(t){got(this.Ai(),t)},TWt._i=function(){return null},TWt.aj=function(){return-1},TWt.Ai=function(){return null},TWt.bj=function(){return!1},TWt.cj=function(t,e){return e},TWt.dj=function(t,e){return e},TWt.ej=function(){return!1},TWt.fj=function(){return!this.Ri()},TWt.ii=function(t,e){var n,i;return this.ej()?(i=this.fj(),n=OEt(this,t,e),this.$i(this.Zi(7,rft(e),n,t,i)),n):OEt(this,t,e)},TWt.$c=function(t){var e,n,i,r;return this.ej()?(n=null,i=this.fj(),e=this.Zi(4,r=gH(this,t),null,t,i),this.bj()&&r?(n=this.dj(r,n))?(n.Ei(e),n.Fi()):this.$i(e):n?(n.Ei(e),n.Fi()):this.$i(e),r):(r=gH(this,t),this.bj()&&r&&(n=this.dj(r,null))&&n.Fi(),r)},TWt.mi=function(t,e){return u$t(this,t,e)},mZ(r6t,"DelegatingNotifyingListImpl",1996),pDt(143,1,n7t),TWt.Ei=function(t){return j_t(this,t)},TWt.Fi=function(){O9(this)},TWt.xi=function(){return this.d},TWt._i=function(){return null},TWt.gj=function(){return null},TWt.yi=function(t){return-1},TWt.zi=function(){return RPt(this)},TWt.Ai=function(){return null},TWt.Bi=function(){return jPt(this)},TWt.Ci=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},TWt.hj=function(){return!1},TWt.Di=function(t){var e,n,i,r,a,o,s,c;switch(this.d){case 1:case 2:switch(t.xi()){case 1:case 2:if(UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null))return this.g=t.zi(),1==t.xi()&&(this.d=1),!0}case 4:if(4===t.xi()&&UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null))return o=nUt(this),a=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,i=t.Ci(),this.d=6,c=new wet(2),a<=i?(h7(c,this.n),h7(c,t.Bi()),this.g=Sst(Ux(DNe,1),hXt,25,15,[this.o=a,i+1])):(h7(c,t.Bi()),h7(c,this.n),this.g=Sst(Ux(DNe,1),hXt,25,15,[this.o=i,a])),this.n=c,o||(this.o=-2-this.o-1),!0;break;case 6:if(4===t.xi()&&UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null)){for(o=nUt(this),i=t.Ci(),s=zz(this.g,48),n=P8(DNe,hXt,25,s.length+1,15,1),e=0;e>>0).toString(16))).a+=" (eventType: ",this.d){case 1:n.a+="SET";break;case 2:n.a+="UNSET";break;case 3:n.a+="ADD";break;case 5:n.a+="ADD_MANY";break;case 4:n.a+="REMOVE";break;case 6:n.a+="REMOVE_MANY";break;case 7:n.a+="MOVE";break;case 8:n.a+="REMOVING_ADAPTER";break;case 9:n.a+="RESOLVE";break;default:y_(n,this.d)}if(dRt(this)&&(n.a+=", touch: true"),n.a+=", position: ",y_(n,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),n.a+=", notifier: ",rM(n,this.Ai()),n.a+=", feature: ",rM(n,this._i()),n.a+=", oldValue: ",rM(n,jPt(this)),n.a+=", newValue: ",6==this.d&&aL(this.g,48)){for(e=zz(this.g,48),n.a+="[",t=0;t10?(this.b&&this.c.j==this.a||(this.b=new OH(this),this.a=this.j),$A(this.b,t)):Ckt(this,t)},TWt.ni=function(){return!0},TWt.a=0,mZ(q6t,"AbstractEList/1",953),pDt(295,73,PXt,eR),mZ(q6t,"AbstractEList/BasicIndexOutOfBoundsException",295),pDt(40,1,VWt,DL),TWt.Nb=function(t){hY(this,t)},TWt.mj=function(){if(this.i.j!=this.f)throw qw(new mm)},TWt.nj=function(){return kwt(this)},TWt.Ob=function(){return this.e!=this.i.gc()},TWt.Pb=function(){return this.nj()},TWt.Qb=function(){Vkt(this)},TWt.e=0,TWt.f=0,TWt.g=-1,mZ(q6t,"AbstractEList/EIterator",40),pDt(278,40,oKt,aP,UY),TWt.Qb=function(){Vkt(this)},TWt.Rb=function(t){upt(this,t)},TWt.oj=function(){var t;try{return t=this.d.Xb(--this.e),this.mj(),this.g=this.e,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.pj=function(t){kyt(this,t)},TWt.Sb=function(){return 0!=this.e},TWt.Tb=function(){return this.e},TWt.Ub=function(){return this.oj()},TWt.Vb=function(){return this.e-1},TWt.Wb=function(t){this.pj(t)},mZ(q6t,"AbstractEList/EListIterator",278),pDt(341,40,VWt,oP),TWt.nj=function(){return _wt(this)},TWt.Qb=function(){throw qw(new wm)},mZ(q6t,"AbstractEList/NonResolvingEIterator",341),pDt(385,278,oKt,sP,FR),TWt.Rb=function(t){throw qw(new wm)},TWt.nj=function(){var t;try{return t=this.c.ki(this.e),this.mj(),this.g=this.e++,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.oj=function(){var t;try{return t=this.c.ki(--this.e),this.mj(),this.g=this.e,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.Qb=function(){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(q6t,"AbstractEList/NonResolvingEListIterator",385),pDt(1982,67,a7t),TWt.Vh=function(t,e){var n,i,r,a,o,s,c,u,l;if(0!=(i=e.gc())){for(n=Sut(this,(u=null==(c=zz(xot(this.a,4),126))?0:c.length)+i),(l=u-t)>0&&sqt(c,t,n,t+i,l),s=e.Kc(),a=0;an)throw qw(new eR(t,n));return new zW(this,t)},TWt.$b=function(){var t,e;++this.j,e=null==(t=zz(xot(this.a,4),126))?0:t.length,zbt(this,null),L8(this,e,t)},TWt.Hc=function(t){var e,n,i,r;if(null!=(e=zz(xot(this.a,4),126)))if(null!=t){for(i=0,r=(n=e).length;i=(n=null==(e=zz(xot(this.a,4),126))?0:e.length))throw qw(new eR(t,n));return e[t]},TWt.Xc=function(t){var e,n,i;if(null!=(e=zz(xot(this.a,4),126)))if(null!=t){for(n=0,i=e.length;nn)throw qw(new eR(t,n));return new $W(this,t)},TWt.ii=function(t,e){var n,i,r;if(t>=(r=null==(n=Lpt(this))?0:n.length))throw qw(new Dv(c8t+t+u8t+r));if(e>=r)throw qw(new Dv(l8t+e+u8t+r));return i=n[e],t!=e&&(t0&&sqt(t,0,e,0,n),e},TWt.Qc=function(t){var e,n;return(n=null==(e=zz(xot(this.a,4),126))?0:e.length)>0&&(t.lengthn&&OZ(t,n,null),t},mZ(q6t,"ArrayDelegatingEList",1982),pDt(1038,40,VWt,E5),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},TWt.Qb=function(){Vkt(this),this.a=zz(xot(this.b.a,4),126)},mZ(q6t,"ArrayDelegatingEList/EIterator",1038),pDt(706,278,oKt,XG,$W),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},TWt.pj=function(t){kyt(this,t),this.a=zz(xot(this.b.a,4),126)},TWt.Qb=function(){Vkt(this),this.a=zz(xot(this.b.a,4),126)},mZ(q6t,"ArrayDelegatingEList/EListIterator",706),pDt(1039,341,VWt,T5),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},mZ(q6t,"ArrayDelegatingEList/NonResolvingEIterator",1039),pDt(707,385,oKt,VG,zW),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},mZ(q6t,"ArrayDelegatingEList/NonResolvingEListIterator",707),pDt(606,295,PXt,LM),mZ(q6t,"BasicEList/BasicIndexOutOfBoundsException",606),pDt(696,63,h8t,BI),TWt.Vc=function(t,e){throw qw(new wm)},TWt.Fc=function(t){throw qw(new wm)},TWt.Wc=function(t,e){throw qw(new wm)},TWt.Gc=function(t){throw qw(new wm)},TWt.$b=function(){throw qw(new wm)},TWt.qi=function(t){throw qw(new wm)},TWt.Kc=function(){return this.Zh()},TWt.Yc=function(){return this.$h()},TWt.Zc=function(t){return this._h(t)},TWt.ii=function(t,e){throw qw(new wm)},TWt.ji=function(t,e){throw qw(new wm)},TWt.$c=function(t){throw qw(new wm)},TWt.Mc=function(t){throw qw(new wm)},TWt._c=function(t,e){throw qw(new wm)},mZ(q6t,"BasicEList/UnmodifiableEList",696),pDt(705,1,{3:1,20:1,14:1,15:1,58:1,589:1}),TWt.Vc=function(t,e){XO(this,t,zz(e,42))},TWt.Fc=function(t){return oB(this,zz(t,42))},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return zz(Ket(this.c,t),133)},TWt.ii=function(t,e){return zz(this.c.ii(t,e),42)},TWt.ji=function(t,e){VO(this,t,zz(e,42))},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return zz(this.c.$c(t),42)},TWt._c=function(t,e){return sZ(this,t,zz(e,42))},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.Wc=function(t,e){return this.c.Wc(t,e)},TWt.Gc=function(t){return this.c.Gc(t)},TWt.$b=function(){this.c.$b()},TWt.Hc=function(t){return this.c.Hc(t)},TWt.Ic=function(t){return ust(this.c,t)},TWt.qj=function(){var t,e;if(null==this.d){for(this.d=P8(cDe,o7t,63,2*this.f+1,0,1),e=this.e,this.f=0,t=this.c.Kc();t.e!=t.i.gc();)Mmt(this,zz(t.nj(),133));this.e=e}},TWt.Fb=function(t){return NR(this,t)},TWt.Hb=function(){return Tst(this.c)},TWt.Xc=function(t){return this.c.Xc(t)},TWt.rj=function(){this.c=new lw(this)},TWt.dc=function(){return 0==this.f},TWt.Kc=function(){return this.c.Kc()},TWt.Yc=function(){return this.c.Yc()},TWt.Zc=function(t){return this.c.Zc(t)},TWt.sj=function(){return D8(this)},TWt.tj=function(t,e,n){return new Tz(t,e,n)},TWt.uj=function(){return new mc},TWt.Mc=function(t){return hit(this,t)},TWt.gc=function(){return this.f},TWt.bd=function(t,e){return new u1(this.c,t,e)},TWt.Pc=function(){return this.c.Pc()},TWt.Qc=function(t){return this.c.Qc(t)},TWt.Ib=function(){return Jdt(this.c)},TWt.e=0,TWt.f=0,mZ(q6t,"BasicEMap",705),pDt(1033,63,h8t,lw),TWt.bi=function(t,e){Dm(this,zz(e,133))},TWt.ei=function(t,e,n){var i;++(i=this,zz(e,133),i).a.e},TWt.fi=function(t,e){Om(this,zz(e,133))},TWt.gi=function(t,e,n){KN(this,zz(e,133),zz(n,133))},TWt.di=function(t,e){sot(this.a)},mZ(q6t,"BasicEMap/1",1033),pDt(1034,63,h8t,mc),TWt.ri=function(t){return P8(mDe,s7t,612,t,0,1)},mZ(q6t,"BasicEMap/2",1034),pDt(1035,eKt,nKt,hw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){return apt(this.a,t)},TWt.Kc=function(){return 0==this.a.f?(pB(),wDe.a):new zk(this.a)},TWt.Mc=function(t){var e;return e=this.a.f,Kpt(this.a,t),this.a.f!=e},TWt.gc=function(){return this.a.f},mZ(q6t,"BasicEMap/3",1035),pDt(1036,28,tKt,fw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){return QBt(this.a,t)},TWt.Kc=function(){return 0==this.a.f?(pB(),wDe.a):new qk(this.a)},TWt.gc=function(){return this.a.f},mZ(q6t,"BasicEMap/4",1036),pDt(1037,eKt,nKt,dw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){var e,n,i,r,a,o,s,c,u;if(this.a.f>0&&aL(t,42)&&(this.a.qj(),r=null==(s=(c=zz(t,42)).cd())?0:eut(s),a=nF(this.a,r),e=this.a.d[a]))for(n=zz(e.g,367),u=e.i,o=0;o"+this.c},TWt.a=0;var wDe,mDe=mZ(q6t,"BasicEMap/EntryImpl",612);pDt(536,1,{},uc),mZ(q6t,"BasicEMap/View",536),pDt(768,1,{}),TWt.Fb=function(t){return PDt((TX(),lne),t)},TWt.Hb=function(){return zct((TX(),lne))},TWt.Ib=function(){return NEt((TX(),lne))},mZ(q6t,"ECollections/BasicEmptyUnmodifiableEList",768),pDt(1312,1,oKt,yc),TWt.Nb=function(t){hY(this,t)},TWt.Rb=function(t){throw qw(new wm)},TWt.Ob=function(){return!1},TWt.Sb=function(){return!1},TWt.Pb=function(){throw qw(new vm)},TWt.Tb=function(){return 0},TWt.Ub=function(){throw qw(new vm)},TWt.Vb=function(){return-1},TWt.Qb=function(){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(q6t,"ECollections/BasicEmptyUnmodifiableEList/1",1312),pDt(1310,768,{20:1,14:1,15:1,58:1},Ay),TWt.Vc=function(t,e){N_()},TWt.Fc=function(t){return P_()},TWt.Wc=function(t,e){return B_()},TWt.Gc=function(t){return F_()},TWt.$b=function(){R_()},TWt.Hc=function(t){return!1},TWt.Ic=function(t){return!1},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return vM((TX(),t)),null},TWt.Xc=function(t){return-1},TWt.dc=function(){return!0},TWt.Kc=function(){return this.a},TWt.Yc=function(){return this.a},TWt.Zc=function(t){return this.a},TWt.ii=function(t,e){return j_()},TWt.ji=function(t,e){$_()},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return z_()},TWt.Mc=function(t){return q_()},TWt._c=function(t,e){return H_()},TWt.gc=function(){return 0},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.bd=function(t,e){return TX(),new u1(lne,t,e)},TWt.Pc=function(){return aG((TX(),lne))},TWt.Qc=function(t){return TX(),Ayt(lne,t)},mZ(q6t,"ECollections/EmptyUnmodifiableEList",1310),pDt(1311,768,{20:1,14:1,15:1,58:1,589:1},Ey),TWt.Vc=function(t,e){N_()},TWt.Fc=function(t){return P_()},TWt.Wc=function(t,e){return B_()},TWt.Gc=function(t){return F_()},TWt.$b=function(){R_()},TWt.Hc=function(t){return!1},TWt.Ic=function(t){return!1},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return vM((TX(),t)),null},TWt.Xc=function(t){return-1},TWt.dc=function(){return!0},TWt.Kc=function(){return this.a},TWt.Yc=function(){return this.a},TWt.Zc=function(t){return this.a},TWt.ii=function(t,e){return j_()},TWt.ji=function(t,e){$_()},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return z_()},TWt.Mc=function(t){return q_()},TWt._c=function(t,e){return H_()},TWt.gc=function(){return 0},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.bd=function(t,e){return TX(),new u1(lne,t,e)},TWt.Pc=function(){return aG((TX(),lne))},TWt.Qc=function(t){return TX(),Ayt(lne,t)},TWt.sj=function(){return TX(),TX(),hne},mZ(q6t,"ECollections/EmptyUnmodifiableEMap",1311);var yDe,vDe=dH(q6t,"Enumerator");pDt(281,1,{281:1},aFt),TWt.Fb=function(t){var e;return this===t||!!aL(t,281)&&(e=zz(t,281),this.f==e.f&&mU(this.i,e.i)&&wU(this.a,0!=(256&this.f)?0!=(256&e.f)?e.a:null:0!=(256&e.f)?null:e.a)&&wU(this.d,e.d)&&wU(this.g,e.g)&&wU(this.e,e.e)&&Cwt(this,e))},TWt.Hb=function(){return this.f},TWt.Ib=function(){return Tjt(this)},TWt.f=0;var xDe,kDe,_De,ADe=0,EDe=0,TDe=0,CDe=0,SDe=0,IDe=0,MDe=0,DDe=0,ODe=0,LDe=0,NDe=0,PDe=0,BDe=0;mZ(q6t,"URI",281),pDt(1091,43,nVt,Ty),TWt.zc=function(t,e){return zz(yJ(this,TB(t),zz(e,281)),281)},mZ(q6t,"URI/URICache",1091),pDt(497,63,h8t,fc,rU),TWt.hi=function(){return!0},mZ(q6t,"UniqueEList",497),pDt(581,60,qKt,L9),mZ(q6t,"WrappedException",581);var FDe,RDe=dH(U5t,l7t),jDe=dH(U5t,h7t),$De=dH(U5t,f7t),zDe=dH(U5t,d7t),qDe=dH(U5t,g7t),HDe=dH(U5t,"EClass"),UDe=dH(U5t,"EDataType");pDt(1183,43,nVt,Cy),TWt.xc=function(t){return ZI(t)?TQ(this,t):HI(DV(this.f,t))},mZ(U5t,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1183);var GDe,YDe,ZDe=dH(U5t,"EEnum"),WDe=dH(U5t,p7t),KDe=dH(U5t,b7t),XDe=dH(U5t,w7t),VDe=dH(U5t,m7t),QDe=dH(U5t,y7t);pDt(1029,1,{},hc),TWt.Ib=function(){return"NIL"},mZ(U5t,"EStructuralFeature/Internal/DynamicValueHolder/1",1029),pDt(1028,43,nVt,Sy),TWt.xc=function(t){return ZI(t)?TQ(this,t):HI(DV(this.f,t))},mZ(U5t,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1028);var JDe,tOe,eOe,nOe,iOe,rOe,aOe,oOe,sOe,cOe,uOe,lOe,hOe,fOe,dOe,gOe,pOe,bOe,wOe,mOe,yOe,vOe,xOe,kOe,_Oe,AOe,EOe,TOe,COe,SOe,IOe,MOe=dH(U5t,v7t),DOe=dH(U5t,"EValidator/PatternMatcher"),OOe=dH(x7t,"FeatureMap/Entry");pDt(535,1,{72:1},SI),TWt.ak=function(){return this.a},TWt.dd=function(){return this.b},mZ(d6t,"BasicEObjectImpl/1",535),pDt(1027,1,k7t,II),TWt.Wj=function(t){return K5(this.a,this.b,t)},TWt.fj=function(){return JQ(this.a,this.b)},TWt.Wb=function(t){NQ(this.a,this.b,t)},TWt.Xj=function(){CW(this.a,this.b)},mZ(d6t,"BasicEObjectImpl/4",1027),pDt(1983,1,{108:1}),TWt.bk=function(t){this.e=0==t?EOe:P8(Ote,HWt,1,t,5,1)},TWt.Ch=function(t){return this.e[t]},TWt.Dh=function(t,e){this.e[t]=e},TWt.Eh=function(t){this.e[t]=null},TWt.ck=function(){return this.c},TWt.dk=function(){throw qw(new wm)},TWt.ek=function(){throw qw(new wm)},TWt.fk=function(){return this.d},TWt.gk=function(){return null!=this.e},TWt.hk=function(t){this.c=t},TWt.ik=function(t){throw qw(new wm)},TWt.jk=function(t){throw qw(new wm)},TWt.kk=function(t){this.d=t},mZ(d6t,"BasicEObjectImpl/EPropertiesHolderBaseImpl",1983),pDt(185,1983,{108:1},Fh),TWt.dk=function(){return this.a},TWt.ek=function(){return this.b},TWt.ik=function(t){this.a=t},TWt.jk=function(t){this.b=t},mZ(d6t,"BasicEObjectImpl/EPropertiesHolderImpl",185),pDt(506,97,f6t,vc),TWt.Kg=function(){return this.f},TWt.Pg=function(){return this.k},TWt.Rg=function(t,e){this.g=t,this.i=e},TWt.Tg=function(){return 0==(2&this.j)?this.zh():this.ph().ck()},TWt.Vg=function(){return this.i},TWt.Mg=function(){return 0!=(1&this.j)},TWt.eh=function(){return this.g},TWt.kh=function(){return 0!=(4&this.j)},TWt.ph=function(){return!this.k&&(this.k=new Fh),this.k},TWt.th=function(t){this.ph().hk(t),t?this.j|=2:this.j&=-3},TWt.vh=function(t){this.ph().jk(t),t?this.j|=4:this.j&=-5},TWt.zh=function(){return(XZ(),eOe).S},TWt.i=0,TWt.j=1,mZ(d6t,"EObjectImpl",506),pDt(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},kq),TWt.Ch=function(t){return this.e[t]},TWt.Dh=function(t,e){this.e[t]=e},TWt.Eh=function(t){this.e[t]=null},TWt.Tg=function(){return this.d},TWt.Yg=function(t){return Ogt(this.d,t)},TWt.$g=function(){return this.d},TWt.dh=function(){return null!=this.e},TWt.ph=function(){return!this.k&&(this.k=new xc),this.k},TWt.th=function(t){this.d=t},TWt.yh=function(){var t;return null==this.e&&(t=dZ(this.d),this.e=0==t?TOe:P8(Ote,HWt,1,t,5,1)),this},TWt.Ah=function(){return 0},mZ(d6t,"DynamicEObjectImpl",780),pDt(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},hH),TWt.Fb=function(t){return this===t},TWt.Hb=function(){return CN(this)},TWt.th=function(t){this.d=t,this.b=PNt(t,"key"),this.c=PNt(t,A6t)},TWt.Sh=function(){var t;return-1==this.a&&(t=Q9(this,this.b),this.a=null==t?0:eut(t)),this.a},TWt.cd=function(){return Q9(this,this.b)},TWt.dd=function(){return Q9(this,this.c)},TWt.Th=function(t){this.a=t},TWt.Uh=function(t){NQ(this,this.b,t)},TWt.ed=function(t){var e;return e=Q9(this,this.c),NQ(this,this.c,t),e},TWt.a=0,mZ(d6t,"DynamicEObjectImpl/BasicEMapEntry",1376),pDt(1377,1,{108:1},xc),TWt.bk=function(t){throw qw(new wm)},TWt.Ch=function(t){throw qw(new wm)},TWt.Dh=function(t,e){throw qw(new wm)},TWt.Eh=function(t){throw qw(new wm)},TWt.ck=function(){throw qw(new wm)},TWt.dk=function(){return this.a},TWt.ek=function(){return this.b},TWt.fk=function(){return this.c},TWt.gk=function(){throw qw(new wm)},TWt.hk=function(t){throw qw(new wm)},TWt.ik=function(t){this.a=t},TWt.jk=function(t){this.b=t},TWt.kk=function(t){this.c=t},mZ(d6t,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1377),pDt(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},kc),TWt.Qg=function(t){return gxt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.d;case 2:return n?(!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),this.b):(!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),D8(this.b));case 3:return dJ(this);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),this.a;case 5:return!this.c&&(this.c=new FL(LMe,this,5)),this.c}return Y7(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 3:return this.Cb&&(n=(i=this.Db>>16)>=0?gxt(this,n):this.Cb.ih(this,-1-i,null,n)),XU(this,zz(t,147),n)}return zz(iet(zz(xot(this,16),26)||(wWt(),nOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),nOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),zR(this.b,t,n);case 3:return XU(this,null,n);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),nOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),nOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.d;case 2:return!!this.b&&0!=this.b.f;case 3:return!!dJ(this);case 4:return!!this.a&&0!=this.a.i;case 5:return!!this.c&&0!=this.c.i}return M3(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void wH(this,TB(e));case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),void not(this.b,e);case 3:return void DNt(this,zz(e,147));case 4:return!this.a&&(this.a=new OL(LMe,this,4)),lHt(this.a),!this.a&&(this.a=new OL(LMe,this,4)),void wZ(this.a,zz(e,14));case 5:return!this.c&&(this.c=new FL(LMe,this,5)),lHt(this.c),!this.c&&(this.c=new FL(LMe,this,5)),void wZ(this.c,zz(e,14))}Ndt(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t),e)},TWt.zh=function(){return wWt(),nOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void qit(this,null);case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),void this.b.c.$b();case 3:return void DNt(this,null);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),void lHt(this.a);case 5:return!this.c&&(this.c=new FL(LMe,this,5)),void lHt(this.c)}Uht(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t))},TWt.Ib=function(){return Xht(this)},TWt.d=null,mZ(d6t,"EAnnotationImpl",510),pDt(151,705,_7t,v7),TWt.Xh=function(t,e){tO(this,t,zz(e,42))},TWt.lk=function(t,e){return $R(this,zz(t,42),e)},TWt.pi=function(t){return zz(zz(this.c,69).pi(t),133)},TWt.Zh=function(){return zz(this.c,69).Zh()},TWt.$h=function(){return zz(this.c,69).$h()},TWt._h=function(t){return zz(this.c,69)._h(t)},TWt.mk=function(t,e){return zR(this,t,e)},TWt.Wj=function(t){return zz(this.c,76).Wj(t)},TWt.rj=function(){},TWt.fj=function(){return zz(this.c,76).fj()},TWt.tj=function(t,e,n){var i;return(i=zz(Zet(this.b).Nh().Jh(this.b),133)).Th(t),i.Uh(e),i.ed(n),i},TWt.uj=function(){return new Iw(this)},TWt.Wb=function(t){not(this,t)},TWt.Xj=function(){zz(this.c,76).Xj()},mZ(x7t,"EcoreEMap",151),pDt(158,151,_7t,QP),TWt.qj=function(){var t,e,n,i,r;if(null==this.d){for(r=P8(cDe,o7t,63,2*this.f+1,0,1),n=this.c.Kc();n.e!=n.i.gc();)!(t=r[i=((e=zz(n.nj(),133)).Sh()&FWt)%r.length])&&(t=r[i]=new Iw(this)),t.Fc(e);this.d=r}},mZ(d6t,"EAnnotationImpl/1",158),pDt(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1}),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!this.$j();case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return this.$j();case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i)}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void this.Lh(TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void this.ok(zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi())}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),_Oe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void this.Lh(null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void this.ok(1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi())}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){Mxt(this),this.Bb|=1},TWt.Yj=function(){return Mxt(this)},TWt.Zj=function(){return this.t},TWt.$j=function(){var t;return(t=this.t)>1||-1==t},TWt.hi=function(){return 0!=(512&this.Bb)},TWt.nk=function(t,e){return Sht(this,t,e)},TWt.ok=function(t){Pnt(this,t)},TWt.Ib=function(){return jMt(this)},TWt.s=0,TWt.t=1,mZ(d6t,"ETypedElementImpl",284),pDt(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1}),TWt.Qg=function(t){return Pvt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!this.$j();case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this)}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 17:return this.Cb&&(n=(i=this.Db>>16)>=0?Pvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,17,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 17:return Ejt(this,null,17,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return this.$j();case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this)}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void this.ok(zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),kOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void this.ok(1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.Gj=function(){return this.f},TWt.zj=function(){return ULt(this)},TWt.Hj=function(){return pJ(this)},TWt.Lj=function(){return null},TWt.pk=function(){return this.k},TWt.aj=function(){return this.n},TWt.Mj=function(){return u_t(this)},TWt.Nj=function(){var t,e,n,i,r,a,o,s,c;return this.p||((null==(n=pJ(this)).i&&U$t(n),n.i).length,(i=this.Lj())&&dZ(pJ(i)),t=(o=(r=Mxt(this)).Bj())?0!=(1&o.i)?o==ONe?kee:o==DNe?Oee:o==BNe?Iee:o==PNe?See:o==LNe?Ree:o==FNe?$ee:o==NNe?Eee:Cee:o:null,e=ULt(this),s=r.zj(),gdt(this),0!=(this.Bb&hKt)&&((a=vkt((MCt(),JOe),n))&&a!=this||(a=J1(z9(JOe,this))))?this.p=new DI(this,a):this.$j()?this.rk()?i?0!=(this.Bb&E7t)?t?this.sk()?this.p=new fX(47,t,this,i):this.p=new fX(5,t,this,i):this.sk()?this.p=new g4(46,this,i):this.p=new g4(4,this,i):t?this.sk()?this.p=new fX(49,t,this,i):this.p=new fX(7,t,this,i):this.sk()?this.p=new g4(48,this,i):this.p=new g4(6,this,i):0!=(this.Bb&E7t)?t?t==Hte?this.p=new Cz(50,KMe,this):this.sk()?this.p=new Cz(43,t,this):this.p=new Cz(1,t,this):this.sk()?this.p=new FV(42,this):this.p=new FV(0,this):t?t==Hte?this.p=new Cz(41,KMe,this):this.sk()?this.p=new Cz(45,t,this):this.p=new Cz(3,t,this):this.sk()?this.p=new FV(44,this):this.p=new FV(2,this):aL(r,148)?t==OOe?this.p=new FV(40,this):0!=(512&this.Bb)?0!=(this.Bb&E7t)?this.p=t?new Cz(9,t,this):new FV(8,this):this.p=t?new Cz(11,t,this):new FV(10,this):0!=(this.Bb&E7t)?this.p=t?new Cz(13,t,this):new FV(12,this):this.p=t?new Cz(15,t,this):new FV(14,this):i?(c=i.t)>1||-1==c?this.sk()?0!=(this.Bb&E7t)?this.p=t?new fX(25,t,this,i):new g4(24,this,i):this.p=t?new fX(27,t,this,i):new g4(26,this,i):0!=(this.Bb&E7t)?this.p=t?new fX(29,t,this,i):new g4(28,this,i):this.p=t?new fX(31,t,this,i):new g4(30,this,i):this.sk()?0!=(this.Bb&E7t)?this.p=t?new fX(33,t,this,i):new g4(32,this,i):this.p=t?new fX(35,t,this,i):new g4(34,this,i):0!=(this.Bb&E7t)?this.p=t?new fX(37,t,this,i):new g4(36,this,i):this.p=t?new fX(39,t,this,i):new g4(38,this,i):this.sk()?0!=(this.Bb&E7t)?this.p=t?new Cz(17,t,this):new FV(16,this):this.p=t?new Cz(19,t,this):new FV(18,this):0!=(this.Bb&E7t)?this.p=t?new Cz(21,t,this):new FV(20,this):this.p=t?new Cz(23,t,this):new FV(22,this):this.qk()?this.sk()?this.p=new Sz(zz(r,26),this,i):this.p=new yQ(zz(r,26),this,i):aL(r,148)?t==OOe?this.p=new FV(40,this):0!=(this.Bb&E7t)?this.p=t?new tG(e,s,this,(qgt(),o==DNe?HOe:o==ONe?ROe:o==LNe?UOe:o==BNe?qOe:o==PNe?zOe:o==FNe?YOe:o==NNe?jOe:o==MNe?$Oe:GOe)):new pX(zz(r,148),e,s,this):this.p=t?new JU(e,s,this,(qgt(),o==DNe?HOe:o==ONe?ROe:o==LNe?UOe:o==BNe?qOe:o==PNe?zOe:o==FNe?YOe:o==NNe?jOe:o==MNe?$Oe:GOe)):new gX(zz(r,148),e,s,this):this.rk()?i?0!=(this.Bb&E7t)?this.sk()?this.p=new Nz(zz(r,26),this,i):this.p=new Lz(zz(r,26),this,i):this.sk()?this.p=new Oz(zz(r,26),this,i):this.p=new Iz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.sk()?this.p=new nB(zz(r,26),this):this.p=new eB(zz(r,26),this):this.sk()?this.p=new tB(zz(r,26),this):this.p=new JP(zz(r,26),this):this.sk()?i?0!=(this.Bb&E7t)?this.p=new Pz(zz(r,26),this,i):this.p=new Mz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.p=new rB(zz(r,26),this):this.p=new iB(zz(r,26),this):i?0!=(this.Bb&E7t)?this.p=new Bz(zz(r,26),this,i):this.p=new Dz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.p=new aB(zz(r,26),this):this.p=new aU(zz(r,26),this)),this.p},TWt.Ij=function(){return 0!=(this.Bb&k6t)},TWt.qk=function(){return!1},TWt.rk=function(){return!1},TWt.Jj=function(){return 0!=(this.Bb&hKt)},TWt.Oj=function(){return ltt(this)},TWt.sk=function(){return!1},TWt.Kj=function(){return 0!=(this.Bb&E7t)},TWt.tk=function(t){this.k=t},TWt.Lh=function(t){QJ(this,t)},TWt.Ib=function(){return AFt(this)},TWt.e=!1,TWt.n=0,mZ(d6t,"EStructuralFeatureImpl",449),pDt(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},My),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!PIt(this);case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this);case 18:return lN(),0!=(this.Bb&h6t);case 19:return e?cst(this):P6(this)}return Y7(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return PIt(this);case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this);case 18:return 0!=(this.Bb&h6t);case 19:return!!P6(this)}return M3(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Yk(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)));case 18:return void Gft(this,Hv(AB(e)))}Ndt(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t),e)},TWt.zh=function(){return wWt(),iOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return this.b=0,void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1);case 18:return void Gft(this,!1)}Uht(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t))},TWt.Gh=function(){cst(this),xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.$j=function(){return PIt(this)},TWt.nk=function(t,e){return this.b=0,this.a=null,Sht(this,t,e)},TWt.ok=function(t){Yk(this,t)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?AFt(this):((t=new hN(AFt(this))).a+=" (iD: ",v_(t,0!=(this.Bb&h6t)),t.a+=")",t.a)},TWt.b=0,mZ(d6t,"EAttributeImpl",322),pDt(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1}),TWt.uk=function(t){return t.Tg()==this},TWt.Qg=function(t){return fvt(this,t)},TWt.Rg=function(t,e){this.w=null,this.Db=e<<16|255&this.Db,this.Cb=t},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return null!=this.D?this.D:this.B;case 3:return rvt(this);case 4:return this.zj();case 5:return this.F;case 6:return e?Zet(this):gJ(this);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),this.A}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return null!=this.zj();case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),aOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.yj=function(){var t;return-1==this.G&&(this.G=(t=Zet(this))?cmt(t.Mh(),this):-1),this.G},TWt.zj=function(){return null},TWt.Aj=function(){return Zet(this)},TWt.vk=function(){return this.v},TWt.Bj=function(){return rvt(this)},TWt.Cj=function(){return null!=this.D?this.D:this.B},TWt.Dj=function(){return this.F},TWt.wj=function(t){return C$t(this,t)},TWt.wk=function(t){this.v=t},TWt.xk=function(t){Zrt(this,t)},TWt.yk=function(t){this.C=t},TWt.Lh=function(t){JJ(this,t)},TWt.Ib=function(){return Igt(this)},TWt.C=null,TWt.D=null,TWt.G=-1,mZ(d6t,"EClassifierImpl",351),pDt(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},Rh),TWt.uk=function(t){return XF(this,t.Tg())},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return null!=this.D?this.D:this.B;case 3:return rvt(this);case 4:return null;case 5:return this.F;case 6:return e?Zet(this):gJ(this);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),this.A;case 8:return lN(),0!=(256&this.Bb);case 9:return lN(),0!=(512&this.Bb);case 10:return xV(this);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),this.q;case 12:return Qzt(this);case 13:return Rzt(this);case 14:return Rzt(this),this.r;case 15:return Qzt(this),this.k;case 16:return KCt(this);case 17:return wzt(this);case 18:return U$t(this);case 19:return ILt(this);case 20:return Qzt(this),this.o;case 21:return!this.s&&(this.s=new nY($De,this,21,17)),this.s;case 22:return o4(this);case 23:return HBt(this)}return Y7(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),Qgt(this.q,t,n);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),Qgt(this.s,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),rOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),rOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),$wt(this.q,t,n);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),$wt(this.s,t,n);case 22:return $wt(o4(this),t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),rOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),rOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return!1;case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i;case 8:return 0!=(256&this.Bb);case 9:return 0!=(512&this.Bb);case 10:return!(!this.u||0==o4(this.u.a).i||this.n&&Rmt(this.n));case 11:return!!this.q&&0!=this.q.i;case 12:return 0!=Qzt(this).i;case 13:return 0!=Rzt(this).i;case 14:return Rzt(this),0!=this.r.i;case 15:return Qzt(this),0!=this.k.i;case 16:return 0!=KCt(this).i;case 17:return 0!=wzt(this).i;case 18:return 0!=U$t(this).i;case 19:return 0!=ILt(this).i;case 20:return Qzt(this),!!this.o;case 21:return!!this.s&&0!=this.s.i;case 22:return!!this.n&&Rmt(this.n);case 23:return 0!=HBt(this).i}return M3(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t))},TWt.oh=function(t){return(null==this.i||this.q&&0!=this.q.i?null:PNt(this,t))||hYt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14));case 8:return void Jht(this,Hv(AB(e)));case 9:return void nft(this,Hv(AB(e)));case 10:return yHt(xV(this)),void wZ(xV(this),zz(e,14));case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),lHt(this.q),!this.q&&(this.q=new nY(XDe,this,11,10)),void wZ(this.q,zz(e,14));case 21:return!this.s&&(this.s=new nY($De,this,21,17)),lHt(this.s),!this.s&&(this.s=new nY($De,this,21,17)),void wZ(this.s,zz(e,14));case 22:return lHt(o4(this)),void wZ(o4(this),zz(e,14))}Ndt(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t),e)},TWt.zh=function(){return wWt(),rOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A);case 8:return void Jht(this,!1);case 9:return void nft(this,!1);case 10:return void(this.u&&yHt(this.u));case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),void lHt(this.q);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),void lHt(this.s);case 22:return void(this.n&&lHt(this.n))}Uht(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t))},TWt.Gh=function(){var t,e;if(Qzt(this),Rzt(this),KCt(this),wzt(this),U$t(this),ILt(this),HBt(this),o6(Zz(C5(this))),this.s)for(t=0,e=this.s.i;t=0;--e)Ket(this,e);return Vgt(this,t)},TWt.Xj=function(){lHt(this)},TWt.oi=function(t,e){return $nt(this,t,e)},mZ(x7t,"EcoreEList",622),pDt(496,622,R7t,vq),TWt.ai=function(){return!1},TWt.aj=function(){return this.c},TWt.bj=function(){return!1},TWt.Fk=function(){return!0},TWt.hi=function(){return!0},TWt.li=function(t,e){return e},TWt.ni=function(){return!1},TWt.c=0,mZ(x7t,"EObjectEList",496),pDt(85,496,R7t,OL),TWt.bj=function(){return!0},TWt.Dk=function(){return!1},TWt.rk=function(){return!0},mZ(x7t,"EObjectContainmentEList",85),pDt(545,85,R7t,LL),TWt.ci=function(){this.b=!0},TWt.fj=function(){return this.b},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.b,this.b=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.b=!1},TWt.b=!1,mZ(x7t,"EObjectContainmentEList/Unsettable",545),pDt(1140,545,R7t,VU),TWt.ii=function(t,e){var n,i;return n=zz(Mft(this,t,e),87),yD(this.e)&&Lm(this,new k7(this.a,7,(wWt(),oOe),rft(e),aL(i=n.c,88)?zz(i,26):pOe,t)),n},TWt.jj=function(t,e){return tpt(this,zz(t,87),e)},TWt.kj=function(t,e){return Jgt(this,zz(t,87),e)},TWt.lj=function(t,e,n){return $kt(this,zz(t,87),zz(e,87),n)},TWt.Zi=function(t,e,n,i,r){switch(t){case 3:return vJ(this,t,e,n,i,this.i>1);case 5:return vJ(this,t,e,n,i,this.i-zz(n,15).gc()>0);default:return new N9(this.e,t,this.c,e,n,i,!0)}},TWt.ij=function(){return!0},TWt.fj=function(){return Rmt(this)},TWt.Xj=function(){lHt(this)},mZ(d6t,"EClassImpl/1",1140),pDt(1154,1153,t7t),TWt.ui=function(t){var e,n,i,r,a,o,s;if(8!=(n=t.xi())){if(0==(i=swt(t)))switch(n){case 1:case 9:null!=(s=t.Bi())&&(!(e=C5(zz(s,473))).c&&(e.c=new zc),utt(e.c,t.Ai())),null!=(o=t.zi())&&0==(1&(r=zz(o,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 3:null!=(o=t.zi())&&0==(1&(r=zz(o,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 5:if(null!=(o=t.zi()))for(a=zz(o,14).Kc();a.Ob();)0==(1&(r=zz(a.Pb(),473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 4:null!=(s=t.Bi())&&0==(1&(r=zz(s,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),utt(e.c,t.Ai()));break;case 6:if(null!=(s=t.Bi()))for(a=zz(s,14).Kc();a.Ob();)0==(1&(r=zz(a.Pb(),473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),utt(e.c,t.Ai()))}this.Hk(i)}},TWt.Hk=function(t){bFt(this,t)},TWt.b=63,mZ(d6t,"ESuperAdapter",1154),pDt(1155,1154,t7t,pw),TWt.Hk=function(t){OSt(this,t)},mZ(d6t,"EClassImpl/10",1155),pDt(1144,696,R7t),TWt.Vh=function(t,e){return qAt(this,t,e)},TWt.Wh=function(t){return gyt(this,t)},TWt.Xh=function(t,e){Mht(this,t,e)},TWt.Yh=function(t){a6(this,t)},TWt.pi=function(t){return $7(this,t)},TWt.mi=function(t,e){return ctt(this,t,e)},TWt.lk=function(t,e){throw qw(new wm)},TWt.Zh=function(){return new oP(this)},TWt.$h=function(){return new sP(this)},TWt._h=function(t){return lit(this,t)},TWt.mk=function(t,e){throw qw(new wm)},TWt.Wj=function(t){return this},TWt.fj=function(){return 0!=this.i},TWt.Wb=function(t){throw qw(new wm)},TWt.Xj=function(){throw qw(new wm)},mZ(x7t,"EcoreEList/UnmodifiableEList",1144),pDt(319,1144,R7t,NM),TWt.ni=function(){return!1},mZ(x7t,"EcoreEList/UnmodifiableEList/FastCompare",319),pDt(1147,319,R7t,bct),TWt.Xc=function(t){var e,n;if(aL(t,170)&&-1!=(e=zz(t,170).aj()))for(n=this.i;e4){if(!this.wj(t))return!1;if(this.rk()){if(o=(e=(n=zz(t,49)).Ug())==this.b&&(this.Dk()?n.Og(n.Vg(),zz(iet(kV(this.b),this.aj()).Yj(),26).Bj())==Imt(zz(iet(kV(this.b),this.aj()),18)).n:-1-n.Vg()==this.aj()),this.Ek()&&!o&&!e&&n.Zg())for(i=0;i1||-1==n)},TWt.Dk=function(){var t;return!!aL(t=iet(kV(this.b),this.aj()),99)&&!!Imt(zz(t,18))},TWt.Ek=function(){var t;return!!aL(t=iet(kV(this.b),this.aj()),99)&&0!=(zz(t,18).Bb&qXt)},TWt.Xc=function(t){var e,n,i;if((n=this.Qi(t))>=0)return n;if(this.Fk())for(e=0,i=this.Vi();e=0;--t)iUt(this,t,this.Oi(t));return this.Wi()},TWt.Qc=function(t){var e;if(this.Ek())for(e=this.Vi()-1;e>=0;--e)iUt(this,e,this.Oi(e));return this.Xi(t)},TWt.Xj=function(){yHt(this)},TWt.oi=function(t,e){return z7(this,t,e)},mZ(x7t,"DelegatingEcoreEList",742),pDt(1150,742,H7t,sF),TWt.Hi=function(t,e){fB(this,t,zz(e,26))},TWt.Ii=function(t){nO(this,zz(t,26))},TWt.Oi=function(t){var e;return aL(e=zz(Ket(o4(this.a),t),87).c,88)?zz(e,26):(wWt(),pOe)},TWt.Ti=function(t){var e;return aL(e=zz(fBt(o4(this.a),t),87).c,88)?zz(e,26):(wWt(),pOe)},TWt.Ui=function(t,e){return byt(this,t,zz(e,26))},TWt.ai=function(){return!1},TWt.Zi=function(t,e,n,i,r){return null},TWt.Ji=function(){return new ww(this)},TWt.Ki=function(){lHt(o4(this.a))},TWt.Li=function(t){return Zht(this,t)},TWt.Mi=function(t){var e;for(e=t.Kc();e.Ob();)if(!Zht(this,e.Pb()))return!1;return!0},TWt.Ni=function(t){var e,n,i;if(aL(t,15)&&(i=zz(t,15)).gc()==o4(this.a).i){for(e=i.Kc(),n=new DL(this);e.Ob();)if(UI(e.Pb())!==UI(kwt(n)))return!1;return!0}return!1},TWt.Pi=function(){var t,e,n,i;for(e=1,t=new DL(o4(this.a));t.e!=t.i.gc();)e=31*e+((n=aL(i=zz(kwt(t),87).c,88)?zz(i,26):(wWt(),pOe))?CN(n):0);return e},TWt.Qi=function(t){var e,n,i,r;for(i=0,n=new DL(o4(this.a));n.e!=n.i.gc();){if(e=zz(kwt(n),87),UI(t)===UI(aL(r=e.c,88)?zz(r,26):(wWt(),pOe)))return i;++i}return-1},TWt.Ri=function(){return 0==o4(this.a).i},TWt.Si=function(){return null},TWt.Vi=function(){return o4(this.a).i},TWt.Wi=function(){var t,e,n,i,r,a;for(a=o4(this.a).i,r=P8(Ote,HWt,1,a,5,1),n=0,e=new DL(o4(this.a));e.e!=e.i.gc();)t=zz(kwt(e),87),r[n++]=aL(i=t.c,88)?zz(i,26):(wWt(),pOe);return r},TWt.Xi=function(t){var e,n,i,r;for(r=o4(this.a).i,t.lengthr&&OZ(t,r,null),n=0,e=new DL(o4(this.a));e.e!=e.i.gc();)OZ(t,n++,aL(i=zz(kwt(e),87).c,88)?zz(i,26):(wWt(),pOe));return t},TWt.Yi=function(){var t,e,n,i,r;for((r=new Tx).a+="[",t=o4(this.a),e=0,i=o4(this.a).i;e>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),Qgt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),cOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),cOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),cOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),cOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return!!Vut(this);case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i;case 8:return 0==(256&this.Bb);case 9:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14));case 8:return void tft(this,Hv(AB(e)));case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),lHt(this.a),!this.a&&(this.a=new nY(WDe,this,9,5)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t),e)},TWt.zh=function(){return wWt(),cOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A);case 8:return void tft(this,!0);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),void lHt(this.a)}Uht(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t))},TWt.Gh=function(){var t,e;if(this.a)for(t=0,e=this.a.i;t>16==5?zz(this.Cb,671):null}return Y7(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 5:return this.Cb&&(n=(i=this.Db>>16)>=0?dxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,5,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),uOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),uOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 5:return Ejt(this,null,5,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),uOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),uOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0!=this.d;case 3:return!!this.b;case 4:return null!=this.c;case 5:return!(this.Db>>16!=5||!zz(this.Cb,671))}return M3(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Lnt(this,zz(e,19).a);case 3:return void wMt(this,zz(e,1940));case 4:return void zit(this,TB(e))}Ndt(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t),e)},TWt.zh=function(){return wWt(),uOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Lnt(this,0);case 3:return void wMt(this,null);case 4:return void zit(this,null)}Uht(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t))},TWt.Ib=function(){var t;return null==(t=this.c)?this.zb:t},TWt.b=null,TWt.c=null,TWt.d=0,mZ(d6t,"EEnumLiteralImpl",573);var LOe,NOe,POe,BOe=dH(d6t,"EFactoryImpl/InternalEDateTimeFormat");pDt(489,1,{2015:1},mw),mZ(d6t,"EFactoryImpl/1ClientInternalEDateTimeFormat",489),pDt(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},Rw),TWt.Sg=function(t,e,n){var i;return n=Ejt(this,t,e,n),this.e&&aL(t,170)&&(i=kLt(this,this.e))!=this.c&&(n=sGt(this,i,n)),n},TWt._g=function(t,e,n){switch(t){case 0:return this.f;case 1:return!this.d&&(this.d=new OL(KDe,this,1)),this.d;case 2:return e?d$t(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return e?Umt(this):this.a}return Y7(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return eht(this,null,n);case 1:return!this.d&&(this.d=new OL(KDe,this,1)),$wt(this.d,t,n);case 3:return tht(this,null,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),hOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),hOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.f;case 1:return!!this.d&&0!=this.d.i;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return M3(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t))},TWt.sh=function(t,e){switch(t){case 0:return void __t(this,zz(e,87));case 1:return!this.d&&(this.d=new OL(KDe,this,1)),lHt(this.d),!this.d&&(this.d=new OL(KDe,this,1)),void wZ(this.d,zz(e,14));case 3:return void k_t(this,zz(e,87));case 4:return void FEt(this,zz(e,836));case 5:return void ont(this,zz(e,138))}Ndt(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t),e)},TWt.zh=function(){return wWt(),hOe},TWt.Bh=function(t){switch(t){case 0:return void __t(this,null);case 1:return!this.d&&(this.d=new OL(KDe,this,1)),void lHt(this.d);case 3:return void k_t(this,null);case 4:return void FEt(this,null);case 5:return void ont(this,null)}Uht(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t))},TWt.Ib=function(){var t;return(t=new fN(SOt(this))).a+=" (expression: ",gqt(this,t),t.a+=")",t.a},mZ(d6t,"EGenericTypeImpl",241),pDt(1969,1964,U7t),TWt.Xh=function(t,e){tF(this,t,e)},TWt.lk=function(t,e){return tF(this,this.gc(),t),e},TWt.pi=function(t){return Fwt(this.Gi(),t)},TWt.Zh=function(){return this.$h()},TWt.Gi=function(){return new Cw(this)},TWt.$h=function(){return this._h(0)},TWt._h=function(t){return this.Gi().Zc(t)},TWt.mk=function(t,e){return xgt(this,t,!0),e},TWt.ii=function(t,e){var n;return n=nxt(this,e),this.Zc(t).Rb(n),n},TWt.ji=function(t,e){xgt(this,e,!0),this.Zc(t).Rb(e)},mZ(x7t,"AbstractSequentialInternalEList",1969),pDt(486,1969,U7t,XN),TWt.pi=function(t){return Fwt(this.Gi(),t)},TWt.Zh=function(){return null==this.b?(VE(),VE(),POe):this.Jk()},TWt.Gi=function(){return new BM(this.a,this.b)},TWt.$h=function(){return null==this.b?(VE(),VE(),POe):this.Jk()},TWt._h=function(t){var e,n;if(null==this.b){if(t<0||t>1)throw qw(new Dv(i7t+t+", size=0"));return VE(),VE(),POe}for(n=this.Jk(),e=0;e0;)if(e=this.c[--this.d],(!this.e||e.Gj()!=NMe||0!=e.aj())&&(!this.Mk()||this.b.mh(e)))if(a=this.b.bh(e,this.Lk()),this.f=(JE(),zz(e,66).Oj()),this.f||e.$j()){if(this.Lk()?(i=zz(a,15),this.k=i):(i=zz(a,69),this.k=this.j=i),aL(this.k,54)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j._h(this.k.gc()):this.k.Zc(this.k.gc()),this.p?_Ct(this,this.p):pSt(this))return r=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?((t=zz(r,72)).ak(),n=t.dd(),this.i=n):(n=r,this.i=n),this.g=-3,!0}else if(null!=a)return this.k=null,this.p=null,n=a,this.i=n,this.g=-2,!0;return this.k=null,this.p=null,this.g=-1,!1}},TWt.Pb=function(){return Tot(this)},TWt.Tb=function(){return this.a},TWt.Ub=function(){var t;if(this.g<-1||this.Sb())return--this.a,this.g=0,t=this.i,this.Sb(),t;throw qw(new vm)},TWt.Vb=function(){return this.a-1},TWt.Qb=function(){throw qw(new wm)},TWt.Lk=function(){return!1},TWt.Wb=function(t){throw qw(new wm)},TWt.Mk=function(){return!0},TWt.a=0,TWt.d=0,TWt.f=!1,TWt.g=0,TWt.n=0,TWt.o=0,mZ(x7t,"EContentsEList/FeatureIteratorImpl",279),pDt(697,279,G7t,KP),TWt.Lk=function(){return!0},mZ(x7t,"EContentsEList/ResolvingFeatureIteratorImpl",697),pDt(1157,697,G7t,VP),TWt.Mk=function(){return!1},mZ(d6t,"ENamedElementImpl/1/1",1157),pDt(1158,279,G7t,XP),TWt.Mk=function(){return!1},mZ(d6t,"ENamedElementImpl/1/2",1158),pDt(36,143,n7t,h4,f4,tY,x7,N9,e6,Hnt,T0,Unt,C0,Q5,S0,Znt,I0,J5,M0,Gnt,D0,eY,k7,UX,Ynt,O0,t6,L0),TWt._i=function(){return l7(this)},TWt.gj=function(){var t;return(t=l7(this))?t.zj():null},TWt.yi=function(t){return-1==this.b&&this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj())),this.c.Og(this.b,t)},TWt.Ai=function(){return this.c},TWt.hj=function(){var t;return!!(t=l7(this))&&t.Kj()},TWt.b=-1,mZ(d6t,"ENotificationImpl",36),pDt(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},Oy),TWt.Qg=function(t){return Sxt(this,t)},TWt._g=function(t,e,n){var i;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(i=this.t)>1||-1==i;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?zz(this.Cb,26):null;case 11:return!this.d&&(this.d=new NL(MOe,this,11)),this.d;case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),this.c;case 13:return!this.a&&(this.a=new cF(this,this)),this.a;case 14:return q9(this)}return Y7(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 10:return this.Cb&&(n=(i=this.Db>>16)>=0?Sxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,10,n);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),Qgt(this.c,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),bOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),bOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 10:return Ejt(this,null,10,n);case 11:return!this.d&&(this.d=new NL(MOe,this,11)),$wt(this.d,t,n);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),$wt(this.c,t,n);case 14:return $wt(q9(this),t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),bOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),bOe)),t,n)},TWt.lh=function(t){var e;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(e=this.t)>1||-1==e;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return!(this.Db>>16!=10||!zz(this.Cb,26));case 11:return!!this.d&&0!=this.d.i;case 12:return!!this.c&&0!=this.c.i;case 13:return!(!this.a||0==q9(this.a.a).i||this.b&&jmt(this.b));case 14:return!!this.b&&jmt(this.b)}return M3(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Pnt(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 11:return!this.d&&(this.d=new NL(MOe,this,11)),lHt(this.d),!this.d&&(this.d=new NL(MOe,this,11)),void wZ(this.d,zz(e,14));case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),lHt(this.c),!this.c&&(this.c=new nY(VDe,this,12,10)),void wZ(this.c,zz(e,14));case 13:return!this.a&&(this.a=new cF(this,this)),yHt(this.a),!this.a&&(this.a=new cF(this,this)),void wZ(this.a,zz(e,14));case 14:return lHt(q9(this)),void wZ(q9(this),zz(e,14))}Ndt(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t),e)},TWt.zh=function(){return wWt(),bOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 11:return!this.d&&(this.d=new NL(MOe,this,11)),void lHt(this.d);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),void lHt(this.c);case 13:return void(this.a&&yHt(this.a));case 14:return void(this.b&&lHt(this.b))}Uht(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t))},TWt.Gh=function(){var t,e;if(this.c)for(t=0,e=this.c.i;ti&&OZ(t,i,null),n=0,e=new DL(q9(this.a));e.e!=e.i.gc();)OZ(t,n++,zz(kwt(e),87).c||(wWt(),fOe));return t},TWt.Yi=function(){var t,e,n,i;for((i=new Tx).a+="[",t=q9(this.a),e=0,n=q9(this.a).i;e1);case 5:return vJ(this,t,e,n,i,this.i-zz(n,15).gc()>0);default:return new N9(this.e,t,this.c,e,n,i,!0)}},TWt.ij=function(){return!0},TWt.fj=function(){return jmt(this)},TWt.Xj=function(){lHt(this)},mZ(d6t,"EOperationImpl/2",1341),pDt(498,1,{1938:1,498:1},MI),mZ(d6t,"EPackageImpl/1",498),pDt(16,85,R7t,nY),TWt.zk=function(){return this.d},TWt.Ak=function(){return this.b},TWt.Dk=function(){return!0},TWt.b=0,mZ(x7t,"EObjectContainmentWithInverseEList",16),pDt(353,16,R7t,nR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentWithInverseEList/Resolving",353),pDt(298,353,R7t,QG),TWt.ci=function(){this.a.tb=null},mZ(d6t,"EPackageImpl/2",298),pDt(1228,1,{},Mc),mZ(d6t,"EPackageImpl/3",1228),pDt(718,43,nVt,Ny),TWt._b=function(t){return ZI(t)?nV(this,t):!!DV(this.f,t)},mZ(d6t,"EPackageRegistryImpl",718),pDt(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},Ly),TWt.Qg=function(t){return Ixt(this,t)},TWt._g=function(t,e,n){var i;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(i=this.t)>1||-1==i;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?zz(this.Cb,59):null}return Y7(this,t-dZ((wWt(),yOe)),iet(zz(xot(this,16),26)||yOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 10:return this.Cb&&(n=(i=this.Db>>16)>=0?Ixt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,10,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),yOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),yOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 10:return Ejt(this,null,10,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),yOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),yOe)),t,n)},TWt.lh=function(t){var e;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(e=this.t)>1||-1==e;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return!(this.Db>>16!=10||!zz(this.Cb,59))}return M3(this,t-dZ((wWt(),yOe)),iet(zz(xot(this,16),26)||yOe,t))},TWt.zh=function(){return wWt(),yOe},mZ(d6t,"EParameterImpl",509),pDt(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},wB),TWt._g=function(t,e,n){var i,r;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(r=this.t)>1||-1==r;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this);case 18:return lN(),0!=(this.Bb&h6t);case 19:return lN(),!(!(i=Imt(this))||0==(i.Bb&h6t));case 20:return lN(),0!=(this.Bb&qXt);case 21:return e?Imt(this):this.b;case 22:return e?Mct(this):R5(this);case 23:return!this.a&&(this.a=new FL(zDe,this,23)),this.a}return Y7(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t),e,n)},TWt.lh=function(t){var e,n;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(n=this.t)>1||-1==n;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this);case 18:return 0!=(this.Bb&h6t);case 19:return!!(e=Imt(this))&&0!=(e.Bb&h6t);case 20:return 0==(this.Bb&qXt);case 21:return!!this.b;case 22:return!!R5(this);case 23:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Pnt(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)));case 18:return void VJ(this,Hv(AB(e)));case 20:return void Zft(this,Hv(AB(e)));case 21:return void art(this,zz(e,18));case 23:return!this.a&&(this.a=new FL(zDe,this,23)),lHt(this.a),!this.a&&(this.a=new FL(zDe,this,23)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t),e)},TWt.zh=function(){return wWt(),vOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1);case 18:return Yft(this,!1),void(aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),2));case 20:return void Zft(this,!0);case 21:return void art(this,null);case 23:return!this.a&&(this.a=new FL(zDe,this,23)),void lHt(this.a)}Uht(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t))},TWt.Gh=function(){Mct(this),xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.Lj=function(){return Imt(this)},TWt.qk=function(){var t;return!!(t=Imt(this))&&0!=(t.Bb&h6t)},TWt.rk=function(){return 0!=(this.Bb&h6t)},TWt.sk=function(){return 0!=(this.Bb&qXt)},TWt.nk=function(t,e){return this.c=null,Sht(this,t,e)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?AFt(this):((t=new hN(AFt(this))).a+=" (containment: ",v_(t,0!=(this.Bb&h6t)),t.a+=", resolveProxies: ",v_(t,0!=(this.Bb&qXt)),t.a+=")",t.a)},mZ(d6t,"EReferenceImpl",99),pDt(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},Dc),TWt.Fb=function(t){return this===t},TWt.cd=function(){return this.b},TWt.dd=function(){return this.c},TWt.Hb=function(){return CN(this)},TWt.Uh=function(t){mH(this,TB(t))},TWt.ed=function(t){return Oq(this,TB(t))},TWt._g=function(t,e,n){switch(t){case 0:return this.b;case 1:return this.c}return Y7(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t),e,n)},TWt.lh=function(t){switch(t){case 0:return null!=this.b;case 1:return null!=this.c}return M3(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t))},TWt.sh=function(t,e){switch(t){case 0:return void yH(this,TB(e));case 1:return void jit(this,TB(e))}Ndt(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t),e)},TWt.zh=function(){return wWt(),xOe},TWt.Bh=function(t){switch(t){case 0:return void Rit(this,null);case 1:return void jit(this,null)}Uht(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t))},TWt.Sh=function(){var t;return-1==this.a&&(t=this.b,this.a=null==t?0:ymt(t)),this.a},TWt.Th=function(t){this.a=t},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):((t=new hN(SOt(this))).a+=" (key: ",aM(t,this.b),t.a+=", value: ",aM(t,this.c),t.a+=")",t.a)},TWt.a=-1,TWt.b=null,TWt.c=null;var FOe,ROe,jOe,$Oe,zOe,qOe,HOe,UOe,GOe,YOe,ZOe=mZ(d6t,"EStringToStringMapEntryImpl",548),WOe=dH(x7t,"FeatureMap/Entry/Internal");pDt(565,1,Y7t),TWt.Ok=function(t){return this.Pk(zz(t,49))},TWt.Pk=function(t){return this.Ok(t)},TWt.Fb=function(t){var e,n;return this===t||!!aL(t,72)&&(e=zz(t,72)).ak()==this.c&&(null==(n=this.dd())?null==e.dd():Pht(n,e.dd()))},TWt.ak=function(){return this.c},TWt.Hb=function(){var t;return t=this.dd(),eut(this.c)^(null==t?0:eut(t))},TWt.Ib=function(){var t,e;return e=Zet((t=this.c).Hj()).Ph(),t.ne(),(null!=e&&0!=e.length?e+":"+t.ne():t.ne())+"="+this.dd()},mZ(d6t,"EStructuralFeatureImpl/BasicFeatureMapEntry",565),pDt(776,565,Y7t,rF),TWt.Pk=function(t){return new rF(this.c,t)},TWt.dd=function(){return this.a},TWt.Qk=function(t,e,n){return Cat(this,t,this.a,e,n)},TWt.Rk=function(t,e,n){return Sat(this,t,this.a,e,n)},mZ(d6t,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",776),pDt(1314,1,{},DI),TWt.Pj=function(t,e,n,i,r){return zz(T7(t,this.b),215).nl(this.a).Wj(i)},TWt.Qj=function(t,e,n,i,r){return zz(T7(t,this.b),215).el(this.a,i,r)},TWt.Rj=function(t,e,n,i,r){return zz(T7(t,this.b),215).fl(this.a,i,r)},TWt.Sj=function(t,e,n){return zz(T7(t,this.b),215).nl(this.a).fj()},TWt.Tj=function(t,e,n,i){zz(T7(t,this.b),215).nl(this.a).Wb(i)},TWt.Uj=function(t,e,n){return zz(T7(t,this.b),215).nl(this.a)},TWt.Vj=function(t,e,n){zz(T7(t,this.b),215).nl(this.a).Xj()},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1314),pDt(89,1,{},Cz,fX,FV,g4),TWt.Pj=function(t,e,n,i,r){var a;if(null==(a=e.Ch(n))&&e.Dh(n,a=rWt(this,t)),!r)switch(this.e){case 50:case 41:return zz(a,589).sj();case 40:return zz(a,215).kl()}return a},TWt.Qj=function(t,e,n,i,r){var a;return null==(a=e.Ch(n))&&e.Dh(n,a=rWt(this,t)),zz(a,69).lk(i,r)},TWt.Rj=function(t,e,n,i,r){var a;return null!=(a=e.Ch(n))&&(r=zz(a,69).mk(i,r)),r},TWt.Sj=function(t,e,n){var i;return null!=(i=e.Ch(n))&&zz(i,76).fj()},TWt.Tj=function(t,e,n,i){var r;!(r=zz(e.Ch(n),76))&&e.Dh(n,r=rWt(this,t)),r.Wb(i)},TWt.Uj=function(t,e,n){var i;return null==(i=e.Ch(n))&&e.Dh(n,i=rWt(this,t)),aL(i,76)?zz(i,76):new _w(zz(e.Ch(n),15))},TWt.Vj=function(t,e,n){var i;!(i=zz(e.Ch(n),76))&&e.Dh(n,i=rWt(this,t)),i.Xj()},TWt.b=0,TWt.e=0,mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateMany",89),pDt(504,1,{}),TWt.Qj=function(t,e,n,i,r){throw qw(new wm)},TWt.Rj=function(t,e,n,i,r){throw qw(new wm)},TWt.Uj=function(t,e,n){return new dX(this,t,e,n)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingle",504),pDt(1331,1,k7t,dX),TWt.Wj=function(t){return this.a.Pj(this.c,this.d,this.b,t,!0)},TWt.fj=function(){return this.a.Sj(this.c,this.d,this.b)},TWt.Wb=function(t){this.a.Tj(this.c,this.d,this.b,t)},TWt.Xj=function(){this.a.Vj(this.c,this.d,this.b)},TWt.b=0,mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1331),pDt(769,504,{},yQ),TWt.Pj=function(t,e,n,i,r){return wRt(t,t.eh(),t.Vg())==this.b?this.sk()&&i?oDt(t):t.eh():null},TWt.Qj=function(t,e,n,i,r){var a,o;return t.eh()&&(r=(a=t.Vg())>=0?t.Qg(r):t.eh().ih(t,-1-a,null,r)),o=Ogt(t.Tg(),this.e),t.Sg(i,o,r)},TWt.Rj=function(t,e,n,i,r){var a;return a=Ogt(t.Tg(),this.e),t.Sg(null,a,r)},TWt.Sj=function(t,e,n){var i;return i=Ogt(t.Tg(),this.e),!!t.eh()&&t.Vg()==i},TWt.Tj=function(t,e,n,i){var r,a,o,s,c;if(null!=i&&!C$t(this.a,i))throw qw(new Rv(Z7t+(aL(i,56)?b_t(zz(i,56).Tg()):set(nut(i)))+W7t+this.a+"'"));if(r=t.eh(),o=Ogt(t.Tg(),this.e),UI(i)!==UI(r)||t.Vg()!=o&&null!=i){if(yxt(t,zz(i,56)))throw qw(new jv(p6t+t.Ib()));c=null,r&&(c=(a=t.Vg())>=0?t.Qg(c):t.eh().ih(t,-1-a,null,c)),(s=zz(i,49))&&(c=s.gh(t,Ogt(s.Tg(),this.b),null,c)),(c=t.Sg(s,o,c))&&c.Fi()}else t.Lg()&&t.Mg()&&got(t,new tY(t,1,o,i,i))},TWt.Vj=function(t,e,n){var i,r,a;t.eh()?(a=(i=t.Vg())>=0?t.Qg(null):t.eh().ih(t,-1-i,null,null),r=Ogt(t.Tg(),this.e),(a=t.Sg(null,r,a))&&a.Fi()):t.Lg()&&t.Mg()&&got(t,new eY(t,1,this.e,null,null))},TWt.sk=function(){return!1},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",769),pDt(1315,769,{},Sz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1315),pDt(563,504,{}),TWt.Pj=function(t,e,n,i,r){var a;return null==(a=e.Ch(n))?this.b:UI(a)===UI(FOe)?null:a},TWt.Sj=function(t,e,n){var i;return null!=(i=e.Ch(n))&&(UI(i)===UI(FOe)||!Pht(i,this.b))},TWt.Tj=function(t,e,n,i){var r,a;t.Lg()&&t.Mg()?(r=null==(a=e.Ch(n))?this.b:UI(a)===UI(FOe)?null:a,null==i?null!=this.c?(e.Dh(n,null),i=this.b):null!=this.b?e.Dh(n,FOe):e.Dh(n,null):(this.Sk(i),e.Dh(n,i)),got(t,this.d.Tk(t,1,this.e,r,i))):null==i?null!=this.c?e.Dh(n,null):null!=this.b?e.Dh(n,FOe):e.Dh(n,null):(this.Sk(i),e.Dh(n,i))},TWt.Vj=function(t,e,n){var i,r;t.Lg()&&t.Mg()?(i=null==(r=e.Ch(n))?this.b:UI(r)===UI(FOe)?null:r,e.Eh(n),got(t,this.d.Tk(t,1,this.e,i,this.b))):e.Eh(n)},TWt.Sk=function(t){throw qw(new dm)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",563),pDt(K7t,1,{},Oc),TWt.Tk=function(t,e,n,i,r){return new eY(t,e,n,i,r)},TWt.Uk=function(t,e,n,i,r,a){return new UX(t,e,n,i,r,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",K7t),pDt(1332,K7t,{},Lc),TWt.Tk=function(t,e,n,i,r){return new t6(t,e,n,Hv(AB(i)),Hv(AB(r)))},TWt.Uk=function(t,e,n,i,r,a){return new L0(t,e,n,Hv(AB(i)),Hv(AB(r)),a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1332),pDt(1333,K7t,{},Nc),TWt.Tk=function(t,e,n,i,r){return new Hnt(t,e,n,zz(i,217).a,zz(r,217).a)},TWt.Uk=function(t,e,n,i,r,a){return new T0(t,e,n,zz(i,217).a,zz(r,217).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1333),pDt(1334,K7t,{},Pc),TWt.Tk=function(t,e,n,i,r){return new Unt(t,e,n,zz(i,172).a,zz(r,172).a)},TWt.Uk=function(t,e,n,i,r,a){return new C0(t,e,n,zz(i,172).a,zz(r,172).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1334),pDt(1335,K7t,{},Bc),TWt.Tk=function(t,e,n,i,r){return new Q5(t,e,n,Uv(EB(i)),Uv(EB(r)))},TWt.Uk=function(t,e,n,i,r,a){return new S0(t,e,n,Uv(EB(i)),Uv(EB(r)),a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1335),pDt(1336,K7t,{},Fc),TWt.Tk=function(t,e,n,i,r){return new Znt(t,e,n,zz(i,155).a,zz(r,155).a)},TWt.Uk=function(t,e,n,i,r,a){return new I0(t,e,n,zz(i,155).a,zz(r,155).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1336),pDt(1337,K7t,{},Rc),TWt.Tk=function(t,e,n,i,r){return new J5(t,e,n,zz(i,19).a,zz(r,19).a)},TWt.Uk=function(t,e,n,i,r,a){return new M0(t,e,n,zz(i,19).a,zz(r,19).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1337),pDt(1338,K7t,{},jc),TWt.Tk=function(t,e,n,i,r){return new Gnt(t,e,n,zz(i,162).a,zz(r,162).a)},TWt.Uk=function(t,e,n,i,r,a){return new D0(t,e,n,zz(i,162).a,zz(r,162).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1338),pDt(1339,K7t,{},$c),TWt.Tk=function(t,e,n,i,r){return new Ynt(t,e,n,zz(i,184).a,zz(r,184).a)},TWt.Uk=function(t,e,n,i,r,a){return new O0(t,e,n,zz(i,184).a,zz(r,184).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1339),pDt(1317,563,{},gX),TWt.Sk=function(t){if(!this.a.wj(t))throw qw(new Rv(Z7t+nut(t)+W7t+this.a+"'"))},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1317),pDt(1318,563,{},JU),TWt.Sk=function(t){},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1318),pDt(770,563,{}),TWt.Sj=function(t,e,n){return null!=e.Ch(n)},TWt.Tj=function(t,e,n,i){var r,a;t.Lg()&&t.Mg()?(r=!0,null==(a=e.Ch(n))?(r=!1,a=this.b):UI(a)===UI(FOe)&&(a=null),null==i?null!=this.c?(e.Dh(n,null),i=this.b):e.Dh(n,FOe):(this.Sk(i),e.Dh(n,i)),got(t,this.d.Uk(t,1,this.e,a,i,!r))):null==i?null!=this.c?e.Dh(n,null):e.Dh(n,FOe):(this.Sk(i),e.Dh(n,i))},TWt.Vj=function(t,e,n){var i,r;t.Lg()&&t.Mg()?(i=!0,null==(r=e.Ch(n))?(i=!1,r=this.b):UI(r)===UI(FOe)&&(r=null),e.Eh(n),got(t,this.d.Uk(t,2,this.e,r,this.b,i))):e.Eh(n)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",770),pDt(1319,770,{},pX),TWt.Sk=function(t){if(!this.a.wj(t))throw qw(new Rv(Z7t+nut(t)+W7t+this.a+"'"))},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1319),pDt(1320,770,{},tG),TWt.Sk=function(t){},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1320),pDt(398,504,{},aU),TWt.Pj=function(t,e,n,i,r){var a,o,s,c,u;if(u=e.Ch(n),this.Kj()&&UI(u)===UI(FOe))return null;if(this.sk()&&i&&null!=u){if((s=zz(u,49)).kh()&&s!=(c=nht(t,s))){if(!C$t(this.a,c))throw qw(new Rv(Z7t+nut(c)+W7t+this.a+"'"));e.Dh(n,u=c),this.rk()&&(a=zz(c,49),o=s.ih(t,this.b?Ogt(s.Tg(),this.b):-1-Ogt(t.Tg(),this.e),null,null),!a.eh()&&(o=a.gh(t,this.b?Ogt(a.Tg(),this.b):-1-Ogt(t.Tg(),this.e),null,o)),o&&o.Fi()),t.Lg()&&t.Mg()&&got(t,new eY(t,9,this.e,s,c))}return u}return u},TWt.Qj=function(t,e,n,i,r){var a,o;return UI(o=e.Ch(n))===UI(FOe)&&(o=null),e.Dh(n,i),this.bj()?UI(o)!==UI(i)&&null!=o&&(r=(a=zz(o,49)).ih(t,Ogt(a.Tg(),this.b),null,r)):this.rk()&&null!=o&&(r=zz(o,49).ih(t,-1-Ogt(t.Tg(),this.e),null,r)),t.Lg()&&t.Mg()&&(!r&&(r=new $k(4)),r.Ei(new eY(t,1,this.e,o,i))),r},TWt.Rj=function(t,e,n,i,r){var a;return UI(a=e.Ch(n))===UI(FOe)&&(a=null),e.Eh(n),t.Lg()&&t.Mg()&&(!r&&(r=new $k(4)),this.Kj()?r.Ei(new eY(t,2,this.e,a,null)):r.Ei(new eY(t,1,this.e,a,null))),r},TWt.Sj=function(t,e,n){return null!=e.Ch(n)},TWt.Tj=function(t,e,n,i){var r,a,o,s,c;if(null!=i&&!C$t(this.a,i))throw qw(new Rv(Z7t+(aL(i,56)?b_t(zz(i,56).Tg()):set(nut(i)))+W7t+this.a+"'"));s=null!=(c=e.Ch(n)),this.Kj()&&UI(c)===UI(FOe)&&(c=null),o=null,this.bj()?UI(c)!==UI(i)&&(null!=c&&(o=(r=zz(c,49)).ih(t,Ogt(r.Tg(),this.b),null,o)),null!=i&&(o=(r=zz(i,49)).gh(t,Ogt(r.Tg(),this.b),null,o))):this.rk()&&UI(c)!==UI(i)&&(null!=c&&(o=zz(c,49).ih(t,-1-Ogt(t.Tg(),this.e),null,o)),null!=i&&(o=zz(i,49).gh(t,-1-Ogt(t.Tg(),this.e),null,o))),null==i&&this.Kj()?e.Dh(n,FOe):e.Dh(n,i),t.Lg()&&t.Mg()?(a=new UX(t,1,this.e,c,i,this.Kj()&&!s),o?(o.Ei(a),o.Fi()):got(t,a)):o&&o.Fi()},TWt.Vj=function(t,e,n){var i,r,a,o,s;o=null!=(s=e.Ch(n)),this.Kj()&&UI(s)===UI(FOe)&&(s=null),a=null,null!=s&&(this.bj()?a=(i=zz(s,49)).ih(t,Ogt(i.Tg(),this.b),null,a):this.rk()&&(a=zz(s,49).ih(t,-1-Ogt(t.Tg(),this.e),null,a))),e.Eh(n),t.Lg()&&t.Mg()?(r=new UX(t,this.Kj()?2:1,this.e,s,null,o),a?(a.Ei(r),a.Fi()):got(t,r)):a&&a.Fi()},TWt.bj=function(){return!1},TWt.rk=function(){return!1},TWt.sk=function(){return!1},TWt.Kj=function(){return!1},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",398),pDt(564,398,{},JP),TWt.rk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",564),pDt(1323,564,{},tB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1323),pDt(772,564,{},eB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",772),pDt(1325,772,{},nB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1325),pDt(640,564,{},Iz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",640),pDt(1324,640,{},Oz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1324),pDt(773,640,{},Lz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",773),pDt(1326,773,{},Nz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1326),pDt(641,398,{},iB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",641),pDt(1327,641,{},rB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1327),pDt(774,641,{},Mz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",774),pDt(1328,774,{},Pz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1328),pDt(1321,398,{},aB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1321),pDt(771,398,{},Dz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",771),pDt(1322,771,{},Bz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1322),pDt(775,565,Y7t,oW),TWt.Pk=function(t){return new oW(this.a,this.c,t)},TWt.dd=function(){return this.b},TWt.Qk=function(t,e,n){return B8(this,t,this.b,n)},TWt.Rk=function(t,e,n){return F8(this,t,this.b,n)},mZ(d6t,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",775),pDt(1329,1,k7t,_w),TWt.Wj=function(t){return this.a},TWt.fj=function(){return aL(this.a,95)?zz(this.a,95).fj():!this.a.dc()},TWt.Wb=function(t){this.a.$b(),this.a.Gc(zz(t,15))},TWt.Xj=function(){aL(this.a,95)?zz(this.a,95).Xj():this.a.$b()},mZ(d6t,"EStructuralFeatureImpl/SettingMany",1329),pDt(1330,565,Y7t,b4),TWt.Ok=function(t){return new aF((ZHt(),$Le),this.b.Ih(this.a,t))},TWt.dd=function(){return null},TWt.Qk=function(t,e,n){return n},TWt.Rk=function(t,e,n){return n},mZ(d6t,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1330),pDt(642,565,Y7t,aF),TWt.Ok=function(t){return new aF(this.c,t)},TWt.dd=function(){return this.a},TWt.Qk=function(t,e,n){return n},TWt.Rk=function(t,e,n){return n},mZ(d6t,"EStructuralFeatureImpl/SimpleFeatureMapEntry",642),pDt(391,497,h8t,zc),TWt.ri=function(t){return P8(HDe,HWt,26,t,0,1)},TWt.ni=function(){return!1},mZ(d6t,"ESuperAdapter/1",391),pDt(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},qc),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new oU(this,KDe,this)),this.a}return Y7(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 2:return!this.a&&(this.a=new oU(this,KDe,this)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),AOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),AOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return!this.a&&(this.a=new oU(this,KDe,this)),lHt(this.a),!this.a&&(this.a=new oU(this,KDe,this)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t),e)},TWt.zh=function(){return wWt(),AOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return!this.a&&(this.a=new oU(this,KDe,this)),void lHt(this.a)}Uht(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t))},mZ(d6t,"ETypeParameterImpl",444),pDt(445,85,R7t,oU),TWt.cj=function(t,e){return NAt(this,zz(t,87),e)},TWt.dj=function(t,e){return PAt(this,zz(t,87),e)},mZ(d6t,"ETypeParameterImpl/1",445),pDt(634,43,nVt,Py),TWt.ec=function(){return new Aw(this)},mZ(d6t,"ETypeParameterImpl/2",634),pDt(556,eKt,nKt,Aw),TWt.Fc=function(t){return VF(this,zz(t,87))},TWt.Gc=function(t){var e,n,i;for(i=!1,n=t.Kc();n.Ob();)e=zz(n.Pb(),87),null==KW(this.a,e,"")&&(i=!0);return i},TWt.$b=function(){OY(this.a)},TWt.Hc=function(t){return lY(this.a,t)},TWt.Kc=function(){return new Ew(new cut(new Cd(this.a).a))},TWt.Mc=function(t){return j6(this,t)},TWt.gc=function(){return NA(this.a)},mZ(d6t,"ETypeParameterImpl/2/1",556),pDt(557,1,VWt,Ew),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(nnt(this.a).cd(),87)},TWt.Ob=function(){return this.a.b},TWt.Qb=function(){c7(this.a)},mZ(d6t,"ETypeParameterImpl/2/1/1",557),pDt(1276,43,nVt,By),TWt._b=function(t){return ZI(t)?nV(this,t):!!DV(this.f,t)},TWt.xc=function(t){var e;return aL(e=ZI(t)?TQ(this,t):HI(DV(this.f,t)),837)?(e=zz(e,837)._j(),KW(this,zz(t,235),e),e):null!=e?e:null==t?(QE(),rLe):null},mZ(d6t,"EValidatorRegistryImpl",1276),pDt(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},Hc),TWt.Ih=function(t,e){switch(t.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return null==e?null:qdt(e);case 25:return Wet(e);case 27:return Z7(e);case 28:return W7(e);case 29:return null==e?null:qO(IMe[0],zz(e,199));case 41:return null==e?"":t_(zz(e,290));case 42:return qdt(e);case 50:return TB(e);default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 0:return new My;case 1:return new kc;case 2:return new Rh;case 4:return new _m;case 5:return new Dy;case 6:return new km;case 7:return new Bh;case 10:return new vc;case 11:return new Oy;case 12:return new mV;case 13:return new Ly;case 14:return new wB;case 17:return new Dc;case 18:return new Rw;case 19:return new qc;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){switch(t.yj()){case 20:return null==e?null:new g_(e);case 21:return null==e?null:new OD(e);case 23:case 22:return null==e?null:tbt(e);case 26:case 24:return null==e?null:Ctt(djt(e,-128,127)<<24>>24);case 25:return bOt(e);case 27:return Cvt(e);case 28:return Svt(e);case 29:return wEt(e);case 32:case 31:return null==e?null:gTt(e);case 38:case 37:return null==e?null:new Bm(e);case 40:case 39:return null==e?null:rft(djt(e,$Kt,FWt));case 41:case 42:return null;case 44:case 43:return null==e?null:_bt(aYt(e));case 49:case 48:return null==e?null:aft(djt(e,V7t,32767)<<16>>16);case 50:return e;default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(d6t,"EcoreFactoryImpl",1313),pDt(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},YW),TWt.gb=!1,TWt.hb=!1;var KOe,XOe=!1;mZ(d6t,"EcorePackageImpl",547),pDt(1184,1,{837:1},Uc),TWt._j=function(){return uN(),aLe},mZ(d6t,"EcorePackageImpl/1",1184),pDt(1193,1,l9t,Gc),TWt.wj=function(t){return aL(t,147)},TWt.xj=function(t){return P8(zMe,HWt,147,t,0,1)},mZ(d6t,"EcorePackageImpl/10",1193),pDt(1194,1,l9t,Yc),TWt.wj=function(t){return aL(t,191)},TWt.xj=function(t){return P8(HMe,HWt,191,t,0,1)},mZ(d6t,"EcorePackageImpl/11",1194),pDt(1195,1,l9t,Zc),TWt.wj=function(t){return aL(t,56)},TWt.xj=function(t){return P8(LMe,HWt,56,t,0,1)},mZ(d6t,"EcorePackageImpl/12",1195),pDt(1196,1,l9t,Wc),TWt.wj=function(t){return aL(t,399)},TWt.xj=function(t){return P8(XDe,B7t,59,t,0,1)},mZ(d6t,"EcorePackageImpl/13",1196),pDt(1197,1,l9t,Kc),TWt.wj=function(t){return aL(t,235)},TWt.xj=function(t){return P8(UMe,HWt,235,t,0,1)},mZ(d6t,"EcorePackageImpl/14",1197),pDt(1198,1,l9t,Xc),TWt.wj=function(t){return aL(t,509)},TWt.xj=function(t){return P8(VDe,HWt,2017,t,0,1)},mZ(d6t,"EcorePackageImpl/15",1198),pDt(1199,1,l9t,Vc),TWt.wj=function(t){return aL(t,99)},TWt.xj=function(t){return P8(QDe,P7t,18,t,0,1)},mZ(d6t,"EcorePackageImpl/16",1199),pDt(1200,1,l9t,Qc),TWt.wj=function(t){return aL(t,170)},TWt.xj=function(t){return P8($De,P7t,170,t,0,1)},mZ(d6t,"EcorePackageImpl/17",1200),pDt(1201,1,l9t,Jc),TWt.wj=function(t){return aL(t,472)},TWt.xj=function(t){return P8(jDe,HWt,472,t,0,1)},mZ(d6t,"EcorePackageImpl/18",1201),pDt(1202,1,l9t,tu),TWt.wj=function(t){return aL(t,548)},TWt.xj=function(t){return P8(ZOe,s7t,548,t,0,1)},mZ(d6t,"EcorePackageImpl/19",1202),pDt(1185,1,l9t,eu),TWt.wj=function(t){return aL(t,322)},TWt.xj=function(t){return P8(zDe,P7t,34,t,0,1)},mZ(d6t,"EcorePackageImpl/2",1185),pDt(1203,1,l9t,nu),TWt.wj=function(t){return aL(t,241)},TWt.xj=function(t){return P8(KDe,q7t,87,t,0,1)},mZ(d6t,"EcorePackageImpl/20",1203),pDt(1204,1,l9t,iu),TWt.wj=function(t){return aL(t,444)},TWt.xj=function(t){return P8(MOe,HWt,836,t,0,1)},mZ(d6t,"EcorePackageImpl/21",1204),pDt(1205,1,l9t,ru),TWt.wj=function(t){return GI(t)},TWt.xj=function(t){return P8(kee,lKt,476,t,8,1)},mZ(d6t,"EcorePackageImpl/22",1205),pDt(1206,1,l9t,au),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(d6t,"EcorePackageImpl/23",1206),pDt(1207,1,l9t,ou),TWt.wj=function(t){return aL(t,217)},TWt.xj=function(t){return P8(Eee,lKt,217,t,0,1)},mZ(d6t,"EcorePackageImpl/24",1207),pDt(1208,1,l9t,su),TWt.wj=function(t){return aL(t,172)},TWt.xj=function(t){return P8(Cee,lKt,172,t,0,1)},mZ(d6t,"EcorePackageImpl/25",1208),pDt(1209,1,l9t,cu),TWt.wj=function(t){return aL(t,199)},TWt.xj=function(t){return P8(vee,lKt,199,t,0,1)},mZ(d6t,"EcorePackageImpl/26",1209),pDt(1210,1,l9t,uu),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8(jNe,HWt,2110,t,0,1)},mZ(d6t,"EcorePackageImpl/27",1210),pDt(1211,1,l9t,lu),TWt.wj=function(t){return YI(t)},TWt.xj=function(t){return P8(See,lKt,333,t,7,1)},mZ(d6t,"EcorePackageImpl/28",1211),pDt(1212,1,l9t,hu),TWt.wj=function(t){return aL(t,58)},TWt.xj=function(t){return P8(sDe,eJt,58,t,0,1)},mZ(d6t,"EcorePackageImpl/29",1212),pDt(1186,1,l9t,fu),TWt.wj=function(t){return aL(t,510)},TWt.xj=function(t){return P8(RDe,{3:1,4:1,5:1,1934:1},590,t,0,1)},mZ(d6t,"EcorePackageImpl/3",1186),pDt(1213,1,l9t,du),TWt.wj=function(t){return aL(t,573)},TWt.xj=function(t){return P8(vDe,HWt,1940,t,0,1)},mZ(d6t,"EcorePackageImpl/30",1213),pDt(1214,1,l9t,gu),TWt.wj=function(t){return aL(t,153)},TWt.xj=function(t){return P8(cLe,eJt,153,t,0,1)},mZ(d6t,"EcorePackageImpl/31",1214),pDt(1215,1,l9t,pu),TWt.wj=function(t){return aL(t,72)},TWt.xj=function(t){return P8(OOe,h9t,72,t,0,1)},mZ(d6t,"EcorePackageImpl/32",1215),pDt(1216,1,l9t,bu),TWt.wj=function(t){return aL(t,155)},TWt.xj=function(t){return P8(Iee,lKt,155,t,0,1)},mZ(d6t,"EcorePackageImpl/33",1216),pDt(1217,1,l9t,wu),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(d6t,"EcorePackageImpl/34",1217),pDt(1218,1,l9t,mu),TWt.wj=function(t){return aL(t,290)},TWt.xj=function(t){return P8(Lte,HWt,290,t,0,1)},mZ(d6t,"EcorePackageImpl/35",1218),pDt(1219,1,l9t,yu),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(d6t,"EcorePackageImpl/36",1219),pDt(1220,1,l9t,vu),TWt.wj=function(t){return aL(t,83)},TWt.xj=function(t){return P8(Pte,HWt,83,t,0,1)},mZ(d6t,"EcorePackageImpl/37",1220),pDt(1221,1,l9t,xu),TWt.wj=function(t){return aL(t,591)},TWt.xj=function(t){return P8(iLe,HWt,591,t,0,1)},mZ(d6t,"EcorePackageImpl/38",1221),pDt(1222,1,l9t,ku),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8($Ne,HWt,2111,t,0,1)},mZ(d6t,"EcorePackageImpl/39",1222),pDt(1187,1,l9t,_u),TWt.wj=function(t){return aL(t,88)},TWt.xj=function(t){return P8(HDe,HWt,26,t,0,1)},mZ(d6t,"EcorePackageImpl/4",1187),pDt(1223,1,l9t,Au),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(d6t,"EcorePackageImpl/40",1223),pDt(1224,1,l9t,Eu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(d6t,"EcorePackageImpl/41",1224),pDt(1225,1,l9t,Tu),TWt.wj=function(t){return aL(t,588)},TWt.xj=function(t){return P8(uDe,HWt,588,t,0,1)},mZ(d6t,"EcorePackageImpl/42",1225),pDt(1226,1,l9t,Cu),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8(zNe,lKt,2112,t,0,1)},mZ(d6t,"EcorePackageImpl/43",1226),pDt(1227,1,l9t,Su),TWt.wj=function(t){return aL(t,42)},TWt.xj=function(t){return P8(Hte,kKt,42,t,0,1)},mZ(d6t,"EcorePackageImpl/44",1227),pDt(1188,1,l9t,Iu),TWt.wj=function(t){return aL(t,138)},TWt.xj=function(t){return P8(qDe,HWt,138,t,0,1)},mZ(d6t,"EcorePackageImpl/5",1188),pDt(1189,1,l9t,Mu),TWt.wj=function(t){return aL(t,148)},TWt.xj=function(t){return P8(UDe,HWt,148,t,0,1)},mZ(d6t,"EcorePackageImpl/6",1189),pDt(1190,1,l9t,Du),TWt.wj=function(t){return aL(t,457)},TWt.xj=function(t){return P8(ZDe,HWt,671,t,0,1)},mZ(d6t,"EcorePackageImpl/7",1190),pDt(1191,1,l9t,Ou),TWt.wj=function(t){return aL(t,573)},TWt.xj=function(t){return P8(WDe,HWt,678,t,0,1)},mZ(d6t,"EcorePackageImpl/8",1191),pDt(1192,1,l9t,Lu),TWt.wj=function(t){return aL(t,471)},TWt.xj=function(t){return P8(qMe,HWt,471,t,0,1)},mZ(d6t,"EcorePackageImpl/9",1192),pDt(1025,1982,a7t,Pv),TWt.bi=function(t,e){Oht(this,zz(e,415))},TWt.fi=function(t,e){iSt(this,t,zz(e,415))},mZ(d6t,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1025),pDt(1026,143,n7t,sW),TWt.Ai=function(){return this.a.a},mZ(d6t,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1026),pDt(1053,1052,{},cO),mZ("org.eclipse.emf.ecore.plugin","EcorePlugin",1053);var VOe,QOe,JOe,tLe,eLe,nLe,iLe=dH(f9t,"Resource");pDt(781,1378,d9t),TWt.Yk=function(t){},TWt.Zk=function(t){},TWt.Vk=function(){return!this.a&&(this.a=new Tw(this)),this.a},TWt.Wk=function(t){var e,n,i,r,a;if((i=t.length)>0){if(d1(0,t.length),47==t.charCodeAt(0)){for(a=new Q6(4),r=1,e=1;e0&&(t=t.substr(0,n))}return _It(this,t)},TWt.Xk=function(){return this.c},TWt.Ib=function(){return t_(this.gm)+"@"+(eut(this)>>>0).toString(16)+" uri='"+this.d+"'"},TWt.b=!1,mZ(g9t,"ResourceImpl",781),pDt(1379,781,d9t,Sw),mZ(g9t,"BinaryResourceImpl",1379),pDt(1169,694,f8t),TWt.si=function(t){return aL(t,56)?AV(this,zz(t,56)):aL(t,591)?new DL(zz(t,591).Vk()):UI(t)===UI(this.f)?zz(t,14).Kc():(pB(),wDe.a)},TWt.Ob=function(){return gMt(this)},TWt.a=!1,mZ(x7t,"EcoreUtil/ContentTreeIterator",1169),pDt(1380,1169,f8t,rY),TWt.si=function(t){return UI(t)===UI(this.f)?zz(t,15).Kc():new $2(zz(t,56))},mZ(g9t,"ResourceImpl/5",1380),pDt(648,1994,F7t,Tw),TWt.Hc=function(t){return this.i<=4?Ckt(this,t):aL(t,49)&&zz(t,49).Zg()==this.a},TWt.bi=function(t,e){t==this.i-1&&(this.a.b||(this.a.b=!0))},TWt.di=function(t,e){0==t?this.a.b||(this.a.b=!0):L8(this,t,e)},TWt.fi=function(t,e){},TWt.gi=function(t,e,n){},TWt.aj=function(){return 2},TWt.Ai=function(){return this.a},TWt.bj=function(){return!0},TWt.cj=function(t,e){return e=zz(t,49).wh(this.a,e)},TWt.dj=function(t,e){return zz(t,49).wh(null,e)},TWt.ej=function(){return!1},TWt.hi=function(){return!0},TWt.ri=function(t){return P8(LMe,HWt,56,t,0,1)},TWt.ni=function(){return!1},mZ(g9t,"ResourceImpl/ContentsEList",648),pDt(957,1964,NKt,Cw),TWt.Zc=function(t){return this.a._h(t)},TWt.gc=function(){return this.a.gc()},mZ(x7t,"AbstractSequentialInternalEList/1",957),pDt(624,1,{},Tq),mZ(x7t,"BasicExtendedMetaData",624),pDt(1160,1,{},OI),TWt.$k=function(){return null},TWt._k=function(){return-2==this.a&&cd(this,sEt(this.d,this.b)),this.a},TWt.al=function(){return null},TWt.bl=function(){return TX(),TX(),lne},TWt.ne=function(){return this.c==I9t&&ld(this,Abt(this.d,this.b)),this.c},TWt.cl=function(){return 0},TWt.a=-2,TWt.c=I9t,mZ(x7t,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1160),pDt(1161,1,{},j0),TWt.$k=function(){return this.a==(F5(),eLe)&&ud(this,yNt(this.f,this.b)),this.a},TWt._k=function(){return 0},TWt.al=function(){return this.c==(F5(),eLe)&&hd(this,vNt(this.f,this.b)),this.c},TWt.bl=function(){return!this.d&&fd(this,CRt(this.f,this.b)),this.d},TWt.ne=function(){return this.e==I9t&&dd(this,Abt(this.f,this.b)),this.e},TWt.cl=function(){return-2==this.g&&gd(this,Q_t(this.f,this.b)),this.g},TWt.e=I9t,TWt.g=-2,mZ(x7t,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1161),pDt(1159,1,{},FI),TWt.b=!1,TWt.c=!1,mZ(x7t,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1159),pDt(1162,1,{},R0),TWt.c=-2,TWt.e=I9t,TWt.f=I9t,mZ(x7t,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1162),pDt(585,622,R7t,Eq),TWt.aj=function(){return this.c},TWt.Fk=function(){return!1},TWt.li=function(t,e){return e},TWt.c=0,mZ(x7t,"EDataTypeEList",585);var rLe,aLe,oLe,sLe,cLe=dH(x7t,"FeatureMap");pDt(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},Aat),TWt.Vc=function(t,e){dNt(this,t,zz(e,72))},TWt.Fc=function(t){return cLt(this,zz(t,72))},TWt.Yh=function(t){pZ(this,zz(t,72))},TWt.cj=function(t,e){return qR(this,zz(t,72),e)},TWt.dj=function(t,e){return HR(this,zz(t,72),e)},TWt.ii=function(t,e){return sjt(this,t,e)},TWt.li=function(t,e){return hUt(this,t,zz(e,72))},TWt._c=function(t,e){return SPt(this,t,zz(e,72))},TWt.jj=function(t,e){return UR(this,zz(t,72),e)},TWt.kj=function(t,e){return GR(this,zz(t,72),e)},TWt.lj=function(t,e,n){return w_t(this,zz(t,72),zz(e,72),n)},TWt.oi=function(t,e){return lAt(this,t,zz(e,72))},TWt.dl=function(t,e){return BRt(this,t,e)},TWt.Wc=function(t,e){var n,i,r,a,o,s,c,u,l;for(u=new wet(e.gc()),r=e.Kc();r.Ob();)if(a=(i=zz(r.Pb(),72)).ak(),LPt(this.e,a))(!a.hi()||!U3(this,a,i.dd())&&!Ckt(u,i))&&h7(u,i);else{for(l=sPt(this.e.Tg(),a),n=zz(this.g,119),o=!0,s=0;s=0;)if(e=t[this.c],this.k.rl(e.ak()))return this.j=this.f?e:e.dd(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},mZ(x7t,"BasicFeatureMap/FeatureEIterator",410),pDt(662,410,oKt,PM),TWt.Lk=function(){return!0},mZ(x7t,"BasicFeatureMap/ResolvingFeatureEIterator",662),pDt(955,486,U7t,GO),TWt.Gi=function(){return this},mZ(x7t,"EContentsEList/1",955),pDt(956,486,U7t,BM),TWt.Lk=function(){return!1},mZ(x7t,"EContentsEList/2",956),pDt(954,279,G7t,YO),TWt.Nk=function(t){},TWt.Ob=function(){return!1},TWt.Sb=function(){return!1},mZ(x7t,"EContentsEList/FeatureIteratorImpl/1",954),pDt(825,585,R7t,RL),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EDataTypeEList/Unsettable",825),pDt(1849,585,R7t,jL),TWt.hi=function(){return!0},mZ(x7t,"EDataTypeUniqueEList",1849),pDt(1850,825,R7t,$L),TWt.hi=function(){return!0},mZ(x7t,"EDataTypeUniqueEList/Unsettable",1850),pDt(139,85,R7t,NL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentEList/Resolving",139),pDt(1163,545,R7t,PL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentEList/Unsettable/Resolving",1163),pDt(748,16,R7t,iR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectContainmentWithInverseEList/Unsettable",748),pDt(1173,748,R7t,rR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1173),pDt(743,496,R7t,BL),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectEList/Unsettable",743),pDt(328,496,R7t,FL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectResolvingEList",328),pDt(1641,743,R7t,zL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectResolvingEList/Unsettable",1641),pDt(1381,1,{},Nu),mZ(x7t,"EObjectValidator",1381),pDt(546,496,R7t,iY),TWt.zk=function(){return this.d},TWt.Ak=function(){return this.b},TWt.bj=function(){return!0},TWt.Dk=function(){return!0},TWt.b=0,mZ(x7t,"EObjectWithInverseEList",546),pDt(1176,546,R7t,aR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseEList/ManyInverse",1176),pDt(625,546,R7t,oR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectWithInverseEList/Unsettable",625),pDt(1175,625,R7t,cR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseEList/Unsettable/ManyInverse",1175),pDt(749,546,R7t,sR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectWithInverseResolvingEList",749),pDt(31,749,R7t,lR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseResolvingEList/ManyInverse",31),pDt(750,625,R7t,uR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectWithInverseResolvingEList/Unsettable",750),pDt(1174,750,R7t,hR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1174),pDt(1164,622,R7t),TWt.ai=function(){return 0==(1792&this.b)},TWt.ci=function(){this.b|=1},TWt.Bk=function(){return 0!=(4&this.b)},TWt.bj=function(){return 0!=(40&this.b)},TWt.Ck=function(){return 0!=(16&this.b)},TWt.Dk=function(){return 0!=(8&this.b)},TWt.Ek=function(){return 0!=(this.b&T7t)},TWt.rk=function(){return 0!=(32&this.b)},TWt.Fk=function(){return 0!=(this.b&k6t)},TWt.wj=function(t){return this.d?P3(this.d,t):this.ak().Yj().wj(t)},TWt.fj=function(){return 0!=(2&this.b)?0!=(1&this.b):0!=this.i},TWt.hi=function(){return 0!=(128&this.b)},TWt.Xj=function(){var t;lHt(this),0!=(2&this.b)&&(yD(this.e)?(t=0!=(1&this.b),this.b&=-2,Lm(this,new e6(this.e,2,Ogt(this.e.Tg(),this.ak()),t,!1))):this.b&=-2)},TWt.ni=function(){return 0==(1536&this.b)},TWt.b=0,mZ(x7t,"EcoreEList/Generic",1164),pDt(1165,1164,R7t,GX),TWt.ak=function(){return this.a},mZ(x7t,"EcoreEList/Dynamic",1165),pDt(747,63,h8t,Iw),TWt.ri=function(t){return Fnt(this.a.a,t)},mZ(x7t,"EcoreEMap/1",747),pDt(746,85,R7t,JG),TWt.bi=function(t,e){Mmt(this.b,zz(e,133))},TWt.di=function(t,e){sot(this.b)},TWt.ei=function(t,e,n){var i;++(i=this.b,zz(e,133),i).e},TWt.fi=function(t,e){Dft(this.b,zz(e,133))},TWt.gi=function(t,e,n){Dft(this.b,zz(n,133)),UI(n)===UI(e)&&zz(n,133).Th(aO(zz(e,133).cd())),Mmt(this.b,zz(e,133))},mZ(x7t,"EcoreEMap/DelegateEObjectContainmentEList",746),pDt(1171,151,_7t,xit),mZ(x7t,"EcoreEMap/Unsettable",1171),pDt(1172,746,R7t,fR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1172),pDt(1168,228,nVt,fZ),TWt.a=!1,TWt.b=!1,mZ(x7t,"EcoreUtil/Copier",1168),pDt(745,1,VWt,$2),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return cpt(this)},TWt.Pb=function(){var t;return cpt(this),t=this.b,this.b=null,t},TWt.Qb=function(){this.a.Qb()},mZ(x7t,"EcoreUtil/ProperContentIterator",745),pDt(1382,1381,{},jh),mZ(x7t,"EcoreValidator",1382),dH(x7t,"FeatureMapUtil/Validator"),pDt(1260,1,{1942:1},Pu),TWt.rl=function(t){return!0},mZ(x7t,"FeatureMapUtil/1",1260),pDt(757,1,{1942:1},oYt),TWt.rl=function(t){var e;return this.c==t||(null==(e=AB(FZ(this.a,t)))?BFt(this,t)?(r6(this.a,t,(lN(),yee)),!0):(r6(this.a,t,(lN(),mee)),!1):e==(lN(),yee))},TWt.e=!1,mZ(x7t,"FeatureMapUtil/BasicValidator",757),pDt(758,43,nVt,ZO),mZ(x7t,"FeatureMapUtil/BasicValidator/Cache",758),pDt(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},PI),TWt.Vc=function(t,e){OPt(this.c,this.b,t,e)},TWt.Fc=function(t){return BRt(this.c,this.b,t)},TWt.Wc=function(t,e){return _qt(this.c,this.b,t,e)},TWt.Gc=function(t){return JO(this,t)},TWt.Xh=function(t,e){het(this.c,this.b,t,e)},TWt.lk=function(t,e){return SFt(this.c,this.b,t,e)},TWt.pi=function(t){return rqt(this.c,this.b,t,!1)},TWt.Zh=function(){return kD(this.c,this.b)},TWt.$h=function(){return _D(this.c,this.b)},TWt._h=function(t){return O8(this.c,this.b,t)},TWt.mk=function(t,e){return eF(this,t,e)},TWt.$b=function(){Nm(this)},TWt.Hc=function(t){return U3(this.c,this.b,t)},TWt.Ic=function(t){return Tat(this.c,this.b,t)},TWt.Xb=function(t){return rqt(this.c,this.b,t,!0)},TWt.Wj=function(t){return this},TWt.Xc=function(t){return G3(this.c,this.b,t)},TWt.dc=function(){return qI(this)},TWt.fj=function(){return!spt(this.c,this.b)},TWt.Kc=function(){return att(this.c,this.b)},TWt.Yc=function(){return ott(this.c,this.b)},TWt.Zc=function(t){return dft(this.c,this.b,t)},TWt.ii=function(t,e){return v$t(this.c,this.b,t,e)},TWt.ji=function(t,e){X6(this.c,this.b,t,e)},TWt.$c=function(t){return sCt(this.c,this.b,t)},TWt.Mc=function(t){return IRt(this.c,this.b,t)},TWt._c=function(t,e){return W$t(this.c,this.b,t,e)},TWt.Wb=function(t){OMt(this.c,this.b),JO(this,zz(t,15))},TWt.gc=function(){return jft(this.c,this.b)},TWt.Pc=function(){return U1(this.c,this.b)},TWt.Qc=function(t){return Y3(this.c,this.b,t)},TWt.Ib=function(){var t,e;for((e=new Tx).a+="[",t=kD(this.c,this.b);jut(t);)aM(e,xN(omt(t))),jut(t)&&(e.a+=zWt);return e.a+="]",e.a},TWt.Xj=function(){OMt(this.c,this.b)},mZ(x7t,"FeatureMapUtil/FeatureEList",501),pDt(627,36,n7t,d4),TWt.yi=function(t){return ift(this,t)},TWt.Di=function(t){var e,n,i,r;switch(this.d){case 1:case 2:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.g=t.zi(),1==t.xi()&&(this.d=1),!0;break;case 3:if(3===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=5,h7(e=new wet(2),this.g),h7(e,t.zi()),this.g=e,!0;break;case 5:if(3===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return zz(this.g,14).Fc(t.zi()),!0;break;case 4:switch(t.xi()){case 3:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=1,this.g=t.zi(),!0;break;case 4:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=6,h7(r=new wet(2),this.n),h7(r,t.Bi()),this.n=r,i=Sst(Ux(DNe,1),hXt,25,15,[this.o,t.Ci()]),this.g=i,!0}break;case 6:if(4===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return zz(this.n,14).Fc(t.Bi()),sqt(i=zz(this.g,48),0,n=P8(DNe,hXt,25,i.length+1,15,1),0,i.length),n[i.length]=t.Ci(),this.g=n,!0}return!1},mZ(x7t,"FeatureMapUtil/FeatureENotificationImpl",627),pDt(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},fH),TWt.dl=function(t,e){return BRt(this.c,t,e)},TWt.el=function(t,e,n){return SFt(this.c,t,e,n)},TWt.fl=function(t,e,n){return tqt(this.c,t,e,n)},TWt.gl=function(){return this},TWt.hl=function(t,e){return aqt(this.c,t,e)},TWt.il=function(t){return zz(rqt(this.c,this.b,t,!1),72).ak()},TWt.jl=function(t){return zz(rqt(this.c,this.b,t,!1),72).dd()},TWt.kl=function(){return this.a},TWt.ll=function(t){return!spt(this.c,t)},TWt.ml=function(t,e){Tqt(this.c,t,e)},TWt.nl=function(t){return Yit(this.c,t)},TWt.ol=function(t){jyt(this.c,t)},mZ(x7t,"FeatureMapUtil/FeatureFeatureMap",552),pDt(1259,1,k7t,RI),TWt.Wj=function(t){return rqt(this.b,this.a,-1,t)},TWt.fj=function(){return!spt(this.b,this.a)},TWt.Wb=function(t){Tqt(this.b,this.a,t)},TWt.Xj=function(){OMt(this.b,this.a)},mZ(x7t,"FeatureMapUtil/FeatureValue",1259);var uLe,lLe,hLe,fLe,dLe,gLe=dH(D9t,"AnyType");pDt(666,60,qKt,ix),mZ(D9t,"InvalidDatatypeValueException",666);var pLe,bLe,wLe,mLe,yLe,vLe,xLe,kLe,_Le,ALe,ELe,TLe,CLe,SLe,ILe,MLe,DLe,OLe,LLe,NLe,PLe,BLe,FLe,RLe,jLe,$Le,zLe,qLe,HLe,ULe,GLe=dH(D9t,O9t),YLe=dH(D9t,L9t),ZLe=dH(D9t,N9t);pDt(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},Fy),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.c&&(this.c=new Aat(this,0)),this.c):(!this.c&&(this.c=new Aat(this,0)),this.c.b);case 1:return n?(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)):(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).kl();case 2:return n?(!this.b&&(this.b=new Aat(this,2)),this.b):(!this.b&&(this.b=new Aat(this,2)),this.b.b)}return Y7(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.c&&(this.c=new Aat(this,0)),ERt(this.c,t,n);case 1:return(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),69)).mk(t,n);case 2:return!this.b&&(this.b=new Aat(this,2)),ERt(this.b,t,n)}return zz(iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),e),66).Nj().Rj(this,X9(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.c&&0!=this.c.i;case 1:return!(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).dc();case 2:return!!this.b&&0!=this.b.i}return M3(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void eZ(this.c,e);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).Wb(e);case 2:return!this.b&&(this.b=new Aat(this,2)),void eZ(this.b,e)}Ndt(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),wLe},TWt.Bh=function(t){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void lHt(this.c);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).$b();case 2:return!this.b&&(this.b=new Aat(this,2)),void lHt(this.b)}Uht(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (mixed: ",rM(t,this.c),t.a+=", anyAttribute: ",rM(t,this.b),t.a+=")",t.a)},mZ(P9t,"AnyTypeImpl",830),pDt(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},Fu),TWt._g=function(t,e,n){switch(t){case 0:return this.a;case 1:return this.b}return Y7(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return null!=this.a;case 1:return null!=this.b}return M3(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return void xd(this,TB(e));case 1:return void kd(this,TB(e))}Ndt(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),MLe},TWt.Bh=function(t){switch(t){case 0:return void(this.a=null);case 1:return void(this.b=null)}Uht(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (data: ",aM(t,this.a),t.a+=", target: ",aM(t,this.b),t.a+=")",t.a)},TWt.a=null,TWt.b=null,mZ(P9t,"ProcessingInstructionImpl",667),pDt(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},jy),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.c&&(this.c=new Aat(this,0)),this.c):(!this.c&&(this.c=new Aat(this,0)),this.c.b);case 1:return n?(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)):(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).kl();case 2:return n?(!this.b&&(this.b=new Aat(this,2)),this.b):(!this.b&&(this.b=new Aat(this,2)),this.b.b);case 3:return!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0));case 4:return bR(this.a,(!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0))));case 5:return this.a}return Y7(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.c&&0!=this.c.i;case 1:return!(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).dc();case 2:return!!this.b&&0!=this.b.i;case 3:return!this.c&&(this.c=new Aat(this,0)),null!=TB(aqt(this.c,(ZHt(),LLe),!0));case 4:return null!=bR(this.a,(!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0))));case 5:return!!this.a}return M3(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void eZ(this.c,e);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).Wb(e);case 2:return!this.b&&(this.b=new Aat(this,2)),void eZ(this.b,e);case 3:return void $0(this,TB(e));case 4:return void $0(this,wR(this.a,e));case 5:return void _d(this,zz(e,148))}Ndt(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),OLe},TWt.Bh=function(t){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void lHt(this.c);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).$b();case 2:return!this.b&&(this.b=new Aat(this,2)),void lHt(this.b);case 3:return!this.c&&(this.c=new Aat(this,0)),void Tqt(this.c,(ZHt(),LLe),null);case 4:return void $0(this,wR(this.a,null));case 5:return void(this.a=null)}Uht(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},mZ(P9t,"SimpleAnyTypeImpl",668),pDt(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},Ry),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.a&&(this.a=new Aat(this,0)),this.a):(!this.a&&(this.a=new Aat(this,0)),this.a.b);case 1:return n?(!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),this.b):(!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),D8(this.b));case 2:return n?(!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),this.c):(!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),D8(this.c));case 3:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),BLe));case 4:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),FLe));case 5:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),jLe));case 6:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),$Le))}return Y7(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.a&&(this.a=new Aat(this,0)),ERt(this.a,t,n);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),zR(this.b,t,n);case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),zR(this.c,t,n);case 5:return!this.a&&(this.a=new Aat(this,0)),eF(t1(this.a,(ZHt(),jLe)),t,n)}return zz(iet(0==(2&this.j)?(ZHt(),PLe):(!this.k&&(this.k=new Fh),this.k).ck(),e),66).Nj().Rj(this,X9(this),e-dZ((ZHt(),PLe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.a&&0!=this.a.i;case 1:return!!this.b&&0!=this.b.f;case 2:return!!this.c&&0!=this.c.f;case 3:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),BLe)));case 4:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),FLe)));case 5:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),jLe)));case 6:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),$Le)))}return M3(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.a&&(this.a=new Aat(this,0)),void eZ(this.a,e);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),void not(this.b,e);case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),void not(this.c,e);case 3:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),BLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,BLe),zz(e,14));case 4:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),FLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,FLe),zz(e,14));case 5:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),jLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,jLe),zz(e,14));case 6:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),$Le))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,$Le),zz(e,14))}Ndt(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),PLe},TWt.Bh=function(t){switch(t){case 0:return!this.a&&(this.a=new Aat(this,0)),void lHt(this.a);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),void this.b.c.$b();case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),void this.c.c.$b();case 3:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),BLe)));case 4:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),FLe)));case 5:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),jLe)));case 6:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),$Le)))}Uht(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (mixed: ",rM(t,this.a),t.a+=")",t.a)},mZ(P9t,"XMLTypeDocumentRootImpl",669),pDt(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},Bu),TWt.Ih=function(t,e){switch(t.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return null==e?null:qdt(e);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return TB(e);case 6:return yB(zz(e,190));case 12:case 47:case 49:case 11:return UUt(this,t,e);case 13:return null==e?null:Gzt(zz(e,240));case 15:case 14:return null==e?null:FY(Uv(EB(e)));case 17:return A_t((ZHt(),e));case 18:return A_t(e);case 21:case 20:return null==e?null:RY(zz(e,155).a);case 27:return vB(zz(e,190));case 30:return $yt((ZHt(),zz(e,15)));case 31:return $yt(zz(e,15));case 40:return kB((ZHt(),e));case 42:return E_t((ZHt(),e));case 43:return E_t(e);case 59:case 48:return xB((ZHt(),e));default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 0:return new Fy;case 1:return new Fu;case 2:return new jy;case 3:return new Ry;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;switch(t.yj()){case 5:case 52:case 4:return e;case 6:return xwt(e);case 8:case 7:return null==e?null:$_t(e);case 9:return null==e?null:Ctt(djt((i=zzt(e,!0)).length>0&&(d1(0,i.length),43==i.charCodeAt(0))?i.substr(1):i,-128,127)<<24>>24);case 10:return null==e?null:Ctt(djt((r=zzt(e,!0)).length>0&&(d1(0,r.length),43==r.charCodeAt(0))?r.substr(1):r,-128,127)<<24>>24);case 11:return TB(BZt(this,(ZHt(),xLe),e));case 12:return TB(BZt(this,(ZHt(),kLe),e));case 13:return null==e?null:new g_(zzt(e,!0));case 15:case 14:return wLt(e);case 16:return TB(BZt(this,(ZHt(),_Le),e));case 17:return Hpt((ZHt(),e));case 18:return Hpt(e);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return zzt(e,!0);case 21:case 20:return MLt(e);case 22:return TB(BZt(this,(ZHt(),ALe),e));case 23:return TB(BZt(this,(ZHt(),ELe),e));case 24:return TB(BZt(this,(ZHt(),TLe),e));case 25:return TB(BZt(this,(ZHt(),CLe),e));case 26:return TB(BZt(this,(ZHt(),SLe),e));case 27:return twt(e);case 30:return Upt((ZHt(),e));case 31:return Upt(e);case 32:return null==e?null:rft(djt((l=zzt(e,!0)).length>0&&(d1(0,l.length),43==l.charCodeAt(0))?l.substr(1):l,$Kt,FWt));case 33:return null==e?null:new OD((h=zzt(e,!0)).length>0&&(d1(0,h.length),43==h.charCodeAt(0))?h.substr(1):h);case 34:return null==e?null:rft(djt((f=zzt(e,!0)).length>0&&(d1(0,f.length),43==f.charCodeAt(0))?f.substr(1):f,$Kt,FWt));case 36:return null==e?null:_bt(aYt((d=zzt(e,!0)).length>0&&(d1(0,d.length),43==d.charCodeAt(0))?d.substr(1):d));case 37:return null==e?null:_bt(aYt((g=zzt(e,!0)).length>0&&(d1(0,g.length),43==g.charCodeAt(0))?g.substr(1):g));case 40:return Xgt((ZHt(),e));case 42:return Gpt((ZHt(),e));case 43:return Gpt(e);case 44:return null==e?null:new OD((p=zzt(e,!0)).length>0&&(d1(0,p.length),43==p.charCodeAt(0))?p.substr(1):p);case 45:return null==e?null:new OD((b=zzt(e,!0)).length>0&&(d1(0,b.length),43==b.charCodeAt(0))?b.substr(1):b);case 46:return zzt(e,!1);case 47:return TB(BZt(this,(ZHt(),ILe),e));case 59:case 48:return Kgt((ZHt(),e));case 49:return TB(BZt(this,(ZHt(),DLe),e));case 50:return null==e?null:aft(djt((w=zzt(e,!0)).length>0&&(d1(0,w.length),43==w.charCodeAt(0))?w.substr(1):w,V7t,32767)<<16>>16);case 51:return null==e?null:aft(djt((a=zzt(e,!0)).length>0&&(d1(0,a.length),43==a.charCodeAt(0))?a.substr(1):a,V7t,32767)<<16>>16);case 53:return TB(BZt(this,(ZHt(),NLe),e));case 55:return null==e?null:aft(djt((o=zzt(e,!0)).length>0&&(d1(0,o.length),43==o.charCodeAt(0))?o.substr(1):o,V7t,32767)<<16>>16);case 56:return null==e?null:aft(djt((s=zzt(e,!0)).length>0&&(d1(0,s.length),43==s.charCodeAt(0))?s.substr(1):s,V7t,32767)<<16>>16);case 57:return null==e?null:_bt(aYt((c=zzt(e,!0)).length>0&&(d1(0,c.length),43==c.charCodeAt(0))?c.substr(1):c));case 58:return null==e?null:_bt(aYt((u=zzt(e,!0)).length>0&&(d1(0,u.length),43==u.charCodeAt(0))?u.substr(1):u));case 60:return null==e?null:rft(djt((n=zzt(e,!0)).length>0&&(d1(0,n.length),43==n.charCodeAt(0))?n.substr(1):n,$Kt,FWt));case 61:return null==e?null:rft(djt(zzt(e,!0),$Kt,FWt));default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(P9t,"XMLTypeFactoryImpl",1919),pDt(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},GW),TWt.N=!1,TWt.O=!1;var WLe,KLe,XLe,VLe,QLe,JLe=!1;mZ(P9t,"XMLTypePackageImpl",586),pDt(1852,1,{837:1},Ru),TWt._j=function(){return f$t(),ANe},mZ(P9t,"XMLTypePackageImpl/1",1852),pDt(1861,1,l9t,ju),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/10",1861),pDt(1862,1,l9t,$u),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/11",1862),pDt(1863,1,l9t,zu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/12",1863),pDt(1864,1,l9t,qu),TWt.wj=function(t){return YI(t)},TWt.xj=function(t){return P8(See,lKt,333,t,7,1)},mZ(P9t,"XMLTypePackageImpl/13",1864),pDt(1865,1,l9t,Hu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/14",1865),pDt(1866,1,l9t,Uu),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/15",1866),pDt(1867,1,l9t,Gu),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/16",1867),pDt(1868,1,l9t,Yu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/17",1868),pDt(1869,1,l9t,Zu),TWt.wj=function(t){return aL(t,155)},TWt.xj=function(t){return P8(Iee,lKt,155,t,0,1)},mZ(P9t,"XMLTypePackageImpl/18",1869),pDt(1870,1,l9t,Wu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/19",1870),pDt(1853,1,l9t,Ku),TWt.wj=function(t){return aL(t,843)},TWt.xj=function(t){return P8(gLe,HWt,843,t,0,1)},mZ(P9t,"XMLTypePackageImpl/2",1853),pDt(1871,1,l9t,Xu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/20",1871),pDt(1872,1,l9t,Vu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/21",1872),pDt(1873,1,l9t,Qu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/22",1873),pDt(1874,1,l9t,Ju),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/23",1874),pDt(1875,1,l9t,tl),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(P9t,"XMLTypePackageImpl/24",1875),pDt(1876,1,l9t,el),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/25",1876),pDt(1877,1,l9t,nl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/26",1877),pDt(1878,1,l9t,il),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/27",1878),pDt(1879,1,l9t,rl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/28",1879),pDt(1880,1,l9t,al),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/29",1880),pDt(1854,1,l9t,ol),TWt.wj=function(t){return aL(t,667)},TWt.xj=function(t){return P8(GLe,HWt,2021,t,0,1)},mZ(P9t,"XMLTypePackageImpl/3",1854),pDt(1881,1,l9t,sl),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(P9t,"XMLTypePackageImpl/30",1881),pDt(1882,1,l9t,cl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/31",1882),pDt(1883,1,l9t,ul),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(P9t,"XMLTypePackageImpl/32",1883),pDt(1884,1,l9t,ll),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/33",1884),pDt(1885,1,l9t,hl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/34",1885),pDt(1886,1,l9t,fl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/35",1886),pDt(1887,1,l9t,dl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/36",1887),pDt(1888,1,l9t,gl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/37",1888),pDt(1889,1,l9t,pl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/38",1889),pDt(1890,1,l9t,bl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/39",1890),pDt(1855,1,l9t,wl),TWt.wj=function(t){return aL(t,668)},TWt.xj=function(t){return P8(YLe,HWt,2022,t,0,1)},mZ(P9t,"XMLTypePackageImpl/4",1855),pDt(1891,1,l9t,ml),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/40",1891),pDt(1892,1,l9t,yl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/41",1892),pDt(1893,1,l9t,vl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/42",1893),pDt(1894,1,l9t,xl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/43",1894),pDt(1895,1,l9t,kl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/44",1895),pDt(1896,1,l9t,_l),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(P9t,"XMLTypePackageImpl/45",1896),pDt(1897,1,l9t,Al),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/46",1897),pDt(1898,1,l9t,El),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/47",1898),pDt(1899,1,l9t,Tl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/48",1899),pDt(lXt,1,l9t,Cl),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(P9t,"XMLTypePackageImpl/49",lXt),pDt(1856,1,l9t,Sl),TWt.wj=function(t){return aL(t,669)},TWt.xj=function(t){return P8(ZLe,HWt,2023,t,0,1)},mZ(P9t,"XMLTypePackageImpl/5",1856),pDt(1901,1,l9t,Il),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(P9t,"XMLTypePackageImpl/50",1901),pDt(1902,1,l9t,Ml),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/51",1902),pDt(1903,1,l9t,Dl),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(P9t,"XMLTypePackageImpl/52",1903),pDt(1857,1,l9t,Ol),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/6",1857),pDt(1858,1,l9t,Ll),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(P9t,"XMLTypePackageImpl/7",1858),pDt(1859,1,l9t,Nl),TWt.wj=function(t){return GI(t)},TWt.xj=function(t){return P8(kee,lKt,476,t,8,1)},mZ(P9t,"XMLTypePackageImpl/8",1859),pDt(1860,1,l9t,Pl),TWt.wj=function(t){return aL(t,217)},TWt.xj=function(t){return P8(Eee,lKt,217,t,0,1)},mZ(P9t,"XMLTypePackageImpl/9",1860),pDt(50,60,qKt,ox),mZ(ste,"RegEx/ParseException",50),pDt(820,1,{},Bl),TWt.sl=function(t){return t16*n)throw qw(new ox(kWt((sO(),H8t))));n=16*n+r}if(125!=this.a)throw qw(new ox(kWt((sO(),U8t))));if(n>cte)throw qw(new ox(kWt((sO(),G8t))));t=n}else{if(r=0,0!=this.c||(r=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(n=r,VZt(this),0!=this.c||(r=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));t=n=16*n+r}break;case 117:if(i=0,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));t=e=16*e+i;break;case 118:if(VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if((e=16*e+i)>cte)throw qw(new ox(kWt((sO(),"parser.descappe.4"))));t=e;break;case 65:case 90:case 122:throw qw(new ox(kWt((sO(),Y8t))))}return t},TWt.ul=function(t){var e;switch(t){case 100:e=32==(32&this.e)?tZt("Nd",!0):(pWt(),sNe);break;case 68:e=32==(32&this.e)?tZt("Nd",!1):(pWt(),fNe);break;case 119:e=32==(32&this.e)?tZt("IsWord",!0):(pWt(),xNe);break;case 87:e=32==(32&this.e)?tZt("IsWord",!1):(pWt(),gNe);break;case 115:e=32==(32&this.e)?tZt("IsSpace",!0):(pWt(),bNe);break;case 83:e=32==(32&this.e)?tZt("IsSpace",!1):(pWt(),dNe);break;default:throw qw(new pv(ute+t.toString(16)))}return e},TWt.vl=function(t){var e,n,i,r,a,o,s,c,u,l,h;for(this.b=1,VZt(this),e=null,0==this.c&&94==this.a?(VZt(this),t?(pWt(),pWt(),u=new E0(5)):(pWt(),pWt(),QPt(e=new E0(4),0,cte),u=new E0(4))):(pWt(),pWt(),u=new E0(4)),r=!0;1!=(h=this.c)&&(0!=h||93!=this.a||r);){if(r=!1,n=this.a,i=!1,10==h)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:lqt(u,this.ul(n)),i=!0;break;case 105:case 73:case 99:case 67:(n=this.Ll(u,n))<0&&(i=!0);break;case 112:case 80:if(!(l=FIt(this,n)))throw qw(new ox(kWt((sO(),D8t))));lqt(u,l),i=!0;break;default:n=this.tl()}else if(20==h){if((a=fP(this.i,58,this.d))<0)throw qw(new ox(kWt((sO(),O8t))));if(o=!0,94==hK(this.i,this.d)&&(++this.d,o=!1),!(s=d7(hP(this.i,this.d,a),o,512==(512&this.e))))throw qw(new ox(kWt((sO(),N8t))));if(lqt(u,s),i=!0,a+1>=this.j||93!=hK(this.i,a+1))throw qw(new ox(kWt((sO(),O8t))));this.d=a+2}if(VZt(this),!i)if(0!=this.c||45!=this.a)QPt(u,n,n);else{if(VZt(this),1==(h=this.c))throw qw(new ox(kWt((sO(),L8t))));0==h&&93==this.a?(QPt(u,n,n),QPt(u,45,45)):(c=this.a,10==h&&(c=this.tl()),VZt(this),QPt(u,n,c))}(this.e&k6t)==k6t&&0==this.c&&44==this.a&&VZt(this)}if(1==this.c)throw qw(new ox(kWt((sO(),L8t))));return e&&(KUt(e,u),u=e),EOt(u),Uqt(u),this.b=0,VZt(this),u},TWt.wl=function(){var t,e,n,i;for(n=this.vl(!1);7!=(i=this.c);){if(t=this.a,(0!=i||45!=t&&38!=t)&&4!=i)throw qw(new ox(kWt((sO(),$8t))));if(VZt(this),9!=this.c)throw qw(new ox(kWt((sO(),j8t))));if(e=this.vl(!1),4==i)lqt(n,e);else if(45==t)KUt(n,e);else{if(38!=t)throw qw(new pv("ASSERT"));kUt(n,e)}}return VZt(this),n},TWt.xl=function(){var t,e;return t=this.a-48,pWt(),pWt(),e=new mQ(12,null,t),!this.g&&(this.g=new jm),Sm(this.g,new Mw(t)),VZt(this),e},TWt.yl=function(){return VZt(this),pWt(),wNe},TWt.zl=function(){return VZt(this),pWt(),pNe},TWt.Al=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Bl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Cl=function(){return VZt(this),fut()},TWt.Dl=function(){return VZt(this),pWt(),yNe},TWt.El=function(){return VZt(this),pWt(),kNe},TWt.Fl=function(){var t;if(this.d>=this.j||64!=(65504&(t=hK(this.i,this.d++))))throw qw(new ox(kWt((sO(),C8t))));return VZt(this),pWt(),pWt(),new cU(0,t-64)},TWt.Gl=function(){return VZt(this),R$t()},TWt.Hl=function(){return VZt(this),pWt(),_Ne},TWt.Il=function(){var t;return pWt(),pWt(),t=new cU(0,105),VZt(this),t},TWt.Jl=function(){return VZt(this),pWt(),vNe},TWt.Kl=function(){return VZt(this),pWt(),mNe},TWt.Ll=function(t,e){return this.tl()},TWt.Ml=function(){return VZt(this),pWt(),lNe},TWt.Nl=function(){var t,e,n,i,r;if(this.d+1>=this.j)throw qw(new ox(kWt((sO(),A8t))));if(i=-1,e=null,49<=(t=hK(this.i,this.d))&&t<=57){if(i=t-48,!this.g&&(this.g=new jm),Sm(this.g,new Mw(i)),++this.d,41!=hK(this.i,this.d))throw qw(new ox(kWt((sO(),x8t))));++this.d}else switch(63==t&&--this.d,VZt(this),(e=DZt(this)).e){case 20:case 21:case 22:case 23:break;case 8:if(7!=this.c)throw qw(new ox(kWt((sO(),x8t))));break;default:throw qw(new ox(kWt((sO(),E8t))))}if(VZt(this),n=null,2==(r=Xpt(this)).e){if(2!=r.em())throw qw(new ox(kWt((sO(),T8t))));n=r.am(1),r=r.am(0)}if(7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),pWt(),pWt(),new ktt(i,e,r,n)},TWt.Ol=function(){return VZt(this),pWt(),hNe},TWt.Pl=function(){var t;if(VZt(this),t=sY(24,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Ql=function(){var t;if(VZt(this),t=sY(20,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Rl=function(){var t;if(VZt(this),t=sY(22,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Sl=function(){var t,e,n,i,r;for(t=0,n=0,e=-1;this.d=this.j)throw qw(new ox(kWt((sO(),k8t))));if(45==e){for(++this.d;this.d=this.j)throw qw(new ox(kWt((sO(),k8t))))}if(58==e){if(++this.d,VZt(this),i=DZ(Xpt(this),t,n),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));VZt(this)}else{if(41!=e)throw qw(new ox(kWt((sO(),_8t))));++this.d,VZt(this),i=DZ(Xpt(this),t,n)}return i},TWt.Tl=function(){var t;if(VZt(this),t=sY(21,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Ul=function(){var t;if(VZt(this),t=sY(23,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Vl=function(){var t,e;if(VZt(this),t=this.f++,e=cY(Xpt(this),t),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),e},TWt.Wl=function(){var t;if(VZt(this),t=cY(Xpt(this),0),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Xl=function(t){return VZt(this),5==this.c?(VZt(this),bU(t,(pWt(),pWt(),new l4(9,t)))):bU(t,(pWt(),pWt(),new l4(3,t)))},TWt.Yl=function(t){var e;return VZt(this),pWt(),pWt(),e=new rO(2),5==this.c?(VZt(this),nHt(e,uNe),nHt(e,t)):(nHt(e,t),nHt(e,uNe)),e},TWt.Zl=function(t){return VZt(this),5==this.c?(VZt(this),pWt(),pWt(),new l4(9,t)):(pWt(),pWt(),new l4(3,t))},TWt.a=0,TWt.b=0,TWt.c=0,TWt.d=0,TWt.e=0,TWt.f=1,TWt.g=null,TWt.j=0,mZ(ste,"RegEx/RegexParser",820),pDt(1824,820,{},$y),TWt.sl=function(t){return!1},TWt.tl=function(){return UBt(this)},TWt.ul=function(t){return bjt(t)},TWt.vl=function(t){return tWt(this)},TWt.wl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.xl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.yl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.zl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Al=function(){return VZt(this),bjt(67)},TWt.Bl=function(){return VZt(this),bjt(73)},TWt.Cl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Dl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.El=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Fl=function(){return VZt(this),bjt(99)},TWt.Gl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Hl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Il=function(){return VZt(this),bjt(105)},TWt.Jl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Kl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ll=function(t,e){return lqt(t,bjt(e)),-1},TWt.Ml=function(){return VZt(this),pWt(),pWt(),new cU(0,94)},TWt.Nl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ol=function(){return VZt(this),pWt(),pWt(),new cU(0,36)},TWt.Pl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ql=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Rl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Sl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Tl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ul=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Vl=function(){var t;if(VZt(this),t=cY(Xpt(this),0),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Wl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Xl=function(t){return VZt(this),bU(t,(pWt(),pWt(),new l4(3,t)))},TWt.Yl=function(t){var e;return VZt(this),pWt(),pWt(),nHt(e=new rO(2),t),nHt(e,uNe),e},TWt.Zl=function(t){return VZt(this),pWt(),pWt(),new l4(3,t)};var tNe=null,eNe=null;mZ(ste,"RegEx/ParserForXMLSchema",1824),pDt(117,1,xte,Dw),TWt.$l=function(t){throw qw(new pv("Not supported."))},TWt._l=function(){return-1},TWt.am=function(t){return null},TWt.bm=function(){return null},TWt.cm=function(t){},TWt.dm=function(t){},TWt.em=function(){return 0},TWt.Ib=function(){return this.fm(0)},TWt.fm=function(t){return 11==this.e?".":""},TWt.e=0;var nNe,iNe,rNe,aNe,oNe,sNe,cNe,uNe,lNe,hNe,fNe,dNe,gNe,pNe,bNe,wNe,mNe,yNe,vNe,xNe,kNe,_Ne,ANe,ENe,TNe=null,CNe=null,SNe=null,INe=mZ(ste,"RegEx/Token",117);pDt(136,117,{3:1,136:1,117:1},E0),TWt.fm=function(t){var e,n,i;if(4==this.e)if(this==cNe)n=".";else if(this==sNe)n="\\d";else if(this==xNe)n="\\w";else if(this==bNe)n="\\s";else{for((i=new Tx).a+="[",e=0;e0&&(i.a+=","),this.b[e]===this.b[e+1]?aM(i,szt(this.b[e])):(aM(i,szt(this.b[e])),i.a+="-",aM(i,szt(this.b[e+1])));i.a+="]",n=i.a}else if(this==fNe)n="\\D";else if(this==gNe)n="\\W";else if(this==dNe)n="\\S";else{for((i=new Tx).a+="[^",e=0;e0&&(i.a+=","),this.b[e]===this.b[e+1]?aM(i,szt(this.b[e])):(aM(i,szt(this.b[e])),i.a+="-",aM(i,szt(this.b[e+1])));i.a+="]",n=i.a}return n},TWt.a=!1,TWt.c=!1,mZ(ste,"RegEx/RangeToken",136),pDt(584,1,{584:1},Mw),TWt.a=0,mZ(ste,"RegEx/RegexParser/ReferencePosition",584),pDt(583,1,{3:1,583:1},Z_),TWt.Fb=function(t){var e;return null!=t&&!!aL(t,583)&&(e=zz(t,583),yR(this.b,e.b)&&this.a==e.a)},TWt.Hb=function(){return ymt(this.b+"/"+nPt(this.a))},TWt.Ib=function(){return this.c.fm(this.a)},TWt.a=0,mZ(ste,"RegEx/RegularExpression",583),pDt(223,117,xte,cU),TWt._l=function(){return this.a},TWt.fm=function(t){var e,n;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:n="\\"+CF(this.a&VKt);break;case 12:n="\\f";break;case 10:n="\\n";break;case 13:n="\\r";break;case 9:n="\\t";break;case 27:n="\\e";break;default:n=this.a>=qXt?"\\v"+hP(e="0"+(this.a>>>0).toString(16),e.length-6,e.length):""+CF(this.a&VKt)}break;case 8:n=this==lNe||this==hNe?""+CF(this.a&VKt):"\\"+CF(this.a&VKt);break;default:n=null}return n},TWt.a=0,mZ(ste,"RegEx/Token/CharToken",223),pDt(309,117,xte,l4),TWt.am=function(t){return this.a},TWt.cm=function(t){this.b=t},TWt.dm=function(t){this.c=t},TWt.em=function(){return 1},TWt.fm=function(t){var e;if(3==this.e)if(this.c<0&&this.b<0)e=this.a.fm(t)+"*";else if(this.c==this.b)e=this.a.fm(t)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)e=this.a.fm(t)+"{"+this.c+","+this.b+"}";else{if(!(this.c>=0&&this.b<0))throw qw(new pv("Token#toString(): CLOSURE "+this.c+zWt+this.b));e=this.a.fm(t)+"{"+this.c+",}"}else if(this.c<0&&this.b<0)e=this.a.fm(t)+"*?";else if(this.c==this.b)e=this.a.fm(t)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)e=this.a.fm(t)+"{"+this.c+","+this.b+"}?";else{if(!(this.c>=0&&this.b<0))throw qw(new pv("Token#toString(): NONGREEDYCLOSURE "+this.c+zWt+this.b));e=this.a.fm(t)+"{"+this.c+",}?"}return e},TWt.b=0,TWt.c=0,mZ(ste,"RegEx/Token/ClosureToken",309),pDt(821,117,xte,YY),TWt.am=function(t){return 0==t?this.a:this.b},TWt.em=function(){return 2},TWt.fm=function(t){return 3==this.b.e&&this.b.am(0)==this.a?this.a.fm(t)+"+":9==this.b.e&&this.b.am(0)==this.a?this.a.fm(t)+"+?":this.a.fm(t)+""+this.b.fm(t)},mZ(ste,"RegEx/Token/ConcatToken",821),pDt(1822,117,xte,ktt),TWt.am=function(t){if(0==t)return this.d;if(1==t)return this.b;throw qw(new pv("Internal Error: "+t))},TWt.em=function(){return this.b?2:1},TWt.fm=function(t){var e;return e=this.c>0?"(?("+this.c+")":8==this.a.e?"(?("+this.a+")":"(?"+this.a,this.b?e+=this.d+"|"+this.b+")":e+=this.d+")",e},TWt.c=0,mZ(ste,"RegEx/Token/ConditionToken",1822),pDt(1823,117,xte,A0),TWt.am=function(t){return this.b},TWt.em=function(){return 1},TWt.fm=function(t){return"(?"+(0==this.a?"":nPt(this.a))+(0==this.c?"":nPt(this.c))+":"+this.b.fm(t)+")"},TWt.a=0,TWt.c=0,mZ(ste,"RegEx/Token/ModifierToken",1823),pDt(822,117,xte,aW),TWt.am=function(t){return this.a},TWt.em=function(){return 1},TWt.fm=function(t){var e;switch(e=null,this.e){case 6:e=0==this.b?"(?:"+this.a.fm(t)+")":"("+this.a.fm(t)+")";break;case 20:e="(?="+this.a.fm(t)+")";break;case 21:e="(?!"+this.a.fm(t)+")";break;case 22:e="(?<="+this.a.fm(t)+")";break;case 23:e="(?"+this.a.fm(t)+")"}return e},TWt.b=0,mZ(ste,"RegEx/Token/ParenToken",822),pDt(521,117,{3:1,117:1,521:1},mQ),TWt.bm=function(){return this.b},TWt.fm=function(t){return 12==this.e?"\\"+this.a:rDt(this.b)},TWt.a=0,mZ(ste,"RegEx/Token/StringToken",521),pDt(465,117,xte,rO),TWt.$l=function(t){nHt(this,t)},TWt.am=function(t){return zz(dW(this.a,t),117)},TWt.em=function(){return this.a?this.a.a.c.length:0},TWt.fm=function(t){var e,n,i,r,a;if(1==this.e){if(2==this.a.a.c.length)e=zz(dW(this.a,0),117),r=3==(n=zz(dW(this.a,1),117)).e&&n.am(0)==e?e.fm(t)+"+":9==n.e&&n.am(0)==e?e.fm(t)+"+?":e.fm(t)+""+n.fm(t);else{for(a=new Tx,i=0;i=this.c.b:this.a<=this.c.b},TWt.Sb=function(){return this.b>0},TWt.Tb=function(){return this.b},TWt.Vb=function(){return this.b-1},TWt.Qb=function(){throw qw(new ex(Cte))},TWt.a=0,TWt.b=0,mZ(Ate,"ExclusiveRange/RangeIterator",254);var MNe=FW(S7t,"C"),DNe=FW(D7t,"I"),ONe=FW(LWt,"Z"),LNe=FW(O7t,"J"),NNe=FW(C7t,"B"),PNe=FW(I7t,"D"),BNe=FW(M7t,"F"),FNe=FW(L7t,"S"),RNe=dH("org.eclipse.elk.core.labels","ILabelManager"),jNe=dH(q6t,"DiagnosticChain"),$Ne=dH(f9t,"ResourceSet"),zNe=mZ(q6t,"InvocationTargetException",null),qNe=(Bx(),h5),HNe=HNe=h_t;tit(Xw),lat("permProps",[[[Ste,Ite],[Mte,"gecko1_8"]],[[Ste,Ite],[Mte,"ie10"]],[[Ste,Ite],[Mte,"ie8"]],[[Ste,Ite],[Mte,"ie9"]],[[Ste,Ite],[Mte,"safari"]]]),HNe(null,"elk",null)}).call(this)}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(e){function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,n);var a=Object.assign({},e),o=!1;try{t.resolve("web-worker"),o=!0}catch(t){}if(e.workerUrl)if(o){var s=t("web-worker");a.workerFactory=function(t){return new s(t)}}else console.warn("Web worker requested but 'web-worker' package not installed. \nConsider installing the package or pass your own 'workerFactory' to ELK's constructor.\n... Falling back to non-web worker version.");if(!a.workerFactory){var c=t("./elk-worker.min.js").Worker;a.workerFactory=function(t){return new c(t)}}return r(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,a))}return a(n,e),n}(t("./elk-api.js").default);Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports=o,o.default=o},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(t,e,n){e.exports=Worker},{}]},{},[3])(3)},5539:function(t){var e;e=function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=26)}([function(t,e,n){"use strict";function i(){}i.QUALITY=1,i.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,i.DEFAULT_INCREMENTAL=!1,i.DEFAULT_ANIMATION_ON_LAYOUT=!0,i.DEFAULT_ANIMATION_DURING_LAYOUT=!1,i.DEFAULT_ANIMATION_PERIOD=50,i.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,i.DEFAULT_GRAPH_MARGIN=15,i.NODE_DIMENSIONS_INCLUDE_LABELS=!1,i.SIMPLE_NODE_SIZE=40,i.SIMPLE_NODE_HALF_SIZE=i.SIMPLE_NODE_SIZE/2,i.EMPTY_COMPOUND_NODE_SIZE=40,i.MIN_EDGE_LENGTH=1,i.WORLD_BOUNDARY=1e6,i.INITIAL_WORLD_BOUNDARY=i.WORLD_BOUNDARY/1e3,i.WORLD_CENTER_X=1200,i.WORLD_CENTER_Y=900,t.exports=i},function(t,e,n){"use strict";var i=n(2),r=n(8),a=n(9);function o(t,e,n){i.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=t,this.target=e}for(var s in o.prototype=Object.create(i.prototype),i)o[s]=i[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},o.prototype.getOtherEndInGraph=function(t,e){for(var n=this.getOtherEnd(t),i=e.getGraphManager().getRoot();;){if(n.getOwner()==e)return n;if(n.getOwner()==i)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,n){"use strict";var i=n(2),r=n(10),a=n(13),o=n(0),s=n(16),c=n(4);function u(t,e,n,o){null==n&&null==o&&(o=e),i.call(this,o),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=t,this.rect=null!=n&&null!=e?new a(e.x,e.y,n.width,n.height):new a}for(var l in u.prototype=Object.create(i.prototype),i)u[l]=i[l];u.prototype.getEdges=function(){return this.edges},u.prototype.getChild=function(){return this.child},u.prototype.getOwner=function(){return this.owner},u.prototype.getWidth=function(){return this.rect.width},u.prototype.setWidth=function(t){this.rect.width=t},u.prototype.getHeight=function(){return this.rect.height},u.prototype.setHeight=function(t){this.rect.height=t},u.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},u.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},u.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},u.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},u.prototype.getRect=function(){return this.rect},u.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},u.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},u.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},u.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},u.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},u.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},u.prototype.getEdgeListToNode=function(t){var e=[],n=this;return n.edges.forEach((function(i){if(i.target==t){if(i.source!=n)throw"Incorrect edge source!";e.push(i)}})),e},u.prototype.getEdgesBetween=function(t){var e=[],n=this;return n.edges.forEach((function(i){if(i.source!=n&&i.target!=n)throw"Incorrect edge source and/or target";i.target!=t&&i.source!=t||e.push(i)})),e},u.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach((function(n){if(n.source==e)t.add(n.target);else{if(n.target!=e)throw"Incorrect incidency!";t.add(n.source)}})),t},u.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),n=0;ne&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>n&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-n)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-n),this.setHeight(this.labelHeight))}}},u.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},u.prototype.transform=function(t){var e=this.rect.x;e>o.WORLD_BOUNDARY?e=o.WORLD_BOUNDARY:e<-o.WORLD_BOUNDARY&&(e=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var i=new c(e,n),r=t.inverseTransformPoint(i);this.setLocation(r.x,r.y)},u.prototype.getLeft=function(){return this.rect.x},u.prototype.getRight=function(){return this.rect.x+this.rect.width},u.prototype.getTop=function(){return this.rect.y},u.prototype.getBottom=function(){return this.rect.y+this.rect.height},u.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=u},function(t,e,n){"use strict";function i(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(t){this.x=t},i.prototype.setY=function(t){this.y=t},i.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=i},function(t,e,n){"use strict";var i=n(2),r=n(10),a=n(0),o=n(6),s=n(3),c=n(1),u=n(13),l=n(12),h=n(11);function f(t,e,n){i.call(this,n),this.estimatedSize=r.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof o?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in f.prototype=Object.create(i.prototype),i)f[d]=i[d];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(t,e,n){if(null==e&&null==n){var i=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(i)>-1)throw"Node already in graph!";return i.owner=this,this.getNodes().push(i),i}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(n)>-1))throw"Source or target not in graph!";if(e.owner!=n.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=n.owner?null:(r.source=e,r.target=n,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),n!=e&&n.edges.push(r),r)},f.prototype.remove=function(t){var e=t;if(t instanceof s){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var n=e.edges.slice(),i=n.length,r=0;r-1&&l>-1))throw"Source and/or target doesn't know this edge!";if(a.source.edges.splice(u,1),a.target!=a.source&&a.target.edges.splice(l,1),-1==(o=a.source.owner.getEdges().indexOf(a)))throw"Not in owner's edge list!";a.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var t,e,n,i=r.MAX_VALUE,a=r.MAX_VALUE,o=this.getNodes(),s=o.length,c=0;c(t=u.getTop())&&(i=t),a>(e=u.getLeft())&&(a=e)}return i==r.MAX_VALUE?null:(n=null!=o[0].getParent().paddingLeft?o[0].getParent().paddingLeft:this.margin,this.left=a-n,this.top=i-n,new l(this.left,this.top))},f.prototype.updateBounds=function(t){for(var e,n,i,a,o,s=r.MAX_VALUE,c=-r.MAX_VALUE,l=r.MAX_VALUE,h=-r.MAX_VALUE,f=this.nodes,d=f.length,g=0;g(e=p.getLeft())&&(s=e),c<(n=p.getRight())&&(c=n),l>(i=p.getTop())&&(l=i),h<(a=p.getBottom())&&(h=a)}var b=new u(s,l,c-s,h-l);s==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),o=null!=f[0].getParent().paddingLeft?f[0].getParent().paddingLeft:this.margin,this.left=b.x-o,this.right=b.x+b.width+o,this.top=b.y-o,this.bottom=b.y+b.height+o},f.calculateBounds=function(t){for(var e,n,i,a,o=r.MAX_VALUE,s=-r.MAX_VALUE,c=r.MAX_VALUE,l=-r.MAX_VALUE,h=t.length,f=0;f(e=d.getLeft())&&(o=e),s<(n=d.getRight())&&(s=n),c>(i=d.getTop())&&(c=i),l<(a=d.getBottom())&&(l=a)}return new u(o,c,s-o,l-c)},f.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},f.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},f.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,n=e.length,i=0;i=this.nodes.length){var c=0;r.forEach((function(e){e.owner==t&&c++})),c==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=f},function(t,e,n){"use strict";var i,r=n(1);function a(t){i=n(5),this.layout=t,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),n=this.add(t,e);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(t,e,n,i,r){if(null==n&&null==i&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=n,n=t;var a=(i=e).getOwner(),o=r.getOwner();if(null==a||a.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==o||o.getGraphManager()!=this)throw"Target not in this graph mgr!";if(a==o)return n.isInterGraph=!1,a.add(n,i,r);if(n.isInterGraph=!0,n.source=i,n.target=r,this.edges.indexOf(n)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(n),null==n.source||null==n.target)throw"Edge source and/or target is null!";if(-1!=n.source.edges.indexOf(n)||-1!=n.target.edges.indexOf(n))throw"Edge already in source and/or target incidency list!";return n.source.edges.push(n),n.target.edges.push(n),n},a.prototype.remove=function(t){if(t instanceof i){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var n,a=[],o=(a=a.concat(e.getEdges())).length,s=0;s=e.getRight()?n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var a=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=i,n[1]=c,n[2]=a,n[3]=y,!1;if(ra)return n[0]=s,n[1]=r,n[2]=w,n[3]=o,!1;if(ia?(n[0]=l,n[1]=h,_=!0):(n[0]=u,n[1]=c,_=!0):E===C&&(i>a?(n[0]=s,n[1]=c,_=!0):(n[0]=f,n[1]=h,_=!0)),-T===C?a>i?(n[2]=m,n[3]=y,A=!0):(n[2]=w,n[3]=b,A=!0):T===C&&(a>i?(n[2]=p,n[3]=b,A=!0):(n[2]=v,n[3]=y,A=!0)),_&&A)return!1;if(i>a?r>o?(S=this.getCardinalDirection(E,C,4),I=this.getCardinalDirection(T,C,2)):(S=this.getCardinalDirection(-E,C,3),I=this.getCardinalDirection(-T,C,1)):r>o?(S=this.getCardinalDirection(-E,C,1),I=this.getCardinalDirection(-T,C,3)):(S=this.getCardinalDirection(E,C,2),I=this.getCardinalDirection(T,C,4)),!_)switch(S){case 1:D=c,M=i+-g/C,n[0]=M,n[1]=D;break;case 2:M=f,D=r+d*C,n[0]=M,n[1]=D;break;case 3:D=h,M=i+g/C,n[0]=M,n[1]=D;break;case 4:M=l,D=r+-d*C,n[0]=M,n[1]=D}if(!A)switch(I){case 1:L=b,O=a+-k/C,n[2]=O,n[3]=L;break;case 2:O=v,L=o+x*C,n[2]=O,n[3]=L;break;case 3:L=y,O=a+k/C,n[2]=O,n[3]=L;break;case 4:O=m,L=o+-x*C,n[2]=O,n[3]=L}}return!1},r.getCardinalDirection=function(t,e,n){return t>e?n:1+n%4},r.getIntersection=function(t,e,n,r){if(null==r)return this.getIntersection2(t,e,n);var a,o,s,c,u,l,h,f=t.x,d=t.y,g=e.x,p=e.y,b=n.x,w=n.y,m=r.x,y=r.y;return 0==(h=(a=p-d)*(c=b-m)-(o=y-w)*(s=f-g))?null:new i((s*(l=m*w-b*y)-c*(u=g*d-f*p))/h,(o*u-a*l)/h)},r.angleOfVector=function(t,e,n,i){var r=void 0;return t!==n?(r=Math.atan((i-e)/(n-t)),n0?1:t<0?-1:0},i.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},i.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=i},function(t,e,n){"use strict";function i(){}i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,t.exports=i},function(t,e,n){"use strict";var i=function(){function t(t,e){for(var n=0;n0&&e;){for(s.push(u[0]);s.length>0&&e;){var l=s[0];s.splice(0,1),o.add(l);var h=l.getEdges();for(a=0;a-1&&u.splice(p,1)}o=new Set,c=new Map}else t=[]}return t},f.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],n=t.source,i=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r0){for(var r=this.edgeToDummyNodes.get(n),a=0;a=0&&e.splice(h,1),l.getNeighborsList().forEach((function(t){if(n.indexOf(t)<0){var e=i.get(t)-1;1==e&&c.push(t),i.set(t,e)}}))}n=n.concat(c),1!=e.length&&2!=e.length||(r=!0,a=e[0])}return a},f.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=f},function(t,e,n){"use strict";function i(){}i.seed=1,i.x=0,i.nextDouble=function(){return i.x=1e4*Math.sin(i.seed++),i.x-Math.floor(i.x)},t.exports=i},function(t,e,n){"use strict";var i=n(4);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,n=this.lworldExtX;return 0!=n&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/n),e},r.prototype.transformY=function(t){var e=0,n=this.lworldExtY;return 0!=n&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/n),e},r.prototype.inverseTransformX=function(t){var e=0,n=this.ldeviceExtX;return 0!=n&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/n),e},r.prototype.inverseTransformY=function(t){var e=0,n=this.ldeviceExtY;return 0!=n&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/n),e},r.prototype.inverseTransformPoint=function(t){return new i(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,n){"use strict";var i=n(15),r=n(7),a=n(0),o=n(8),s=n(9);function c(){i.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=r.DEFAULT_EDGE_LENGTH,this.springConstant=r.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=r.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var u in c.prototype=Object.create(i.prototype),i)c[u]=i[u];c.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},c.prototype.calcIdealEdgeLengths=function(){for(var t,e,n,i,o,s,c=this.getGraphManager().getAllEdges(),u=0;ur.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},c.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),n=0;n0&&void 0!==arguments[0])||arguments[0],s=arguments.length>1&&void 0!==arguments[1]&&arguments[1],c=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&o&&this.updateGrid(),a=new Set,t=0;t(c=e.getEstimatedSize()*this.gravityRangeFactor)||s>c)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*a):(o>(c=e.getEstimatedSize()*this.compoundGravityRangeFactor)||s>c)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant)},c.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=s.length||u>=s[0].length))for(var l=0;lt}}]),t}();t.exports=a},function(t,e,n){"use strict";var i=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;r(this,t),this.sequence1=e,this.sequence2=n,this.match_score=i,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=n.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;n--){var i=this.listeners[n];i.event===t&&i.callback===e&&this.listeners.splice(n,1)}},r.emit=function(t,e){for(var n=0;n-1}(u))return u;var l=u.match(o);if(!l)return u;var h=l[0];return n.test(h)?e.Rq:u}},4881:function(t){t.exports=function(){function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,(function(t){return r(e[o][1][t]||t)}),u,u.exports,t,e,n,i)}return n[o].exports}for(var a=void 0,o=0;o=0,wasm:e.indexOf("wasm")>=0};r.call(this,n),this.features={js:n.js,wasm:n.wasm&&this.has_wasm()},this.use(a),this.use(o)}i(s,r),s.prototype.resizeAndUnsharp=function(t,e){var n=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(n,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),n},e.exports=s},{"./mm_resize":4,"./mm_unsharp_mask":9,inherits:19,multimath:20}],2:[function(t,e,n){"use strict";function i(t){return t<0?0:t>255?255:t}function r(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}function a(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}e.exports={convolveHorizontally:r,convolveVertically:a}},{}],3:[function(t,e,n){"use strict";e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs="},{}],4:[function(t,e,n){"use strict";e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,n){"use strict";var i=t("./resize_filter_gen"),r=t("./convolve").convolveHorizontally,a=t("./convolve").convolveVertically;function o(t,e,n){for(var i=3,r=e*n*4|0;i>1]+=a(1-m),v=0;v0&&0===d[x];)x--;if(k=u+v,_=x-v+1,I[M++]=k,I[M++]=_,D)for(b=v;b<=x;b++)I[M++]=d[b];else I.set(d.subarray(v,x+1),M),M+=_}else I[M++]=0,I[M++]=0}return I}},{"./resize_filter_info":7}],7:[function(t,e,n){"use strict";e.exports=[{win:.5,filter:function(t){return t>=-.5&&t<.5?1:0}},{win:1,filter:function(t){if(t<=-1||t>=1)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},{win:2,filter:function(t){if(t<=-2||t>=2)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},{win:3,filter:function(t){if(t<=-3||t>=3)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}}]},{}],8:[function(t,e,n){"use strict";var i=t("./resize_filter_gen");function r(t,e,n){for(var i=3,r=e*n*4|0;i>8&255}}e.exports=function(t){var e=t.src,n=t.width,a=t.height,o=t.toWidth,c=t.toHeight,u=t.scaleX||t.toWidth/t.width,l=t.scaleY||t.toHeight/t.height,h=t.offsetX||0,f=t.offsetY||0,d=t.dest||new Uint8Array(o*c*4),g=void 0===t.quality?3:t.quality,p=t.alpha||!1,b=i(g,n,o,u,h),w=i(g,a,c,l,f),m=0,y=this.__align(m+Math.max(e.byteLength,d.byteLength)),v=this.__align(y+a*o*4),x=this.__align(v+b.byteLength),k=x+w.byteLength,_=this.__instance("resize",k),A=new Uint8Array(this.__memory.buffer),E=new Uint32Array(this.__memory.buffer),T=new Uint32Array(e.buffer);return E.set(T),s(b,A,v),s(w,A,x),(_.exports.convolveHV||_.exports._convolveHV)(v,x,y,n,a,o,c),new Uint32Array(d.buffer).set(new Uint32Array(this.__memory.buffer,0,c*o)),p||r(d,o,c),d}},{"./resize_filter_gen":6}],9:[function(t,e,n){"use strict";e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,n){"use strict";var i=t("glur/mono16");function r(t,e,n){for(var i,r,a,o,s=e*n,c=new Uint16Array(s),u=0;u=r&&i>=a?i:r>=a&&r>=i?r:a,c[u]=o<<8;return c}e.exports=function(t,e,n,a,o,s){var c,u,l,h,f;if(!(0===a||o<.5)){o>2&&(o=2);var d=r(t,e,n),g=new Uint16Array(d);i(g,e,n,o);for(var p=a/100*4096+.5|0,b=s<<8,w=e*n,m=0;m=b&&(l=((u=(u=(u=c+(p*h+2048>>12))>65280?65280:u)<0?0:u)<<12)/(c=0!==c?c:1)|0,t[f=4*m]=t[f]*l+2048>>12,t[f+1]=t[f+1]*l+2048>>12,t[f+2]=t[f+2]*l+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,n){"use strict";e.exports=function(t,e,n,i,r,a){if(!(0===i||r<.5)){r>2&&(r=2);var o=e*n,s=4*o,c=2*o,u=2*o,l=4*Math.max(e,n),h=32,f=0,d=s,g=d+c,p=g+u,b=p+u,w=b+l,m=this.__instance("unsharp_mask",s+c+2*u+l+h,{exp:Math.exp}),y=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(y);var v=m.exports.hsv_v16||m.exports._hsv_v16;v(f,d,e,n),(v=m.exports.blurMono16||m.exports._blurMono16)(d,g,p,b,w,e,n,r),(v=m.exports.unsharp||m.exports._unsharp)(f,f,d,g,e,n,i,a),y.set(new Uint32Array(this.__memory.buffer,0,o))}}},{}],12:[function(t,e,n){"use strict";e.exports="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"},{}],13:[function(t,e,n){"use strict";var i=100;function r(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}r.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},r.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),i))},r.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(n){return!(e-n.lastUsed>t.idle&&(n.destroy(),1))})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),i):this.timeoutId=0},e.exports=r},{}],14:[function(t,e,n){"use strict";var i=2;e.exports=function(t,e,n,r,a,o){var s=n/t,c=r/e,u=(2*o+i+1)/a;if(u>.5)return[[n,r]];var l=Math.ceil(Math.log(Math.min(s,c))/Math.log(u));if(l<=1)return[[n,r]];for(var h=[],f=0;f=t.toWidth&&(s=t.toWidth-e),(n=o-t.destTileBorder)<0&&(n=0),n+(c=o+f+t.destTileBorder-n)>=t.toHeight&&(c=t.toHeight-n),d={toX:e,toY:n,toWidth:s,toHeight:c,toInnerX:i,toInnerY:o,toInnerWidth:h,toInnerHeight:f,offsetX:e/u-r(e/u),offsetY:n/l-r(n/l),scaleX:u,scaleY:l,x:r(e/u),y:r(n/l),width:a(s/u),height:a(c/l)},g.push(d);return g}},{}],16:[function(t,e,n){"use strict";function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,n=[];function i(){e=0;p--)c=s*b+o*w+u*m+l*y,l=u,u=c,o=s,s=t[h],e[f]=n[d]+u,h--,d--,f-=a}}function h(t,e,n,i){if(i){var r=new Uint16Array(t.length),a=new Float32Array(Math.max(e,n)),o=u(i);l(t,r,a,o,e,n,i),l(r,t,a,o,n,e,i)}}e.exports=h},{}],19:[function(t,e,n){"function"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},{}],20:[function(t,e,n){"use strict";var i=t("object-assign"),r=t("./lib/base64decode"),a=t("./lib/wa_detect"),o={js:!0,wasm:!0};function s(t){if(!(this instanceof s))return new s(t);var e=i({},o,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}s.prototype.has_wasm=a,s.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},s.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var n=t.__modules[e];return t.options.wasm&&t.has_wasm()&&n.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(n.wasm_src)).then((function(n){t.__wasm[e]=n})):null}))).then((function(){return t})),this.__init_promise},s.prototype.__base64decode=r,s.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e>2),a=0,o=0,s=0;s>16&255,r[o++]=a>>8&255,r[o++]=255&a),a=a<<6|i.indexOf(e.charAt(s));var c=n%4*6;return 0===c?(r[o++]=a>>16&255,r[o++]=a>>8&255,r[o++]=255&a):18===c?(r[o++]=a>>10&255,r[o++]=a>>2&255):12===c&&(r[o++]=a>>4&255),r}},{}],22:[function(t,e,n){"use strict";var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],23:[function(t,e,n){"use strict";var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function o(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function s(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}e.exports=s()?Object.assign:function(t,e){for(var n,s,c=o(t),u=1;ut.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0)}catch(t){}var y=1;"undefined"!=typeof navigator&&(y=Math.min(navigator.hardwareConcurrency||1,4));var v={tile:1024,concurrency:y,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var n=document.createElement("canvas");return n.width=t,n.height=e,n}},x={quality:3,alpha:!1,unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},k=!1,_=!1,A=!1,E=!1,T=!1;function C(){return{value:l(g),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function S(t){if(!(this instanceof S))return new S(t);this.options=u({},v,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=w[e]||d.limiter(this.options.concurrency),w[e]||(w[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}S.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),k=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?_=!0:this.debug("ImageBitmap does not support .close(), disabled"));var n=this.options.features.slice();if(n.indexOf("all")>=0&&(n=["cib","wasm","js","ww"]),this.__requested_features=n,this.__mathlib=new h(n),n.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));w[i]?this.__workersPool=w[i]:(this.__workersPool=new f(C,this.options.idle),w[i]=this.__workersPool)}catch(t){}var r,a,o=this.__mathlib.init().then((function(t){u(e.features,t.features)}));r=_?d.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&n.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):n.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),A=d.can_use_canvas(this.options.createCanvas),a=(a=_&&k&&-1!==n.indexOf("ww")?d.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){E=t}));var s=d.cib_can_use_region().then((function(t){T=t}));return this.__initPromise=Promise.all([o,r,a,s]).then((function(){return e})),this.__initPromise},S.prototype.__invokeResize=function(t,e){var n=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return n.features.ww?new Promise((function(i,r){var a=n.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return r(t)})),a.value.onmessage=function(t){a.release(),t.data.err?r(t.data.err):i(t.data)};var o=[];t.src&&o.push(t.src.buffer),t.srcBitmap&&o.push(t.srcBitmap),a.value.postMessage({opts:t,features:n.__requested_features,preload:{wasm_nodule:n.__mathlib.__}},o)})):{data:n.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},S.prototype.__extractTileData=function(t,e,n,i,r){if(this.features.ww&&E&&(d.isCanvas(e)||T))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return r.srcBitmap=t,r}));if(d.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d",{alpha:Boolean(n.alpha)})),this.debug("Get tile pixel data"),r.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,r;this.debug("Draw tile imageBitmap/image to temporary canvas");var a=this.options.createCanvas(t.width,t.height),o=a.getContext("2d",{alpha:Boolean(n.alpha)});return o.globalCompositeOperation="copy",o.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),r.src=o.getImageData(0,0,t.width,t.height).data,a.width=a.height=0,r},S.prototype.__landTileData=function(t,e,n){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return n.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(k)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=n.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var r=i.data.length-1;r>=0;r--)i.data[r]=e.data[r];return this.debug("Draw tile"),m?n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},S.prototype.__tileAndResize=function(t,e,n){var i=this,r={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null},a=function(e){return i.__limit((function(){if(n.canceled)return n.cancelToken;var a={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,quality:n.quality,alpha:n.alpha,unsharpAmount:n.unsharpAmount,unsharpRadius:n.unsharpRadius,unsharpThreshold:n.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(a).then((function(a){return i.__extractTileData(e,t,n,r,a)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,n)})).then((function(t){return n.canceled?n.cancelToken:(r.srcImageData=null,i.__landTileData(e,t,r))}))}))};return Promise.resolve().then((function(){if(r.toCtx=e.getContext("2d",{alpha:Boolean(n.alpha)}),d.isCanvas(t))return null;if(d.isImageBitmap(t))return r.srcImageBitmap=t,r.isImageBitmapReused=!0,null;if(d.isImage(t))return _?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){r.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(n.canceled)return n.cancelToken;i.debug("Calculate tiles");var t=b({width:n.width,height:n.height,srcTileSize:i.options.tile,toWidth:n.toWidth,toHeight:n.toHeight,destTileBorder:n.__destTileBorder}).map((function(t){return a(t)}));function o(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(t).then((function(){return i.debug("Finished!"),o(r),e}),(function(t){throw o(r),t}))}))},S.prototype.__processStages=function(t,e,n,r){var a=this;if(r.canceled)return r.cancelToken;var o,s=i(t.shift(),2),c=s[0],l=s[1],h=0===t.length;return r=u({},r,{toWidth:c,toHeight:l,quality:h?r.quality:Math.min(1,r.quality)}),h||(o=this.options.createCanvas(c,l)),this.__tileAndResize(e,h?n:o,r).then((function(){return h?n:(r.width=c,r.height=l,a.__processStages(t,o,n,r))})).then((function(t){return o&&(o.width=o.height=0),t}))},S.prototype.__resizeViaCreateImageBitmap=function(t,e,n){var i=this,r=e.getContext("2d",{alpha:Boolean(n.alpha)});return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:n.toWidth,resizeHeight:n.toHeight,resizeQuality:d.cib_quality_name(n.quality)}).then((function(t){if(n.canceled)return n.cancelToken;if(!n.unsharpAmount)return r.drawImage(t,0,0),t.close(),r=null,i.debug("Finished!"),e;i.debug("Unsharp result");var a=i.options.createCanvas(n.toWidth,n.toHeight),o=a.getContext("2d",{alpha:Boolean(n.alpha)});o.drawImage(t,0,0),t.close();var s=o.getImageData(0,0,n.toWidth,n.toHeight);return i.__mathlib.unsharp_mask(s.data,n.toWidth,n.toHeight,n.unsharpAmount,n.unsharpRadius,n.unsharpThreshold),r.putImageData(s,0,0),a.width=a.height=0,s=o=a=r=null,i.debug("Finished!"),e}))},S.prototype.resize=function(t,e,n){var i=this;this.debug("Start resize...");var r=u({},x);if(isNaN(n)?n&&(r=u(r,n)):r=u(r,{quality:n}),r.toWidth=e.width,r.toHeight=e.height,r.width=t.naturalWidth||t.width,r.height=t.naturalHeight||t.height,0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));r.unsharpRadius>2&&(r.unsharpRadius=2),r.canceled=!1,r.cancelToken&&(r.cancelToken=r.cancelToken.then((function(t){throw r.canceled=!0,t}),(function(t){throw r.canceled=!0,t})));var a=3;return r.__destTileBorder=Math.ceil(Math.max(a,2.5*r.unsharpRadius|0)),this.init().then((function(){if(r.canceled)return r.cancelToken;if(i.features.cib)return i.__resizeViaCreateImageBitmap(t,e,r);if(!A){var n=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw n.code="ERR_GET_IMAGE_DATA",n}var a=p(r.width,r.height,r.toWidth,r.toHeight,i.options.tile,r.__destTileBorder);return i.__processStages(a,t,e,r)}))},S.prototype.resizeBuffer=function(t){var e=this,n=u({},x,t);return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(n)}))},S.prototype.toBlob=function(t,e,n){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,n);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:n}));else{for(var r=atob(t.toDataURL(e,n).split(",")[1]),a=r.length,o=new Uint8Array(a),s=0;sthis.converter(t,{...e,fontSize:e.fontSize||20}),this.converter=t}}var a,o,s;!function(t){t.ROUND="round",t.STADIUM="stadium",t.DOUBLECIRCLE="doublecircle",t.CIRCLE="circle",t.DIAMOND="diamond"}(a||(a={})),function(t){t.COLOR="color"}(o||(o={})),function(t){t.FILL="fill",t.STROKE="stroke",t.STROKE_WIDTH="stroke-width",t.STROKE_DASHARRAY="stroke-dasharray"}(s||(s={}));var c=n(5030);const u={arrow_circle:{endArrowhead:"dot"},arrow_cross:{endArrowhead:"bar"},double_arrow_circle:{endArrowhead:"dot",startArrowhead:"dot"},double_arrow_cross:{endArrowhead:"bar",startArrowhead:"bar"},double_arrow_point:{endArrowhead:"arrow",startArrowhead:"arrow"}},l=t=>{let e=t.text;return"markdown"===t.labelType&&(e=(0,c.K)(t.text)),h(e)},h=t=>t.replace(/\s?(fa|fab):[a-zA-Z0-9-]+/g,""),f=new r({converter:(t,e)=>{const n=[],i=e.fontSize,{getGroupIds:r,getParentId:c}=(t=>{const e={};t.subGraphs.map((n=>{n.nodeIds.forEach((i=>{e[n.id]={id:n.id,parent:null,isLeaf:!1},e[i]={id:i,parent:n.id,isLeaf:void 0!==t.vertices[i]}}))}));const n={};return[...Object.keys(t.vertices),...t.subGraphs.map((t=>t.id))].forEach((t=>{if(!e[t])return;let i=e[t];const r=[];for(i.isLeaf||r.push(`subgraph_group_${i.id}`);i.parent;)r.push(`subgraph_group_${i.parent}`),i=e[i.parent];n[t]=r})),{getGroupIds:t=>n[t]||[],getParentId:t=>e[t]?e[t].parent:null}})(t);return t.subGraphs.reverse().forEach((t=>{const e=r(t.id),a={id:t.id,type:"rectangle",groupIds:e,x:t.x,y:t.y,width:t.width,height:t.height,label:{groupIds:e,text:l(t),fontSize:i,verticalAlign:"top"}};n.push(a)})),Object.values(t.vertices).forEach((t=>{if(!t)return;const e=r(t.id),c=(t=>{const e={};return Object.keys(t).forEach((n=>{switch(n){case s.FILL:e.backgroundColor=t[n],e.fillStyle="solid";break;case s.STROKE:e.strokeColor=t[n];break;case s.STROKE_WIDTH:e.strokeWidth=Number(t[n]?.split("px")[0]);break;case s.STROKE_DASHARRAY:e.strokeStyle="dashed"}})),e})(t.containerStyle),u=(t=>{const e={};return Object.keys(t).forEach((n=>{n===o.COLOR&&(e.strokeColor=t[n])})),e})(t.labelStyle);let h={id:t.id,type:"rectangle",groupIds:e,x:t.x,y:t.y,width:t.width,height:t.height,strokeWidth:2,label:{groupIds:e,text:l(t),fontSize:i,...u},link:t.link||null,...c};switch(t.type){case a.STADIUM:case a.ROUND:h={...h,roundness:{type:3}};break;case a.DOUBLECIRCLE:{const r=5;e.push(`doublecircle_${t.id}}`);const a={type:"ellipse",groupIds:e,x:t.x+r,y:t.y+r,width:t.width-2*r,height:t.height-2*r,strokeWidth:2,roundness:{type:3},label:{groupIds:e,text:l(t),fontSize:i}};h={...h,groupIds:e,type:"ellipse"},n.push(a);break}case a.CIRCLE:h.type="ellipse";break;case a.DIAMOND:h.type="diamond"}n.push(h)})),t.edges.forEach((t=>{let e=[];const a=c(t.start),o=c(t.end);a&&a===o&&(e=r(a));const{startX:s,startY:h,reflectionPoints:f}=t,d=f.map((t=>[t.x-f[0].x,t.y-f[0].y])),g=(p=t.type,u[p]);var p;const b={id:`${t.start}_${t.end}`,type:"arrow",groupIds:e,x:s,y:h,strokeWidth:"thick"===t.stroke?4:2,strokeStyle:"dotted"===t.stroke?"dashed":void 0,points:d,...t.text?{label:{text:l(t),fontSize:i,groupIds:e}}:{},roundness:{type:2},...g},w=n.find((e=>e.id===t.start)),m=n.find((e=>e.id===t.end));w&&m&&(b.start={id:w.id||""},b.end={id:m.id||""},n.push(b))})),{elements:n}}});let d=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e>62?"-":"_"),"");const g=new r({converter:t=>{const e=d(),{width:n,height:i}=t,r={type:"image",x:0,y:0,width:n,height:i,status:"saved",fileId:e};return{files:{[e]:{id:e,mimeType:t.mimeType,dataURL:t.dataURL}},elements:[r]}}}),p={SOLID:"solid",DOTTED:"dotted",SOLID_CROSS:"solid",DOTTED_CROSS:"dotted",SOLID_OPEN:"solid",DOTTED_OPEN:"dotted",SOLID_POINT:"solid",DOTTED_POINT:"dotted"},b=t=>{const e={type:"line",x:t.startX,y:t.startY,points:[[0,0],[t.endX-t.startX,t.endY-t.startY]],width:t.endX-t.startX,height:t.endY-t.startY,strokeStyle:t.strokeStyle||"solid",strokeColor:t.strokeColor||"#000",strokeWidth:t.strokeWidth||1};return t.groupId&&Object.assign(e,{groupIds:[t.groupId]}),t.id&&Object.assign(e,{id:t.id}),e},w=t=>{const e={type:"text",x:t.x,y:t.y,width:t.width,height:t.height,text:t.text||"",fontSize:t.fontSize,verticalAlign:"middle"};return t.groupId&&Object.assign(e,{groupIds:[t.groupId]}),t.id&&Object.assign(e,{id:t.id}),e},m=t=>{let e={};"rectangle"===t.type&&"activation"===t.subtype&&(e={backgroundColor:"#e9ecef",fillStyle:"solid"});const n={id:t.id,type:t.type,x:t.x,y:t.y,width:t.width,height:t.height,label:{text:t?.label?.text||"",fontSize:t?.label?.fontSize,verticalAlign:"middle",strokeColor:t.label?.color||"#000"},strokeStyle:t?.strokeStyle,strokeWidth:t?.strokeWidth,strokeColor:t?.strokeColor,backgroundColor:t?.bgColor,fillStyle:"solid",...e};return t.groupId&&Object.assign(n,{groupIds:[t.groupId]}),n},y=new r({converter:t=>{const e=[],n=[];if(Object.values(t.nodes).forEach((t=>{t&&t.length&&t.forEach((t=>{let i;switch(t.type){case"line":i=b(t);break;case"rectangle":case"ellipse":i=m(t);break;case"text":i=w(t);break;default:throw`unknown type ${t.type}`}"rectangle"===t.type&&"activation"===t?.subtype?n.push(i):e.push(i)}))})),Object.values(t.lines).forEach((t=>{t&&e.push(b(t))})),Object.values(t.arrows).forEach((t=>{t&&(e.push((t=>{const e=p[t.strokeStyle],n={type:"arrow",x:t.startX,y:t.startY,points:t.points||[[0,0],[t.endX-t.startX,t.endY-t.startY]],width:t.endX-t.startX,height:t.endY-t.startY,strokeStyle:e,endArrowhead:"SOLID_OPEN"===t.strokeStyle||"DOTTED_OPEN"===t.strokeStyle?null:"arrow",label:{text:t?.label?.text||"",fontSize:16},roundness:{type:2}};return t.groupId&&Object.assign(n,{groupIds:[t.groupId]}),n})(t)),t.sequenceNumber&&e.push(m(t.sequenceNumber)))})),e.push(...n),t.loops){const{lines:n,texts:i,nodes:r}=t.loops;n.forEach((t=>{e.push(b(t))})),i.forEach((t=>{e.push(w(t))})),r.forEach((t=>{e.push(m(t))}))}return t.groups&&t.groups.forEach((t=>{const{actorKeys:n,name:i}=t;let r=1/0,a=1/0,o=0,s=0;if(!n.length)return;e.filter((t=>{if(t.id){const e=t.id.indexOf("-"),i=t.id.substring(0,e);return n.includes(i)}})).forEach((t=>{if(void 0===t.x||void 0===t.y||void 0===t.width||void 0===t.height)throw new Error(`Actor attributes missing ${t}`);r=Math.min(r,t.x),a=Math.min(a,t.y),o=Math.max(o,t.x+t.width),s=Math.max(s,t.y+t.height)}));const c=r-10,u=a-10,l=o-r+20,h=s-a+20,f=d(),g=m({type:"rectangle",x:c,y:u,width:l,height:h,bgColor:t.fill,id:f});e.unshift(g);const p=d(),b=[f];e.forEach((t=>{if("frame"!==t.type){if(void 0===t.x||void 0===t.y||void 0===t.width||void 0===t.height)throw new Error(`Element attributes missing ${t}`);if(t.x>=r&&t.x+t.width<=o&&t.y>=a&&t.y+t.height<=s){const e=t.id||d();t.id||Object.assign(t,{id:e}),b.push(e)}}}));const w={type:"frame",id:p,name:i,children:b};e.push(w)})),{elements:e}}});var v=n(8540);const x=t=>{const e=(t=_(t)).replace(/#(\d+);/g,"&#$1;").replace(/#([a-z]+);/g,"&$1;"),n=document.createElement("textarea");return n.innerHTML=e,n.value},k=t=>{const e=t.getAttribute("transform")?.match(/translate\(([\d.-]+),\s*([\d.-]+)\)/);let n=0,i=0;return e&&(n=Number(e[1]),i=Number(e[2])),{transformX:n,transformY:i}},_=function(t){return t.replace(/fl°°/g,"#").replace(/fl°/g,"&").replace(/¶ß/g,";")},A=(t,e)=>{if(!t)throw new Error("Element not found");let n=t.parentElement?.parentElement;const i=t.childNodes[0];let r={x:0,y:0};if(i){const{transformX:t,transformY:e}=k(i),n=i.getBBox();r={x:Number(i.getAttribute("x"))||t+n.x||0,y:Number(i.getAttribute("y"))||e+n.y||0}}const{transformX:a,transformY:o}=k(t),s={x:a+r.x,y:o+r.y};for(;n&&n.id!==e.id;){if("root"===n.classList.value&&n.hasAttribute("transform")){const{transformX:t,transformY:e}=k(n);s.x+=t,s.y+=e}n=n.parentElement}return s},E=(t,e={x:0,y:0})=>{if("path"!==t.tagName.toLowerCase())throw new Error(`Invalid input: Expected an HTMLElement of tag "path", got ${t.tagName}`);const n=t.getAttribute("d");if(!n)throw new Error('Path element does not contain a "d" attribute');const i=n.split(/(?=[LM])/),r=i[0].substring(1).split(",").map((t=>parseFloat(t))),a=i[i.length-1].substring(1).split(",").map((t=>parseFloat(t))),o=i.map((t=>{const e=t.substring(1).split(",").map((t=>parseFloat(t)));return{x:e[0],y:e[1]}})).filter(((t,e,n)=>{if(e===n.length-1)return!0;const i=n[e-1];return 0===e||t.x!==i.x&&t.y!==i.y})).map((t=>({x:t.x+e.x,y:t.y+e.y})));return{startX:r[0]+e.x,startY:r[1]+e.y,endX:a[0]+e.x,endY:a[1]+e.y,reflectionPoints:o}},T=(t,e)=>{t.parse();const n=t.parser.yy,i=n.getVertices();Object.keys(i).forEach((t=>{i[t]=((t,e)=>{const n=e.querySelector(`[id*="flowchart-${t.id}-"]`);if(!n)return;let i;"a"===n.parentElement?.tagName.toLowerCase()&&(i=n.parentElement.getAttribute("xlink:href"));const r=A(i?n.parentElement:n,e),a=n.getBBox(),o={width:a.width,height:a.height},s=n.querySelector(".label-container")?.getAttribute("style"),c=n.querySelector(".label")?.getAttribute("style"),u={};s?.split(";").forEach((t=>{if(!t)return;const e=t.split(":")[0].trim(),n=t.split(":")[1].trim();u[e]=n}));const l={};return c?.split(";").forEach((t=>{if(!t)return;const e=t.split(":")[0].trim(),n=t.split(":")[1].trim();l[e]=n})),{id:t.id,labelType:t.labelType,text:x(t.text),type:t.type,link:i||void 0,...r,...o,containerStyle:u,labelStyle:l}})(i[t],e)}));const r=n.getEdges().map((t=>((t,e)=>{const n=e.querySelector(`[id*="L-${t.start}-${t.end}"]`);if(!n)throw new Error("Edge element not found");const i=A(n,e),r=E(n,i);return t.length=void 0,{...t,...r,text:x(t.text)}})(t,e))),a=n.getSubGraphs().map((t=>((t,e)=>{const n=t.nodes.map((t=>t.startsWith("flowchart-")?t.split("-")[1]:t)),i=e.querySelector(`[id='${t.id}']`);if(!i)throw new Error("SubGraph element not found");const r=A(i,e),a=i.getBBox(),o={width:a.width,height:a.height};return t.classes=void 0,t.dir=void 0,{...t,nodeIds:n,...r,...o,text:x(t.title)}})(t,e)));return{type:"flowchart",subGraphs:a,vertices:i,edges:r}},C={0:"SOLID",1:"DOTTED",3:"SOLID_CROSS",4:"DOTTED_CROSS",5:"SOLID_OPEN",6:"DOTTED_OPEN",24:"SOLID_POINT",25:"DOTTED_POINT"},S=2,I=27,M=(t,e,n={})=>{const i={};i.type=e;const{text:r,subtype:a,id:o,groupId:s}=n;i.id=o,s&&(i.groupId=s),r&&(i.label={text:x(r),fontSize:16});const c=t.getBBox();switch(i.x=c.x,i.y=c.y,i.width=c.width,i.height=c.height,i.subtype=a,a){case"highlight":const e=t.getAttribute("fill");e&&(i.bgColor=e);break;case"note":i.strokeStyle="dashed"}return i},D=(t,e,n)=>{const i={},r=Number(t.getAttribute("x")),a=Number(t.getAttribute("y"));i.type="text",i.text=x(e),n?.id&&(i.id=n.id),n?.groupId&&(i.groupId=n.groupId);const o=t.getBBox();i.width=o.width,i.height=o.height,i.x=r-o.width/2,i.y=a;const s=parseInt(getComputedStyle(t).fontSize);return i.fontSize=s,i},O=(t,e,n,i,r,a)=>{const o={};return o.startX=e,o.startY=n,o.endX=i,a?.groupId&&(o.groupId=a.groupId),a?.id&&(o.id=a.id),o.endY=r,o.strokeColor=t.getAttribute("stroke"),o.strokeWidth=Number(t.getAttribute("stroke-width")),o.type="line",o},L=(t,e,n)=>{if(!t)throw"root node not found";const r=d(),a=Array.from(t.children),o=[];return a.forEach(((t,a)=>{const s=`${n?.id}-${a}`;let c;switch(t.tagName){case"line":const n=Number(t.getAttribute("x1")),a=Number(t.getAttribute("y1")),o=Number(t.getAttribute("x2")),u=Number(t.getAttribute("y2"));c=O(t,n,a,o,u,{groupId:r,id:s});break;case"text":c=D(t,e,{groupId:r,id:s});break;case"circle":c=M(t,"ellipse",{text:t.textContent||void 0,groupId:r,id:s});default:c=M(t,i[t.tagName],{text:t.textContent||void 0,groupId:r,id:s})}o.push(c)})),o},N=(t,e)=>{const n=[],i=Array.from(e.querySelectorAll('[class*="messageLine"]')),r=Object.keys(C),a=t.filter((t=>r.includes(t.type.toString())));return i.forEach(((t,e)=>{const i=((t,e)=>{const n={};n.label={text:x(e.message),fontSize:16};const i=t.tagName;if("line"===i)n.startX=Number(t.getAttribute("x1")),n.startY=Number(t.getAttribute("y1")),n.endX=Number(t.getAttribute("x2")),n.endY=Number(t.getAttribute("y2"));else if("path"===i){const e=t.getAttribute("d");if(!e)throw new Error('Path element does not contain a "d" attribute');const i=e.split(/(?=[LC])/),r=i[0].substring(1).split(",").map((t=>parseFloat(t))),a=[];i.forEach((t=>{const e=t.substring(1).trim().split(" ").map((t=>{const[e,n]=t.split(",");return[parseFloat(e)-r[0],parseFloat(n)-r[1]]}));a.push(...e)}));const o=a[a.length-1];n.startX=r[0],n.startY=r[1],n.endX=o[0],n.endY=o[1],n.points=a}if(e){const t=10;n.startY=n.startY-t,n.endY=n.endY-t}if(t.nextElementSibling?.classList.contains("sequenceNumber")){const e=t.nextElementSibling?.textContent;if(!e)throw new Error("sequence number not present");const i=30,r=i/2,a=10,o={type:"rectangle",x:n.startX-a,y:n.startY-r,label:{text:e,fontSize:14},bgColor:"#e9ecef",height:i,subtype:"sequence"};n.sequenceNumber=o}return n.strokeColor=t.getAttribute("stroke"),n.strokeWidth=Number(t.getAttribute("stroke-width")),n.type="arrow",n.strokeStyle=C[e.type],n})(t,a[e]);n.push(i)})),n},P=(t,e)=>{t.parse();const n=t.parser.yy,i=[],r=n.getBoxes(),a=(t=>{const e=Array.from(t.querySelectorAll(".rect")).filter((t=>"g"!==t.parentElement?.tagName)),n=[];return e.forEach((t=>{const e=M(t,"rectangle",{text:"",subtype:"highlight"});n.push(e)})),n})(e),o=n.getActors(),{nodes:s,lines:c}=((t,e)=>{const n=Array.from(e.querySelectorAll(".actor")).filter((t=>"text"===t.tagName)).map((t=>"text"===t.tagName&&t.parentElement)),i=[],r=[],a=Object.keys(t).length;return Object.values(t).forEach(((t,e)=>{const o=n[e],s=n[a+e];if(!o)throw"root not found";const c=t.description;if("participant"===t.type){const e=M(o.firstChild,"rectangle",{id:`${t.name}-top`,text:c,subtype:"actor"});if(!e)throw"Top Node element not found!";i.push([e]);const n=M(s.firstChild,"rectangle",{id:`${t.name}-bottom`,text:c,subtype:"actor"});i.push([n]);const a=o.previousElementSibling;if("line"!==a?.tagName)throw"Line not found";const u=Number(a.getAttribute("x1"));if(!e.height)throw"Top node element height is null";const l=e.y+e.height,h=n.y,f=Number(a.getAttribute("x2")),d=O(a,u,l,f,h);r.push(d)}else if("actor"===t.type){const e=L(o,c,{id:`${t.name}-top`});i.push(e);const n=L(s,c,{id:`${t.name}-bottom`});i.push(n);const a=o.previousElementSibling;if("line"!==a?.tagName)throw"Line not found";const u=Number(a.getAttribute("x1")),l=Number(a.getAttribute("y1")),h=Number(a.getAttribute("x2")),f=n.find((t=>"ellipse"===t.type));if(f){const t=f.y,e=O(a,u,l,h,t);r.push(e)}}})),{nodes:i,lines:r}})(o,e),u=n.getMessages(),l=N(u,e),h=((t,e)=>{const n=Array.from(e.querySelectorAll(".note")).map((t=>t.parentElement)),i=t.filter((t=>t.type===S)),r=[];return n.forEach(((t,e)=>{if(!t)return;const n=t.firstChild,a=i[e].message,o=M(n,"rectangle",{text:a,subtype:"note"});r.push(o)})),r})(u,e),f=(t=>{const e=Array.from(t.querySelectorAll("[class*=activation]")),n=[];return e.forEach((t=>{const e=M(t,"rectangle",{text:"",subtype:"activation"});n.push(e)})),n})(e),d=((t,e)=>{const n=Array.from(e.querySelectorAll(".loopLine")),i=[],r=[],a=[];n.forEach((t=>{const e=Number(t.getAttribute("x1")),n=Number(t.getAttribute("y1")),r=Number(t.getAttribute("x2")),a=Number(t.getAttribute("y2")),o=O(t,e,n,r,a);o.strokeStyle="dotted",o.strokeColor="#adb5bd",o.strokeWidth=2,i.push(o)}));const o=Array.from(e.querySelectorAll(".loopText")),s=t.filter((t=>t.type===I)).map((t=>t.message));o.forEach((t=>{const e=t.textContent||"",n=D(t,e),i=e.match(/\[(.*?)\]/)?.[1]||"";s.includes(i)&&(n.x+=16),r.push(n)}));const c=Array.from(e?.querySelectorAll(".labelBox")),u=Array.from(e?.querySelectorAll(".labelText"));return c.forEach(((t,e)=>{const n=u[e]?.textContent||"",i=M(t,"rectangle",{text:n});i.strokeColor="#adb5bd",i.bgColor="#e9ecef",i.width=void 0,a.push(i)})),{lines:i,texts:r,nodes:a}})(u,e);return i.push(a),i.push(...s),i.push(h),i.push(f),{type:"sequence",lines:c,arrows:l,nodes:i,loops:d,groups:r}},B=async t=>{v.K.initialize({startOnLoad:!1,flowchart:{curve:"linear"},themeVariables:{fontSize:"25px"}});const e=await v.K.mermaidAPI.getDiagramFromText((t=>{let e=t;return e=e.replace(/style.*:\S*#.*;/g,(t=>t.substring(0,t.length-1))),e=e.replace(/classDef.*:\S*#.*;/g,(t=>t.substring(0,t.length-1))),e=e.replace(/#\w+;/g,(t=>{const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?`fl°°${e}¶ß`:`fl°${e}¶ß`})),e})(t)),{svg:n}=await v.K.render("mermaid-to-excalidraw",t),i=document.createElement("div");let r;switch(i.setAttribute("style","opacity: 0; position: relative; z-index: -1;"),i.innerHTML=n,i.id="mermaid-diagram",document.body.appendChild(i),e.type){case"flowchart-v2":r=T(e,i);break;case"sequence":r=P(e,i);break;default:r=(t=>{const e=t.querySelector("svg");if(!e)throw new Error("SVG element not found");const n=e.getBoundingClientRect(),i=n.width,r=n.height;e.setAttribute("width",`${i}`),e.setAttribute("height",`${r}`);const a=unescape(encodeURIComponent(e.outerHTML));return{type:"graphImage",mimeType:"image/svg+xml",dataURL:`data:image/svg+xml;base64,${btoa(a)}`,width:i,height:r}})(i)}return i.remove(),r},F=async(t,e={})=>{const n=((t,e={})=>{switch(t.type){case"graphImage":return g.convert(t,e);case"flowchart":return f.convert(t,e);case"sequence":return y.convert(t,e);default:throw new Error(`graphToExcalidraw: unknown graph type "${t.type}, only flowcharts are supported!"`)}})(await B(t),e);return n}},1504:function(t,e,n){"use strict";function i(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n=r)&&(n=r)}return n}function r(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}function a(t){return t}n.d(e,{Nb1:function(){return os},LLu:function(){return g},F5q:function(){return d},$0Z:function(){return ys},Dts:function(){return xs},WQY:function(){return _s},qpX:function(){return Es},u93:function(){return Ts},tFB:function(){return Ss},YY7:function(){return Ds},OvA:function(){return Ls},dCK:function(){return Ps},zgE:function(){return Rs},fGX:function(){return $s},$m7:function(){return qs},c_6:function(){return us},fxm:function(){return Us},FdL:function(){return Qs},ak_:function(){return Js},SxZ:function(){return nc},eA_:function(){return rc},jsv:function(){return oc},iJ:function(){return ac},JHv:function(){return fi},jvg:function(){return fs},Fp7:function(){return i},VV$:function(){return r},ve8:function(){return ps},BYU:function(){return ar},PKp:function(){return fr},Xf:function(){return Io},Ys:function(){return Mo},td_:function(){return Do},YPS:function(){return Zn},rr1:function(){return Ir},i$Z:function(){return sa},WQD:function(){return Cr},Z_i:function(){return Er},F0B:function(){return Wr},NGh:function(){return Lr}});var o=1e-6;function s(t){return"translate("+t+",0)"}function c(t){return"translate(0,"+t+")"}function u(t){return e=>+t(e)}function l(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function h(){return!this.__axis}function f(t,e){var n=[],i=null,r=null,f=6,d=6,g=3,p="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,b=1===t||4===t?-1:1,w=4===t||2===t?"x":"y",m=1===t||3===t?s:c;function y(s){var c=null==i?e.ticks?e.ticks.apply(e,n):e.domain():i,y=null==r?e.tickFormat?e.tickFormat.apply(e,n):a:r,v=Math.max(f,0)+g,x=e.range(),k=+x[0]+p,_=+x[x.length-1]+p,A=(e.bandwidth?l:u)(e.copy(),p),E=s.selection?s.selection():s,T=E.selectAll(".domain").data([null]),C=E.selectAll(".tick").data(c,e).order(),S=C.exit(),I=C.enter().append("g").attr("class","tick"),M=C.select("line"),D=C.select("text");T=T.merge(T.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),C=C.merge(I),M=M.merge(I.append("line").attr("stroke","currentColor").attr(w+"2",b*f)),D=D.merge(I.append("text").attr("fill","currentColor").attr(w,b*v).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),s!==E&&(T=T.transition(s),C=C.transition(s),M=M.transition(s),D=D.transition(s),S=S.transition(s).attr("opacity",o).attr("transform",(function(t){return isFinite(t=A(t))?m(t+p):this.getAttribute("transform")})),I.attr("opacity",o).attr("transform",(function(t){var e=this.parentNode.__axis;return m((e&&isFinite(e=e(t))?e:A(t))+p)}))),S.remove(),T.attr("d",4===t||2===t?d?"M"+b*d+","+k+"H"+p+"V"+_+"H"+b*d:"M"+p+","+k+"V"+_:d?"M"+k+","+b*d+"V"+p+"H"+_+"V"+b*d:"M"+k+","+p+"H"+_),C.attr("opacity",1).attr("transform",(function(t){return m(A(t)+p)})),M.attr(w+"2",b*f),D.attr(w,b*v).text(y),E.filter(h).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),E.each((function(){this.__axis=A}))}return y.scale=function(t){return arguments.length?(e=t,y):e},y.ticks=function(){return n=Array.from(arguments),y},y.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),y):n.slice()},y.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),y):i&&i.slice()},y.tickFormat=function(t){return arguments.length?(r=t,y):r},y.tickSize=function(t){return arguments.length?(f=d=+t,y):f},y.tickSizeInner=function(t){return arguments.length?(f=+t,y):f},y.tickSizeOuter=function(t){return arguments.length?(d=+t,y):d},y.tickPadding=function(t){return arguments.length?(g=+t,y):g},y.offset=function(t){return arguments.length?(p=+t,y):p},y}function d(t){return f(1,t)}function g(t){return f(3,t)}function p(){}function b(t){return null==t?p:function(){return this.querySelector(t)}}function w(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function m(){return[]}function y(t){return null==t?m:function(){return this.querySelectorAll(t)}}function v(t){return function(){return this.matches(t)}}function x(t){return function(e){return e.matches(t)}}var k=Array.prototype.find;function _(){return this.firstElementChild}var A=Array.prototype.filter;function E(){return Array.from(this.children)}function T(t){return new Array(t.length)}function C(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function S(t){return function(){return t}}function I(t,e,n,i,r,a){for(var o,s=0,c=e.length,u=a.length;se?1:t>=e?0:NaN}C.prototype={constructor:C,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var N="http://www.w3.org/1999/xhtml",P={svg:"http://www.w3.org/2000/svg",xhtml:N,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function B(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),P.hasOwnProperty(e)?{space:P[e],local:t}:t}function F(t){return function(){this.removeAttribute(t)}}function R(t){return function(){this.removeAttributeNS(t.space,t.local)}}function j(t,e){return function(){this.setAttribute(t,e)}}function $(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function z(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function q(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function H(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function U(t){return function(){this.style.removeProperty(t)}}function G(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Y(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function Z(t,e){return t.style.getPropertyValue(e)||H(t).getComputedStyle(t,null).getPropertyValue(e)}function W(t){return function(){delete this[t]}}function K(t,e){return function(){this[t]=e}}function X(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function V(t){return t.trim().split(/^|\s+/)}function Q(t){return t.classList||new J(t)}function J(t){this._node=t,this._names=V(t.getAttribute("class")||"")}function tt(t,e){for(var n=Q(t),i=-1,r=e.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function xt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Tt=[null];function Ct(t,e){this._groups=t,this._parents=e}function St(){return new Ct([[document.documentElement]],Tt)}Ct.prototype=St.prototype={constructor:Ct,select:function(t){"function"!=typeof t&&(t=b(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=x&&(x=v+1);!(y=b[x])&&++x=0;)(i=r[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=L);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?U:"function"==typeof e?Y:G)(t,e,null==n?"":n)):Z(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?W:"function"==typeof e?X:K)(t,e)):this.node()[t]},classed:function(t,e){var n=V(t+"");if(arguments.length<2){for(var i=Q(this.node()),r=-1,a=n.length;++r{}};function Dt(){for(var t,e=0,n=arguments.length,i={};e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Nt(t,e){for(var n,i=0,r=t.length;i0)for(var n,i,r=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--jt}()}finally{jt=0,function(){var t,e,n=Bt,i=1/0;for(;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Bt=e);Ft=t,Jt(i)}(),Ht=0}}function Qt(){var t=Gt.now(),e=t-qt;e>1e3&&(Ut-=e,qt=t)}function Jt(t){jt||($t&&($t=clearTimeout($t)),t-Ht>24?(t<1/0&&($t=setTimeout(Vt,t-Gt.now()-Ut)),zt&&(zt=clearInterval(zt))):(zt||(qt=Gt.now(),zt=setInterval(Qt,1e3)),jt=1,Yt(Vt)))}function te(t,e,n){var i=new Kt;return e=null==e?0:+e,i.restart((n=>{i.stop(),t(n+e)}),e,n),i}Kt.prototype=Xt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Zt():+n)+(null==e?0:+e),this._next||Ft===this||(Ft?Ft._next=this:Bt=this,Ft=this),this._call=t,this._time=n,Jt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Jt())}};var ee=Rt("start","end","cancel","interrupt"),ne=[];function ie(t,e,n,i,r,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(t){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=t&&o(t-n.delay)}function o(a){var u,l,h,f;if(1!==n.state)return c();for(u in r)if((f=r[u]).name===n.name){if(3===f.state)return te(o);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete r[u]):+u0)throw new Error("too late; already scheduled");return n}function ae(t,e){var n=oe(t,e);if(n.state>3)throw new Error("too late; already running");return n}function oe(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function se(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var ce,ue=180/Math.PI,le={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function he(t,e,n,i,r,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*i)&&(n-=t*c,i-=e*c),(s=Math.sqrt(n*n+i*i))&&(n/=s,i/=s,c/=s),t*i180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:se(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:se(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,o.skewX,s,c),function(t,e,n,i,a,o){if(t!==n||e!==i){var s=a.push(r(a)+"scale(",null,",",null,")");o.push({i:s-4,x:se(t,n)},{i:s-2,x:se(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,i=c.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Re(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Re(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ce.exec(t))?new ze(e[1],e[2],e[3],1):(e=Se.exec(t))?new ze(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ie.exec(t))?Re(e[1],e[2],e[3],e[4]):(e=Me.exec(t))?Re(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=De.exec(t))?Ze(e[1],e[2]/100,e[3]/100,1):(e=Oe.exec(t))?Ze(e[1],e[2]/100,e[3]/100,e[4]):Le.hasOwnProperty(t)?Fe(Le[t]):"transparent"===t?new ze(NaN,NaN,NaN,0):null}function Fe(t){return new ze(t>>16&255,t>>8&255,255&t,1)}function Re(t,e,n,i){return i<=0&&(t=e=n=NaN),new ze(t,e,n,i)}function je(t){return t instanceof ve||(t=Be(t)),t?new ze((t=t.rgb()).r,t.g,t.b,t.opacity):new ze}function $e(t,e,n,i){return 1===arguments.length?je(t):new ze(t,e,n,null==i?1:i)}function ze(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function qe(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function He(){const t=Ue(this.opacity);return`${1===t?"rgb(":"rgba("}${Ge(this.r)}, ${Ge(this.g)}, ${Ge(this.b)}${1===t?")":`, ${t})`}`}function Ue(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ge(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Ge(t))<16?"0":"")+t.toString(16)}function Ze(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ke(t,e,n,i)}function We(t){if(t instanceof Ke)return new Ke(t.h,t.s,t.l,t.opacity);if(t instanceof ve||(t=Be(t)),!t)return new Ke;if(t instanceof Ke)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),o=NaN,s=a-r,c=(a+r)/2;return s?(o=e===a?(n-i)/s+6*(n0&&c<1?0:o,new Ke(o,s,c,t.opacity)}function Ke(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Xe(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function Qe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Je(t,e,n,i,r){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*i+o*r)/6}me(ve,Be,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ne,formatHex:Ne,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return We(this).formatHsl()},formatRgb:Pe,toString:Pe}),me(ze,$e,ye(ve,{brighter(t){return t=null==t?ke:Math.pow(ke,t),new ze(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?xe:Math.pow(xe,t),new ze(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ze(Ge(this.r),Ge(this.g),Ge(this.b),Ue(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qe,formatHex:qe,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:He,toString:He})),me(Ke,(function(t,e,n,i){return 1===arguments.length?We(t):new Ke(t,e,n,null==i?1:i)}),ye(ve,{brighter(t){return t=null==t?ke:Math.pow(ke,t),new Ke(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?xe:Math.pow(xe,t),new Ke(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new ze(Qe(t>=240?t-240:t+120,r,i),Qe(t,r,i),Qe(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new Ke(Xe(this.h),Ve(this.s),Ve(this.l),Ue(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ue(this.opacity);return`${1===t?"hsl(":"hsla("}${Xe(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));var tn=t=>()=>t;function en(t,e){return function(n){return t+n*e}}function nn(t){return 1==(t=+t)?rn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}function rn(t,e){var n=e-t;return n?en(t,n):tn(isNaN(t)?e:t)}var an=function t(e){var n=nn(e);function i(t,e){var i=n((t=$e(t)).r,(e=$e(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),o=rn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function on(t){return function(e){var n,i,r=e.length,a=new Array(r),o=new Array(r),s=new Array(r);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],o=i>0?t[i-1]:2*r-a,s=ia&&(r=e.slice(a,r),s[o]?s[o]+=r:s[++o]=r),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:se(n,i)})),a=cn.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?re:ae;return function(){var o=a(this,t),s=o.on;s!==i&&(r=(i=s).copy()).on(e,n),o.on=r}}var Cn=It.prototype.constructor;function Sn(t){return function(){this.style.removeProperty(t)}}function In(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}function Mn(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&In(t,a,n)),i}return a._value=e,a}function Dn(t){return function(e){this.textContent=t.call(this,e)}}function On(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Dn(i)),e}return i._value=t,i}var Ln=0;function Nn(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Pn(){return++Ln}var Bn=It.prototype;Nn.prototype=function(t){return It().transition(t)}.prototype={constructor:Nn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=b(t));for(var i=this._groups,r=i.length,a=new Array(r),o=0;o2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):o=!1;o&&delete t.__transition}}(this,t)}))},It.prototype.transition=function(t){var e,n;t instanceof Nn?(e=t._id,t=t._name):(e=Pn(),(n=Fn).time=Zt(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;afunction(t,e){return fetch(t,e).then(Gn)}(e,n).then((e=>(new DOMParser).parseFromString(e,t)))}Yn("application/xml"),Yn("text/html");var Zn=Yn("image/svg+xml");const Wn=Math.PI/180,Kn=180/Math.PI,Xn=.96422,Vn=.82521,Qn=4/29,Jn=6/29,ti=3*Jn*Jn;function ei(t){if(t instanceof ni)return new ni(t.l,t.a,t.b,t.opacity);if(t instanceof ui)return li(t);t instanceof ze||(t=je(t));var e,n,i=oi(t.r),r=oi(t.g),a=oi(t.b),o=ii((.2225045*i+.7168786*r+.0606169*a)/1);return i===r&&r===a?e=n=o:(e=ii((.4360747*i+.3850649*r+.1430804*a)/Xn),n=ii((.0139322*i+.0971045*r+.7141733*a)/Vn)),new ni(116*o-16,500*(e-o),200*(o-n),t.opacity)}function ni(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function ii(t){return t>.008856451679035631?Math.pow(t,1/3):t/ti+Qn}function ri(t){return t>Jn?t*t*t:ti*(t-Qn)}function ai(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function oi(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function si(t){if(t instanceof ui)return new ui(t.h,t.c,t.l,t.opacity);if(t instanceof ni||(t=ei(t)),0===t.a&&0===t.b)return new ui(NaN,0180||n<-180?n-360*Math.round(n/360):n):tn(isNaN(t)?e:t)}));hi(rn);const di=Math.sqrt(50),gi=Math.sqrt(10),pi=Math.sqrt(2);function bi(t,e,n){const i=(e-t)/Math.max(0,n),r=Math.floor(Math.log10(i)),a=i/Math.pow(10,r),o=a>=di?10:a>=gi?5:a>=pi?2:1;let s,c,u;return r<0?(u=Math.pow(10,-r)/o,s=Math.round(t*u),c=Math.round(e*u),s/ue&&--c,u=-u):(u=Math.pow(10,r)*o,s=Math.round(t/u),c=Math.round(e/u),s*ue&&--c),ce?1:t>=e?0:NaN}function vi(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function xi(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<0?r=e+1:a=e}while(ryi(t(e),n),i=(e,n)=>t(e)-n):(e=t===yi||t===vi?t:ki,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const o=r(t,e,n,a-1);return o>n&&i(t[o-1],e)>-i(t[o],e)?o-1:o},right:function(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<=0?r=e+1:a=e}while(re&&(n=t,t=e,e=n),u=function(n){return Math.max(t,Math.min(e,n))}),i=c>2?Fi:Bi,r=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(r||(r=i(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=i(s,o.map(t),se)))(n)))},h.domain=function(t){return arguments.length?(o=Array.from(t,Oi),l()):o.slice()},h.range=function(t){return arguments.length?(s=Array.from(t),l()):s.slice()},h.rangeRound=function(t){return s=Array.from(t),c=Di,l()},h.clamp=function(t){return arguments.length?(u=!!t||Ni,l()):u!==Ni},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,i){return t=n,e=i,l()}}function $i(){return ji()(Ni,Ni)}function zi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var qi,Hi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ui(t){if(!(e=Hi.exec(t)))throw new Error("invalid format: "+t);var e;return new Gi({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Gi(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Yi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Zi(t){return(t=Yi(Math.abs(t)))?t[1]:NaN}function Wi(t,e){var n=Yi(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Ui.prototype=Gi.prototype,Gi.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ki={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Wi(100*t,e),r:Wi,s:function(t,e){var n=Yi(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(qi=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Yi(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Xi(t){return t}var Vi,Qi,Ji,tr=Array.prototype.map,er=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function nr(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?Xi:(e=tr.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],o=0,s=e[0],c=0;r>0&&s>0&&(c+s+1>i&&(s=Math.max(1,i-c)),a.push(t.substring(r-=s,r+s)),!((c+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Xi:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tr.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Ui(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,g=t.width,p=t.comma,b=t.precision,w=t.trim,m=t.type;"n"===m?(p=!0,m="g"):Ki[m]||(void 0===b&&(b=12),w=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var y="$"===f?r:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",v="$"===f?a:/[%p]/.test(m)?c:"",x=Ki[m],k=/[defgprs%]/.test(m);function _(t){var r,a,c,f=y,_=v;if("c"===m)_=x(t)+_,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),b),w&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),f=(A?"("===h?h:u:"-"===h||"("===h?"":h)+f,_=("s"===m?er[8+qi/3]:"")+_+(A&&"("===h?")":""),k)for(r=-1,a=t.length;++r(c=t.charCodeAt(r))||c>57){_=(46===c?o+t.slice(r+1):t.slice(r))+_,t=t.slice(0,r);break}}p&&!d&&(t=i(t,1/0));var E=f.length+t.length+_.length,T=E>1)+f+t+_+T.slice(E);break;default:t=T+f+t+_}return s(t)}return b=void 0===b?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),_.toString=function(){return t+""},_}return{format:h,formatPrefix:function(t,e){var n=h(((t=Ui(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Zi(e)/3))),r=Math.pow(10,-i),a=er[8+i/3];return function(t){return n(r*t)+a}}}}function ir(t,e,n,i){var r,a=mi(t,e,n);switch((i=Ui(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zi(e)/3)))-Zi(Math.abs(t)))}(a,o))||(i.precision=r),Ji(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Zi(e)-Zi(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Zi(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return Qi(i)}function rr(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const i=e=r))return[];const s=a-r+1,c=new Array(s);if(i)if(o<0)for(let t=0;t0;){if((r=wi(c,u,n))===i)return a[o]=c,a[s]=u,e(a);if(r>0)c=Math.floor(c/r)*r,u=Math.ceil(u/r)*r;else{if(!(r<0))break;c=Math.ceil(c*r)/r,u=Math.floor(u*r)/r}i=r}return t},t}function ar(){var t=$i();return t.copy=function(){return Ri(t,ar())},zi.apply(t,arguments),rr(t)}Vi=nr({thousands:",",grouping:[3],currency:["$",""]}),Qi=Vi.format,Ji=Vi.formatPrefix;class or extends Map{constructor(t,e=lr){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(sr(this,t))}has(t){return super.has(sr(this,t))}set(t,e){return super.set(cr(this,t),e)}delete(t){return super.delete(ur(this,t))}}Set;function sr({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):n}function cr({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}function ur({_intern:t,_key:e},n){const i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}function lr(t){return null!==t&&"object"==typeof t?t.valueOf():t}const hr=Symbol("implicit");function fr(){var t=new or,e=[],n=[],i=hr;function r(r){let a=t.get(r);if(void 0===a){if(i!==hr)return i;t.set(r,a=e.push(r)-1)}return n[a%n.length]}return r.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new or;for(const i of n)t.has(i)||t.set(i,e.push(i)-1);return r},r.range=function(t){return arguments.length?(n=Array.from(t),r):n.slice()},r.unknown=function(t){return arguments.length?(i=t,r):i},r.copy=function(){return fr(e,n).unknown(i)},zi.apply(r,arguments),r}const dr=1e3,gr=6e4,pr=36e5,br=864e5,wr=6048e5,mr=2592e6,yr=31536e6,vr=new Date,xr=new Date;function kr(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=e=>(t(e=new Date(+e)),e),r.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),r.round=t=>{const e=r(t),n=r.ceil(t);return t-e(e(t=new Date(+t),null==n?1:Math.floor(n)),t),r.range=(n,i,a)=>{const o=[];if(n=r.ceil(n),a=null==a?1:Math.floor(a),!(n0))return o;let s;do{o.push(s=new Date(+n)),e(n,a),t(n)}while(skr((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})),n&&(r.count=(e,i)=>(vr.setTime(+e),xr.setTime(+i),t(vr),t(xr),Math.floor(n(vr,xr))),r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?e=>i(e)%t==0:e=>r.count(0,e)%t==0):r:null)),r}const _r=kr((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));_r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?kr((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):_r:null);_r.range;const Ar=kr((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*dr)}),((t,e)=>(e-t)/dr),(t=>t.getUTCSeconds())),Er=(Ar.range,kr((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*dr)}),((t,e)=>{t.setTime(+t+e*gr)}),((t,e)=>(e-t)/gr),(t=>t.getMinutes()))),Tr=(Er.range,kr((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*gr)}),((t,e)=>(e-t)/gr),(t=>t.getUTCMinutes()))),Cr=(Tr.range,kr((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*dr-t.getMinutes()*gr)}),((t,e)=>{t.setTime(+t+e*pr)}),((t,e)=>(e-t)/pr),(t=>t.getHours()))),Sr=(Cr.range,kr((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*pr)}),((t,e)=>(e-t)/pr),(t=>t.getUTCHours()))),Ir=(Sr.range,kr((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*gr)/br),(t=>t.getDate()-1))),Mr=(Ir.range,kr((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/br),(t=>t.getUTCDate()-1))),Dr=(Mr.range,kr((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/br),(t=>Math.floor(t/br))));Dr.range;function Or(t){return kr((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*gr)/wr))}const Lr=Or(0),Nr=Or(1),Pr=Or(2),Br=Or(3),Fr=Or(4),Rr=Or(5),jr=Or(6);Lr.range,Nr.range,Pr.range,Br.range,Fr.range,Rr.range,jr.range;function $r(t){return kr((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/wr))}const zr=$r(0),qr=$r(1),Hr=$r(2),Ur=$r(3),Gr=$r(4),Yr=$r(5),Zr=$r(6),Wr=(zr.range,qr.range,Hr.range,Ur.range,Gr.range,Yr.range,Zr.range,kr((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),Kr=(Wr.range,kr((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),Xr=(Kr.range,kr((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));Xr.every=t=>isFinite(t=Math.floor(t))&&t>0?kr((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null;Xr.range;const Vr=kr((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));Vr.every=t=>isFinite(t=Math.floor(t))&&t>0?kr((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null;Vr.range;function Qr(t,e,n,i,r,a){const o=[[Ar,1,dr],[Ar,5,5e3],[Ar,15,15e3],[Ar,30,3e4],[a,1,gr],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,pr],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,br],[i,2,1728e5],[n,1,wr],[e,1,mr],[e,3,7776e6],[t,1,yr]];function s(e,n,i){const r=Math.abs(n-e)/i,a=xi((([,,t])=>t)).right(o,r);if(a===o.length)return t.every(mi(e/yr,n/yr,i));if(0===a)return _r.every(Math.max(mi(e,n,i),1));const[s,c]=o[r/o[a-1][2][t.toLowerCase(),e])))}function ba(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function wa(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function ma(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function ya(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function va(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function xa(t,e,n){var i=ua.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function ka(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function _a(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function Aa(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function Ea(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function Ta(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function Ca(t,e,n){var i=ua.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Sa(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function Ia(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ma(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function Da(t,e,n){var i=ua.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Oa(t,e,n){var i=ua.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function La(t,e,n){var i=la.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function Na(t,e,n){var i=ua.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Pa(t,e,n){var i=ua.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Ba(t,e){return fa(t.getDate(),e,2)}function Fa(t,e){return fa(t.getHours(),e,2)}function Ra(t,e){return fa(t.getHours()%12||12,e,2)}function ja(t,e){return fa(1+Ir.count(Xr(t),t),e,3)}function $a(t,e){return fa(t.getMilliseconds(),e,3)}function za(t,e){return $a(t,e)+"000"}function qa(t,e){return fa(t.getMonth()+1,e,2)}function Ha(t,e){return fa(t.getMinutes(),e,2)}function Ua(t,e){return fa(t.getSeconds(),e,2)}function Ga(t){var e=t.getDay();return 0===e?7:e}function Ya(t,e){return fa(Lr.count(Xr(t)-1,t),e,2)}function Za(t){var e=t.getDay();return e>=4||0===e?Fr(t):Fr.ceil(t)}function Wa(t,e){return t=Za(t),fa(Fr.count(Xr(t),t)+(4===Xr(t).getDay()),e,2)}function Ka(t){return t.getDay()}function Xa(t,e){return fa(Nr.count(Xr(t)-1,t),e,2)}function Va(t,e){return fa(t.getFullYear()%100,e,2)}function Qa(t,e){return fa((t=Za(t)).getFullYear()%100,e,2)}function Ja(t,e){return fa(t.getFullYear()%1e4,e,4)}function to(t,e){var n=t.getDay();return fa((t=n>=4||0===n?Fr(t):Fr.ceil(t)).getFullYear()%1e4,e,4)}function eo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+fa(e/60|0,"0",2)+fa(e%60,"0",2)}function no(t,e){return fa(t.getUTCDate(),e,2)}function io(t,e){return fa(t.getUTCHours(),e,2)}function ro(t,e){return fa(t.getUTCHours()%12||12,e,2)}function ao(t,e){return fa(1+Mr.count(Vr(t),t),e,3)}function oo(t,e){return fa(t.getUTCMilliseconds(),e,3)}function so(t,e){return oo(t,e)+"000"}function co(t,e){return fa(t.getUTCMonth()+1,e,2)}function uo(t,e){return fa(t.getUTCMinutes(),e,2)}function lo(t,e){return fa(t.getUTCSeconds(),e,2)}function ho(t){var e=t.getUTCDay();return 0===e?7:e}function fo(t,e){return fa(zr.count(Vr(t)-1,t),e,2)}function go(t){var e=t.getUTCDay();return e>=4||0===e?Gr(t):Gr.ceil(t)}function po(t,e){return t=go(t),fa(Gr.count(Vr(t),t)+(4===Vr(t).getUTCDay()),e,2)}function bo(t){return t.getUTCDay()}function wo(t,e){return fa(qr.count(Vr(t)-1,t),e,2)}function mo(t,e){return fa(t.getUTCFullYear()%100,e,2)}function yo(t,e){return fa((t=go(t)).getUTCFullYear()%100,e,2)}function vo(t,e){return fa(t.getUTCFullYear()%1e4,e,4)}function xo(t,e){var n=t.getUTCDay();return fa((t=n>=4||0===n?Gr(t):Gr.ceil(t)).getUTCFullYear()%1e4,e,4)}function ko(){return"+0000"}function _o(){return"%"}function Ao(t){return+t}function Eo(t){return Math.floor(+t/1e3)}function To(t){return new Date(t)}function Co(t){return t instanceof Date?+t:+new Date(+t)}function So(t,e,n,i,r,a,o,s,c,u){var l=$i(),h=l.invert,f=l.domain,d=u(".%L"),g=u(":%S"),p=u("%I:%M"),b=u("%I %p"),w=u("%a %d"),m=u("%b %d"),y=u("%B"),v=u("%Y");function x(t){return(c(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Ao,s:Eo,S:Ua,u:Ga,U:Ya,V:Wa,w:Ka,W:Xa,x:null,X:null,y:Va,Y:Ja,Z:eo,"%":_o},v={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:no,e:no,f:so,g:yo,G:xo,H:io,I:ro,j:ao,L:oo,m:co,M:uo,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Ao,s:Eo,S:lo,u:ho,U:fo,V:po,w:bo,W:wo,x:null,X:null,y:mo,Y:vo,Z:ko,"%":_o},x={a:function(t,e,n){var i=d.exec(e.slice(n));return i?(t.w=g.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=h.exec(e.slice(n));return i?(t.w=f.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=w.exec(e.slice(n));return i?(t.m=m.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=p.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return A(t,e,n,i)},d:Ta,e:Ta,f:Oa,g:ka,G:xa,H:Sa,I:Sa,j:Ca,L:Da,m:Ea,M:Ia,p:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.p=l.get(i[0].toLowerCase()),n+i[0].length):-1},q:Aa,Q:Na,s:Pa,S:Ma,u:wa,U:ma,V:ya,w:ba,W:va,x:function(t,e,i){return A(t,n,e,i)},X:function(t,e,n){return A(t,i,e,n)},y:ka,Y:xa,Z:_a,"%":La};function k(t,e){return function(n){var i,r,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=ra(aa(a.y,0,1))).getUTCDay(),i=r>4||0===r?qr.ceil(i):qr(i),i=Mr.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=ia(aa(a.y,0,1))).getDay(),i=r>4||0===r?Nr.ceil(i):Nr(i),i=Ir.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?ra(aa(a.y,0,1)).getUTCDay():ia(aa(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ra(a)):ia(a)}}function A(t,e,n,i){for(var r,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(r=e.charCodeAt(o++))){if(r=e.charAt(o++),!(a=x[r in ca?e.charAt(o++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return y.x=k(n,y),y.X=k(i,y),y.c=k(e,y),v.x=k(n,v),v.X=k(i,v),v.c=k(e,v),{format:function(t){var e=k(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",v);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),sa=oa.format,oa.parse,oa.utcFormat,oa.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Lo=Math.abs,No=Math.atan2,Po=Math.cos,Bo=Math.max,Fo=Math.min,Ro=Math.sin,jo=Math.sqrt,$o=1e-12,zo=Math.PI,qo=zo/2,Ho=2*zo;function Uo(t){return t>1?0:t<-1?zo:Math.acos(t)}function Go(t){return t>=1?qo:t<=-1?-qo:Math.asin(t)}const Yo=Math.PI,Zo=2*Yo,Wo=1e-6,Ko=Zo-Wo;function Xo(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Xo;const n=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;eWo)if(Math.abs(l*s-c*u)>Wo&&r){let f=n-a,d=i-o,g=s*s+c*c,p=f*f+d*d,b=Math.sqrt(g),w=Math.sqrt(h),m=r*Math.tan((Yo-Math.acos((g+h-p)/(2*b*w)))/2),y=m/w,v=m/b;Math.abs(y-1)>Wo&&this._append`L${t+y*u},${e+y*l}`,this._append`A${r},${r},0,0,${+(l*f>u*d)},${this._x1=t+v*s},${this._y1=e+v*c}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,n,i,r,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let o=n*Math.cos(i),s=n*Math.sin(i),c=t+o,u=e+s,l=1^a,h=a?i-r:r-i;null===this._x1?this._append`M${c},${u}`:(Math.abs(this._x1-c)>Wo||Math.abs(this._y1-u)>Wo)&&this._append`L${c},${u}`,n&&(h<0&&(h=h%Zo+Zo),h>Ko?this._append`A${n},${n},0,1,${l},${t-o},${e-s}A${n},${n},0,1,${l},${this._x1=c},${this._y1=u}`:h>Wo&&this._append`A${n},${n},0,${+(h>=Yo)},${l},${this._x1=t+n*Math.cos(r)},${this._y1=e+n*Math.sin(r)}`)}rect(t,e,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Qo(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Vo(e)}function Jo(t){return t.innerRadius}function ts(t){return t.outerRadius}function es(t){return t.startAngle}function ns(t){return t.endAngle}function is(t){return t&&t.padAngle}function rs(t,e,n,i,r,a,o,s){var c=n-t,u=i-e,l=o-r,h=s-a,f=h*c-l*u;if(!(f*f<$o))return[t+(f=(l*(e-a)-h*(t-r))/f)*c,e+f*u]}function as(t,e,n,i,r,a,o){var s=t-n,c=e-i,u=(o?a:-a)/jo(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,g=n+l,p=i+h,b=(f+g)/2,w=(d+p)/2,m=g-f,y=p-d,v=m*m+y*y,x=r-a,k=f*p-g*d,_=(y<0?-1:1)*jo(Bo(0,x*x*v-k*k)),A=(k*y-m*_)/v,E=(-k*m-y*_)/v,T=(k*y+m*_)/v,C=(-k*m+y*_)/v,S=A-b,I=E-w,M=T-b,D=C-w;return S*S+I*I>M*M+D*D&&(A=T,E=C),{cx:A,cy:E,x01:-l,y01:-h,x11:A*(r/x-1),y11:E*(r/x-1)}}function os(){var t=Jo,e=ts,n=Oo(0),i=null,r=es,a=ns,o=is,s=null,c=Qo(u);function u(){var u,l,h=+t.apply(this,arguments),f=+e.apply(this,arguments),d=r.apply(this,arguments)-qo,g=a.apply(this,arguments)-qo,p=Lo(g-d),b=g>d;if(s||(s=u=c()),f$o)if(p>Ho-$o)s.moveTo(f*Po(d),f*Ro(d)),s.arc(0,0,f,d,g,!b),h>$o&&(s.moveTo(h*Po(g),h*Ro(g)),s.arc(0,0,h,g,d,b));else{var w,m,y=d,v=g,x=d,k=g,_=p,A=p,E=o.apply(this,arguments)/2,T=E>$o&&(i?+i.apply(this,arguments):jo(h*h+f*f)),C=Fo(Lo(f-h)/2,+n.apply(this,arguments)),S=C,I=C;if(T>$o){var M=Go(T/h*Ro(E)),D=Go(T/f*Ro(E));(_-=2*M)>$o?(x+=M*=b?1:-1,k-=M):(_=0,x=k=(d+g)/2),(A-=2*D)>$o?(y+=D*=b?1:-1,v-=D):(A=0,y=v=(d+g)/2)}var O=f*Po(y),L=f*Ro(y),N=h*Po(k),P=h*Ro(k);if(C>$o){var B,F=f*Po(v),R=f*Ro(v),j=h*Po(x),$=h*Ro(x);if(p$o?I>$o?(w=as(j,$,O,L,f,I,b),m=as(F,R,N,P,f,I,b),s.moveTo(w.cx+w.x01,w.cy+w.y01),I$o&&_>$o?S>$o?(w=as(N,P,F,R,h,-S,b),m=as(O,L,j,$,h,-S,b),s.lineTo(w.cx+w.x01,w.cy+w.y01),St?1:e>=t?0:NaN}function gs(t){return t}function ps(){var t=gs,e=ds,n=null,i=Oo(0),r=Oo(Ho),a=Oo(0);function o(o){var s,c,u,l,h,f=(o=ss(o)).length,d=0,g=new Array(f),p=new Array(f),b=+i.apply(this,arguments),w=Math.min(Ho,Math.max(-Ho,r.apply(this,arguments)-b)),m=Math.min(Math.abs(w)/f,a.apply(this,arguments)),y=m*(w<0?-1:1);for(s=0;s0&&(d+=h);for(null!=e?g.sort((function(t,n){return e(p[t],p[n])})):null!=n&&g.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(w-f*y)/d:0;s0?h*u:0)+y,p[c]={data:o[c],index:s,value:h,startAngle:b,endAngle:l,padAngle:m};return p}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:Oo(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Oo(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:Oo(+t),o):r},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Oo(+t),o):a},o}function bs(){}function ws(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function ms(t){this._context=t}function ys(t){return new ms(t)}function vs(t){this._context=t}function xs(t){return new vs(t)}function ks(t){this._context=t}function _s(t){return new ks(t)}cs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},ms.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ws(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},vs.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ks.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class As{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Es(t){return new As(t,!0)}function Ts(t){return new As(t,!1)}function Cs(t,e){this._basis=new ms(t),this._beta=e}Cs.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i,r=t[0],a=e[0],o=t[n]-r,s=e[n]-a,c=-1;++c<=n;)i=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(r+i*o),this._beta*e[c]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Ss=function t(e){function n(t){return 1===e?new ms(t):new Cs(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Is(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Ms(t,e){this._context=t,this._k=(1-e)/6}Ms.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Is(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ds=function t(e){function n(t){return new Ms(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Os(t,e){this._context=t,this._k=(1-e)/6}Os.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ls=function t(e){function n(t){return new Os(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Ns(t,e){this._context=t,this._k=(1-e)/6}Ns.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ps=function t(e){function n(t){return new Ns(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Bs(t,e,n){var i=t._x1,r=t._y1,a=t._x2,o=t._y2;if(t._l01_a>$o){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,r=(r*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>$o){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(i,r,a,o,t._x2,t._y2)}function Fs(t,e){this._context=t,this._alpha=e}Fs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Rs=function t(e){function n(t){return e?new Fs(t,e):new Ms(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function js(t,e){this._context=t,this._alpha=e}js.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var $s=function t(e){function n(t){return e?new js(t,e):new Os(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zs(t,e){this._context=t,this._alpha=e}zs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var qs=function t(e){function n(t){return e?new zs(t,e):new Ns(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Hs(t){this._context=t}function Us(t){return new Hs(t)}function Gs(t){return t<0?-1:1}function Ys(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),s=(a*r+o*i)/(i+r);return(Gs(a)+Gs(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Zs(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ws(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,r+s*e,a-s,o-s*n,a,o)}function Ks(t){this._context=t}function Xs(t){this._context=new Vs(t)}function Vs(t){this._context=t}function Qs(t){return new Ks(t)}function Js(t){return new Xs(t)}function tc(t){this._context=t}function ec(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),o=new Array(i);for(r[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(o[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},sc.prototype={constructor:sc,scale:function(t){return 1===t?this:new sc(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new sc(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new sc(1,0,0);sc.prototype},8137:function(t,e,n){"use strict";n.d(e,{a:function(){return r}});var i=n(6421);function r(t,e){var n=t.append("foreignObject").attr("width","100000"),r=n.append("xhtml:div");r.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":r.insert(a);break;case"object":r.insert((function(){return a}));break;default:r.html(a)}i.bg(r,e.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap");var o=r.node().getBoundingClientRect();return n.attr("width",o.width).attr("height",o.height),n}},6421:function(t,e,n){"use strict";n.d(e,{$p:function(){return l},O1:function(){return o},WR:function(){return h},bF:function(){return a},bg:function(){return u}});var i=n(3862),r=n(3200);function a(t,e){return!!t.children(e).length}function o(t){return c(t.v)+":"+c(t.w)+":"+c(t.name)}var s=/:/g;function c(t){return t?String(t).replace(s,"\\:"):""}function u(t,e){e&&t.attr("style",e)}function l(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))}function h(t,e){var n=e.graph();if(i.Z(n)){var a=n.transition;if(r.Z(a))return a(t)}return t}},1768:function(t,e,n){"use strict";n.d(e,{bK:function(){return Ke}});var i=n(6227),r=n(7474),a=n(4734),o=n(2399),s=n(1849),c=n(8076),u=n(6460),l=n(8066);class h{constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,e=t._prev;if(e!==t)return f(e),e}enqueue(t){var e=this._sentinel;t._prev&&t._next&&f(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e}toString(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,d)),n=n._prev;return"["+t.join(", ")+"]"}}function f(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function d(t,e){if("_next"!==t&&"_prev"!==t)return e}var g=o.Z(1);function p(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new l.k,r=0,a=0;i.Z(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),i.Z(t.edges(),(function(t){var i=n.edge(t.v,t.w)||0,o=e(t),s=i+o;n.setEdge(t.v,t.w,s),a=Math.max(a,n.node(t.v).out+=o),r=Math.max(r,n.node(t.w).in+=o)}));var o=u.Z(a+r+3).map((function(){return new h})),s=r+1;return i.Z(n.nodes(),(function(t){w(o,s,n.node(t))})),{graph:n,buckets:o,zeroIdx:s}}(t,e||g),r=function(t,e,n){var i,r=[],a=e[e.length-1],o=e[0];for(;t.nodeCount();){for(;i=o.dequeue();)b(t,e,n,i);for(;i=a.dequeue();)b(t,e,n,i);if(t.nodeCount())for(var s=e.length-2;s>0;--s)if(i=e[s].dequeue()){r=r.concat(b(t,e,n,i,!0));break}}return r}(n.graph,n.buckets,n.zeroIdx);return s.Z(c.Z(r,(function(e){return t.outEdges(e.v,e.w)})))}function b(t,e,n,r,a){var o=a?[]:void 0;return i.Z(t.inEdges(r.v),(function(i){var r=t.edge(i),s=t.node(i.v);a&&o.push({v:i.v,w:i.w}),s.out-=r,w(e,n,s)})),i.Z(t.outEdges(r.v),(function(i){var r=t.edge(i),a=i.w,o=t.node(a);o.in-=r,w(e,n,o)})),t.removeNode(r.v),o}function w(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}function m(t){var e="greedy"===t.graph().acyclicer?p(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},r={};function o(s){a.Z(r,s)||(r[s]=!0,n[s]=!0,i.Z(t.outEdges(s),(function(t){a.Z(n,t.w)?e.push(t):o(t.w)})),delete n[s])}return i.Z(t.nodes(),o),e}(t);i.Z(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,r.Z("rev"))}))}var y=n(675),v=n(1250),x=n(8670);var k=function(t,e,n){(void 0!==n&&!(0,x.Z)(t[e],n)||void 0===n&&!(e in t))&&(0,v.Z)(t,e,n)},_=n(1405),A=n(9053),E=n(9178),T=n(7855),C=n(7734),S=n(175),I=n(6575),M=n(5214),D=n(7840),O=n(3200),L=n(7275),N=n(3862),P=n(4161);var B=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]},F=n(3617),R=n(4027);var j=function(t){return(0,F.Z)(t,(0,R.Z)(t))};var $=function(t,e,n,i,r,a,o){var s=B(t,n),c=B(e,n),u=o.get(c);if(u)k(t,n,u);else{var l=a?a(s,c,n+"",t,e,o):void 0,h=void 0===l;if(h){var f=(0,I.Z)(c),d=!f&&(0,D.Z)(c),g=!f&&!d&&(0,P.Z)(c);l=c,f||d||g?(0,I.Z)(s)?l=s:(0,M.Z)(s)?l=(0,T.Z)(s):d?(h=!1,l=(0,A.Z)(c,!0)):g?(h=!1,l=(0,E.Z)(c,!0)):l=[]:(0,N.Z)(c)||(0,S.Z)(c)?(l=s,(0,S.Z)(s)?l=j(s):(0,L.Z)(s)&&!(0,O.Z)(s)||(l=(0,C.Z)(c))):h=!1}h&&(o.set(c,l),r(l,c,i,a,o),o.delete(c)),k(t,n,l)}};var z=function t(e,n,i,r,a){e!==n&&(0,_.Z)(n,(function(o,s){if(a||(a=new y.Z),(0,L.Z)(o))$(e,n,s,i,t,r,a);else{var c=r?r(B(e,s),o,s+"",e,n,a):void 0;void 0===c&&(c=o),k(e,s,c)}}),R.Z)},q=n(155),H=n(9597);var U=function(t){return(0,q.Z)((function(e,n){var i=-1,r=n.length,a=r>1?n[r-1]:void 0,o=r>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(r--,a):void 0,o&&(0,H.Z)(n[0],n[1],o)&&(a=r<3?void 0:a,r=1),e=Object(e);++ie},X=n(1116);var V=function(t){return t&&t.length?W(t,X.Z,K):void 0};var Q=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0},J=n(8878),tt=n(5350);var et=function(t,e){var n={};return e=(0,tt.Z)(e,3),(0,J.Z)(t,(function(t,i,r){(0,v.Z)(n,i,e(t,i,r))})),n},nt=n(9789);var it=function(t,e){return tMath.abs(o)*u?(s<0&&(u=-u),n=u*o/s,i=u):(o<0&&(c=-c),n=c,i=c*s/o),{x:r+n,y:a+i}}function lt(t){var e=c.Z(u.Z(ft(t)+1),(function(){return[]}));return i.Z(t.nodes(),(function(n){var i=t.node(n),r=i.rank;nt.Z(r)||(e[r][i.order]=n)})),e}function ht(t,e,n,i){var r={width:0,height:0};return arguments.length>=4&&(r.rank=n,r.order=i),st(t,"border",r,e)}function ft(t){return V(c.Z(t.nodes(),(function(e){var n=t.node(e).rank;if(!nt.Z(n))return n})))}function dt(t,e){var n=ot();try{return e()}finally{console.log(t+" time: "+(ot()-n)+"ms")}}function gt(t,e){return e()}function pt(t,e,n,i,r,a){var o={width:0,height:0,rank:a,borderType:e},s=r[e][a-1],c=st(t,"border",o,n);r[e][a]=c,t.setParent(c,i),s&&t.setEdge(s,c,{weight:1})}function bt(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){i.Z(t.nodes(),(function(e){yt(t.node(e))})),i.Z(t.edges(),(function(e){var n=t.edge(e);i.Z(n.points,yt),a.Z(n,"y")&&yt(n)}))}(t),"lr"!==e&&"rl"!==e||(!function(t){i.Z(t.nodes(),(function(e){vt(t.node(e))})),i.Z(t.edges(),(function(e){var n=t.edge(e);i.Z(n.points,vt),a.Z(n,"x")&&vt(n)}))}(t),wt(t))}function wt(t){i.Z(t.nodes(),(function(e){mt(t.node(e))})),i.Z(t.edges(),(function(e){mt(t.edge(e))}))}function mt(t){var e=t.width;t.width=t.height,t.height=e}function yt(t){t.y=-t.y}function vt(t){var e=t.x;t.x=t.y,t.y=e}function xt(t){t.graph().dummyChains=[],i.Z(t.edges(),(function(e){!function(t,e){var n,i,r,a=e.v,o=t.node(a).rank,s=e.w,c=t.node(s).rank,u=e.name,l=t.edge(e),h=l.labelRank;if(c===o+1)return;for(t.removeEdge(e),r=0,++o;o-1?r[a?e[o]:o]:void 0}},Ot=n(1758),Lt=n(5473);var Nt=function(t){var e=(0,Lt.Z)(t),n=e%1;return e==e?n?e-n:e:0},Pt=Math.max;var Bt=Dt((function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var r=null==n?0:Nt(n);return r<0&&(r=Pt(i+r,0)),(0,Ot.Z)(t,(0,tt.Z)(e,3),r)})),Ft=n(3555);o.Z(1);o.Z(1);n(9295),n(9035),n(963),n(4897);(0,n(7381).Z)("length"),RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Rt="[\\ud800-\\udfff]",jt="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",$t="\\ud83c[\\udffb-\\udfff]",zt="[^\\ud800-\\udfff]",qt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",Ut="(?:"+jt+"|"+$t+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Yt=Gt+Ut+("(?:\\u200d(?:"+[zt,qt,Ht].join("|")+")"+Gt+Ut+")*"),Zt="(?:"+[zt+jt+"?",jt,qt,Ht,Rt].join("|")+")";RegExp($t+"(?="+$t+")|"+Zt+Yt,"g");function Wt(){}function Kt(t,e,n){I.Z(e)||(e=[e]);var r=(t.isDirected()?t.successors:t.neighbors).bind(t),a=[],o={};return i.Z(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);Xt(t,e,"post"===n,o,r,a)})),a}function Xt(t,e,n,r,o,s){a.Z(r,e)||(r[e]=!0,n||s.push(e),i.Z(o(e),(function(e){Xt(t,e,n,r,o,s)})),n&&s.push(e))}Wt.prototype=new Error;n(8612);function Vt(t){t=function(t){var e=(new l.k).setGraph(t.graph());return i.Z(t.nodes(),(function(n){e.setNode(n,t.node(n))})),i.Z(t.edges(),(function(n){var i=e.edge(n.v,n.w)||{weight:0,minlen:1},r=t.edge(n);e.setEdge(n.v,n.w,{weight:i.weight+r.weight,minlen:Math.max(i.minlen,r.minlen)})})),e}(t),_t(t);var e,n=Et(t);for(te(n),Qt(n,t);e=ne(n);)re(n,t,e,ie(n,t,e))}function Qt(t,e){var n=function(t,e){return Kt(t,e,"post")}(t,t.nodes());n=n.slice(0,n.length-1),i.Z(n,(function(n){!function(t,e,n){var i=t.node(n).parent;t.edge(n,i).cutvalue=Jt(t,e,n)}(t,e,n)}))}function Jt(t,e,n){var r=t.node(n).parent,a=!0,o=e.edge(n,r),s=0;return o||(a=!1,o=e.edge(r,n)),s=o.weight,i.Z(e.nodeEdges(n),(function(i){var o,c,u=i.v===n,l=u?i.w:i.v;if(l!==r){var h=u===a,f=e.edge(i).weight;if(s+=h?f:-f,o=n,c=l,t.hasEdge(o,c)){var d=t.edge(n,l).cutvalue;s+=h?-d:d}}})),s}function te(t,e){arguments.length<2&&(e=t.nodes()[0]),ee(t,{},1,e)}function ee(t,e,n,r,o){var s=n,c=t.node(r);return e[r]=!0,i.Z(t.neighbors(r),(function(i){a.Z(e,i)||(n=ee(t,e,n,i,r))})),c.low=s,c.lim=n++,o?c.parent=o:delete c.parent,n}function ne(t){return Bt(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function ie(t,e,n){var i=n.v,r=n.w;e.hasEdge(i,r)||(i=n.w,r=n.v);var a=t.node(i),o=t.node(r),s=a,c=!1;a.lim>o.lim&&(s=o,c=!0);var u=Ft.Z(e.edges(),(function(e){return c===ae(t,t.node(e.v),s)&&c!==ae(t,t.node(e.w),s)}));return kt(u,(function(t){return At(e,t)}))}function re(t,e,n,r){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(r.v,r.w,{}),te(t),Qt(t,e),function(t,e){var n=Bt(t.nodes(),(function(t){return!e.node(t).parent})),r=function(t,e){return Kt(t,e,"pre")}(t,n);r=r.slice(1),i.Z(r,(function(n){var i=t.node(n).parent,r=e.edge(n,i),a=!1;r||(r=e.edge(i,n),a=!0),e.node(n).rank=e.node(i).rank+(a?r.minlen:-r.minlen)}))}(t,e)}function ae(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}function oe(t){switch(t.graph().ranker){case"network-simplex":default:ce(t);break;case"tight-tree":!function(t){_t(t),Et(t)}(t);break;case"longest-path":se(t)}}Vt.initLowLimValues=te,Vt.initCutValues=Qt,Vt.calcCutValue=Jt,Vt.leaveEdge=ne,Vt.enterEdge=ie,Vt.exchangeEdges=re;var se=_t;function ce(t){Vt(t)}var ue=n(2855),le=n(9886);function he(t){var e=st(t,"root",{},"_root"),n=function(t){var e={};function n(r,a){var o=t.children(r);o&&o.length&&i.Z(o,(function(t){n(t,a+1)})),e[r]=a}return i.Z(t.children(),(function(t){n(t,1)})),e}(t),r=V(ue.Z(n))-1,a=2*r+1;t.graph().nestingRoot=e,i.Z(t.edges(),(function(e){t.edge(e).minlen*=a}));var o=function(t){return le.Z(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;i.Z(t.children(),(function(i){fe(t,e,a,o,r,n,i)})),t.graph().nodeRankFactor=a}function fe(t,e,n,r,a,o,s){var c=t.children(s);if(c.length){var u=ht(t,"_bt"),l=ht(t,"_bb"),h=t.node(s);t.setParent(u,s),h.borderTop=u,t.setParent(l,s),h.borderBottom=l,i.Z(c,(function(i){fe(t,e,n,r,a,o,i);var c=t.node(i),h=c.borderTop?c.borderTop:i,f=c.borderBottom?c.borderBottom:i,d=c.borderTop?r:2*r,g=h!==f?1:a-o[s]+1;t.setEdge(u,h,{weight:d,minlen:g,nestingEdge:!0}),t.setEdge(f,l,{weight:d,minlen:g,nestingEdge:!0})})),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:a+o[s]})}else s!==e&&t.setEdge(e,s,{weight:0,minlen:n})}var de=n(6833);var ge=function(t){return(0,de.Z)(t,5)};function pe(t,e,n){var o=function(t){var e;for(;t.hasNode(e=r.Z("_root")););return e}(t),s=new l.k({compound:!0}).setGraph({root:o}).setDefaultNodeLabel((function(e){return t.node(e)}));return i.Z(t.nodes(),(function(r){var c=t.node(r),u=t.parent(r);(c.rank===e||c.minRank<=e&&e<=c.maxRank)&&(s.setNode(r),s.setParent(r,u||o),i.Z(t[n](r),(function(e){var n=e.v===r?e.w:e.v,i=s.edge(n,r),a=nt.Z(i)?0:i.weight;s.setEdge(n,r,{weight:t.edge(e).weight+a})})),a.Z(c,"minRank")&&s.setNode(r,{borderLeft:c.borderLeft[e],borderRight:c.borderRight[e]}))})),s}var be=n(9616);var we=function(t,e,n){for(var i=-1,r=t.length,a=e.length,o={};++ie||a&&o&&c&&!s&&!u||i&&o&&c||!n&&c||!r)return 1;if(!i&&!a&&!u&&t=s?c:c*("desc"==n[i]?-1:1)}return t.index-e.index};var Ce=function(t,e,n){e=e.length?(0,ve.Z)(e,(function(t){return(0,I.Z)(t)?function(e){return(0,xe.Z)(e,1===t.length?t[0]:t)}:t})):[X.Z];var i=-1;e=(0,ve.Z)(e,(0,Ae.Z)(tt.Z));var r=(0,ke.Z)(t,(function(t,n,r){return{criteria:(0,ve.Z)(e,(function(e){return e(t)})),index:++i,value:t}}));return _e(r,(function(t,e){return Te(t,e,n)}))},Se=(0,q.Z)((function(t,e){if(null==t)return[];var n=e.length;return n>1&&(0,H.Z)(t,e[0],e[1])?e=[]:n>2&&(0,H.Z)(e[0],e[1],e[2])&&(e=[e[0]]),Ce(t,(0,ye.Z)(e,1),[])}));function Ie(t,e){for(var n=0,i=1;i0;)e%2&&(n+=l[e+1]),l[e=e-1>>1]+=t.weight;h+=t.weight*n}))),h}function De(t,e){var n={};return i.Z(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};nt.Z(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),i.Z(e.edges(),(function(t){var e=n[t.v],i=n[t.w];nt.Z(e)||nt.Z(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){e.merged||(nt.Z(e.barycenter)||nt.Z(t.barycenter)||e.barycenter>=t.barycenter)&&function(t,e){var n=0,i=0;t.weight&&(n+=t.barycenter*t.weight,i+=t.weight);e.weight&&(n+=e.barycenter*e.weight,i+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/i,t.weight=i,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function r(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),i.Z(a.in.reverse(),n(a)),i.Z(a.out,r(a))}return c.Z(Ft.Z(e,(function(t){return!t.merged})),(function(t){return G.Z(t,["vs","i","barycenter","weight"])}))}(Ft.Z(n,(function(t){return!t.indegree})))}function Oe(t,e){var n,r=function(t,e){var n={lhs:[],rhs:[]};return i.Z(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n}(t,(function(t){return a.Z(t,"barycenter")})),o=r.lhs,c=Se(r.rhs,(function(t){return-t.i})),u=[],l=0,h=0,f=0;o.sort((n=!!e,function(t,e){return t.barycentere.barycenter?1:n?e.i-t.i:t.i-e.i})),f=Le(u,c,f),i.Z(o,(function(t){f+=t.vs.length,u.push(t.vs),l+=t.barycenter*t.weight,h+=t.weight,f=Le(u,c,f)}));var d={vs:s.Z(u)};return h&&(d.barycenter=l/h,d.weight=h),d}function Le(t,e,n){for(var i;e.length&&(i=Q(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}function Ne(t,e,n,r){var o=t.children(e),u=t.node(e),l=u?u.borderLeft:void 0,h=u?u.borderRight:void 0,f={};l&&(o=Ft.Z(o,(function(t){return t!==l&&t!==h})));var d=function(t,e){return c.Z(e,(function(e){var n=t.inEdges(e);if(n.length){var i=le.Z(n,(function(e,n){var i=t.edge(n),r=t.node(n.v);return{sum:e.sum+i.weight*r.order,weight:e.weight+i.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}(t,o);i.Z(d,(function(e){if(t.children(e.v).length){var i=Ne(t,e.v,n,r);f[e.v]=i,a.Z(i,"barycenter")&&(o=e,s=i,nt.Z(o.barycenter)?(o.barycenter=s.barycenter,o.weight=s.weight):(o.barycenter=(o.barycenter*o.weight+s.barycenter*s.weight)/(o.weight+s.weight),o.weight+=s.weight))}var o,s}));var g=De(d,n);!function(t,e){i.Z(t,(function(t){t.vs=s.Z(t.vs.map((function(t){return e[t]?e[t].vs:t})))}))}(g,f);var p=Oe(g,r);if(l&&(p.vs=s.Z([l,p.vs,h]),t.predecessors(l).length)){var b=t.node(t.predecessors(l)[0]),w=t.node(t.predecessors(h)[0]);a.Z(p,"barycenter")||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+b.order+w.order)/(p.weight+2),p.weight+=2}return p}function Pe(t){var e=ft(t),n=Be(t,u.Z(1,e+1),"inEdges"),r=Be(t,u.Z(e-1,-1,-1),"outEdges"),o=function(t){var e={},n=Ft.Z(t.nodes(),(function(e){return!t.children(e).length})),r=V(c.Z(n,(function(e){return t.node(e).rank}))),o=c.Z(u.Z(r+1),(function(){return[]})),s=Se(n,(function(e){return t.node(e).rank}));return i.Z(s,(function n(r){if(!a.Z(e,r)){e[r]=!0;var s=t.node(r);o[s.rank].push(r),i.Z(t.successors(r),n)}})),o}(t);Re(t,o);for(var s,l=Number.POSITIVE_INFINITY,h=0,f=0;f<4;++h,++f){Fe(h%2?n:r,h%4>=2);var d=Ie(t,o=lt(t));dc||u>e[r].lim));a=r,r=i;for(;(r=t.parent(r))!==a;)s.push(r);return{path:o.concat(s.reverse()),lca:a}}(t,e,r.v,r.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==r.w;){if(i=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRankn){var i=e;e=n,n=i}var r=t[e];r||(t[e]=r={}),r[n]=!0}function Ge(t,e,n){if(e>n){var i=e;e=n,n=i}return a.Z(t[e],n)}function Ye(t,e,n,r,o){var s={},c=function(t,e,n,r){var o=new l.k,s=t.graph(),c=function(t,e,n){return function(i,r,o){var s,c=i.node(r),u=i.node(o),l=0;if(l+=c.width/2,a.Z(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":s=-c.width/2;break;case"r":s=c.width/2}if(s&&(l+=n?s:-s),s=0,l+=(c.dummy?e:t)/2,l+=(u.dummy?e:t)/2,l+=u.width/2,a.Z(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":s=u.width/2;break;case"r":s=-u.width/2}return s&&(l+=n?s:-s),s=0,l}}(s.nodesep,s.edgesep,r);return i.Z(e,(function(e){var r;i.Z(e,(function(e){var i=n[e];if(o.setNode(i),r){var a=n[r],s=o.edge(a,i);o.setEdge(a,i,Math.max(c(t,e,r),s||0))}r=e}))})),o}(t,e,n,o),u=o?"borderLeft":"borderRight";function h(t,e){for(var n=c.nodes(),i=n.pop(),r={};i;)r[i]?t(i):(r[i]=!0,n.push(i),n=n.concat(e(i))),i=n.pop()}return h((function(t){s[t]=c.inEdges(t).reduce((function(t,e){return Math.max(t,s[e.v]+c.edge(e))}),0)}),c.predecessors.bind(c)),h((function(e){var n=c.outEdges(e).reduce((function(t,e){return Math.min(t,s[e.w]-c.edge(e))}),Number.POSITIVE_INFINITY),i=t.node(e);n!==Number.POSITIVE_INFINITY&&i.borderType!==u&&(s[e]=Math.max(s[e],n))}),c.successors.bind(c)),i.Z(r,(function(t){s[t]=s[n[t]]})),s}function Ze(t){var e,n=lt(t),r=U(He(t,n),function(t,e){var n={};function r(e,r,a,o,s){var c;i.Z(u.Z(r,a),(function(r){c=e[r],t.node(c).dummy&&i.Z(t.predecessors(c),(function(e){var i=t.node(e);i.dummy&&(i.orders)&&Ue(n,e,c)}))}))}return le.Z(e,(function(e,n){var a,o=-1,s=0;return i.Z(n,(function(i,c){if("border"===t.node(i).dummy){var u=t.predecessors(i);u.length&&(a=t.node(u[0]).order,r(n,s,c,o,a),s=c,o=a)}r(n,s,n.length,a,e.length)})),n})),n}(t,n)),a={};i.Z(["u","d"],(function(o){e="u"===o?n:ue.Z(n).reverse(),i.Z(["l","r"],(function(n){"r"===n&&(e=c.Z(e,(function(t){return ue.Z(t).reverse()})));var s=("u"===o?t.predecessors:t.successors).bind(t),u=function(t,e,n,r){var a={},o={},s={};return i.Z(e,(function(t){i.Z(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),i.Z(e,(function(t){var e=-1;i.Z(t,(function(t){var i=r(t);if(i.length){i=Se(i,(function(t){return s[t]}));for(var c=(i.length-1)/2,u=Math.floor(c),l=Math.ceil(c);u<=l;++u){var h=i[u];o[t]===t&&e-1};var y=function(t,e,n){for(var i=-1,r=null==t?0:t.length;++i=200){var u=e?null:E(t);if(u)return(0,_.Z)(u);o=!1,r=v.Z,c=new d.Z}else c=e?[]:s;t:for(;++i1?i.setNode(t,e):i.setNode(t)})),this}setNode(t,e){return i.Z(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=D,this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return i.Z(this._nodes,t)}removeNode(t){var e=this;if(i.Z(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],u.Z(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),u.Z(o.Z(this._in[t]),n),delete this._in[t],delete this._preds[t],u.Z(o.Z(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(l.Z(e))e=D;else{for(var n=e+="";!l.Z(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==D)return e}}children(t){if(l.Z(t)&&(t=D),this._isCompound){var e=this._children[t];if(e)return o.Z(e)}else{if(t===D)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return o.Z(e)}successors(t){var e=this._sucs[t];if(e)return o.Z(e)}neighbors(t){var e=this.predecessors(t);if(e)return S(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;u.Z(this._nodes,(function(n,i){t(i)&&e.setNode(i,n)})),u.Z(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};function r(t){var a=n.parent(t);return void 0===a||e.hasNode(a)?(i[t]=a,a):a in i?i[a]:r(a)}return this._isCompound&&u.Z(e.nodes(),(function(t){e.setParent(t,r(t))})),e}setDefaultEdgeLabel(t){return a.Z(t)||(t=r.Z(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return I.Z(this._edgeObjs)}setPath(t,e){var n=this,i=arguments;return M.Z(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this}setEdge(){var t,e,n,r,a=!1,o=arguments[0];"object"==typeof o&&null!==o&&"v"in o?(t=o.v,e=o.w,n=o.name,2===arguments.length&&(r=arguments[1],a=!0)):(t=o,e=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],a=!0)),t=""+t,e=""+e,l.Z(n)||(n=""+n);var s=P(this._isDirected,t,e,n);if(i.Z(this._edgeLabels,s))return a&&(this._edgeLabels[s]=r),this;if(!l.Z(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[s]=a?r:this._defaultEdgeLabelFn(t,e,n);var c=function(t,e,n,i){var r=""+e,a=""+n;if(!t&&r>a){var o=r;r=a,a=o}var s={v:r,w:a};i&&(s.name=i);return s}(this._isDirected,t,e,n);return t=c.v,e=c.w,Object.freeze(c),this._edgeObjs[s]=c,L(this._preds[e],t),L(this._sucs[t],e),this._in[e][s]=c,this._out[t][s]=c,this._edgeCount++,this}edge(t,e,n){var i=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n);return this._edgeLabels[i]}hasEdge(t,e,n){var r=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n);return i.Z(this._edgeLabels,r)}removeEdge(t,e,n){var i=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n),r=this._edgeObjs[i];return r&&(t=r.v,e=r.w,delete this._edgeLabels[i],delete this._edgeObjs[i],N(this._preds[e],t),N(this._sucs[t],e),delete this._in[e][i],delete this._out[t][i],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var i=I.Z(n);return e?s.Z(i,(function(t){return t.v===e})):i}}outEdges(t,e){var n=this._out[t];if(n){var i=I.Z(n);return e?s.Z(i,(function(t){return t.w===e})):i}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}function L(t,e){t[e]?t[e]++:t[e]=1}function N(t,e){--t[e]||delete t[e]}function P(t,e,n,i){var r=""+e,a=""+n;if(!t&&r>a){var o=r;r=a,a=o}return r+""+a+""+(l.Z(i)?"\0":i)}function B(t,e){return P(t,e.v,e.w,e.name)}O.prototype._nodeCount=0,O.prototype._edgeCount=0},8066:function(t,e,n){"use strict";n.d(e,{k:function(){return i.k}});var i=n(8612)},835:function(t,e,n){"use strict";n.d(e,{c:function(){return s}});var i=n(9789),r=n(6833);var a=function(t){return(0,r.Z)(t,4)},o=n(8076);n(8612);function s(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:c(t),edges:u(t)};return i.Z(t.graph())||(e.value=a(t.graph())),e}function c(t){return o.Z(t.nodes(),(function(e){var n=t.node(e),r=t.parent(e),a={v:e};return i.Z(n)||(a.value=n),i.Z(r)||(a.parent=r),a}))}function u(t){return o.Z(t.edges(),(function(e){var n=t.edge(e),r={v:e.v,w:e.w};return i.Z(e.name)||(r.name=e.name),i.Z(n)||(r.value=n),r}))}},5446:function(t,e,n){"use strict";n.r(e);function i(t,e){var n={};return e.forEach((function(e){Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e])})),n}var r={assign:function(t){for(var e,n=1;n=0,wasm:e.indexOf("wasm")>=0};r.call(this,n),this.features={js:n.js,wasm:n.wasm&&this.has_wasm()},this.use(a),this.use(o)}i(s,r),s.prototype.resizeAndUnsharp=function(t,e){var n=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(n,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),n},e.exports=s},{"./mm_resize":4,"./mm_unsharp_mask":9,inherits:19,multimath:20}],2:[function(t,e,n){function i(t){return t<0?0:t>255?255:t}function r(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}function a(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}e.exports={convolveHorizontally:r,convolveVertically:a}},{}],3:[function(t,e,n){e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs="},{}],4:[function(t,e,n){e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,n){var i=t("./resize_filter_gen"),r=t("./convolve").convolveHorizontally,a=t("./convolve").convolveVertically;function o(t,e,n){for(var i=3,r=e*n*4|0;i>1]+=a(1-m),v=0;v0&&0===d[x];)x--;if(k=u+v,_=x-v+1,I[M++]=k,I[M++]=_,D)for(b=v;b<=x;b++)I[M++]=d[b];else I.set(d.subarray(v,x+1),M),M+=_}else I[M++]=0,I[M++]=0}return I}},{"./resize_filter_info":7}],7:[function(t,e,n){e.exports=[{win:.5,filter:function(t){return t>=-.5&&t<.5?1:0}},{win:1,filter:function(t){if(t<=-1||t>=1)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},{win:2,filter:function(t){if(t<=-2||t>=2)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},{win:3,filter:function(t){if(t<=-3||t>=3)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}}]},{}],8:[function(t,e,n){var i=t("./resize_filter_gen");function r(t,e,n){for(var i=3,r=e*n*4|0;i>8&255}}e.exports=function(t){var e=t.src,n=t.width,a=t.height,o=t.toWidth,c=t.toHeight,u=t.scaleX||t.toWidth/t.width,l=t.scaleY||t.toHeight/t.height,h=t.offsetX||0,f=t.offsetY||0,d=t.dest||new Uint8Array(o*c*4),g=void 0===t.quality?3:t.quality,p=t.alpha||!1,b=i(g,n,o,u,h),w=i(g,a,c,l,f),m=0,y=this.__align(m+Math.max(e.byteLength,d.byteLength)),v=this.__align(y+a*o*4),x=this.__align(v+b.byteLength),k=x+w.byteLength,_=this.__instance("resize",k),A=new Uint8Array(this.__memory.buffer),E=new Uint32Array(this.__memory.buffer),T=new Uint32Array(e.buffer);return E.set(T),s(b,A,v),s(w,A,x),(_.exports.convolveHV||_.exports._convolveHV)(v,x,y,n,a,o,c),new Uint32Array(d.buffer).set(new Uint32Array(this.__memory.buffer,0,c*o)),p||r(d,o,c),d}},{"./resize_filter_gen":6}],9:[function(t,e,n){e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,n){var i=t("glur/mono16");function r(t,e,n){for(var i,r,a,o,s=e*n,c=new Uint16Array(s),u=0;u=r&&i>=a?i:r>=a&&r>=i?r:a,c[u]=o<<8;return c}e.exports=function(t,e,n,a,o,s){var c,u,l,h,f;if(!(0===a||o<.5)){o>2&&(o=2);var d=r(t,e,n),g=new Uint16Array(d);i(g,e,n,o);for(var p=a/100*4096+.5|0,b=s<<8,w=e*n,m=0;m=b&&(l=((u=(u=(u=c+(p*h+2048>>12))>65280?65280:u)<0?0:u)<<12)/(c=0!==c?c:1)|0,t[f=4*m]=t[f]*l+2048>>12,t[f+1]=t[f+1]*l+2048>>12,t[f+2]=t[f+2]*l+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,n){e.exports=function(t,e,n,i,r,a){if(!(0===i||r<.5)){r>2&&(r=2);var o=e*n,s=4*o,c=2*o,u=2*o,l=4*Math.max(e,n),h=32,f=0,d=s,g=d+c,p=g+u,b=p+u,w=b+l,m=this.__instance("unsharp_mask",s+c+2*u+l+h,{exp:Math.exp}),y=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(y);var v=m.exports.hsv_v16||m.exports._hsv_v16;v(f,d,e,n),(v=m.exports.blurMono16||m.exports._blurMono16)(d,g,p,b,w,e,n,r),(v=m.exports.unsharp||m.exports._unsharp)(f,f,d,g,e,n,i,a),y.set(new Uint32Array(this.__memory.buffer,0,o))}}},{}],12:[function(t,e,n){e.exports="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"},{}],13:[function(t,e,n){var i=100;function r(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}r.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},r.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),i))},r.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(n){return!(e-n.lastUsed>t.idle&&(n.destroy(),1))})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),i):this.timeoutId=0},e.exports=r},{}],14:[function(t,e,n){var i=2;e.exports=function(t,e,n,r,a,o){var s=n/t,c=r/e,u=(2*o+i+1)/a;if(u>.5)return[[n,r]];var l=Math.ceil(Math.log(Math.min(s,c))/Math.log(u));if(l<=1)return[[n,r]];for(var h=[],f=0;f=t.toWidth&&(s=t.toWidth-e),(n=o-t.destTileBorder)<0&&(n=0),n+(c=o+f+t.destTileBorder-n)>=t.toHeight&&(c=t.toHeight-n),d={toX:e,toY:n,toWidth:s,toHeight:c,toInnerX:i,toInnerY:o,toInnerWidth:h,toInnerHeight:f,offsetX:e/u-r(e/u),offsetY:n/l-r(n/l),scaleX:u,scaleY:l,x:r(e/u),y:r(n/l),width:a(s/u),height:a(c/l)},g.push(d);return g}},{}],16:[function(t,e,n){function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,n=[];function i(){e=0;p--)c=s*b+o*w+u*m+l*y,l=u,u=c,o=s,s=t[h],e[f]=n[d]+u,h--,d--,f-=a}}function h(t,e,n,i){if(i){var r=new Uint16Array(t.length),a=new Float32Array(Math.max(e,n)),o=u(i);l(t,r,a,o,e,n),l(r,t,a,o,n,e)}}e.exports=h},{}],19:[function(t,e,n){"function"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},{}],20:[function(t,e,n){var i=t("object-assign"),r=t("./lib/base64decode"),a=t("./lib/wa_detect"),o={js:!0,wasm:!0};function s(t){if(!(this instanceof s))return new s(t);var e=i({},o,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}s.prototype.has_wasm=a,s.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},s.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var n=t.__modules[e];return t.options.wasm&&t.has_wasm()&&n.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(n.wasm_src)).then((function(n){t.__wasm[e]=n})):null}))).then((function(){return t})),this.__init_promise},s.prototype.__base64decode=r,s.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e>2),a=0,o=0,s=0;s>16&255,r[o++]=a>>8&255,r[o++]=255&a),a=a<<6|i.indexOf(e.charAt(s));var c=n%4*6;return 0===c?(r[o++]=a>>16&255,r[o++]=a>>8&255,r[o++]=255&a):18===c?(r[o++]=a>>10&255,r[o++]=a>>2&255):12===c&&(r[o++]=a>>4&255),r}},{}],22:[function(t,e,n){var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],23:[function(t,e,n){var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function o(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function s(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}e.exports=s()?Object.assign:function(t,e){for(var n,s,c=o(t),u=1;ut.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0)}catch(t){}var y=1;"undefined"!=typeof navigator&&(y=Math.min(navigator.hardwareConcurrency||1,4));var v={tile:1024,concurrency:y,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var n=document.createElement("canvas");return n.width=t,n.height=e,n}},x={quality:3,alpha:!1,unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},k=!1,_=!1,A=!1,E=!1,T=!1;function C(){return{value:l(g),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function S(t){if(!(this instanceof S))return new S(t);this.options=u({},v,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=w[e]||d.limiter(this.options.concurrency),w[e]||(w[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}S.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),k=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?_=!0:this.debug("ImageBitmap does not support .close(), disabled"));var n=this.options.features.slice();if(n.indexOf("all")>=0&&(n=["cib","wasm","js","ww"]),this.__requested_features=n,this.__mathlib=new h(n),n.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));w[i]?this.__workersPool=w[i]:(this.__workersPool=new f(C,this.options.idle),w[i]=this.__workersPool)}catch(t){}var r,a,o=this.__mathlib.init().then((function(t){u(e.features,t.features)}));r=_?d.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&n.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):n.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),A=d.can_use_canvas(this.options.createCanvas),a=(a=_&&k&&-1!==n.indexOf("ww")?d.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){E=t}));var s=d.cib_can_use_region().then((function(t){T=t}));return this.__initPromise=Promise.all([o,r,a,s]).then((function(){return e})),this.__initPromise},S.prototype.__invokeResize=function(t,e){var n=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return n.features.ww?new Promise((function(i,r){var a=n.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return r(t)})),a.value.onmessage=function(t){a.release(),t.data.err?r(t.data.err):i(t.data)};var o=[];t.src&&o.push(t.src.buffer),t.srcBitmap&&o.push(t.srcBitmap),a.value.postMessage({opts:t,features:n.__requested_features,preload:{wasm_nodule:n.__mathlib.__}},o)})):{data:n.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},S.prototype.__extractTileData=function(t,e,n,i,r){if(this.features.ww&&E&&(d.isCanvas(e)||T))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return r.srcBitmap=t,r}));if(d.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d",{alpha:Boolean(n.alpha)})),this.debug("Get tile pixel data"),r.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,r;this.debug("Draw tile imageBitmap/image to temporary canvas");var a=this.options.createCanvas(t.width,t.height),o=a.getContext("2d",{alpha:Boolean(n.alpha)});return o.globalCompositeOperation="copy",o.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),r.src=o.getImageData(0,0,t.width,t.height).data,a.width=a.height=0,r},S.prototype.__landTileData=function(t,e,n){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return n.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(k)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=n.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var r=i.data.length-1;r>=0;r--)i.data[r]=e.data[r];return this.debug("Draw tile"),m?n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},S.prototype.__tileAndResize=function(t,e,n){var i=this,r={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null},a=function(e){return i.__limit((function(){if(n.canceled)return n.cancelToken;var a={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,quality:n.quality,alpha:n.alpha,unsharpAmount:n.unsharpAmount,unsharpRadius:n.unsharpRadius,unsharpThreshold:n.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(a).then((function(a){return i.__extractTileData(e,t,n,r,a)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,n)})).then((function(t){return n.canceled?n.cancelToken:(r.srcImageData=null,i.__landTileData(e,t,r))}))}))};return Promise.resolve().then((function(){if(r.toCtx=e.getContext("2d",{alpha:Boolean(n.alpha)}),d.isCanvas(t))return null;if(d.isImageBitmap(t))return r.srcImageBitmap=t,r.isImageBitmapReused=!0,null;if(d.isImage(t))return _?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){r.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(n.canceled)return n.cancelToken;i.debug("Calculate tiles");var t=b({width:n.width,height:n.height,srcTileSize:i.options.tile,toWidth:n.toWidth,toHeight:n.toHeight,destTileBorder:n.__destTileBorder}).map((function(t){return a(t)}));function o(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(t).then((function(){return i.debug("Finished!"),o(r),e}),(function(t){throw o(r),t}))}))},S.prototype.__processStages=function(t,e,n,r){var a=this;if(r.canceled)return r.cancelToken;var o,s=i(t.shift(),2),c=s[0],l=s[1],h=0===t.length;return r=u({},r,{toWidth:c,toHeight:l,quality:h?r.quality:Math.min(1,r.quality)}),h||(o=this.options.createCanvas(c,l)),this.__tileAndResize(e,h?n:o,r).then((function(){return h?n:(r.width=c,r.height=l,a.__processStages(t,o,n,r))})).then((function(t){return o&&(o.width=o.height=0),t}))},S.prototype.__resizeViaCreateImageBitmap=function(t,e,n){var i=this,r=e.getContext("2d",{alpha:Boolean(n.alpha)});return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:n.toWidth,resizeHeight:n.toHeight,resizeQuality:d.cib_quality_name(n.quality)}).then((function(t){if(n.canceled)return n.cancelToken;if(!n.unsharpAmount)return r.drawImage(t,0,0),t.close(),r=null,i.debug("Finished!"),e;i.debug("Unsharp result");var a=i.options.createCanvas(n.toWidth,n.toHeight),o=a.getContext("2d",{alpha:Boolean(n.alpha)});o.drawImage(t,0,0),t.close();var s=o.getImageData(0,0,n.toWidth,n.toHeight);return i.__mathlib.unsharp_mask(s.data,n.toWidth,n.toHeight,n.unsharpAmount,n.unsharpRadius,n.unsharpThreshold),r.putImageData(s,0,0),a.width=a.height=0,s=o=a=r=null,i.debug("Finished!"),e}))},S.prototype.resize=function(t,e,n){var i=this;this.debug("Start resize...");var r=u({},x);if(isNaN(n)?n&&(r=u(r,n)):r=u(r,{quality:n}),r.toWidth=e.width,r.toHeight=e.height,r.width=t.naturalWidth||t.width,r.height=t.naturalHeight||t.height,0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));r.unsharpRadius>2&&(r.unsharpRadius=2),r.canceled=!1,r.cancelToken&&(r.cancelToken=r.cancelToken.then((function(t){throw r.canceled=!0,t}),(function(t){throw r.canceled=!0,t})));var a=3;return r.__destTileBorder=Math.ceil(Math.max(a,2.5*r.unsharpRadius|0)),this.init().then((function(){if(r.canceled)return r.cancelToken;if(i.features.cib)return i.__resizeViaCreateImageBitmap(t,e,r);if(!A){var n=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw n.code="ERR_GET_IMAGE_DATA",n}var a=p(r.width,r.height,r.toWidth,r.toHeight,i.options.tile,r.__destTileBorder);return i.__processStages(a,t,e,r)}))},S.prototype.resizeBuffer=function(t){var e=this,n=u({},x,t);return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(n)}))},S.prototype.toBlob=function(t,e,n){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,n);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:n}));else{for(var r=atob(t.toDataURL(e,n).split(",")[1]),a=r.length,o=new Uint8Array(a),s=0;s0;n--)e="0"+e;return"0x"+e}function i(t){try{return decodeURIComponent(escape(t))}catch(e){return t}}function r(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}function a(t,n,i){this.input=t.subarray(n,i),this.start=n;var r=String.fromCharCode.apply(null,this.input.subarray(0,4));if("II*\0"!==r&&"MM\0*"!==r)throw e("invalid TIFF signature","EBADDATA");this.big_endian="M"===r[0]}a.prototype.each=function(t){this.aborted=!1;var e=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:e}];this.ifds_to_read.length>0&&!this.aborted;){var n=this.ifds_to_read.shift();n.offset&&this.scan_ifd(n.id,n.offset,t)}},a.prototype.filter=function(t){var n={ifd0:{id:0,entries:[]}};this.each((function(e){(!1!==t(e)||e.is_subifd_link)&&(e.is_subifd_link&&1!==e.count&&4!==e.format||(n["ifd"+e.ifd]||(n["ifd"+e.ifd]={id:e.ifd,entries:[]}),n["ifd"+e.ifd].entries.push(e)))})),delete n.ifd1;var i=8;Object.keys(n).forEach((function(t){i+=2,n[t].entries.forEach((function(t){i+=12+(t.data_length>4?2*Math.ceil(t.data_length/2):0)})),i+=4})),this.output=new Uint8Array(i),this.output[0]=this.output[1]=(this.big_endian?"M":"I").charCodeAt(0),this.write_uint16(2,42);var r=8,a=this;if(this.write_uint32(4,r),Object.keys(n).forEach((function(t){n[t].written_offset=r;var e=r,i=e+2+12*n[t].entries.length+4;r=i,a.write_uint16(e,n[t].entries.length),n[t].entries.sort((function(t,e){return t.tag-e.tag})).forEach((function(t,i){var o=e+2+12*i;a.write_uint16(o,t.tag),a.write_uint16(o+2,t.format),a.write_uint32(o+4,t.count),t.is_subifd_link?n["ifd"+t.tag]&&(n["ifd"+t.tag].link_offset=o+8):t.data_length<=4?a.output.set(a.input.subarray(t.data_offset-a.start,t.data_offset-a.start+4),o+8):(a.write_uint32(o+8,r),a.output.set(a.input.subarray(t.data_offset-a.start,t.data_offset-a.start+t.data_length),r),r+=2*Math.ceil(t.data_length/2))}));var o=n["ifd"+(n[t].id+1)];o&&(o.link_offset=i-4)})),Object.keys(n).forEach((function(t){n[t].written_offset&&n[t].link_offset&&a.write_uint32(n[t].link_offset,n[t].written_offset)})),this.output.length!==r)throw e("internal error: incorrect buffer size allocated");return this.output},a.prototype.read_uint16=function(t){var n=this.input;if(t+2>n.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?256*n[t]+n[t+1]:n[t]+256*n[t+1]},a.prototype.read_uint32=function(t){var n=this.input;if(t+4>n.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?16777216*n[t]+65536*n[t+1]+256*n[t+2]+n[t+3]:n[t]+256*n[t+1]+65536*n[t+2]+16777216*n[t+3]},a.prototype.write_uint16=function(t,e){var n=this.output;this.big_endian?(n[t]=e>>>8&255,n[t+1]=255&e):(n[t]=255&e,n[t+1]=e>>>8&255)},a.prototype.write_uint32=function(t,e){var n=this.output;this.big_endian?(n[t]=e>>>24&255,n[t+1]=e>>>16&255,n[t+2]=e>>>8&255,n[t+3]=255&e):(n[t]=255&e,n[t+1]=e>>>8&255,n[t+2]=e>>>16&255,n[t+3]=e>>>24&255)},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var n;switch(t){case 1:case 2:return n=this.input[e];case 6:return(n=this.input[e])|33554430*(128&n);case 3:return n=this.read_uint16(e);case 8:return(n=this.read_uint16(e))|131070*(32768&n);case 4:return n=this.read_uint32(e);case 9:return 0|(n=this.read_uint32(e));default:return null}},a.prototype.scan_ifd=function(t,n,r){var a=this.read_uint16(n);n+=2;for(var o=0;othis.input.length)throw e("unexpected EOF","EBADDATA");for(var g=[],p=f,b=0;b0&&(this.ifds_to_read.push({id:s,offset:g[0]}),d=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:c,count:u,entry_offset:n+this.start,data_length:h,data_offset:f+this.start,value:g,is_subifd_link:d}))return void(this.aborted=!0);n+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(n)})},t.exports.is_jpeg=function(t){return t.length>=4&&255===t[0]&&216===t[1]&&255===t[2]},t.exports.jpeg_segments_each=function(i,a){if(!r(i))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof a)throw e("Invalid argument (on_segment), Function expected","EINVAL");if(!t.exports.is_jpeg(i))throw e("Unknown file format","ENOTJPEG");for(var o=0,s=i.length,c=!1;;){var u,l;if(o+1>=s)throw e("Unexpected EOF","EBADDATA");var h=i[o],f=i[o+1];if(255===h&&255===f)u=255,l=1;else if(255===h&&0!==f){if(l=2,208<=(u=f)&&u<=217||1===u);else{if(o+3>=s)throw e("Unexpected EOF","EBADDATA");if((l+=256*i[o+2]+i[o+3])<2)throw e("Invalid segment length","EBADDATA");if(o+l-1>=s)throw e("Unexpected EOF","EBADDATA")}c&&(u>=208&&u<=215||(c=!1)),218===u&&(c=!0)}else{if(!c)throw e("Unexpected byte at segment start: "+n(h)+" (offset "+n(o)+")","EBADDATA");for(var d=o+1;;d++){if(d>=s)throw e("Unexpected EOF","EBADDATA");if(255===i[d]){if(d+1>=s)throw e("Unexpected EOF","EBADDATA");if(0!==i[d+1]){u=0,l=d-o;break}}}}if(!1===a({code:u,offset:o,length:l}))break;if(217===u)break;o+=l}},t.exports.jpeg_segments_filter=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_segment), Function expected","EINVAL");var a=[],o=0;t.exports.jpeg_segments_each(n,(function(t){var e=i(t);if(r(e))a.push({data:e}),o+=e.length;else if(Array.isArray(e))e.filter(r).forEach((function(t){a.push({data:t}),o+=t.length}));else if(!1!==e){var n={start:t.offset,end:t.offset+t.length};a.length>0&&a[a.length-1].end===n.start?a[a.length-1].end=n.end:a.push(n),o+=t.length}}));var s=new Uint8Array(o),c=0;return a.forEach((function(t){var e=t.data||n.subarray(t.start,t.end);s.set(e,c),c+=e.length})),s},t.exports.jpeg_exif_tags_each=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_exif_entry), Function expected","EINVAL");t.exports.jpeg_segments_each(n,(function(t){return 218!==t.code&&(225===t.code&&t.length>=10&&69===n[t.offset+4]&&120===n[t.offset+5]&&105===n[t.offset+6]&&102===n[t.offset+7]&&0===n[t.offset+8]&&0===n[t.offset+9]?(new a(n,t.offset+10,t.offset+t.length).each(i),!1):void 0)}))},t.exports.jpeg_exif_tags_filter=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_exif_entry), Function expected","EINVAL");var o=!1;return t.exports.jpeg_segments_filter(n,(function(t){if(!o&&(218===t.code&&(o=!0),225===t.code&&t.length>=10&&69===n[t.offset+4]&&120===n[t.offset+5]&&105===n[t.offset+6]&&102===n[t.offset+7]&&0===n[t.offset+8]&&0===n[t.offset+9])){var e=new a(n,t.offset+10,t.offset+t.length).filter(i);if(!e)return!1;var r=new Uint8Array(10);return r.set(n.slice(t.offset,t.offset+10)),r[2]=e.length+8>>>8&255,r[3]=e.length+8&255,o=!0,[r,e]}}))},t.exports.jpeg_add_comment=function(e,n){var i=!1,r=0;return t.exports.jpeg_segments_filter(e,(function(t){if(!(1===++r&&216===t.code||2===r&&224===t.code||i)){n=function(t){try{return unescape(encodeURIComponent(t))}catch(e){return t}}(n);var a=new Uint8Array(5+n.length),o=0;return a[o++]=255,a[o++]=254,a[o++]=n.length+3>>>8&255,a[o++]=n.length+3&255,n.split("").forEach((function(t){a[o++]=255&t.charCodeAt(0)})),a[o++]=0,i=!0,[a,e.subarray(t.offset,t.offset+t.length)]}}))}}));function u(t){return this._getUint8Array(t.blob).then((function(e){if(t.is_jpeg=c.is_jpeg(e),!t.is_jpeg)return Promise.resolve(t);t.orig_blob=t.blob;try{var n,i;if(c.jpeg_exif_tags_each(e,(function(e){if(0===e.ifd&&274===e.tag&&Array.isArray(e.value))return t.orientation=e.value[0]||1,n=e.is_big_endian,i=e.data_offset,!1})),i){var r=n?new Uint8Array([0,1]):new Uint8Array([1,0]);t.blob=new Blob([e.slice(0,i),r,e.slice(i+2)],{type:"image/jpeg"})}}catch(t){}return t}))}function l(t){if(!t.is_jpeg)return Promise.resolve(t);var e,n=t.orientation-1;if(!n)return Promise.resolve(t);var i=(e=4&n?this.pica.options.createCanvas(t.out_canvas.height,t.out_canvas.width):this.pica.options.createCanvas(t.out_canvas.width,t.out_canvas.height)).getContext("2d");return i.save(),1&n&&i.transform(-1,0,0,1,e.width,0),2&n&&i.transform(-1,0,0,-1,e.width,e.height),4&n&&i.transform(0,1,1,0,0,0),i.drawImage(t.out_canvas,0,0),i.restore(),t.out_canvas.width=t.out_canvas.height=0,t.out_canvas=e,Promise.resolve(t)}function h(t){return t.is_jpeg?Promise.all([this._getUint8Array(t.blob),this._getUint8Array(t.out_blob)]).then((function(e){var n=e[0],i=e[1];if(!c.is_jpeg(n))return Promise.resolve(t);var r=[];return c.jpeg_segments_each(n,(function(t){if(218===t.code)return!1;r.push(t)})),r=r.filter((function(t){return 226!==t.code&&(t.code>=224&&t.code<240||254===t.code)})).map((function(t){return n.slice(t.offset,t.offset+t.length)})),t.out_blob=new Blob([i.slice(0,2)].concat(r).concat([i.slice(20)]),{type:"image/jpeg"}),t})):Promise.resolve(t)}var f={jpeg_patch_exif:u,jpeg_rotate_canvas:l,jpeg_attach_orig_segments:h,assign:function(t){t.before("_blob_to_image",u),t.after("_transform",l),t.after("_create_blob",h)}};function d(t){if(!(this instanceof d))return new d(t);t=t||{},this.pica=t.pica||s({}),this.initialized=!1,this.utils=r}d.prototype.use=function(t){var e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},d.prototype.init=function(){this.use(f.assign)},d.prototype.toBlob=function(t,e){var n={blob:t,opts:r.assign({max:1/0},e)};return this.initialized||(this.init(),this.initialized=!0),Promise.resolve(n).then(this._blob_to_image).then(this._calculate_size).then(this._transform).then(this._cleanup).then(this._create_blob).then((function(t){return t.out_canvas.width=t.out_canvas.height=0,t.out_blob}))},d.prototype.toCanvas=function(t,e){var n={blob:t,opts:r.assign({max:1/0},e)};return this.initialized||(this.init(),this.initialized=!0),Promise.resolve(n).then(this._blob_to_image).then(this._calculate_size).then(this._transform).then(this._cleanup).then((function(t){return t.out_canvas}))},d.prototype.before=function(t,e){if(!this[t])throw new Error('Method "'+t+'" does not exist');if("function"!=typeof e)throw new Error('Invalid argument "fn", function expected');var n=this[t],i=this;return this[t]=function(t){return e.call(i,t).then((function(t){return n.call(i,t)}))},this},d.prototype.after=function(t,e){if(!this[t])throw new Error('Method "'+t+'" does not exist');if("function"!=typeof e)throw new Error('Invalid argument "fn", function expected');var n=this[t],i=this;return this[t]=function(t){return n.call(i,t).then((function(t){return e.call(i,t)}))},this},d.prototype._blob_to_image=function(t){var e=window.URL||window.webkitURL||window.mozURL||window.msURL;return t.image=document.createElement("img"),t.image_url=e.createObjectURL(t.blob),t.image.src=t.image_url,new Promise((function(e,n){t.image.onerror=function(){n(new Error("ImageBlobReduce: failed to create Image() from blob"))},t.image.onload=function(){e(t)}}))},d.prototype._calculate_size=function(t){var e=t.opts.max/Math.max(t.image.width,t.image.height);return e>1&&(e=1),t.transform_width=Math.max(Math.round(t.image.width*e),1),t.transform_height=Math.max(Math.round(t.image.height*e),1),t.scale_factor=e,Promise.resolve(t)},d.prototype._transform=function(t){t.out_canvas=this.pica.options.createCanvas(t.transform_width,t.transform_height),t.transform_width=null,t.transform_height=null;var e={alpha:"image/png"===t.blob.type};return this.utils.assign(e,this.utils.pick_pica_resize_options(t.opts)),this.pica.resize(t.image,t.out_canvas,e).then((function(){return t}))},d.prototype._cleanup=function(t){t.image.src="",t.image=null;var e=window.URL||window.webkitURL||window.mozURL||window.msURL;return e.revokeObjectURL&&e.revokeObjectURL(t.image_url),t.image_url=null,Promise.resolve(t)},d.prototype._create_blob=function(t){return this.pica.toBlob(t.out_canvas,t.blob.type).then((function(e){return t.out_blob=e,t}))},d.prototype._getUint8Array=function(t){return t.arrayBuffer?t.arrayBuffer().then((function(t){return new Uint8Array(t)})):new Promise((function(e,n){var i=new FileReader;i.readAsArrayBuffer(t),i.onload=function(){e(new Uint8Array(i.result))},i.onerror=function(){n(new Error("ImageBlobReduce: failed to load data from input blob")),i.abort()},i.onabort=function(){n(new Error("ImageBlobReduce: failed to load data from input blob (aborted)"))}}))},d.pica=s;var g=d;e.default=g},8318:function(t,e,n){"use strict";n.d(e,{Z:function(){return o}});var i=n(1022),r=n(898);var a=class{constructor(){this.type=r.w.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=r.w.ALL}is(t){return this.type===t}};var o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=r.w.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:n,l:r}=t;void 0===e&&(t.h=i.Z.channel.rgb2hsl(t,"h")),void 0===n&&(t.s=i.Z.channel.rgb2hsl(t,"s")),void 0===r&&(t.l=i.Z.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:n,b:r}=t;void 0===e&&(t.r=i.Z.channel.hsl2rgb(t,"r")),void 0===n&&(t.g=i.Z.channel.hsl2rgb(t,"g")),void 0===r&&(t.b=i.Z.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(r.w.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(r.w.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(r.w.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(r.w.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(r.w.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(r.w.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},9297:function(t,e,n){"use strict";n.d(e,{Z:function(){return p}});var i=n(8318),r=n(898);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const n=e[1],r=parseInt(n,16),o=n.length,s=o%4==0,c=o>4,u=c?1:17,l=c?8:4,h=s?0:-1,f=c?255:15;return i.Z.set({r:(r>>l*(h+3)&f)*u,g:(r>>l*(h+2)&f)*u,b:(r>>l*(h+1)&f)*u,a:s?(r&f)*u/255:1},t)},stringify:t=>{const{r:e,g:n,b:i,a:a}=t;return a<1?`#${r.Q[Math.round(e)]}${r.Q[Math.round(n)]}${r.Q[Math.round(i)]}${r.Q[Math.round(255*a)]}`:`#${r.Q[Math.round(e)]}${r.Q[Math.round(n)]}${r.Q[Math.round(i)]}`}};var o=a,s=n(1022);const c={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(c.hueRe);if(e){const[,t,n]=e;switch(n){case"grad":return s.Z.channel.clamp.h(.9*parseFloat(t));case"rad":return s.Z.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.Z.channel.clamp.h(360*parseFloat(t))}}return s.Z.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const n=t.match(c.re);if(!n)return;const[,r,a,o,u,l]=n;return i.Z.set({h:c._hue2deg(r),s:s.Z.channel.clamp.s(parseFloat(a)),l:s.Z.channel.clamp.l(parseFloat(o)),a:u?s.Z.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{h:e,s:n,l:i,a:r}=t;return r<1?`hsla(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}%, ${s.Z.lang.round(i)}%, ${r})`:`hsl(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}%, ${s.Z.lang.round(i)}%)`}};var u=c;const l={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=l.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const t in l.colors)if(l.colors[t]===e)return t}};var h=l;const f={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const n=t.match(f.re);if(!n)return;const[,r,a,o,c,u,l,h,d]=n;return i.Z.set({r:s.Z.channel.clamp.r(a?2.55*parseFloat(r):parseFloat(r)),g:s.Z.channel.clamp.g(c?2.55*parseFloat(o):parseFloat(o)),b:s.Z.channel.clamp.b(l?2.55*parseFloat(u):parseFloat(u)),a:h?s.Z.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:n,b:i,a:r}=t;return r<1?`rgba(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)})`:`rgb(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}, ${s.Z.lang.round(i)})`}};var d=f;const g={format:{keyword:l,hex:o,rgb:f,rgba:f,hsl:c,hsla:c},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||d.parse(t)||u.parse(t)||h.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(r.w.HSL)||void 0===t.data.r?u.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?d.stringify(t):o.stringify(t)};var p=g},898:function(t,e,n){"use strict";n.d(e,{Q:function(){return r},w:function(){return a}});var i=n(1022);const r={};for(let t=0;t<=255;t++)r[t]=i.Z.unit.dec2hex(t);const a={ALL:0,RGB:1,HSL:2}},3836:function(t,e,n){"use strict";var i=n(1022),r=n(9297);e.Z=(t,e,n)=>{const a=r.Z.parse(t),o=a[e],s=i.Z.channel.clamp[e](o+n);return o!==s&&(a[e]=s),r.Z.stringify(a)}},5571:function(t,e,n){"use strict";var i=n(1022),r=n(9297);e.Z=(t,e)=>{const n=r.Z.parse(t);for(const t in e)n[t]=i.Z.channel.clamp[t](e[t]);return r.Z.stringify(n)}},733:function(t,e,n){"use strict";var i=n(3836);e.Z=(t,e)=>(0,i.Z)(t,"l",-e)},7471:function(t,e,n){"use strict";n.d(e,{Z:function(){return s}});var i=n(1022),r=n(9297);var a=t=>{const{r:e,g:n,b:a}=r.Z.parse(t),o=.2126*i.Z.channel.toLinear(e)+.7152*i.Z.channel.toLinear(n)+.0722*i.Z.channel.toLinear(a);return i.Z.lang.round(o)};var o=t=>a(t)>=.5;var s=t=>!o(t)},1778:function(t,e,n){"use strict";var i=n(3836);e.Z=(t,e)=>(0,i.Z)(t,"l",e)},852:function(t,e,n){"use strict";var i=n(1022),r=n(8318),a=n(9297),o=n(5571);e.Z=(t,e,n=0,s=1)=>{if("number"!=typeof t)return(0,o.Z)(t,{a:e});const c=r.Z.set({r:i.Z.channel.clamp.r(t),g:i.Z.channel.clamp.g(e),b:i.Z.channel.clamp.b(n),a:i.Z.channel.clamp.a(s)});return a.Z.stringify(c)}},1022:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),hsl2rgb:({h:t,s:e,l:n},r)=>{if(!e)return 2.55*n;t/=360,e/=100;const a=(n/=100)<.5?n*(1+e):n+e-n*e,o=2*n-a;switch(r){case"r":return 255*i.hue2rgb(o,a,t+1/3);case"g":return 255*i.hue2rgb(o,a,t);case"b":return 255*i.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:n},i)=>{t/=255,e/=255,n/=255;const r=Math.max(t,e,n),a=Math.min(t,e,n),o=(r+a)/2;if("l"===i)return 100*o;if(r===a)return 0;const s=r-a;if("s"===i)return 100*(o>.5?s/(2-r-a):s/(r+a));switch(r){case t:return 60*((e-n)/s+(ee>n?Math.min(e,Math.max(n,t)):Math.min(n,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},3679:function(t,e,n){"use strict";n.d(e,{Z:function(){return f}});var i=function(){this.__data__=[],this.size=0},r=n(8670);var a=function(t,e){for(var n=t.length;n--;)if((0,r.Z)(t[n][0],e))return n;return-1},o=Array.prototype.splice;var s=function(t){var e=this.__data__,n=a(e,t);return!(n<0)&&(n==e.length-1?e.pop():o.call(e,n,1),--this.size,!0)};var c=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]};var u=function(t){return a(this.__data__,t)>-1};var l=function(t,e){var n=this.__data__,i=a(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0&&r(l)?n>1?t(l,n-1,r,a,o):(0,i.Z)(o,l):a||(o[o.length]=l)}return o}},1405:function(t,e,n){"use strict";n.d(e,{Z:function(){return i}});var i=function(t){return function(e,n,i){for(var r=-1,a=Object(e),o=i(e),s=o.length;s--;){var c=o[t?s:++r];if(!1===n(a[c],c,a))break}return e}}()},8878:function(t,e,n){"use strict";var i=n(1405),r=n(825);e.Z=function(t,e){return t&&(0,i.Z)(t,e,r.Z)}},7106:function(t,e,n){"use strict";var i=n(9864),r=n(199);e.Z=function(t,e){for(var n=0,a=(e=(0,i.Z)(e,t)).length;null!=t&&nl))return!1;var f=c.get(t),d=c.get(e);if(f&&d)return f==e&&d==t;var g=-1,p=!0,b=2&n?new r.Z:void 0;for(c.set(t,e),c.set(e,t);++g-1&&t%1==0&&t0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}},u=c(o)},199:function(t,e,n){"use strict";var i=n(54);e.Z=function(t){if("string"==typeof t||(0,i.Z)(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},9441:function(t,e){"use strict";var n=Function.prototype.toString;e.Z=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},2399:function(t,e){"use strict";e.Z=function(t){return function(){return t}}},9999:function(t,e,n){"use strict";var i=n(155),r=n(8670),a=n(9597),o=n(4027),s=Object.prototype,c=s.hasOwnProperty,u=(0,i.Z)((function(t,e){t=Object(t);var n=-1,i=e.length,u=i>2?e[2]:void 0;for(u&&(0,a.Z)(e[0],e[1],u)&&(i=1);++n-1&&t%1==0&&t<=9007199254740991}},7275:function(t,e){"use strict";e.Z=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},4897:function(t,e){"use strict";e.Z=function(t){return null!=t&&"object"==typeof t}},3862:function(t,e,n){"use strict";var i=n(963),r=n(4003),a=n(4897),o=Function.prototype,s=Object.prototype,c=o.toString,u=s.hasOwnProperty,l=c.call(Object);e.Z=function(t){if(!(0,a.Z)(t)||"[object Object]"!=(0,i.Z)(t))return!1;var e=(0,r.Z)(t);if(null===e)return!0;var n=u.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==l}},54:function(t,e,n){"use strict";var i=n(963),r=n(4897);e.Z=function(t){return"symbol"==typeof t||(0,r.Z)(t)&&"[object Symbol]"==(0,i.Z)(t)}},4161:function(t,e,n){"use strict";n.d(e,{Z:function(){return h}});var i=n(963),r=n(3492),a=n(4897),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;var s=function(t){return(0,a.Z)(t)&&(0,r.Z)(t.length)&&!!o[(0,i.Z)(t)]},c=n(7133),u=n(9801),l=u.Z&&u.Z.isTypedArray,h=l?(0,c.Z)(l):s},9789:function(t,e){"use strict";e.Z=function(t){return void 0===t}},825:function(t,e,n){"use strict";var i=n(1931),r=n(9295),a=n(6905);e.Z=function(t){return(0,a.Z)(t)?(0,i.Z)(t):(0,r.Z)(t)}},4027:function(t,e,n){"use strict";n.d(e,{Z:function(){return l}});var i=n(1931),r=n(7275),a=n(9494);var o=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},s=Object.prototype.hasOwnProperty;var c=function(t){if(!(0,r.Z)(t))return o(t);var e=(0,a.Z)(t),n=[];for(var i in t)("constructor"!=i||!e&&s.call(t,i))&&n.push(i);return n},u=n(6905);var l=function(t){return(0,u.Z)(t)?(0,i.Z)(t,!0):c(t)}},8076:function(t,e,n){"use strict";var i=n(2363),r=n(5350),a=n(8998),o=n(6575);e.Z=function(t,e){return((0,o.Z)(t)?i.Z:a.Z)(t,(0,r.Z)(e,3))}},9828:function(t,e,n){"use strict";var i=n(2717);function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var i=arguments,r=e?e.apply(this,i):i[0],a=n.cache;if(a.has(r))return a.get(r);var o=t.apply(this,i);return n.cache=a.set(r,o)||a,o};return n.cache=new(r.Cache||i.Z),n}r.Cache=i.Z,e.Z=r},9980:function(t,e,n){"use strict";n.d(e,{Z:function(){return b}});var i=n(7106),r=n(9616),a=n(9864),o=n(5313),s=n(7275),c=n(199);var u=function(t,e,n,i){if(!(0,s.Z)(t))return t;for(var u=-1,l=(e=(0,a.Z)(e,t)).length,h=l-1,f=t;null!=f&&++ul&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},bt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 78:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 21:case 75:break;case 19:c;break;case 20:return 15;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:case 58:return this.begin("rel_u"),76;case 59:case 60:return this.begin("rel_d"),77;case 61:case 62:return this.begin("rel_l"),78;case 63:case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:case 84:this.popState(),this.popState();break;case 74:case 76:return 90;case 77:this.begin("string");break;case 79:case 85:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};function wt(){this.yy={}}return pt.lexer=bt,wt.prototype=pt,pt.Parser=wt,new wt}());s.parser=s;const u=s;let l=[],h=[""],f="global",d="",g=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],p=[],b="",w=!1,m=4,y=2;var v;const x=function(t){return null==t?l:l.filter((e=>e.parentBoundary===t))},k=function(){return w},_={addPersonOrSystem:function(t,e,n,i,r,a,o){if(null===e||null===n)return;let s={};const c=l.find((t=>t.alias===e));if(c&&e===c.alias?s=c:(s.alias=e,l.push(s)),s.label=null==n?{text:""}:{text:n},null==i)s.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]={text:e}}else s.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];s[t]=e}else s.sprite=r;if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.tags=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];s[t]=e}else s.link=o;s.typeC4Shape={text:t},s.parentBoundary=f,s.wrap=k()},addPersonOrSystemBoundary:function(t,e,n,i,r){if(null===t||null===e)return;let a={};const o=g.find((e=>e.alias===t));if(o&&t===o.alias?a=o:(a.alias=t,g.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.tags=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.link=r;a.parentBoundary=f,a.wrap=k(),d=f,f=t,h.push(d)},addContainer:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=l.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,l.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]=e}else c.sprite=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.wrap=k(),c.typeC4Shape={text:t},c.parentBoundary=f},addContainerBoundary:function(t,e,n,i,r){if(null===t||null===e)return;let a={};const o=g.find((e=>e.alias===t));if(o&&t===o.alias?a=o:(a.alias=t,g.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.tags=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.link=r;a.parentBoundary=f,a.wrap=k(),d=f,f=t,h.push(d)},addComponent:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=l.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,l.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]=e}else c.sprite=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.wrap=k(),c.typeC4Shape={text:t},c.parentBoundary=f},addDeploymentNode:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=g.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,g.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.type={text:"node"};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.type={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.nodeType=t,c.parentBoundary=f,c.wrap=k(),d=f,f=e,h.push(d)},popBoundaryParseStack:function(){f=d,h.pop(),d=h.pop(),h.push(d)},addRel:function(t,e,n,i,r,a,o,s,c){if(null==t||null==e||null==n||null==i)return;let u={};const l=p.find((t=>t.from===e&&t.to===n));if(l?u=l:p.push(u),u.type=t,u.from=e,u.to=n,u.label={text:i},null==r)u.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];u[t]={text:e}}else u.techn={text:r};if(null==a)u.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];u[t]={text:e}}else u.descr={text:a};if("object"==typeof o){let[t,e]=Object.entries(o)[0];u[t]=e}else u.sprite=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];u[t]=e}else u.tags=s;if("object"==typeof c){let[t,e]=Object.entries(c)[0];u[t]=e}else u.link=c;u.wrap=k()},updateElStyle:function(t,e,n,i,r,a,o,s,c,u,h){let f=l.find((t=>t.alias===e));if(void 0!==f||(f=g.find((t=>t.alias===e)),void 0!==f)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];f[t]=e}else f.bgColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];f[t]=e}else f.fontColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];f[t]=e}else f.borderColor=r;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];f[t]=e}else f.shadowing=a;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];f[t]=e}else f.shape=o;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];f[t]=e}else f.sprite=s;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];f[t]=e}else f.techn=c;if(null!=u)if("object"==typeof u){let[t,e]=Object.entries(u)[0];f[t]=e}else f.legendText=u;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];f[t]=e}else f.legendSprite=h}},updateRelStyle:function(t,e,n,i,r,a,o){const s=p.find((t=>t.from===e&&t.to===n));if(void 0!==s){if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.textColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];s[t]=e}else s.lineColor=r;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=parseInt(e)}else s.offsetX=parseInt(a);if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];s[t]=parseInt(e)}else s.offsetY=parseInt(o)}},updateLayoutConfig:function(t,e,n){let i=m,r=y;if("object"==typeof e){const t=Object.values(e)[0];i=parseInt(t)}else i=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];r=parseInt(t)}else r=parseInt(n);i>=1&&(m=i),r>=1&&(y=r)},autoWrap:k,setWrap:function(t){w=t},getC4ShapeArray:x,getC4Shape:function(t){return l.find((e=>e.alias===t))},getC4ShapeKeys:function(t){return Object.keys(x(t))},getBoundarys:function(t){return null==t?g:g.filter((e=>e.parentBoundary===t))},getCurrentBoundaryParse:function(){return f},getParentBoundaryParse:function(){return d},getRels:function(){return p},getTitle:function(){return b},getC4Type:function(){return v},getC4ShapeInRow:function(){return m},getC4BoundaryInRow:function(){return y},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().c4,clear:function(){l=[],g=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],d="",f="global",h=[""],p=[],h=[""],b="",w=!1,m=4,y=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){let e=(0,i.d)(t,(0,i.c)());b=e},setC4Type:function(t){let e=(0,i.d)(t,(0,i.c)());v=e}},A=function(t,e){return(0,a.d)(t,e)},E=function(t,e,n,i,r,a){const s=t.append("image");s.attr("width",e),s.attr("height",n),s.attr("x",i),s.attr("y",r);let c=a.startsWith("data:image/png;base64")?a:(0,o.Nm)(a);s.attr("xlink:href",c)},T=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),C=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,a,o,s,c,u){const{fontSize:l,fontFamily:h,fontWeight:f}=u,d=t.split(i.e.lineBreakRegex);for(let t=0;t>"),e.typeC4Shape.text){case"person":case"external_person":E(u,48,48,e.x+e.width/2-24,e.y+e.image.Y,c)}let f=n[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=s,C(n)(e.label.text,u,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},f),f=n[e.typeC4Shape.text+"Font"](),f.fontColor=s,e.techn&&""!==(null==(i=e.techn)?void 0:i.text)?C(n)(e.techn.text,u,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},f):e.type&&""!==e.type.text&&C(n)(e.type.text,u,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},f),e.descr&&""!==e.descr.text&&(f=n.personFont(),f.fontColor=s,C(n)(e.descr.text,u,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},f)),e.height},M=(t,e,n)=>{const i=t.append("g");let r=0;for(let t of e){let e=t.textColor?t.textColor:"#444444",a=t.lineColor?t.lineColor:"#444444",o=t.offsetX?parseInt(t.offsetX):0,s=t.offsetY?parseInt(t.offsetY):0,c="";if(0===r){let e=i.append("line");e.attr("x1",t.startPoint.x),e.attr("y1",t.startPoint.y),e.attr("x2",t.endPoint.x),e.attr("y2",t.endPoint.y),e.attr("stroke-width","1"),e.attr("stroke",a),e.style("fill","none"),"rel_b"!==t.type&&e.attr("marker-end","url("+c+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+c+"#arrowend)"),r=-1}else{let e=i.append("path");e.attr("fill","none").attr("stroke-width","1").attr("stroke",a).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",t.startPoint.x).replaceAll("starty",t.startPoint.y).replaceAll("controlx",t.startPoint.x+(t.endPoint.x-t.startPoint.x)/2-(t.endPoint.x-t.startPoint.x)/4).replaceAll("controly",t.startPoint.y+(t.endPoint.y-t.startPoint.y)/2).replaceAll("stopx",t.endPoint.x).replaceAll("stopy",t.endPoint.y)),"rel_b"!==t.type&&e.attr("marker-end","url("+c+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+c+"#arrowend)")}let u=n.messageFont();C(n)(t.label.text,i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+o,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+s,t.label.width,t.label.height,{fill:e},u),t.techn&&""!==t.techn.text&&(u=n.messageFont(),C(n)("["+t.techn.text+"]",i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+o,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+n.messageFontSize+5+s,Math.max(t.label.width,t.techn.width),t.techn.height,{fill:e,"font-style":"italic"},u))}},D=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},O=function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},L=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},N=function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},P=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},B=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},F=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")};let R=0,j=0,$=4,z=2;s.yy=_;let q={};class H{constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,U(t.db.getConfig())}setData(t,e,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,i=this.nextData.starty+2*t.margin,r=i+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>$)&&(e=this.nextData.startx+t.margin+q.nextLinePaddingX,i=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=r=i+t.height,this.nextData.cnt=1),t.x=e,t.y=i,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",r,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",r,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},U(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const U=function(t){(0,i.f)(q,t),t.fontFamily&&(q.personFontFamily=q.systemFontFamily=q.messageFontFamily=t.fontFamily),t.fontSize&&(q.personFontSize=q.systemFontSize=q.messageFontSize=t.fontSize),t.fontWeight&&(q.personFontWeight=q.systemFontWeight=q.messageFontWeight=t.fontWeight)},G=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),Y=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight});function Z(t,e,n,r,a){if(!e[t].width)if(n)e[t].text=(0,i.w)(e[t].text,a,r),e[t].textLines=e[t].text.split(i.e.lineBreakRegex).length,e[t].width=a,e[t].height=(0,i.j)(e[t].text,r);else{let n=e[t].text.split(i.e.lineBreakRegex);e[t].textLines=n.length;let a=0;e[t].height=0,e[t].width=0;for(const o of n)e[t].width=Math.max((0,i.h)(o,r),e[t].width),a=(0,i.j)(o,r),e[t].height=e[t].height+a}}const W=function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=q.c4ShapeMargin-35;let r=e.wrap&&q.wrap,a=Y(q);a.fontSize=a.fontSize+2,a.fontWeight="bold",Z("label",e,r,a,(0,i.h)(e.label.text,a)),S(t,e,q)},K=function(t,e,n,r){let a=0;for(const o of r){a=0;const r=n[o];let s=G(q,r.typeC4Shape.text);switch(s.fontSize=s.fontSize-2,r.typeC4Shape.width=(0,i.h)("<<"+r.typeC4Shape.text+">>",s),r.typeC4Shape.height=s.fontSize+2,r.typeC4Shape.Y=q.c4ShapePadding,a=r.typeC4Shape.Y+r.typeC4Shape.height-4,r.image={width:0,height:0,Y:0},r.typeC4Shape.text){case"person":case"external_person":r.image.width=48,r.image.height=48,r.image.Y=a,a=r.image.Y+r.image.height}r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=a,a=r.image.Y+r.image.height);let c=r.wrap&&q.wrap,u=q.width-2*q.c4ShapePadding,l=G(q,r.typeC4Shape.text);if(l.fontSize=l.fontSize+2,l.fontWeight="bold",Z("label",r,c,l,u),r.label.Y=a+8,a=r.label.Y+r.label.height,r.type&&""!==r.type.text){r.type.text="["+r.type.text+"]",Z("type",r,c,G(q,r.typeC4Shape.text),u),r.type.Y=a+5,a=r.type.Y+r.type.height}else if(r.techn&&""!==r.techn.text){r.techn.text="["+r.techn.text+"]",Z("techn",r,c,G(q,r.techn.text),u),r.techn.Y=a+5,a=r.techn.Y+r.techn.height}let h=a,f=r.label.width;if(r.descr&&""!==r.descr.text){Z("descr",r,c,G(q,r.typeC4Shape.text),u),r.descr.Y=a+20,a=r.descr.Y+r.descr.height,f=Math.max(r.label.width,r.descr.width),h=a-5*r.descr.textLines}f+=q.c4ShapePadding,r.width=Math.max(r.width||q.width,f,q.width),r.height=Math.max(r.height||q.height,h,q.height),r.margin=r.margin||q.c4ShapeMargin,t.insert(r),I(e,r,q)}t.bumpLastMargin(q.c4ShapeMargin)};class X{constructor(t,e){this.x=t,this.y=e}}let V=function(t,e){let n=t.x,i=t.y,r=e.x,a=e.y,o=n+t.width/2,s=i+t.height/2,c=Math.abs(n-r),u=Math.abs(i-a),l=u/c,h=t.height/t.width,f=null;return i==a&&nr?f=new X(n,s):n==r&&ia&&(f=new X(o,i)),n>r&&i=l?new X(n,s+l*t.width/2):new X(o-c/u*t.height/2,i+t.height):n=l?new X(n+t.width,s+l*t.width/2):new X(o+c/u*t.height/2,i+t.height):na?f=h>=l?new X(n+t.width,s-l*t.width/2):new X(o+t.height/2*c/u,i):n>r&&i>a&&(f=h>=l?new X(n,s-t.width/2*l):new X(o-t.height/2*c/u,i)),f},Q=function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let i=V(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:i,endPoint:V(e,n)}};function J(t,e,n,i,r){let a=new H(r);a.data.widthLimit=n.data.widthLimit/Math.min(z,i.length);for(let[o,s]of i.entries()){let i=0;s.image={width:0,height:0,Y:0},s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let c=s.wrap&&q.wrap,u=Y(q);if(u.fontSize=u.fontSize+2,u.fontWeight="bold",Z("label",s,c,u,a.data.widthLimit),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&""!==s.type.text){s.type.text="["+s.type.text+"]",Z("type",s,c,Y(q),a.data.widthLimit),s.type.Y=i+5,i=s.type.Y+s.type.height}if(s.descr&&""!==s.descr.text){let t=Y(q);t.fontSize=t.fontSize-2,Z("descr",s,c,t,a.data.widthLimit),s.descr.Y=i+20,i=s.descr.Y+s.descr.height}if(0==o||o%z==0){let t=n.data.startx+q.diagramMarginX,e=n.data.stopy+q.diagramMarginY+i;a.setData(t,t,e,e)}else{let t=a.data.stopx!==a.data.startx?a.data.stopx+q.diagramMarginX:a.data.startx,e=a.data.starty;a.setData(t,t,e,e)}a.name=s.alias;let l=r.db.getC4ShapeArray(s.alias),h=r.db.getC4ShapeKeys(s.alias);h.length>0&&K(a,t,l,h),e=s.alias;let f=r.db.getBoundarys(e);f.length>0&&J(t,e,a,f,r),"global"!==s.alias&&W(t,s,a),n.data.stopy=Math.max(a.data.stopy+q.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(a.data.stopx+q.c4ShapeMargin,n.data.stopx),R=Math.max(R,n.data.stopx),j=Math.max(j,n.data.stopy)}}const tt={drawPersonOrSystemArray:K,drawBoundary:W,setConf:U,draw:function(t,e,n,a){q=(0,i.c)().c4;const o=(0,i.c)().securityLevel;let s;"sandbox"===o&&(s=(0,r.Ys)("#i"+e));const c="sandbox"===o?(0,r.Ys)(s.nodes()[0].contentDocument.body):(0,r.Ys)("body");let u=a.db;a.db.setWrap(q.wrap),$=u.getC4ShapeInRow(),z=u.getC4BoundaryInRow(),i.l.debug(`C:${JSON.stringify(q,null,2)}`);const l="sandbox"===o?c.select(`[id="${e}"]`):(0,r.Ys)(`[id="${e}"]`);B(l),P(l),F(l);let h=new H(a);h.setData(q.diagramMarginX,q.diagramMarginX,q.diagramMarginY,q.diagramMarginY),h.data.widthLimit=screen.availWidth,R=q.diagramMarginX,j=q.diagramMarginY;const f=a.db.getTitle();J(l,"",h,a.db.getBoundarys(""),a),D(l),O(l),N(l),L(l),function(t,e,n,r){let a=0;for(let t of e){a+=1;let e=t.wrap&&q.wrap,s={fontFamily:(o=q).messageFontFamily,fontSize:o.messageFontSize,fontWeight:o.messageFontWeight};"C4Dynamic"===r.db.getC4Type()&&(t.label.text=a+": "+t.label.text);let c=(0,i.h)(t.label.text,s);Z("label",t,e,s,c),t.techn&&""!==t.techn.text&&(c=(0,i.h)(t.techn.text,s),Z("techn",t,e,s,c)),t.descr&&""!==t.descr.text&&(c=(0,i.h)(t.descr.text,s),Z("descr",t,e,s,c));let u=n(t.from),l=n(t.to),h=Q(u,l);t.startPoint=h.startPoint,t.endPoint=h.endPoint}var o;M(t,e,q)}(l,a.db.getRels(),a.db.getC4Shape,a),h.data.stopx=R,h.data.stopy=j;const d=h.data;let g=d.stopy-d.starty+2*q.diagramMarginY;const p=d.stopx-d.startx+2*q.diagramMarginX;f&&l.append("text").text(f).attr("x",(d.stopx-d.startx)/2-4*q.diagramMarginX).attr("y",d.starty+q.diagramMarginY),(0,i.i)(l,g,p,q.useMaxWidth);const b=f?60:0;l.attr("viewBox",d.startx-q.diagramMarginX+" -"+(q.diagramMarginY+b)+" "+p+" "+(g+b)),i.l.debug("models:",d)}},et={parser:u,db:_,renderer:tt,styles:t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,init:t=>{tt.setConf(t.c4)}}},6956:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return f}});var i=n(5349),r=n(1504),a=n(1768),o=n(8066),s=n(8540),c=n(3148);n(7530),n(2510),n(6951);let u={};const l=function(t){const e=Object.entries(u).find((e=>e[1].label===t));if(e)return e[0]},h={draw:function(t,e,n,i){const h=(0,s.c)().class;u={},s.l.info("Rendering diagram "+t);const f=(0,s.c)().securityLevel;let d;"sandbox"===f&&(d=(0,r.Ys)("#i"+e));const g="sandbox"===f?(0,r.Ys)(d.nodes()[0].contentDocument.body):(0,r.Ys)("body"),p=g.select(`[id='${e}']`);var b;(b=p).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),b.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),b.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");const w=new o.k({multigraph:!0});w.setGraph({isMultiGraph:!0}),w.setDefaultEdgeLabel((function(){return{}}));const m=i.db.getClasses(),y=Object.keys(m);for(const t of y){const e=m[t],n=c.s.drawClass(p,e,h,i);u[n.id]=n,w.setNode(n.id,n),s.l.info("Org height: "+n.height)}i.db.getRelations().forEach((function(t){s.l.info("tjoho"+l(t.id1)+l(t.id2)+JSON.stringify(t)),w.setEdge(l(t.id1),l(t.id2),{relation:t},t.title||"DEFAULT")}));i.db.getNotes().forEach((function(t){s.l.debug(`Adding note: ${JSON.stringify(t)}`);const e=c.s.drawNote(p,t,h,i);u[e.id]=e,w.setNode(e.id,e),t.class&&t.class in m&&w.setEdge(t.id,l(t.class),{relation:{id1:t.id,id2:t.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")})),(0,a.bK)(w),w.nodes().forEach((function(t){void 0!==t&&void 0!==w.node(t)&&(s.l.debug("Node "+t+": "+JSON.stringify(w.node(t))),g.select("#"+(i.db.lookUpDomId(t)||t)).attr("transform","translate("+(w.node(t).x-w.node(t).width/2)+","+(w.node(t).y-w.node(t).height/2)+" )"))})),w.edges().forEach((function(t){void 0!==t&&void 0!==w.edge(t)&&(s.l.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(w.edge(t))),c.s.drawEdge(p,w.edge(t),w.edge(t).relation,h,i))}));const v=p.node().getBBox(),x=v.width+40,k=v.height+40;(0,s.i)(p,k,x,h.useMaxWidth);const _=`${v.x-20} ${v.y-20} ${x} ${k}`;s.l.debug(`viewBox ${_}`),p.attr("viewBox",_)}},f={parser:i.p,db:i.d,renderer:h,styles:i.s,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},9582:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return d}});var i=n(5349),r=n(1504),a=n(8066),o=n(8540),s=n(113);n(7530),n(2510),n(6951),n(1768),n(835);const c=t=>o.e.sanitizeText(t,(0,o.c)());let u={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const l=function(t,e,n,i,r){const a=Object.keys(t);o.l.info("keys:",a),o.l.info(t),a.forEach((function(n){var a,s;const u=t[n];let l="";u.cssClasses.length>0&&(l=l+" "+u.cssClasses.join(" "));const h="",f="",d=u.label??u.id,g={labelStyle:h,shape:"class_box",labelText:c(d),classData:u,rx:0,ry:0,class:l,style:f,id:u.id,domId:u.domId,tooltip:i.db.getTooltip(u.id,r)||"",haveCallback:u.haveCallback,link:u.link,width:"group"===u.type?500:void 0,type:u.type,padding:(null==(a=(0,o.c)().flowchart)?void 0:a.padding)??(null==(s=(0,o.c)().class)?void 0:s.padding)};e.setNode(u.id,g),r&&e.setParent(u.id,r),o.l.info("setNode",g)}))};function h(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}const f={setConf:function(t){u={...u,...t}},draw:async function(t,e,n,i){o.l.info("Drawing class - ",e);const f=(0,o.c)().flowchart??(0,o.c)().class,d=(0,o.c)().securityLevel;o.l.info("config:",f);const g=(null==f?void 0:f.nodeSpacing)??50,p=(null==f?void 0:f.rankSpacing)??50,b=new a.k({multigraph:!0,compound:!0}).setGraph({rankdir:i.db.getDirection(),nodesep:g,ranksep:p,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),w=i.db.getNamespaces(),m=i.db.getClasses(),y=i.db.getRelations(),v=i.db.getNotes();let x;o.l.info(y),function(t,e,n,i){const r=Object.keys(t);o.l.info("keys:",r),o.l.info(t),r.forEach((function(r){var a,s;const u=t[r],h={shape:"rect",id:u.id,domId:u.domId,labelText:c(u.id),labelStyle:"",style:"fill: none; stroke: black",padding:(null==(a=(0,o.c)().flowchart)?void 0:a.padding)??(null==(s=(0,o.c)().class)?void 0:s.padding)};e.setNode(u.id,h),l(u.classes,e,n,i,u.id),o.l.info("setNode",h)}))}(w,b,e,i),l(m,b,e,i),function(t,e){const n=(0,o.c)().flowchart;let i=0;t.forEach((function(t){var a;i++;const s={classes:"relation",pattern:1==t.relation.lineType?"dashed":"solid",id:"id"+i,arrowhead:"arrow_open"===t.type?"none":"normal",startLabelRight:"none"===t.relationTitle1?"":t.relationTitle1,endLabelLeft:"none"===t.relationTitle2?"":t.relationTitle2,arrowTypeStart:h(t.relation.type1),arrowTypeEnd:h(t.relation.type2),style:"fill:none",labelStyle:"",curve:(0,o.o)(null==n?void 0:n.curve,r.c_6)};if(o.l.info(s,t),void 0!==t.style){const e=(0,o.k)(t.style);s.style=e.style,s.labelStyle=e.labelStyle}t.text=t.title,void 0===t.text?void 0!==t.style&&(s.arrowheadStyle="fill: #333"):(s.arrowheadStyle="fill: #333",s.labelpos="c",(null==(a=(0,o.c)().flowchart)?void 0:a.htmlLabels)??(0,o.c)().htmlLabels?(s.labelType="html",s.label=''+t.text+""):(s.labelType="text",s.label=t.text.replace(o.e.lineBreakRegex,"\n"),void 0===t.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:"))),e.setEdge(t.id1,t.id2,s,i)}))}(y,b),function(t,e,n,i){o.l.info(t),t.forEach((function(t,a){var s,l;const h=t,f="",d="",g=h.text,p={labelStyle:f,shape:"note",labelText:c(g),noteData:h,rx:0,ry:0,class:"",style:d,id:h.id,domId:h.id,tooltip:"",type:"note",padding:(null==(s=(0,o.c)().flowchart)?void 0:s.padding)??(null==(l=(0,o.c)().class)?void 0:l.padding)};if(e.setNode(h.id,p),o.l.info("setNode",p),!h.class||!(h.class in i))return;const b=n+a,w={id:`edgeNote${b}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:(0,o.o)(u.curve,r.c_6)};e.setEdge(h.id,h.class,w,b)}))}(v,b,y.length+1,m),"sandbox"===d&&(x=(0,r.Ys)("#i"+e));const k="sandbox"===d?(0,r.Ys)(x.nodes()[0].contentDocument.body):(0,r.Ys)("body"),_=k.select(`[id="${e}"]`),A=k.select("#"+e+" g");if(await(0,s.r)(A,b,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),o.u.insertTitle(_,"classTitleText",(null==f?void 0:f.titleTopMargin)??5,i.db.getDiagramTitle()),(0,o.p)(b,_,null==f?void 0:f.diagramPadding,null==f?void 0:f.useMaxWidth),!(null==f?void 0:f.htmlLabels)){const t="sandbox"===d?x.nodes()[0].contentDocument:document,n=t.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of n){const n=e.getBBox(),i=t.createElementNS("http://www.w3.org/2000/svg","rect");i.setAttribute("rx",0),i.setAttribute("ry",0),i.setAttribute("width",n.width),i.setAttribute("height",n.height),e.insertBefore(i,e.firstChild)}}}},d={parser:i.p,db:i.d,renderer:f,styles:i.s,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},1524:function(t,e,n){"use strict";n.d(e,{c:function(){return ne}});var i={};n.r(i),n.d(i,{attentionMarkers:function(){return Nt},contentInitial:function(){return St},disable:function(){return Pt},document:function(){return Ct},flow:function(){return Mt},flowInitial:function(){return It},insideSpan:function(){return Lt},string:function(){return Dt},text:function(){return Ot}});var r=n(8540);const a={};function o(t,e,n){if(function(t){return Boolean(t&&"object"==typeof t)}(t)){if("value"in t)return"html"!==t.type||n?t.value:"";if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return s(t.children,e,n)}return Array.isArray(t)?s(t,e,n):""}function s(t,e,n){const i=[];let r=-1;for(;++rr?0:r+e:e>r?r:e,n=n>0?n:0,i.length<1e4)a=Array.from(i),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);o0?(c(t,t.length,0,e),t):e}const l={}.hasOwnProperty;function h(t,e){let n;for(n in e){const i=(l.call(t,n)?t[n]:void 0)||(t[n]={}),r=e[n];let a;if(r)for(a in r){l.call(i,a)||(i[a]=[]);const t=r[a];f(i[a],Array.isArray(t)?t:t?[t]:[])}}}function f(t,e){let n=-1;const i=[];for(;++na))return;const n=e.events.length;let r,s,u=n;for(;u--;)if("exit"===e.events[u][0]&&"chunkFlow"===e.events[u][1].type){if(r){s=e.events[u][1].end;break}r=!0}for(m(o),t=n;ti;){const i=n[r];e.containerState=i[1],i[0].exit.call(e,t)}n.length=i}function y(){i.write([null]),r=void 0,i=void 0,e.containerState._closeFlow=void 0}}},I={tokenize:function(t,e,n){return T(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}};const M={tokenize:function(t,e,n){return function(e){return k(e)?T(t,i,"linePrefix")(e):i(e)};function i(t){return null===t||v(t)?e(t):n(t)}},partial:!0};function D(t){const e={};let n,i,r,a,o,s,u,l=-1;for(;++l=4?e(r):t.interrupt(i.parser.constructs.flow,n,e)(r)}},partial:!0};const P={tokenize:function(t){const e=this,n=t.attempt(M,(function(i){if(null===i)return void t.consume(i);return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}),t.attempt(this.parser.constructs.flowInitial,i,T(t,t.attempt(this.parser.constructs.flow,i,t.attempt(L,i)),"linePrefix")));return n;function i(i){if(null!==i)return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n;t.consume(i)}}};const B={resolveAll:$()},F=j("string"),R=j("text");function j(t){return{tokenize:function(e){const n=this,i=this.parser.constructs[t],r=e.attempt(i,a,o);return a;function a(t){return c(t)?r(t):o(t)}function o(t){if(null!==t)return e.enter("data"),e.consume(t),s;e.consume(t)}function s(t){return c(t)?(e.exit("data"),r(t)):(e.consume(t),s)}function c(t){if(null===t)return!0;const e=i[t];let r=-1;if(e)for(;++r-1){const t=o[0];"string"==typeof t?o[0]=t.slice(i):o.shift()}a>0&&o.push(t[r].slice(0,a))}return o}(o,t)}function b(){const{line:t,column:e,offset:n,_index:r,_bufferIndex:a}=i;return{line:t,column:e,offset:n,_index:r,_bufferIndex:a}}function w(){let t;for(;i._index=3&&(null===a||v(a))?(t.exit("thematicBreak"),e(a)):n(a)}function o(e){return e===i?(t.consume(e),r++,o):(t.exit("thematicBreakSequence"),k(e)?T(t,a,"whitespace")(e):a(e))}}};const G={name:"list",tokenize:function(t,e,n){const i=this,r=i.events[i.events.length-1];let a=r&&"linePrefix"===r[1].type?r[2].sliceSerialize(r[1],!0).length:0,o=0;return function(e){const r=i.containerState.type||(42===e||43===e||45===e?"listUnordered":"listOrdered");if("listUnordered"===r?!i.containerState.marker||e===i.containerState.marker:w(e)){if(i.containerState.type||(i.containerState.type=r,t.enter(r,{_container:!0})),"listUnordered"===r)return t.enter("listItemPrefix"),42===e||45===e?t.check(U,n,c)(e):c(e);if(!i.interrupt||49===e)return t.enter("listItemPrefix"),t.enter("listItemValue"),s(e)}return n(e)};function s(e){return w(e)&&++o<10?(t.consume(e),s):(!i.interrupt||o<2)&&(i.containerState.marker?e===i.containerState.marker:41===e||46===e)?(t.exit("listItemValue"),c(e)):n(e)}function c(e){return t.enter("listItemMarker"),t.consume(e),t.exit("listItemMarker"),i.containerState.marker=i.containerState.marker||e,t.check(M,i.interrupt?n:u,t.attempt(Y,h,l))}function u(t){return i.containerState.initialBlankLine=!0,a++,h(t)}function l(e){return k(e)?(t.enter("listItemPrefixWhitespace"),t.consume(e),t.exit("listItemPrefixWhitespace"),h):n(e)}function h(n){return i.containerState.size=a+i.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(n)}},continuation:{tokenize:function(t,e,n){const i=this;return i.containerState._closeFlow=void 0,t.check(M,(function(n){return i.containerState.furtherBlankLines=i.containerState.furtherBlankLines||i.containerState.initialBlankLine,T(t,e,"listItemIndent",i.containerState.size+1)(n)}),(function(n){if(i.containerState.furtherBlankLines||!k(n))return i.containerState.furtherBlankLines=void 0,i.containerState.initialBlankLine=void 0,r(n);return i.containerState.furtherBlankLines=void 0,i.containerState.initialBlankLine=void 0,t.attempt(Z,e,r)(n)}));function r(r){return i.containerState._closeFlow=!0,i.interrupt=void 0,T(t,t.attempt(G,e,n),"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r)}}},exit:function(t){t.exit(this.containerState.type)}},Y={tokenize:function(t,e,n){const i=this;return T(t,(function(t){const r=i.events[i.events.length-1];return!k(t)&&r&&"listItemPrefixWhitespace"===r[1].type?e(t):n(t)}),"listItemPrefixWhitespace",i.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},Z={tokenize:function(t,e,n){const i=this;return T(t,(function(t){const r=i.events[i.events.length-1];return r&&"listItemIndent"===r[1].type&&r[2].sliceSerialize(r[1],!0).length===i.containerState.size?e(t):n(t)}),"listItemIndent",i.containerState.size+1)},partial:!0};const W={name:"blockQuote",tokenize:function(t,e,n){const i=this;return function(e){if(62===e){const n=i.containerState;return n.open||(t.enter("blockQuote",{_container:!0}),n.open=!0),t.enter("blockQuotePrefix"),t.enter("blockQuoteMarker"),t.consume(e),t.exit("blockQuoteMarker"),r}return n(e)};function r(n){return k(n)?(t.enter("blockQuotePrefixWhitespace"),t.consume(n),t.exit("blockQuotePrefixWhitespace"),t.exit("blockQuotePrefix"),e):(t.exit("blockQuotePrefix"),e(n))}},continuation:{tokenize:function(t,e,n){const i=this;return function(e){if(k(e))return T(t,r,"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(e);return r(e)};function r(i){return t.attempt(W,e,n)(i)}}},exit:function(t){t.exit("blockQuote")}};function K(t,e,n,i,r,a,o,s,c){const u=c||Number.POSITIVE_INFINITY;let l=0;return function(e){if(60===e)return t.enter(i),t.enter(r),t.enter(a),t.consume(e),t.exit(a),h;if(null===e||32===e||41===e||b(e))return n(e);return t.enter(i),t.enter(o),t.enter(s),t.enter("chunkString",{contentType:"string"}),g(e)};function h(n){return 62===n?(t.enter(a),t.consume(n),t.exit(a),t.exit(r),t.exit(i),e):(t.enter(s),t.enter("chunkString",{contentType:"string"}),f(n))}function f(e){return 62===e?(t.exit("chunkString"),t.exit(s),h(e)):null===e||60===e||v(e)?n(e):(t.consume(e),92===e?d:f)}function d(e){return 60===e||62===e||92===e?(t.consume(e),f):f(e)}function g(r){return l||null!==r&&41!==r&&!x(r)?l999||null===h||91===h||93===h&&!s||94===h&&!c&&"_hiddenFootnoteSupport"in o.parser.constructs?n(h):93===h?(t.exit(a),t.enter(r),t.consume(h),t.exit(r),t.exit(i),e):v(h)?(t.enter("lineEnding"),t.consume(h),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),l(h))}function l(e){return null===e||91===e||93===e||v(e)||c++>999?(t.exit("chunkString"),u(e)):(t.consume(e),s||(s=!k(e)),92===e?h:l)}function h(e){return 91===e||92===e||93===e?(t.consume(e),c++,l):l(e)}}function V(t,e,n,i,r,a){let o;return function(e){if(34===e||39===e||40===e)return t.enter(i),t.enter(r),t.consume(e),t.exit(r),o=40===e?41:e,s;return n(e)};function s(n){return n===o?(t.enter(r),t.consume(n),t.exit(r),t.exit(i),e):(t.enter(a),c(n))}function c(e){return e===o?(t.exit(a),s(o)):null===e?n(e):v(e)?(t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),T(t,c,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(e))}function u(e){return e===o||null===e||v(e)?(t.exit("chunkString"),c(e)):(t.consume(e),92===e?l:u)}function l(e){return e===o||92===e?(t.consume(e),u):u(e)}}function Q(t,e){let n;return function i(r){if(v(r))return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),n=!0,i;if(k(r))return T(t,i,n?"linePrefix":"lineSuffix")(r);return e(r)}}function J(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const tt={name:"definition",tokenize:function(t,e,n){const i=this;let r;return function(e){return t.enter("definition"),function(e){return X.call(i,t,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(e)}(e)};function a(e){return r=J(i.sliceSerialize(i.events[i.events.length-1][1]).slice(1,-1)),58===e?(t.enter("definitionMarker"),t.consume(e),t.exit("definitionMarker"),o):n(e)}function o(e){return x(e)?Q(t,s)(e):s(e)}function s(e){return K(t,c,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(e)}function c(e){return t.attempt(et,u,u)(e)}function u(e){return k(e)?T(t,l,"whitespace")(e):l(e)}function l(a){return null===a||v(a)?(t.exit("definition"),i.parser.defined.push(r),e(a)):n(a)}}},et={tokenize:function(t,e,n){return function(e){return x(e)?Q(t,i)(e):n(e)};function i(e){return V(t,r,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(e)}function r(e){return k(e)?T(t,a,"whitespace")(e):a(e)}function a(t){return null===t||v(t)?e(t):n(t)}},partial:!0};const nt={name:"codeIndented",tokenize:function(t,e,n){const i=this;return function(e){return t.enter("codeIndented"),T(t,r,"linePrefix",5)(e)};function r(t){const e=i.events[i.events.length-1];return e&&"linePrefix"===e[1].type&&e[2].sliceSerialize(e[1],!0).length>=4?a(t):n(t)}function a(e){return null===e?s(e):v(e)?t.attempt(it,a,s)(e):(t.enter("codeFlowValue"),o(e))}function o(e){return null===e||v(e)?(t.exit("codeFlowValue"),a(e)):(t.consume(e),o)}function s(n){return t.exit("codeIndented"),e(n)}}},it={tokenize:function(t,e,n){const i=this;return r;function r(e){return i.parser.lazy[i.now().line]?n(e):v(e)?(t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r):T(t,a,"linePrefix",5)(e)}function a(t){const a=i.events[i.events.length-1];return a&&"linePrefix"===a[1].type&&a[2].sliceSerialize(a[1],!0).length>=4?e(t):v(t)?r(t):n(t)}},partial:!0};const rt={name:"headingAtx",tokenize:function(t,e,n){let i=0;return function(e){return t.enter("atxHeading"),function(e){return t.enter("atxHeadingSequence"),r(e)}(e)};function r(e){return 35===e&&i++<6?(t.consume(e),r):null===e||x(e)?(t.exit("atxHeadingSequence"),a(e)):n(e)}function a(n){return 35===n?(t.enter("atxHeadingSequence"),o(n)):null===n||v(n)?(t.exit("atxHeading"),e(n)):k(n)?T(t,a,"whitespace")(n):(t.enter("atxHeadingText"),s(n))}function o(e){return 35===e?(t.consume(e),o):(t.exit("atxHeadingSequence"),a(e))}function s(e){return null===e||35===e||x(e)?(t.exit("atxHeadingText"),a(e)):(t.consume(e),s)}},resolve:function(t,e){let n,i,r=t.length-2,a=3;"whitespace"===t[a][1].type&&(a+=2);r-2>a&&"whitespace"===t[r][1].type&&(r-=2);"atxHeadingSequence"===t[r][1].type&&(a===r-1||r-4>a&&"whitespace"===t[r-2][1].type)&&(r-=a+1===r?2:4);r>a&&(n={type:"atxHeadingText",start:t[a][1].start,end:t[r][1].end},i={type:"chunkText",start:t[a][1].start,end:t[r][1].end,contentType:"text"},c(t,a,r-a+1,[["enter",n,e],["enter",i,e],["exit",i,e],["exit",n,e]]));return t}};const at={name:"setextUnderline",tokenize:function(t,e,n){const i=this;let r;return function(e){let o,s=i.events.length;for(;s--;)if("lineEnding"!==i.events[s][1].type&&"linePrefix"!==i.events[s][1].type&&"content"!==i.events[s][1].type){o="paragraph"===i.events[s][1].type;break}if(!i.parser.lazy[i.now().line]&&(i.interrupt||o))return t.enter("setextHeadingLine"),r=e,function(e){return t.enter("setextHeadingLineSequence"),a(e)}(e);return n(e)};function a(e){return e===r?(t.consume(e),a):(t.exit("setextHeadingLineSequence"),k(e)?T(t,o,"lineSuffix")(e):o(e))}function o(i){return null===i||v(i)?(t.exit("setextHeadingLine"),e(i)):n(i)}},resolveTo:function(t,e){let n,i,r,a=t.length;for(;a--;)if("enter"===t[a][0]){if("content"===t[a][1].type){n=a;break}"paragraph"===t[a][1].type&&(i=a)}else"content"===t[a][1].type&&t.splice(a,1),r||"definition"!==t[a][1].type||(r=a);const o={type:"setextHeading",start:Object.assign({},t[i][1].start),end:Object.assign({},t[t.length-1][1].end)};t[i][1].type="setextHeadingText",r?(t.splice(i,0,["enter",o,e]),t.splice(r+1,0,["exit",t[n][1],e]),t[n][1].end=Object.assign({},t[r][1].end)):t[n][1]=o;return t.push(["exit",o,e]),t}};const ot=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],st=["pre","script","style","textarea"],ct={name:"htmlFlow",tokenize:function(t,e,n){const i=this;let r,a,o,s,c;return function(e){return function(e){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(e),u}(e)};function u(s){return 33===s?(t.consume(s),l):47===s?(t.consume(s),a=!0,p):63===s?(t.consume(s),r=3,i.interrupt?e:j):d(s)?(t.consume(s),o=String.fromCharCode(s),b):n(s)}function l(a){return 45===a?(t.consume(a),r=2,h):91===a?(t.consume(a),r=5,s=0,f):d(a)?(t.consume(a),r=4,i.interrupt?e:j):n(a)}function h(r){return 45===r?(t.consume(r),i.interrupt?e:j):n(r)}function f(r){const a="CDATA[";return r===a.charCodeAt(s++)?(t.consume(r),s===a.length?i.interrupt?e:D:f):n(r)}function p(e){return d(e)?(t.consume(e),o=String.fromCharCode(e),b):n(e)}function b(s){if(null===s||47===s||62===s||x(s)){const c=47===s,u=o.toLowerCase();return c||a||!st.includes(u)?ot.includes(o.toLowerCase())?(r=6,c?(t.consume(s),w):i.interrupt?e(s):D(s)):(r=7,i.interrupt&&!i.parser.lazy[i.now().line]?n(s):a?m(s):y(s)):(r=1,i.interrupt?e(s):D(s))}return 45===s||g(s)?(t.consume(s),o+=String.fromCharCode(s),b):n(s)}function w(r){return 62===r?(t.consume(r),i.interrupt?e:D):n(r)}function m(e){return k(e)?(t.consume(e),m):I(e)}function y(e){return 47===e?(t.consume(e),I):58===e||95===e||d(e)?(t.consume(e),_):k(e)?(t.consume(e),y):I(e)}function _(e){return 45===e||46===e||58===e||95===e||g(e)?(t.consume(e),_):A(e)}function A(e){return 61===e?(t.consume(e),E):k(e)?(t.consume(e),A):y(e)}function E(e){return null===e||60===e||61===e||62===e||96===e?n(e):34===e||39===e?(t.consume(e),c=e,T):k(e)?(t.consume(e),E):C(e)}function T(e){return e===c?(t.consume(e),c=null,S):null===e||v(e)?n(e):(t.consume(e),T)}function C(e){return null===e||34===e||39===e||47===e||60===e||61===e||62===e||96===e||x(e)?A(e):(t.consume(e),C)}function S(t){return 47===t||62===t||k(t)?y(t):n(t)}function I(e){return 62===e?(t.consume(e),M):n(e)}function M(e){return null===e||v(e)?D(e):k(e)?(t.consume(e),M):n(e)}function D(e){return 45===e&&2===r?(t.consume(e),P):60===e&&1===r?(t.consume(e),B):62===e&&4===r?(t.consume(e),$):63===e&&3===r?(t.consume(e),j):93===e&&5===r?(t.consume(e),R):!v(e)||6!==r&&7!==r?null===e||v(e)?(t.exit("htmlFlowData"),O(e)):(t.consume(e),D):(t.exit("htmlFlowData"),t.check(ut,z,O)(e))}function O(e){return t.check(lt,L,z)(e)}function L(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),N}function N(e){return null===e||v(e)?O(e):(t.enter("htmlFlowData"),D(e))}function P(e){return 45===e?(t.consume(e),j):D(e)}function B(e){return 47===e?(t.consume(e),o="",F):D(e)}function F(e){if(62===e){const n=o.toLowerCase();return st.includes(n)?(t.consume(e),$):D(e)}return d(e)&&o.length<8?(t.consume(e),o+=String.fromCharCode(e),F):D(e)}function R(e){return 93===e?(t.consume(e),j):D(e)}function j(e){return 62===e?(t.consume(e),$):45===e&&2===r?(t.consume(e),j):D(e)}function $(e){return null===e||v(e)?(t.exit("htmlFlowData"),z(e)):(t.consume(e),$)}function z(n){return t.exit("htmlFlow"),e(n)}},resolveTo:function(t){let e=t.length;for(;e--&&("enter"!==t[e][0]||"htmlFlow"!==t[e][1].type););e>1&&"linePrefix"===t[e-2][1].type&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2));return t},concrete:!0},ut={tokenize:function(t,e,n){return function(i){return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),t.attempt(M,e,n)}},partial:!0},lt={tokenize:function(t,e,n){const i=this;return function(e){if(v(e))return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r;return n(e)};function r(t){return i.parser.lazy[i.now().line]?n(t):e(t)}},partial:!0};const ht={tokenize:function(t,e,n){const i=this;return function(e){if(null===e)return n(e);return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r};function r(t){return i.parser.lazy[i.now().line]?n(t):e(t)}},partial:!0},ft={name:"codeFenced",tokenize:function(t,e,n){const i=this,r={tokenize:function(t,e,n){let r=0;return o;function o(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),c}function c(e){return t.enter("codeFencedFence"),k(e)?T(t,u,"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(e):u(e)}function u(e){return e===a?(t.enter("codeFencedFenceSequence"),l(e)):n(e)}function l(e){return e===a?(r++,t.consume(e),l):r>=s?(t.exit("codeFencedFenceSequence"),k(e)?T(t,h,"whitespace")(e):h(e)):n(e)}function h(i){return null===i||v(i)?(t.exit("codeFencedFence"),e(i)):n(i)}},partial:!0};let a,o=0,s=0;return function(e){return function(e){const n=i.events[i.events.length-1];return o=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,a=e,t.enter("codeFenced"),t.enter("codeFencedFence"),t.enter("codeFencedFenceSequence"),c(e)}(e)};function c(e){return e===a?(s++,t.consume(e),c):s<3?n(e):(t.exit("codeFencedFenceSequence"),k(e)?T(t,u,"whitespace")(e):u(e))}function u(n){return null===n||v(n)?(t.exit("codeFencedFence"),i.interrupt?e(n):t.check(ht,d,m)(n)):(t.enter("codeFencedFenceInfo"),t.enter("chunkString",{contentType:"string"}),l(n))}function l(e){return null===e||v(e)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),u(e)):k(e)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),T(t,h,"whitespace")(e)):96===e&&e===a?n(e):(t.consume(e),l)}function h(e){return null===e||v(e)?u(e):(t.enter("codeFencedFenceMeta"),t.enter("chunkString",{contentType:"string"}),f(e))}function f(e){return null===e||v(e)?(t.exit("chunkString"),t.exit("codeFencedFenceMeta"),u(e)):96===e&&e===a?n(e):(t.consume(e),f)}function d(e){return t.attempt(r,m,g)(e)}function g(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),p}function p(e){return o>0&&k(e)?T(t,b,"linePrefix",o+1)(e):b(e)}function b(e){return null===e||v(e)?t.check(ht,d,m)(e):(t.enter("codeFlowValue"),w(e))}function w(e){return null===e||v(e)?(t.exit("codeFlowValue"),b(e)):(t.consume(e),w)}function m(n){return t.exit("codeFenced"),e(n)}},concrete:!0};const dt=document.createElement("i");function gt(t){const e="&"+t+";";dt.innerHTML=e;const n=dt.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===t)&&(n!==e&&n)}const pt={name:"characterReference",tokenize:function(t,e,n){const i=this;let r,a,o=0;return function(e){return t.enter("characterReference"),t.enter("characterReferenceMarker"),t.consume(e),t.exit("characterReferenceMarker"),s};function s(e){return 35===e?(t.enter("characterReferenceMarkerNumeric"),t.consume(e),t.exit("characterReferenceMarkerNumeric"),c):(t.enter("characterReferenceValue"),r=31,a=g,u(e))}function c(e){return 88===e||120===e?(t.enter("characterReferenceMarkerHexadecimal"),t.consume(e),t.exit("characterReferenceMarkerHexadecimal"),t.enter("characterReferenceValue"),r=6,a=m,u):(t.enter("characterReferenceValue"),r=7,a=w,u(e))}function u(s){if(59===s&&o){const r=t.exit("characterReferenceValue");return a!==g||gt(i.sliceSerialize(r))?(t.enter("characterReferenceMarker"),t.consume(s),t.exit("characterReferenceMarker"),t.exit("characterReference"),e):n(s)}return a(s)&&o++1&&t[f][1].end.offset-t[f][1].start.offset>1?2:1;const d=Object.assign({},t[n][1].end),g=Object.assign({},t[f][1].start);At(d,-s),At(g,s),a={type:s>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},t[n][1].end)},o={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},t[f][1].start),end:g},r={type:s>1?"strongText":"emphasisText",start:Object.assign({},t[n][1].end),end:Object.assign({},t[f][1].start)},i={type:s>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},o.end)},t[n][1].end=Object.assign({},a.start),t[f][1].start=Object.assign({},o.end),l=[],t[n][1].end.offset-t[n][1].start.offset&&(l=u(l,[["enter",t[n][1],e],["exit",t[n][1],e]])),l=u(l,[["enter",i,e],["enter",a,e],["exit",a,e],["enter",r,e]]),l=u(l,q(e.parser.constructs.insideSpan.null,t.slice(n+1,f),e)),l=u(l,[["exit",r,e],["enter",o,e],["exit",o,e],["exit",i,e]]),t[f][1].end.offset-t[f][1].start.offset?(h=2,l=u(l,[["enter",t[f][1],e],["exit",t[f][1],e]])):h=0,c(t,n-1,f-n+3,l),f=n+l.length-h-2;break}f=-1;for(;++f13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535==(65535&n)||65534==(65535&n)||n>1114111?"�":String.fromCharCode(n)}const jt=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function $t(t,e,n){if(e)return e;if(35===n.charCodeAt(0)){const t=n.charCodeAt(1),e=120===t||88===t;return Rt(n.slice(e?2:1),e?16:10)}return gt(n)||t}function zt(t){return t&&"object"==typeof t?"position"in t||"type"in t?Ht(t.position):"start"in t||"end"in t?Ht(t):"line"in t||"column"in t?qt(t):"":""}function qt(t){return Ut(t&&t.line)+":"+Ut(t&&t.column)}function Ht(t){return qt(t&&t.start)+"-"+qt(t&&t.end)}function Ut(t){return t&&"number"==typeof t?t:1}const Gt={}.hasOwnProperty,Yt=function(t,e,n){return"string"!=typeof e&&(n=e,e=void 0),function(t){const e={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(at),autolinkProtocol:I,autolinkEmail:I,atxHeading:u(et),blockQuote:u(K),characterEscape:I,characterReference:I,codeFenced:u(X),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(X,l),codeText:u(V,l),codeTextData:I,data:I,codeFlowValue:I,definition:u(Q),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(tt),hardBreakEscape:u(nt),hardBreakTrailing:u(nt),htmlFlow:u(it,l),htmlFlowData:I,htmlText:u(it,l),htmlTextData:I,image:u(rt),label:l,link:u(at),listItem:u(st),listItemValue:b,listOrdered:u(ot,p),listUnordered:u(ot),paragraph:u(ct),reference:H,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u(et),strong:u(ut),thematicBreak:u(ht)},exit:{atxHeading:f(),atxHeadingSequence:E,autolink:f(),autolinkEmail:W,autolinkProtocol:Z,blockQuote:f(),characterEscapeValue:M,characterReferenceMarkerHexadecimal:G,characterReferenceMarkerNumeric:G,characterReferenceValue:Y,codeFenced:f(v),codeFencedFence:y,codeFencedFenceInfo:w,codeFencedFenceMeta:m,codeFlowValue:M,codeIndented:f(x),codeText:f(P),codeTextData:M,data:M,definition:f(),definitionDestinationString:A,definitionLabelString:k,definitionTitleString:_,emphasis:f(),hardBreakEscape:f(O),hardBreakTrailing:f(O),htmlFlow:f(L),htmlFlowData:M,htmlText:f(N),htmlTextData:M,image:f(F),label:j,labelText:R,lineEnding:D,link:f(B),listItem:f(),listOrdered:f(),listUnordered:f(),paragraph:f(),referenceString:U,resourceDestinationString:$,resourceTitleString:z,resource:q,setextHeading:f(S),setextHeadingLineSequence:C,setextHeadingText:T,strong:f(),thematicBreak:f()}};Wt(e,(t||{}).mdastExtensions||[]);const n={};return i;function i(t){let n={type:"root",children:[]};const i={stack:[n],tokenStack:[],config:e,enter:h,exit:d,buffer:l,resume:g,setData:s,getData:c},a=[];let o=-1;for(;++o0){const t=i.tokenStack[i.tokenStack.length-1];(t[1]||Xt).call(i,void 0,t[0])}for(n.position={start:Zt(t.length>0?t[0][1].start:{line:1,column:1,offset:0}),end:Zt(t.length>0?t[t.length-2][1].end:{line:1,column:1,offset:0})},o=-1;++o{0!==n&&(r++,i.push([])),t.split(" ").forEach((t=>{t&&i[r].push({content:t,type:e})}))}))}else"strong"!==t.type&&"emphasis"!==t.type||t.children.forEach((e=>{a(e,t.type)}))}return n.forEach((t=>{"paragraph"===t.type&&t.children.forEach((t=>{a(t)}))})),i}function Jt(t,e,n){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*n-.1+"em").attr("dy",n+"em")}function te(t,e,n){const i=t.append("text"),r=Jt(i,1,e);ee(r,[{content:n,type:"normal"}]);const a=r.node().getComputedTextLength();return i.remove(),a}function ee(t,e){t.text(""),e.forEach(((e,n)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===n?i.text(e.content):i.text(" "+e.content)}))}const ne=(t,e="",{style:n="",isTitle:i=!1,classes:a="",useHtmlLabels:o=!0,isNode:s=!0,width:c,addSvgBackground:u=!1}={})=>{if(r.l.info("createText",e,n,i,a,o,s,u),o){const i=function(t){const{children:e}=Yt(t);return e.map((function t(e){return"text"===e.type?e.value.replace(/\n/g,"
"):"strong"===e.type?`${e.children.map(t).join("")}`:"emphasis"===e.type?`${e.children.map(t).join("")}`:"paragraph"===e.type?`

${e.children.map(t).join("")}

`:`Unsupported markdown: ${e.type}`})).join("")}(e);let o=function(t,e,n,i,r=!1){const a=t.append("foreignObject"),o=a.append("xhtml:div"),s=e.label,c=e.isNode?"nodeLabel":"edgeLabel";var u,l;o.html(`\n "+s+""),u=o,(l=e.labelStyle)&&u.attr("style",l),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("max-width",n+"px"),o.attr("xmlns","http://www.w3.org/1999/xhtml"),r&&o.attr("class","labelBkg");let h=o.node().getBoundingClientRect();return h.width===n&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",n+"px"),h=o.node().getBoundingClientRect()),a.style("width",h.width),a.style("height",h.height),a.node()}(t,{isNode:s,label:(0,r.H)(i).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``)),labelStyle:n.replace("fill:","color:")},c,a,u);return o}{const n=function(t,e,n,i=!1){const a=e.append("g");let o=a.insert("rect").attr("class","background");const s=a.append("text").attr("y","-10.1");let c=0;if(n.forEach((e=>{let n=e.map((t=>t.content)).join(" "),i="",o=[],u=0;if(te(a,1.1,n)<=t)o.push(n);else{for(let e=0;e<=n.length;e++)if(i=n.slice(u,e),r.l.info(i,u,e),te(a,1.1,i)>t){const t=n.slice(u,e).lastIndexOf(" ");t>-1&&(e=u+t+1),o.push(n.slice(u,e).trim()),u=e,i=null}null!=i&&o.push(i)}const l=o.map((t=>({content:t,type:e.type})));for(const t of l)ee(Jt(s,c,1.1),[t]),c++})),i){const t=s.node().getBBox(),e=2;return o.attr("x",-e).attr("y",-e).attr("width",t.width+2*e).attr("height",t.height+2*e),a.node()}return s.node()}(c,t,Qt(e),u);return n}}},3430:function(t,e,n){"use strict";n.d(e,{a:function(){return c},b:function(){return E},c:function(){return u},d:function(){return I},e:function(){return _},f:function(){return M},g:function(){return N},h:function(){return O},i:function(){return b},l:function(){return l},p:function(){return T},s:function(){return A},u:function(){return h}});var i=n(8540),r=n(1504),a=n(1524),o=n(3148);const s={extension:(t,e,n)=>{i.l.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","marker extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","marker composition "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(t,e)=>{t.append("marker").attr("id",e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(t,e)=>{t.append("marker").attr("id",e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(t,e)=>{t.append("marker").attr("id",e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},c=(t,e,n,i)=>{e.forEach((e=>{s[e](t,n,i)}))};const u=(t,e,n,a)=>{let o=t||"";if("object"==typeof o&&(o=o[0]),(0,i.n)((0,i.c)().flowchart.htmlLabels)){o=o.replace(/\\n|\n/g,"
"),i.l.info("vertexText"+o);let t=function(t){const e=(0,r.Ys)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=e.append("xhtml:div"),i=t.label,a=t.isNode?"nodeLabel":"edgeLabel";var o,s;return n.html('"+i+""),o=n,(s=t.labelStyle)&&o.attr("style",s),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}({isNode:a,label:(0,i.H)(o).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``)),labelStyle:e.replace("fill:","color:")});return t}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let i=[];i="string"==typeof o?o.split(/\\n|\n|/gi):Array.isArray(o)?o:[];for(const e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),n?i.setAttribute("class","title-row"):i.setAttribute("class","row"),i.textContent=e.trim(),t.appendChild(i)}return t}},l=async(t,e,n,o)=>{let s;const c=e.useHtmlLabels||(0,i.n)((0,i.c)().flowchart.htmlLabels);s=n||"node default";const l=t.insert("g").attr("class",s).attr("id",e.domId||e.id),h=l.insert("g").attr("class","label").attr("style",e.labelStyle);let f;f=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const d=h.node();let g;g="markdown"===e.labelType?(0,a.c)(h,(0,i.d)((0,i.H)(f),(0,i.c)()),{useHtmlLabels:c,width:e.width||(0,i.c)().flowchart.wrappingWidth,classes:"markdown-node-label"}):d.appendChild(u((0,i.d)((0,i.H)(f),(0,i.c)()),e.labelStyle,!1,o));let p=g.getBBox();const b=e.padding/2;if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=g.children[0],e=(0,r.Ys)(g),n=t.getElementsByTagName("img");if(n){const t=""===f.replace(/]*>/g,"").trim();await Promise.all([...n].map((e=>new Promise((n=>e.addEventListener("load",(function(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,i.c)().fontSize?(0,i.c)().fontSize:window.getComputedStyle(document.body).fontSize,n=5;e.style.width=parseInt(t,10)*n+"px"}else e.style.width="100%";n(e)})))))))}p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return c?h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):h.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),h.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:b,label:h}},h=(t,e)=>{const n=e.node().getBBox();t.width=n.width,t.height=n.height};function f(t,e,n,i){return t.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}function d(t,e,n,i){var r=t.x,a=t.y,o=r-i.x,s=a-i.y,c=Math.sqrt(e*e*s*s+n*n*o*o),u=Math.abs(e*n*o/c);i.x0}const b=(t,e)=>{var n,i,r=t.x,a=t.y,o=e.x-r,s=e.y-a,c=t.width/2,u=t.height/2;return Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,i=u):(o<0&&(c=-c),n=c,i=0===o?0:c*s/o),{x:r+n,y:a+i}},w={node:function(t,e){return t.intersect(e)},circle:function(t,e,n){return d(t,e,e,n)},ellipse:d,polygon:function(t,e,n){var i=t.x,r=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=i-t.width/2-o,u=r-t.height/2-s,l=0;l1&&a.sort((function(t,e){var i=t.x-n.x,r=t.y-n.y,a=Math.sqrt(i*i+r*r),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return a{const{shapeSvg:n,bbox:r}=await l(t,e,void 0,!0),a=r.width+e.padding+(r.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];i.l.info("Question main (Circle)");const s=f(n,a,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return i.l.warn("Intersect called"),w.polygon(e,o,t)},n};function y(t,e,n,r){const a=[],o=t=>{a.push(t,0)},s=t=>{a.push(0,t)};e.includes("t")?(i.l.debug("add top border"),o(n)):s(n),e.includes("r")?(i.l.debug("add right border"),o(r)):s(r),e.includes("b")?(i.l.debug("add bottom border"),o(n)):s(n),e.includes("l")?(i.l.debug("add left border"),o(r)):s(r),t.attr("stroke-dasharray",a.join(" "))}const v=(t,e,n)=>{const i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let r=70,a=10;"LR"===n&&(r=10,a=70);const o=i.append("rect").attr("x",-1*r/2).attr("y",-1*a/2).attr("width",r).attr("height",a).attr("class","fork-join");return h(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return w.rect(e,t)},i},x={rhombus:m,question:m,rect:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,"node "+e.classes,!0),o=n.insert("rect",":first-child"),s=r.width+e.padding,c=r.height+e.padding;if(o.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-a).attr("y",-r.height/2-a).attr("width",s).attr("height",c),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(y(o,e.props.borders,s,c),t.delete("borders")),t.forEach((t=>{i.l.warn(`Unknown node property ${t}`)}))}return h(e,o),e.intersect=function(t){return w.rect(e,t)},n},labelRect:async(t,e)=>{const{shapeSvg:n}=await l(t,e,"label",!0);i.l.trace("Classes = ",e.classes);const r=n.insert("rect",":first-child");if(r.attr("width",0).attr("height",0),n.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(y(r,e.props.borders,0,0),t.delete("borders")),t.forEach((t=>{i.l.warn(`Unknown node property ${t}`)}))}return h(e,r),e.intersect=function(t){return w.rect(e,t)},n},rectWithTitle:(t,e)=>{let n;n=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),o=a.insert("rect",":first-child"),s=a.insert("line"),c=a.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText;let f="";f="object"==typeof l?l[0]:l,i.l.info("Label text abc79",f,l,"object"==typeof l);const d=c.node().appendChild(u(f,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=d.children[0],e=(0,r.Ys)(d);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}i.l.info("Text 2",l);const p=l.slice(1,l.length);let b=d.getBBox();const m=c.node().appendChild(u(p.join?p.join("
"):p,e.labelStyle,!0,!0));if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=m.children[0],e=(0,r.Ys)(m);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const y=e.padding/2;return(0,r.Ys)(m).attr("transform","translate( "+(g.width>b.width?0:(b.width-g.width)/2)+", "+(b.height+y+5)+")"),(0,r.Ys)(d).attr("transform","translate( "+(g.width{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return n.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return w.circle(e,14,t)},n},circle:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,void 0,!0),o=n.insert("circle",":first-child");return o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),i.l.info("Circle main"),h(e,o),e.intersect=function(t){return i.l.info("Circle intersect",e,r.width/2+a,t),w.circle(e,r.width/2+a,t)},n},doublecircle:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,void 0,!0),o=n.insert("g",":first-child"),s=o.insert("circle"),c=o.insert("circle");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a+5).attr("width",r.width+e.padding+10).attr("height",r.height+e.padding+10),c.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),i.l.info("DoubleCircle main"),h(e,s),e.intersect=function(t){return i.l.info("DoubleCircle intersect",e,r.width/2+a+5,t),w.circle(e,r.width/2+a+5,t)},n},stadium:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.height+e.padding,a=i.width+r/4+e.padding,o=n.insert("rect",":first-child").attr("style",e.style).attr("rx",r/2).attr("ry",r/2).attr("x",-a/2).attr("y",-r/2).attr("width",a).attr("height",r);return h(e,o),e.intersect=function(t){return w.rect(e,t)},n},hexagon:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.height+e.padding,a=r/4,o=i.width+2*a+e.padding,s=[{x:a,y:0},{x:o-a,y:0},{x:o,y:-r/2},{x:o-a,y:-r},{x:a,y:-r},{x:0,y:-r/2}],c=f(n,o,r,s);return c.attr("style",e.style),h(e,c),e.intersect=function(t){return w.polygon(e,s,t)},n},rect_left_inv_arrow:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-a/2,y:0},{x:r,y:0},{x:r,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return f(n,r,a,o).attr("style",e.style),e.width=r+a,e.height=a,e.intersect=function(t){return w.polygon(e,o,t)},n},lean_right:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-2*a/6,y:0},{x:r-a/6,y:0},{x:r+2*a/6,y:-a},{x:a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},lean_left:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:2*a/6,y:0},{x:r+a/6,y:0},{x:r-2*a/6,y:-a},{x:-a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},trapezoid:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-2*a/6,y:0},{x:r+2*a/6,y:0},{x:r-a/6,y:-a},{x:a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},inv_trapezoid:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:a/6,y:0},{x:r-a/6,y:0},{x:r+2*a/6,y:-a},{x:-2*a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},rect_right_inv_arrow:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:0,y:0},{x:r+a/2,y:0},{x:r,y:-a/2},{x:r+a/2,y:-a},{x:0,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},cylinder:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=r/2,o=a/(2.5+r/50),s=i.height+o+e.padding,c="M 0,"+o+" a "+a+","+o+" 0,0,0 "+r+" 0 a "+a+","+o+" 0,0,0 "+-r+" 0 l 0,"+s+" a "+a+","+o+" 0,0,0 "+r+" 0 l 0,"+-s,u=n.attr("label-offset-y",o).insert("path",":first-child").attr("style",e.style).attr("d",c).attr("transform","translate("+-r/2+","+-(s/2+o)+")");return h(e,u),e.intersect=function(t){const n=w.rect(e,t),i=n.x-e.x;if(0!=a&&(Math.abs(i)e.height/2-o)){let r=o*o*(1-i*i/(a*a));0!=r&&(r=Math.sqrt(r)),r=o-r,t.y-e.y>0&&(r=-r),n.y+=r}return n},n},start:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),h(e,i),e.intersect=function(t){return w.circle(e,7,t)},n},end:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=n.insert("circle",":first-child"),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),h(e,r),e.intersect=function(t){return w.circle(e,7,t)},n},note:async(t,e)=>{e.useHtmlLabels||(0,i.c)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,"node "+e.classes,!0);i.l.info("Classes = ",e.classes);const o=n.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-a).attr("y",-r.height/2-a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),h(e,o),e.intersect=function(t){return w.rect(e,t)},n},subroutine:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:0,y:0},{x:r,y:0},{x:r,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},fork:v,join:v,class_box:(t,e)=>{const n=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),c=s.insert("rect",":first-child"),l=s.insert("line"),f=s.insert("line");let d=0,g=4;const p=s.insert("g").attr("class","label");let b=0;const m=e.classData.annotations&&e.classData.annotations[0],y=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",v=p.node().appendChild(u(y,e.labelStyle,!0,!0));let x=v.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=v.children[0],e=(0,r.Ys)(v);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(g+=x.height+4,d+=x.width);let k=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,i.c)().flowchart.htmlLabels?k+="<"+e.classData.type+">":k+="<"+e.classData.type+">");const _=p.node().appendChild(u(k,e.labelStyle,!0,!0));(0,r.Ys)(_).attr("class","classTitle");let A=_.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=_.children[0],e=(0,r.Ys)(_);A=t.getBoundingClientRect(),e.attr("width",A.width),e.attr("height",A.height)}g+=A.height+4,A.width>d&&(d=A.width);const E=[];e.classData.members.forEach((t=>{const n=(0,o.p)(t);let a=n.displayText;(0,i.c)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=p.node().appendChild(u(a,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let c=s.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=s.children[0],e=(0,r.Ys)(s);c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}c.width>d&&(d=c.width),g+=c.height+4,E.push(s)})),g+=8;const T=[];if(e.classData.methods.forEach((t=>{const n=(0,o.p)(t);let a=n.displayText;(0,i.c)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=p.node().appendChild(u(a,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let c=s.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=s.children[0],e=(0,r.Ys)(s);c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}c.width>d&&(d=c.width),g+=c.height+4,T.push(s)})),g+=8,m){let t=(d-x.width)/2;(0,r.Ys)(v).attr("transform","translate( "+(-1*d/2+t)+", "+-1*g/2+")"),b=x.height+4}let C=(d-A.width)/2;return(0,r.Ys)(_).attr("transform","translate( "+(-1*d/2+C)+", "+(-1*g/2+b)+")"),b+=A.height+4,l.attr("class","divider").attr("x1",-d/2-n).attr("x2",d/2+n).attr("y1",-g/2-n+8+b).attr("y2",-g/2-n+8+b),b+=8,E.forEach((t=>{(0,r.Ys)(t).attr("transform","translate( "+-d/2+", "+(-1*g/2+b+4)+")"),b+=A.height+4})),b+=8,f.attr("class","divider").attr("x1",-d/2-n).attr("x2",d/2+n).attr("y1",-g/2-n+8+b).attr("y2",-g/2-n+8+b),b+=8,T.forEach((t=>{(0,r.Ys)(t).attr("transform","translate( "+-d/2+", "+(-1*g/2+b)+")"),b+=A.height+4})),c.attr("class","outer title-state").attr("x",-d/2-n).attr("y",-g/2-n).attr("width",d+e.padding).attr("height",g+e.padding),h(e,c),e.intersect=function(t){return w.rect(e,t)},s}};let k={};const _=async(t,e,n)=>{let r,a;if(e.link){let o;"sandbox"===(0,i.c)().securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o),a=await x[e.shape](r,e,n)}else a=await x[e.shape](t,e,n),r=a;return e.tooltip&&a.attr("title",e.tooltip),e.class&&a.attr("class","node default "+e.class),k[e.id]=r,e.haveCallback&&k[e.id].attr("class",k[e.id].attr("class")+" clickable"),r},A=(t,e)=>{k[e.id]=t},E=()=>{k={}},T=t=>{const e=k[t.id];i.l.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n};let C={},S={};const I=()=>{C={},S={}},M=(t,e)=>{const n=(0,i.n)((0,i.c)().flowchart.htmlLabels),o="markdown"===e.labelType?(0,a.c)(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0}):u(e.label,e.labelStyle);i.l.info("abc82",e,e.labelType);const s=t.insert("g").attr("class","edgeLabel"),c=s.insert("g").attr("class","label");c.node().appendChild(o);let l,h=o.getBBox();if(n){const t=o.children[0],e=(0,r.Ys)(o);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}if(c.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),C[e.id]=s,e.width=h.width,e.height=h.height,e.startLabelLeft){const n=u(e.startLabelLeft,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),S[e.id]||(S[e.id]={}),S[e.id].startLeft=i,D(l,e.startLabelLeft)}if(e.startLabelRight){const n=u(e.startLabelRight,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=i.node().appendChild(n),r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),S[e.id]||(S[e.id]={}),S[e.id].startRight=i,D(l,e.startLabelRight)}if(e.endLabelLeft){const n=u(e.endLabelLeft,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),i.node().appendChild(n),S[e.id]||(S[e.id]={}),S[e.id].endLeft=i,D(l,e.endLabelLeft)}if(e.endLabelRight){const n=u(e.endLabelRight,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),i.node().appendChild(n),S[e.id]||(S[e.id]={}),S[e.id].endRight=i,D(l,e.endLabelRight)}return o};function D(t,e){(0,i.c)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}const O=(t,e)=>{i.l.info("Moving label abc78 ",t.id,t.label,C[t.id]);let n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){const r=C[t.id];let a=t.x,o=t.y;if(n){const r=i.u.calcLabelPosition(n);i.l.info("Moving label "+t.label+" from (",a,",",o,") to (",r.x,",",r.y,") abc78"),e.updatedPath&&(a=r.x,o=r.y)}r.attr("transform","translate("+a+", "+o+")")}if(t.startLabelLeft){const e=S[t.id].startLeft;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.startLabelRight){const e=S[t.id].startRight;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.endLabelLeft){const e=S[t.id].endLeft;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.endLabelRight){const e=S[t.id].endRight;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}},L=(t,e)=>{i.l.warn("abc88 cutPathAtIntersect",t,e);let n=[],r=t[0],a=!1;return t.forEach((t=>{if(i.l.info("abc88 checking point",t,e),((t,e)=>{const n=t.x,i=t.y,r=Math.abs(e.x-n),a=Math.abs(e.y-i),o=t.width/2,s=t.height/2;return r>=o||a>=s})(e,t)||a)i.l.warn("abc88 outside",t,r),r=t,a||n.push(t);else{const o=((t,e,n)=>{i.l.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(n)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const r=t.x,a=t.y,o=Math.abs(r-n.x),s=t.width/2;let c=n.xMath.abs(r-e.x)*u){let t=n.y{s=s||t.x===o.x&&t.y===o.y})),n.some((t=>t.x===o.x&&t.y===o.y))?i.l.warn("abc88 no intersect",o,n):n.push(o),a=!0}})),i.l.warn("abc88 returning points",n),n},N=function(t,e,n,a,o,s){let c=n.points,u=!1;const l=s.node(e.v);var h=s.node(e.w);i.l.info("abc88 InsertEdge: ",n),h.intersect&&l.intersect&&(c=c.slice(1,n.points.length-1),c.unshift(l.intersect(c[0])),i.l.info("Last point",c[c.length-1],h,h.intersect(c[c.length-1])),c.push(h.intersect(c[c.length-1]))),n.toCluster&&(i.l.info("to cluster abc88",a[n.toCluster]),c=L(n.points,a[n.toCluster].node),u=!0),n.fromCluster&&(i.l.info("from cluster abc88",a[n.fromCluster]),c=L(c.reverse(),a[n.fromCluster].node).reverse(),u=!0);const f=c.filter((t=>!Number.isNaN(t.y)));let d;d=("graph"===o||"flowchart"===o)&&n.curve||r.$0Z;const g=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d);let p;switch(n.thickness){case"normal":p="edge-thickness-normal";break;case"thick":case"invisible":p="edge-thickness-thick";break;default:p=""}switch(n.pattern){case"solid":p+=" edge-pattern-solid";break;case"dotted":p+=" edge-pattern-dotted";break;case"dashed":p+=" edge-pattern-dashed"}const b=t.append("path").attr("d",g(f)).attr("id",n.id).attr("class"," "+p+(n.classes?" "+n.classes:"")).attr("style",n.style);let w="";switch(((0,i.c)().flowchart.arrowMarkerAbsolute||(0,i.c)().state.arrowMarkerAbsolute)&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),i.l.info("arrowTypeStart",n.arrowTypeStart),i.l.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":b.attr("marker-start","url("+w+"#"+o+"-crossStart)");break;case"arrow_point":b.attr("marker-start","url("+w+"#"+o+"-pointStart)");break;case"arrow_barb":b.attr("marker-start","url("+w+"#"+o+"-barbStart)");break;case"arrow_circle":b.attr("marker-start","url("+w+"#"+o+"-circleStart)");break;case"aggregation":b.attr("marker-start","url("+w+"#"+o+"-aggregationStart)");break;case"extension":b.attr("marker-start","url("+w+"#"+o+"-extensionStart)");break;case"composition":b.attr("marker-start","url("+w+"#"+o+"-compositionStart)");break;case"dependency":b.attr("marker-start","url("+w+"#"+o+"-dependencyStart)");break;case"lollipop":b.attr("marker-start","url("+w+"#"+o+"-lollipopStart)")}switch(n.arrowTypeEnd){case"arrow_cross":b.attr("marker-end","url("+w+"#"+o+"-crossEnd)");break;case"arrow_point":b.attr("marker-end","url("+w+"#"+o+"-pointEnd)");break;case"arrow_barb":b.attr("marker-end","url("+w+"#"+o+"-barbEnd)");break;case"arrow_circle":b.attr("marker-end","url("+w+"#"+o+"-circleEnd)");break;case"aggregation":b.attr("marker-end","url("+w+"#"+o+"-aggregationEnd)");break;case"extension":b.attr("marker-end","url("+w+"#"+o+"-extensionEnd)");break;case"composition":b.attr("marker-end","url("+w+"#"+o+"-compositionEnd)");break;case"dependency":b.attr("marker-end","url("+w+"#"+o+"-dependencyEnd)");break;case"lollipop":b.attr("marker-end","url("+w+"#"+o+"-lollipopEnd)")}let m={};return u&&(m.updatedPath=c),m.originalPath=n.points,m}},6787:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return O}});var i=n(8540),r=n(8066),a=n(1504),o=n(1768);const s=[];for(let t=0;t<256;++t)s.push((t+256).toString(16).slice(1));function c(t,e=0){return(s[t[e+0]]+s[t[e+1]]+s[t[e+2]]+s[t[e+3]]+"-"+s[t[e+4]]+s[t[e+5]]+"-"+s[t[e+6]]+s[t[e+7]]+"-"+s[t[e+8]]+s[t[e+9]]+"-"+s[t[e+10]]+s[t[e+11]]+s[t[e+12]]+s[t[e+13]]+s[t[e+14]]+s[t[e+15]]).toLowerCase()}var u=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;var l=function(t){return"string"==typeof t&&u.test(t)};var h=function(t){if(!l(t))throw TypeError("Invalid UUID");let e;const n=new Uint8Array(16);return n[0]=(e=parseInt(t.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n};function f(t,e,n,i){switch(t){case 0:return e&n^~e&i;case 1:case 3:return e^n^i;case 2:return e&n^e&i^n&i}}function d(t,e){return t<>>32-e}var g=function(t,e,n){function i(t,i,r,a){var o;if("string"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let n=0;n>>0;u=c,c=s,s=d(o,30)>>>0,o=r,r=a}n[0]=n[0]+r>>>0,n[1]=n[1]+o>>>0,n[2]=n[2]+s>>>0,n[3]=n[3]+c>>>0,n[4]=n[4]+u>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]})),p=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,23,25,27,29,30,31,52],r=[1,17],a=[1,18],o=[1,19],s=[1,20],c=[1,21],u=[1,22],l=[1,25],h=[1,30],f=[1,31],d=[1,32],g=[1,33],p=[1,34],b=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,48,52],w=[1,46],m=[30,31,49,50],y=[4,6,9,11,23,25,27,29,30,31,52],v=[44,45,46,47,48],x=[22,37],k=[1,66],_=[1,65],A=[22,37,39,41],E={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,MD_PARENT:48,NON_IDENTIFYING:49,IDENTIFYING:50,WORD:51,open_directive:52,type_directive:53,arg_directive:54,close_directive:55,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"MD_PARENT",49:"NON_IDENTIFYING",50:"IDENTIFYING",51:"WORD",52:"open_directive",53:"type_directive",54:"arg_directive",55:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:case 20:case 44:case 28:case 29:case 32:this.$=a[s];break;case 12:i.addEntity(a[s-4]),i.addEntity(a[s-2]),i.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:i.addEntity(a[s-3]),i.addAttributes(a[s-3],a[s-1]);break;case 14:i.addEntity(a[s-2]);break;case 15:i.addEntity(a[s]);break;case 16:case 17:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 21:case 42:case 43:case 33:this.$=a[s].replace(/"/g,"");break;case 22:case 30:this.$=[a[s]];break;case 23:a[s].push(a[s-1]),this.$=a[s];break;case 24:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 25:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeKeyTypeList:a[s]};break;case 26:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeComment:a[s]};break;case 27:this.$={attributeType:a[s-3],attributeName:a[s-2],attributeKeyTypeList:a[s-1],attributeComment:a[s]};break;case 31:a[s-2].push(a[s]),this.$=a[s-2];break;case 34:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 35:this.$=i.Cardinality.ZERO_OR_ONE;break;case 36:this.$=i.Cardinality.ZERO_OR_MORE;break;case 37:this.$=i.Cardinality.ONE_OR_MORE;break;case 38:this.$=i.Cardinality.ONLY_ONE;break;case 39:this.$=i.Cardinality.MD_PARENT;break;case 40:this.$=i.Identification.NON_IDENTIFYING;break;case 41:this.$=i.Identification.IDENTIFYING;break;case 45:i.parseDirective("%%{","open_directive");break;case 46:i.parseDirective(a[s],"type_directive");break;case 47:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 48:i.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,52:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,52:n},{13:8,53:[1,9]},{53:[2,45]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:r,25:a,27:o,29:s,30:c,31:u,52:n},{1:[2,2]},{14:23,15:[1,24],55:l},t([15,55],[2,46]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:15,10:26,12:4,17:16,23:r,25:a,27:o,29:s,30:c,31:u,52:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),t(i,[2,15],{18:27,42:29,20:[1,28],44:h,45:f,46:d,47:g,48:p}),{24:[1,35]},{26:[1,36]},{28:[1,37]},t(i,[2,19]),t(b,[2,20]),t(b,[2,21]),{11:[1,38]},{16:39,54:[1,40]},{11:[2,48]},t(i,[2,5]),{17:41,30:c,31:u},{21:42,22:[1,43],32:44,33:45,37:w},{43:47,49:[1,48],50:[1,49]},t(m,[2,35]),t(m,[2,36]),t(m,[2,37]),t(m,[2,38]),t(m,[2,39]),t(i,[2,16]),t(i,[2,17]),t(i,[2,18]),t(y,[2,9]),{14:50,55:l},{55:[2,47]},{15:[1,51]},{22:[1,52]},t(i,[2,14]),{21:53,22:[2,22],32:44,33:45,37:w},{34:54,37:[1,55]},{37:[2,28]},{42:56,44:h,45:f,46:d,47:g,48:p},t(v,[2,40]),t(v,[2,41]),{11:[1,57]},{19:58,30:[1,61],31:[1,60],51:[1,59]},t(i,[2,13]),{22:[2,23]},t(x,[2,24],{35:62,36:63,38:64,40:k,41:_}),t([22,37,40,41],[2,29]),t([30,31],[2,34]),t(y,[2,10]),t(i,[2,12]),t(i,[2,42]),t(i,[2,43]),t(i,[2,44]),t(x,[2,25],{36:67,39:[1,68],41:_}),t(x,[2,26]),t(A,[2,30]),t(x,[2,33]),t(A,[2,32]),t(x,[2,27]),{38:69,40:k},t(A,[2,31])],defaultActions:{5:[2,45],7:[2,2],25:[2,48],40:[2,47],46:[2,28],53:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},T={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),52;case 8:return this.begin("type_directive"),53;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),55;case 11:return 54;case 12:return 11;case 13:case 20:case 25:break;case 14:return 9;case 15:return 31;case 16:return 51;case 17:return 4;case 18:return this.begin("block"),20;case 19:return 39;case 21:return 40;case 22:case 23:return 37;case 24:return 41;case 26:return this.popState(),22;case 27:case 57:return e.yytext[0];case 28:case 32:case 33:case 46:return 44;case 29:case 30:case 31:case 39:case 41:case 48:return 46;case 34:case 35:case 36:case 37:case 38:case 40:case 47:return 45;case 42:case 43:case 44:case 45:return 47;case 49:return 48;case 50:case 53:case 54:case 55:return 49;case 51:case 52:return 50;case 56:return 30;case 58:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[19,20,21,22,23,24,25,26,27],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],inclusive:!0}}};function C(){this.yy={}}return E.lexer=T,C.prototype=E,E.Parser=C,new C}());p.parser=p;const b=p;let w={},m=[];const y=function(t){return void 0===w[t]&&(w[t]={attributes:[]},i.l.info("Added new entity :",t)),w[t]},v={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().er,addEntity:y,addAttributes:function(t,e){let n,r=y(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),i.l.debug("Added attribute ",e[n].attributeName)},getEntities:()=>w,addRelationship:function(t,e,n,r){let a={entityA:t,roleA:e,entityB:n,relSpec:r};m.push(a),i.l.debug("Added new relationship :",a)},getRelationships:()=>m,clear:function(){w={},m=[],(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,setDiagramTitle:i.r,getDiagramTitle:i.t},x={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},k=x,_=function(t,e){let n;t.append("defs").append("marker").attr("id",x.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",x.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",x.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",x.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",x.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",x.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},A=/[^\dA-Za-z](\W)*/g;let E={},T=new Map;const C=function(t,e,n){let r;return Object.keys(e).forEach((function(a){const o=function(t="",e=""){const n=t.replace(A,"");return`${D(e)}${D(n)}${g(t,M)}`}(a,"entity");T.set(a,o);const s=t.append("g").attr("id",o);r=void 0===r?o:r;const c="text-"+o,u=s.append("text").classed("er entityLabel",!0).attr("id",c).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",E.fontSize+"px").text(a),{width:l,height:h}=((t,e,n)=>{const r=E.entityPadding/3,a=E.entityPadding/3,o=.85*E.fontSize,s=e.node().getBBox(),c=[];let u=!1,l=!1,h=0,f=0,d=0,g=0,p=s.height+2*r,b=1;n.forEach((t=>{void 0!==t.attributeKeyTypeList&&t.attributeKeyTypeList.length>0&&(u=!0),void 0!==t.attributeComment&&(l=!0)})),n.forEach((n=>{const a=`${e.node().id}-attr-${b}`;let s=0;const w=(0,i.x)(n.attributeType),m=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(w),y=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(n.attributeName),v={};v.tn=m,v.nn=y;const x=m.node().getBBox(),k=y.node().getBBox();if(h=Math.max(h,x.width),f=Math.max(f,k.width),s=Math.max(x.height,k.height),u){const e=void 0!==n.attributeKeyTypeList?n.attributeKeyTypeList.join(","):"",r=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(e);v.kn=r;const c=r.node().getBBox();d=Math.max(d,c.width),s=Math.max(s,c.height)}if(l){const e=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(n.attributeComment||"");v.cn=e;const r=e.node().getBBox();g=Math.max(g,r.width),s=Math.max(s,r.height)}v.height=s,c.push(v),p+=s+2*r,b+=1}));let w=4;u&&(w+=2),l&&(w+=2);const m=h+f+d+g,y={width:Math.max(E.minEntityWidth,Math.max(s.width+2*E.entityPadding,m+a*w)),height:n.length>0?p:Math.max(E.minEntityHeight,s.height+2*E.entityPadding)};if(n.length>0){const n=Math.max(0,(y.width-m-a*w)/(w/2));e.attr("transform","translate("+y.width/2+","+(r+s.height/2)+")");let i=s.height+2*r,o="attributeBoxOdd";c.forEach((e=>{const s=i+r+e.height/2;e.tn.attr("transform","translate("+a+","+s+")");const c=t.insert("rect","#"+e.tn.node().id).classed(`er ${o}`,!0).attr("x",0).attr("y",i).attr("width",h+2*a+n).attr("height",e.height+2*r),p=parseFloat(c.attr("x"))+parseFloat(c.attr("width"));e.nn.attr("transform","translate("+(p+a)+","+s+")");const b=t.insert("rect","#"+e.nn.node().id).classed(`er ${o}`,!0).attr("x",p).attr("y",i).attr("width",f+2*a+n).attr("height",e.height+2*r);let w=parseFloat(b.attr("x"))+parseFloat(b.attr("width"));if(u){e.kn.attr("transform","translate("+(w+a)+","+s+")");const c=t.insert("rect","#"+e.kn.node().id).classed(`er ${o}`,!0).attr("x",w).attr("y",i).attr("width",d+2*a+n).attr("height",e.height+2*r);w=parseFloat(c.attr("x"))+parseFloat(c.attr("width"))}l&&(e.cn.attr("transform","translate("+(w+a)+","+s+")"),t.insert("rect","#"+e.cn.node().id).classed(`er ${o}`,"true").attr("x",w).attr("y",i).attr("width",g+2*a+n).attr("height",e.height+2*r)),i+=e.height+2*r,o="attributeBoxOdd"===o?"attributeBoxEven":"attributeBoxOdd"}))}else y.height=Math.max(E.minEntityHeight,p),e.attr("transform","translate("+y.width/2+","+y.height/2+")");return y})(s,u,e[a].attributes),f=s.insert("rect","#"+c).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",l).attr("height",h).node().getBBox();n.setNode(o,{width:f.width,height:f.height,shape:"rect",id:o})})),r},S=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")};let I=0;const M="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function D(t=""){return t.length>0?`${t}-`:""}const O={parser:b,db:v,renderer:{setConf:function(t){const e=Object.keys(t);for(const n of e)E[n]=t[n]},draw:function(t,e,n,s){E=(0,i.c)().er,i.l.info("Drawing ER diagram");const c=(0,i.c)().securityLevel;let u;"sandbox"===c&&(u=(0,a.Ys)("#i"+e));const l=("sandbox"===c?(0,a.Ys)(u.nodes()[0].contentDocument.body):(0,a.Ys)("body")).select(`[id='${e}']`);let h;_(l,E),h=new r.k({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:E.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));const f=C(l,s.db.getEntities(),h),d=function(t,e){return t.forEach((function(t){e.setEdge(T.get(t.entityA),T.get(t.entityB),{relationship:t},S(t))})),t}(s.db.getRelationships(),h);var g,p;(0,o.bK)(h),g=l,(p=h).nodes().forEach((function(t){void 0!==t&&void 0!==p.node(t)&&g.select("#"+t).attr("transform","translate("+(p.node(t).x-p.node(t).width/2)+","+(p.node(t).y-p.node(t).height/2)+" )")})),d.forEach((function(t){!function(t,e,n,r,o){I++;const s=n.edge(T.get(e.entityA),T.get(e.entityB),S(e)),c=(0,a.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.$0Z),u=t.insert("path","#"+r).classed("er relationshipLine",!0).attr("d",c(s.points)).style("stroke",E.stroke).style("fill","none");e.relSpec.relType===o.db.Identification.NON_IDENTIFYING&&u.attr("stroke-dasharray","8,8");let l="";switch(E.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),e.relSpec.cardA){case o.db.Cardinality.ZERO_OR_ONE:u.attr("marker-end","url("+l+"#"+k.ZERO_OR_ONE_END+")");break;case o.db.Cardinality.ZERO_OR_MORE:u.attr("marker-end","url("+l+"#"+k.ZERO_OR_MORE_END+")");break;case o.db.Cardinality.ONE_OR_MORE:u.attr("marker-end","url("+l+"#"+k.ONE_OR_MORE_END+")");break;case o.db.Cardinality.ONLY_ONE:u.attr("marker-end","url("+l+"#"+k.ONLY_ONE_END+")");break;case o.db.Cardinality.MD_PARENT:u.attr("marker-end","url("+l+"#"+k.MD_PARENT_END+")")}switch(e.relSpec.cardB){case o.db.Cardinality.ZERO_OR_ONE:u.attr("marker-start","url("+l+"#"+k.ZERO_OR_ONE_START+")");break;case o.db.Cardinality.ZERO_OR_MORE:u.attr("marker-start","url("+l+"#"+k.ZERO_OR_MORE_START+")");break;case o.db.Cardinality.ONE_OR_MORE:u.attr("marker-start","url("+l+"#"+k.ONE_OR_MORE_START+")");break;case o.db.Cardinality.ONLY_ONE:u.attr("marker-start","url("+l+"#"+k.ONLY_ONE_START+")");break;case o.db.Cardinality.MD_PARENT:u.attr("marker-start","url("+l+"#"+k.MD_PARENT_START+")")}const h=u.node().getTotalLength(),f=u.node().getPointAtLength(.5*h),d="rel"+I,g=t.append("text").classed("er relationshipLabel",!0).attr("id",d).attr("x",f.x).attr("y",f.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",E.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+d).classed("er relationshipLabelBox",!0).attr("x",f.x-g.width/2).attr("y",f.y-g.height/2).attr("width",g.width).attr("height",g.height)}(l,t,h,f,s)}));const b=E.diagramPadding;i.u.insertTitle(l,"entityTitleText",E.titleTopMargin,s.db.getDiagramTitle());const w=l.node().getBBox(),m=w.width+2*b,y=w.height+2*b;(0,i.i)(l,y,m,E.useMaxWidth),l.attr("viewBox",`${w.x-b} ${w.y-b} ${m} ${y}`)}},styles:t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n \n`}},895:function(t,e,n){"use strict";n.d(e,{d:function(){return it},f:function(){return nt},p:function(){return o}});var i=n(1504),r=n(8540),a=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,9],n=[1,7],i=[1,6],r=[1,8],a=[1,20,21,22,23,38,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],o=[2,10],s=[1,20],c=[1,21],u=[1,22],l=[1,23],h=[1,30],f=[1,32],d=[1,33],g=[1,34],p=[1,62],b=[1,48],w=[1,52],m=[1,36],y=[1,37],v=[1,38],x=[1,39],k=[1,40],_=[1,56],A=[1,63],E=[1,51],T=[1,53],C=[1,55],S=[1,59],I=[1,60],M=[1,41],D=[1,42],O=[1,43],L=[1,44],N=[1,61],P=[1,50],B=[1,54],F=[1,57],R=[1,58],j=[1,49],$=[1,66],z=[1,71],q=[1,20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],H=[1,75],U=[1,74],G=[1,76],Y=[20,21,23,81,82],Z=[1,99],W=[1,104],K=[1,107],X=[1,108],V=[1,101],Q=[1,106],J=[1,109],tt=[1,102],et=[1,114],nt=[1,113],it=[1,103],rt=[1,105],at=[1,110],ot=[1,111],st=[1,112],ct=[1,115],ut=[20,21,22,23,81,82],lt=[20,21,22,23,53,81,82],ht=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],ft=[20,21,23],dt=[20,21,23,52,66,67,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],gt=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],pt=[52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],bt=[1,150],wt=[1,158],mt=[1,159],yt=[1,160],vt=[1,161],xt=[1,145],kt=[1,146],_t=[1,141],At=[1,142],Et=[1,153],Tt=[1,154],Ct=[1,155],St=[1,156],It=[1,157],Mt=[1,162],Dt=[1,163],Ot=[1,148],Lt=[1,151],Nt=[1,147],Pt=[1,144],Bt=[20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Ft=[1,166],Rt=[20,21,22,23,26,52,66,67,92,106,107,110,112,113,123,124,125,126,127,128],jt=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,87,88,89,90,91,92,93,96,106,107,110,112,113,114,115,123,124,125,126,127,128],$t=[12,21,22,24],zt=[22,107],qt=[1,251],Ht=[1,246],Ut=[1,247],Gt=[1,255],Yt=[1,252],Zt=[1,249],Wt=[1,248],Kt=[1,250],Xt=[1,253],Vt=[1,254],Qt=[1,256],Jt=[1,274],te=[20,21,23,107],ee=[20,21,22,23,66,67,87,103,106,107,110,111,112,113,114],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,MD_STR:85,keywords:86,STYLE:87,LINKSTYLE:88,CLASSDEF:89,CLASS:90,CLICK:91,DOWN:92,UP:93,textNoTags:94,textNoTagsToken:95,DEFAULT:96,stylesOpt:97,alphaNum:98,CALLBACKNAME:99,CALLBACKARGS:100,HREF:101,LINK_TARGET:102,HEX:103,numList:104,INTERPOLATE:105,NUM:106,COMMA:107,style:108,styleComponent:109,MINUS:110,UNIT:111,BRKT:112,DOT:113,PCT:114,TAGSTART:115,alphaNumToken:116,idStringToken:117,alphaNumStatement:118,direction_tb:119,direction_bt:120,direction_rl:121,direction_lr:122,PUNCTUATION:123,UNICODE_TEXT:124,PLUS:125,EQUALS:126,MULT:127,UNDERSCORE:128,graphCodeTokens:129,ARROW_CROSS:130,ARROW_POINT:131,ARROW_CIRCLE:132,ARROW_OPEN:133,QUOTE:134,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",85:"MD_STR",87:"STYLE",88:"LINKSTYLE",89:"CLASSDEF",90:"CLASS",91:"CLICK",92:"DOWN",93:"UP",96:"DEFAULT",99:"CALLBACKNAME",100:"CALLBACKARGS",101:"HREF",102:"LINK_TARGET",103:"HEX",105:"INTERPOLATE",106:"NUM",107:"COMMA",110:"MINUS",111:"UNIT",112:"BRKT",113:"DOT",114:"PCT",115:"TAGSTART",119:"direction_tb",120:"direction_bt",121:"direction_rl",122:"direction_lr",123:"PUNCTUATION",124:"UNICODE_TEXT",125:"PLUS",126:"EQUALS",127:"MULT",128:"UNDERSCORE",130:"ARROW_CROSS",131:"ARROW_POINT",132:"ARROW_CIRCLE",133:"ARROW_OPEN",134:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[39,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[94,1],[94,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[104,1],[104,3],[97,1],[97,3],[108,1],[108,2],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[95,1],[95,1],[95,1],[95,1],[54,1],[54,2],[98,1],[98,2],[118,1],[118,1],[118,1],[118,1],[43,1],[43,1],[43,1],[43,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 5:i.parseDirective("%%{","open_directive");break;case 6:i.parseDirective(a[s],"type_directive");break;case 7:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 8:i.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:(!Array.isArray(a[s])||a[s].length>0)&&a[s-1].push(a[s]),this.$=a[s-1];break;case 12:case 97:case 153:case 155:case 156:case 78:case 151:this.$=a[s];break;case 19:i.setDirection("TB"),this.$="TB";break;case 20:i.setDirection(a[s-1]),this.$=a[s-1];break;case 35:this.$=a[s-1].nodes;break;case 41:this.$=i.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 42:this.$=i.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 43:this.$=i.addSubGraph(void 0,a[s-1],void 0);break;case 45:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 46:case 47:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 51:i.addLink(a[s-2].stmt,a[s],a[s-1]),this.$={stmt:a[s],nodes:a[s].concat(a[s-2].nodes)};break;case 52:i.addLink(a[s-3].stmt,a[s-1],a[s-2]),this.$={stmt:a[s-1],nodes:a[s-1].concat(a[s-3].nodes)};break;case 53:this.$={stmt:a[s-1],nodes:a[s-1]};break;case 54:this.$={stmt:a[s],nodes:a[s]};break;case 55:case 124:case 126:this.$=[a[s]];break;case 56:this.$=a[s-4].concat(a[s]);break;case 57:this.$=[a[s-2]],i.setClass(a[s-2],a[s]);break;case 58:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"square");break;case 59:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"doublecircle");break;case 60:this.$=a[s-5],i.addVertex(a[s-5],a[s-2],"circle");break;case 61:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"ellipse");break;case 62:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"stadium");break;case 63:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"subroutine");break;case 64:this.$=a[s-7],i.addVertex(a[s-7],a[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[s-5],a[s-3]]]));break;case 65:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"cylinder");break;case 66:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"round");break;case 67:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"diamond");break;case 68:this.$=a[s-5],i.addVertex(a[s-5],a[s-2],"hexagon");break;case 69:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"odd");break;case 70:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"trapezoid");break;case 71:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 72:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"lean_right");break;case 73:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"lean_left");break;case 74:this.$=a[s],i.addVertex(a[s]);break;case 75:a[s-1].text=a[s],this.$=a[s-1];break;case 76:case 77:a[s-2].text=a[s-1],this.$=a[s-2];break;case 79:var c=i.destructLink(a[s],a[s-2]);this.$={type:c.type,stroke:c.stroke,length:c.length,text:a[s-1]};break;case 80:c=i.destructLink(a[s]);this.$={type:c.type,stroke:c.stroke,length:c.length};break;case 81:this.$=a[s-1];break;case 82:case 84:this.$={text:a[s],type:"text"};break;case 83:this.$={text:a[s-1].text+""+a[s],type:a[s-1].type};break;case 85:this.$={text:a[s],type:"markdown"};break;case 98:case 154:case 152:this.$=a[s-1]+""+a[s];break;case 99:case 100:this.$=a[s-4],i.addClass(a[s-2],a[s]);break;case 101:this.$=a[s-4],i.setClass(a[s-2],a[s]);break;case 102:case 110:this.$=a[s-1],i.setClickEvent(a[s-1],a[s]);break;case 103:case 111:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-2]),i.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 105:this.$=a[s-4],i.setClickEvent(a[s-4],a[s-3],a[s-2]),i.setTooltip(a[s-4],a[s]);break;case 106:case 112:this.$=a[s-1],i.setLink(a[s-1],a[s]);break;case 107:case 113:this.$=a[s-3],i.setLink(a[s-3],a[s-2]),i.setTooltip(a[s-3],a[s]);break;case 108:case 114:this.$=a[s-3],i.setLink(a[s-3],a[s-2],a[s]);break;case 109:case 115:this.$=a[s-5],i.setLink(a[s-5],a[s-4],a[s]),i.setTooltip(a[s-5],a[s-2]);break;case 116:this.$=a[s-4],i.addVertex(a[s-2],void 0,void 0,a[s]);break;case 117:case 119:this.$=a[s-4],i.updateLink(a[s-2],a[s]);break;case 118:this.$=a[s-4],i.updateLink([a[s-2]],a[s]);break;case 120:this.$=a[s-8],i.updateLinkInterpolate([a[s-6]],a[s-2]),i.updateLink([a[s-6]],a[s]);break;case 121:this.$=a[s-8],i.updateLinkInterpolate(a[s-6],a[s-2]),i.updateLink(a[s-6],a[s]);break;case 122:this.$=a[s-6],i.updateLinkInterpolate([a[s-4]],a[s]);break;case 123:this.$=a[s-6],i.updateLinkInterpolate(a[s-4],a[s]);break;case 125:case 127:a[s-2].push(a[s]),this.$=a[s-2];break;case 129:this.$=a[s-1]+a[s];break;case 157:this.$="v";break;case 158:this.$="-";break;case 159:this.$={stmt:"dir",value:"TB"};break;case 160:this.$={stmt:"dir",value:"BT"};break;case 161:this.$={stmt:"dir",value:"RL"};break;case 162:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:i,24:r},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:i,24:r},t(a,o,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:i,24:r},{16:15,21:n,22:i,24:r},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{8:64,10:[1,65],15:$},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,68],21:[1,69],22:z,27:67,30:70},t(q,[2,11]),t(q,[2,12]),t(q,[2,13]),t(q,[2,14]),t(q,[2,15]),t(q,[2,16]),{9:72,20:H,21:U,23:G,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:H,21:U,23:G},{9:81,20:H,21:U,23:G},{9:82,20:H,21:U,23:G},{9:83,20:H,21:U,23:G},{9:84,20:H,21:U,23:G},{9:86,20:H,21:U,22:[1,85],23:G},t(q,[2,44]),{45:[1,87]},{47:[1,88]},t(q,[2,47]),t(Y,[2,54],{30:89,22:z}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:Z,52:W,66:K,67:X,84:[1,97],92:V,98:96,99:[1,94],101:[1,95],106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(q,[2,159]),t(q,[2,160]),t(q,[2,161]),t(q,[2,162]),t(ut,[2,55],{53:[1,116]}),t(lt,[2,74],{117:129,40:[1,117],52:p,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:b,67:w,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],92:_,96:A,106:E,107:T,110:C,112:S,113:I,123:N,124:P,125:B,126:F,127:R,128:j}),t(ht,[2,151]),t(ht,[2,176]),t(ht,[2,177]),t(ht,[2,178]),t(ht,[2,179]),t(ht,[2,180]),t(ht,[2,181]),t(ht,[2,182]),t(ht,[2,183]),t(ht,[2,184]),t(ht,[2,185]),t(ht,[2,186]),t(ht,[2,187]),t(ht,[2,188]),t(ht,[2,189]),t(ht,[2,190]),t(ht,[2,191]),{9:130,20:H,21:U,23:G},{11:131,14:[1,132]},t(ft,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,133]},t(dt,[2,34],{30:134,22:z}),t(q,[2,35]),{50:135,51:45,52:p,54:46,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},t(gt,[2,48]),t(gt,[2,49]),t(gt,[2,50]),t(pt,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:bt,24:wt,26:mt,38:yt,39:139,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t([52,66,67,68,80,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,80]),t(q,[2,36]),t(q,[2,37]),t(q,[2,38]),t(q,[2,39]),t(q,[2,40]),{22:bt,24:wt,26:mt,38:yt,39:164,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(Bt,o,{17:165}),t(q,[2,45]),t(q,[2,46]),t(Y,[2,53],{52:Ft}),{26:Z,52:W,66:K,67:X,92:V,98:167,103:[1,168],106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{96:[1,169],104:170,106:[1,171]},{26:Z,52:W,66:K,67:X,92:V,96:[1,172],98:173,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{26:Z,52:W,66:K,67:X,92:V,98:174,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,102],{22:[1,175],100:[1,176]}),t(ft,[2,106],{22:[1,177]}),t(ft,[2,110],{116:100,118:179,22:[1,178],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,112],{22:[1,180]}),t(Rt,[2,153]),t(Rt,[2,155]),t(Rt,[2,156]),t(Rt,[2,157]),t(Rt,[2,158]),t(jt,[2,163]),t(jt,[2,164]),t(jt,[2,165]),t(jt,[2,166]),t(jt,[2,167]),t(jt,[2,168]),t(jt,[2,169]),t(jt,[2,170]),t(jt,[2,171]),t(jt,[2,172]),t(jt,[2,173]),t(jt,[2,174]),t(jt,[2,175]),{52:p,54:181,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},{22:bt,24:wt,26:mt,38:yt,39:182,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:183,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:185,42:vt,52:W,57:[1,184],66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:186,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:187,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:188,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{66:[1,189]},{22:bt,24:wt,26:mt,38:yt,39:190,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:191,42:vt,52:W,66:K,67:X,71:[1,192],73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:193,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:194,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:195,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ht,[2,152]),t($t,[2,3]),{8:196,15:$},{15:[2,7]},t(a,[2,28]),t(dt,[2,33]),t(Y,[2,51],{30:197,22:z}),t(pt,[2,75],{22:[1,198]}),{22:[1,199]},{22:bt,24:wt,26:mt,38:yt,39:200,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,81:kt,82:[1,201],83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(jt,[2,82]),t(jt,[2,84]),t(jt,[2,85]),t(jt,[2,141]),t(jt,[2,142]),t(jt,[2,143]),t(jt,[2,144]),t(jt,[2,145]),t(jt,[2,146]),t(jt,[2,147]),t(jt,[2,148]),t(jt,[2,149]),t(jt,[2,150]),t(jt,[2,86]),t(jt,[2,87]),t(jt,[2,88]),t(jt,[2,89]),t(jt,[2,90]),t(jt,[2,91]),t(jt,[2,92]),t(jt,[2,93]),t(jt,[2,94]),t(jt,[2,95]),t(jt,[2,96]),{9:204,20:H,21:U,22:bt,23:G,24:wt,26:mt,38:yt,40:[1,203],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,205],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{22:z,30:206},{22:[1,207],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:[1,208]},{22:[1,209]},{22:[1,210],107:[1,211]},t(zt,[2,124]),{22:[1,212]},{22:[1,213],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:[1,214],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{84:[1,215]},t(ft,[2,104],{22:[1,216]}),{84:[1,217],102:[1,218]},{84:[1,219]},t(Rt,[2,154]),{84:[1,220],102:[1,221]},t(ut,[2,57],{117:129,52:p,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,123:N,124:P,125:B,126:F,127:R,128:j}),{22:bt,24:wt,26:mt,38:yt,41:[1,222],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,56:[1,223],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:224,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,58:[1,225],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,60:[1,226],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,62:[1,227],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,64:[1,228],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{67:[1,229]},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,70:[1,230],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,72:[1,231],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:232,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,41:[1,233],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,75:[1,234],77:[1,235],81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,75:[1,237],77:[1,236],81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{9:238,20:H,21:U,23:G},t(Y,[2,52],{52:Ft}),t(pt,[2,77]),t(pt,[2,76]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,68:[1,239],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(pt,[2,79]),t(jt,[2,83]),{22:bt,24:wt,26:mt,38:yt,39:240,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(Bt,o,{17:241}),t(q,[2,43]),{51:242,52:p,54:46,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},{22:qt,66:Ht,67:Ut,87:Gt,97:243,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:257,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:258,103:Yt,105:[1,259],106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:260,103:Yt,105:[1,261],106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{106:[1,262]},{22:qt,66:Ht,67:Ut,87:Gt,97:263,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:264,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{26:Z,52:W,66:K,67:X,92:V,98:265,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,103]),{84:[1,266]},t(ft,[2,107],{22:[1,267]}),t(ft,[2,108]),t(ft,[2,111]),t(ft,[2,113],{22:[1,268]}),t(ft,[2,114]),t(lt,[2,58]),t(lt,[2,59]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,58:[1,269],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,66]),t(lt,[2,61]),t(lt,[2,62]),t(lt,[2,63]),{66:[1,270]},t(lt,[2,65]),t(lt,[2,67]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,72:[1,271],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,72]),t(lt,[2,71]),t(lt,[2,73]),t($t,[2,4]),t([22,52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,81]),{22:bt,24:wt,26:mt,38:yt,41:[1,272],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,273],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},t(ut,[2,56]),t(ft,[2,116],{107:Jt}),t(te,[2,126],{109:275,22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt}),t(ee,[2,128]),t(ee,[2,130]),t(ee,[2,131]),t(ee,[2,132]),t(ee,[2,133]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ft,[2,117],{107:Jt}),t(ft,[2,118],{107:Jt}),{22:[1,276]},t(ft,[2,119],{107:Jt}),{22:[1,277]},t(zt,[2,125]),t(ft,[2,99],{107:Jt}),t(ft,[2,100],{107:Jt}),t(ft,[2,101],{116:100,118:179,26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,105]),{102:[1,278]},{102:[1,279]},{58:[1,280]},{68:[1,281]},{72:[1,282]},{9:283,20:H,21:U,23:G},t(q,[2,42]),{22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,108:284,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},t(ee,[2,129]),{26:Z,52:W,66:K,67:X,92:V,98:285,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{26:Z,52:W,66:K,67:X,92:V,98:286,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,109]),t(ft,[2,115]),t(lt,[2,60]),{22:bt,24:wt,26:mt,38:yt,39:287,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,68]),t(Bt,o,{17:288}),t(te,[2,127],{109:275,22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt}),t(ft,[2,122],{116:100,118:179,22:[1,289],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,123],{116:100,118:179,22:[1,290],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),{22:bt,24:wt,26:mt,38:yt,41:[1,291],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,292],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{22:qt,66:Ht,67:Ut,87:Gt,97:293,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:294,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},t(lt,[2,64]),t(q,[2,41]),t(ft,[2,120],{107:Jt}),t(ft,[2,121],{107:Jt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},ie={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:return this.begin("acc_title"),44;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),46;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 14:case 16:case 25:case 28:case 31:case 34:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:this.begin("md_string");break;case 13:return"MD_STR";case 15:this.begin("string");break;case 17:return"STR";case 18:return 87;case 19:return 96;case 20:return 88;case 21:return 105;case 22:return 89;case 23:return 90;case 24:this.begin("href");break;case 26:return 101;case 27:this.begin("callbackname");break;case 29:this.popState(),this.begin("callbackargs");break;case 30:return 99;case 32:return 100;case 33:this.begin("click");break;case 35:return 91;case 36:case 37:case 38:return t.lex.firstGraph()&&this.begin("dir"),24;case 39:return 38;case 40:return 42;case 41:case 42:case 43:case 44:return 102;case 45:return this.popState(),25;case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:return this.popState(),26;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 122;case 60:return 106;case 61:return 112;case 62:return 53;case 63:return 67;case 64:return 52;case 65:return 20;case 66:return 107;case 67:return 127;case 68:case 69:case 70:case 71:return 82;case 72:case 73:case 74:return 81;case 75:return 59;case 76:return 60;case 77:return 61;case 78:return 62;case 79:return 63;case 80:return 64;case 81:return 65;case 82:return 69;case 83:return 70;case 84:return 55;case 85:return 56;case 86:return 110;case 87:return 113;case 88:return 128;case 89:return 125;case 90:return 114;case 91:case 92:return 126;case 93:return 115;case 94:return 73;case 95:return 93;case 96:return"SEP";case 97:return 92;case 98:return 66;case 99:return 75;case 100:return 74;case 101:return 77;case 102:return 76;case 103:return 123;case 104:return 124;case 105:return 68;case 106:return 57;case 107:return 58;case 108:return 40;case 109:return 41;case 110:return 71;case 111:return 72;case 112:return 134;case 113:return 21;case 114:return 22;case 115:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\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\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\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\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-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\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])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[31,32],inclusive:!1},callbackname:{rules:[28,29,30],inclusive:!1},href:{rules:[25,26],inclusive:!1},click:{rules:[34,35],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[45,46,47,48,49,50,51,52,53,54,55],inclusive:!1},acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},md_string:{rules:[13,14],inclusive:!1},string:{rules:[16,17],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,15,18,19,20,21,22,23,24,27,33,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],inclusive:!0}}};function re(){this.yy={}}return ne.lexer=ie,re.prototype=ne,ne.Parser=re,new re}();a.parser=a;const o=a;let s,c,u=0,l=(0,r.c)(),h={},f=[],d={},g=[],p={},b={},w=0,m=!0,y=[];const v=t=>r.e.sanitizeText(t,l),x=function(t,e,n){r.m.parseDirective(this,t,e,n)},k=function(t){const e=Object.keys(h);for(const n of e)if(h[n].id===t)return h[n].domId;return t},_=function(t,e,n,i,a,o,s={}){let c,f=t;void 0!==f&&0!==f.trim().length&&(void 0===h[f]&&(h[f]={id:f,labelType:"text",domId:"flowchart-"+f+"-"+u,styles:[],classes:[]}),u++,void 0!==e?(l=(0,r.c)(),c=v(e.text.trim()),h[f].labelType=e.type,'"'===c[0]&&'"'===c[c.length-1]&&(c=c.substring(1,c.length-1)),h[f].text=c):void 0===h[f].text&&(h[f].text=t),void 0!==n&&(h[f].type=n),null!=i&&i.forEach((function(t){h[f].styles.push(t)})),null!=a&&a.forEach((function(t){h[f].classes.push(t)})),void 0!==o&&(h[f].dir=o),void 0===h[f].props?h[f].props=s:void 0!==s&&Object.assign(h[f].props,s))},A=function(t,e,n){const i={start:t,end:e,type:void 0,text:"",labelType:"text"};r.l.info("abc78 Got edge...",i);const a=n.text;void 0!==a&&(i.text=v(a.text.trim()),'"'===i.text[0]&&'"'===i.text[i.text.length-1]&&(i.text=i.text.substring(1,i.text.length-1)),i.labelType=a.type),void 0!==n&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length),f.push(i)},E=function(t,e,n){let i,a;for(r.l.info("addLink (abc78)",t,e,n),i=0;i/)&&(s="LR"),s.match(/.*v/)&&(s="TB"),"TD"===s&&(s="TB")},M=function(t,e){t.split(",").forEach((function(t){let n=t;void 0!==h[n]&&h[n].classes.push(e),void 0!==p[n]&&p[n].classes.push(e)}))},D=function(t,e,n){t.split(",").forEach((function(t){void 0!==h[t]&&(h[t].link=r.u.formatUrl(e,l),h[t].linkTarget=n)})),M(t,"clickable")},O=function(t){return b[t]},L=function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){let i=k(t);if("loose"!==(0,r.c)().securityLevel)return;if(void 0===e)return;let a=[];if("string"==typeof n){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,i.Ys)(this).classed("hover",!1)}))};y.push(j);const $=function(t="gen-1"){h={},d={},f=[],y=[j],g=[],p={},w=0,b=[],m=!0,c=t,(0,r.v)()},z=t=>{c=t||"gen-2"},q=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},H=function(t,e,n){let i=t.text.trim(),a=n.text;t===n&&n.text.match(/\s/)&&(i=void 0);let o=[];const{nodeList:s,dir:u}=function(t){const e={boolean:{},number:{},string:{}},n=[];let i;return{nodeList:t.filter((function(t){const r=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(r in e?!e[r].hasOwnProperty(t)&&(e[r][t]=!0):!n.includes(t)&&n.push(t))})),dir:i}}(o.concat.apply(o,e));if(o=s,"gen-1"===c)for(let t=0;t2e3)return;if(Y[G]=e,g[e].id===t)return{result:!0,count:0};let i=0,r=1;for(;i=0){const n=Z(t,e);if(n.result)return{result:!0,count:r+n.count};r+=n.count}i+=1}return{result:!1,count:r}},W=function(t){return Y[t]},K=function(){G=-1,g.length>0&&Z("none",g.length-1)},X=function(){return g},V=()=>!!m&&(m=!1,!0),Q=(t,e)=>{const n=(t=>{const e=t.trim();let n=e.slice(0,-1),i="arrow_open";switch(e.slice(-1)){case"x":i="arrow_cross","x"===e[0]&&(i="double_"+i,n=n.slice(1));break;case">":i="arrow_point","<"===e[0]&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle","o"===e[0]&&(i="double_"+i,n=n.slice(1))}let r="normal",a=n.length-1;"="===n[0]&&(r="thick"),"~"===n[0]&&(r="invisible");let o=((t,e)=>{const n=e.length;let i=0;for(let r=0;r{let e=t.trim(),n="arrow_open";switch(e[0]){case"<":n="arrow_point",e=e.slice(1);break;case"x":n="arrow_cross",e=e.slice(1);break;case"o":n="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:n,stroke:i}})(e),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=n.length,i}return n},J=(t,e)=>{let n=!1;return t.forEach((t=>{t.nodes.indexOf(e)>=0&&(n=!0)})),n},tt=(t,e)=>{const n=[];return t.nodes.forEach(((i,r)=>{J(e,i)||n.push(t.nodes[r])})),{nodes:n}},et={firstGraph:V},nt={parseDirective:x,defaultConfig:()=>r.G.flowchart,setAccTitle:r.s,getAccTitle:r.g,getAccDescription:r.a,setAccDescription:r.b,addVertex:_,lookUpDomId:k,addLink:E,updateLinkInterpolate:T,updateLink:C,addClass:S,setDirection:I,setClass:M,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(b["gen-1"===c?k(t):t]=v(e))}))},getTooltip:O,setClickEvent:L,setLink:D,bindFunctions:N,getDirection:P,getVertices:B,getEdges:F,getClasses:R,clear:$,setGen:z,defaultStyle:q,addSubGraph:H,getDepthFirstPos:W,indexNodes:K,getSubGraphs:X,destructLink:Q,lex:et,exists:J,makeUniq:tt,setDiagramTitle:r.r,getDiagramTitle:r.t},it=Object.freeze(Object.defineProperty({__proto__:null,addClass:S,addLink:E,addSingleLink:A,addSubGraph:H,addVertex:_,bindFunctions:N,clear:$,default:nt,defaultStyle:q,destructLink:Q,firstGraph:V,getClasses:R,getDepthFirstPos:W,getDirection:P,getEdges:F,getSubGraphs:X,getTooltip:O,getVertices:B,indexNodes:K,lex:et,lookUpDomId:k,parseDirective:x,setClass:M,setClickEvent:L,setDirection:I,setGen:z,setLink:D,updateLink:C,updateLinkInterpolate:T},Symbol.toStringTag,{value:"Module"}))},797:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return c}});var i=n(895),r=(n(8066),n(1504));n(8540),n(4734),n(9999),n(6227),n(1768),n(6421);n(8137);n(7474),n(6460);n(9980);r.c_6;var a=n(8489);n(7530),n(2510),n(6951),n(835);const o={},s=function(t){const e=Object.keys(t);for(const n of e)o[n]=t[n]},c={parser:i.p,db:i.f,renderer:a.f,styles:a.a,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,s(t.flowchart),i.f.clear(),i.f.setGen("gen-1")}}},8832:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return o}});var i=n(895),r=n(8489),a=n(8540);n(1504),n(8066),n(1768),n(835),n(7530),n(2510),n(6951);const o={parser:i.p,db:i.f,renderer:r.f,styles:r.a,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,a.q)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),r.f.setConf(t.flowchart),i.f.clear(),i.f.setGen("gen-2")}}},5248:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return x}});var i=n(895),r=n(1504),a=n(3430),o=n(8540),s=n(7697);n(7530),n(2510),n(6951);const c=new s;let u={};const l={};let h={};const f=(t,e,n)=>{const i={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return i.TD=i.TB,o.l.info("abc88",n,e,t),i[n][e][t]},d=(t,e,n)=>{if(o.l.info("getNextPort abc88",{node:t,edgeDirection:e,graphDirection:n}),!u[t])switch(n){case"TB":case"TD":u[t]={inPosition:"north",outPosition:"south"};break;case"BT":u[t]={inPosition:"south",outPosition:"north"};break;case"RL":u[t]={inPosition:"east",outPosition:"west"};break;case"LR":u[t]={inPosition:"west",outPosition:"east"}}const i="in"===e?u[t].inPosition:u[t].outPosition;return"in"===e?u[t].inPosition=f(u[t].inPosition,e,n):u[t].outPosition=f(u[t].outPosition,e,n),i},g=function(t,e,n,i){o.l.info("abc78 edges = ",t);const s=i.insert("g").attr("class","edgeLabels");let c,u,f={},g=e.db.getDirection();if(void 0!==t.defaultStyle){const e=(0,o.k)(t.defaultStyle);c=e.style,u=e.labelStyle}return t.forEach((function(e){const i="L-"+e.start+"-"+e.end;void 0===f[i]?(f[i]=0,o.l.info("abc78 new entry",i,f[i])):(f[i]++,o.l.info("abc78 new entry",i,f[i]));let p=i+"-"+f[i];o.l.info("abc78 new link id to be used is",i,p,f[i]);const b="LS-"+e.start,w="LE-"+e.end,m={style:"",labelStyle:""};switch(m.minlen=e.length||1,"arrow_open"===e.type?m.arrowhead="none":m.arrowhead="normal",m.arrowTypeStart="arrow_open",m.arrowTypeEnd="arrow_open",e.type){case"double_arrow_cross":m.arrowTypeStart="arrow_cross";case"arrow_cross":m.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":m.arrowTypeStart="arrow_point";case"arrow_point":m.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":m.arrowTypeStart="arrow_circle";case"arrow_circle":m.arrowTypeEnd="arrow_circle"}let y="",v="";switch(e.stroke){case"normal":y="fill:none;",void 0!==c&&(y=c),void 0!==u&&(v=u),m.thickness="normal",m.pattern="solid";break;case"dotted":m.thickness="normal",m.pattern="dotted",m.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":m.thickness="thick",m.pattern="solid",m.style="stroke-width: 3.5px;fill:none;"}if(void 0!==e.style){const t=(0,o.k)(e.style);y=t.style,v=t.labelStyle}m.style=m.style+=y,m.labelStyle=m.labelStyle+=v,void 0!==e.interpolate?m.curve=(0,o.o)(e.interpolate,r.c_6):void 0!==t.defaultInterpolate?m.curve=(0,o.o)(t.defaultInterpolate,r.c_6):m.curve=(0,o.o)(l.curve,r.c_6),void 0===e.text?void 0!==e.style&&(m.arrowheadStyle="fill: #333"):(m.arrowheadStyle="fill: #333",m.labelpos="c"),m.labelType=e.labelType,m.label=e.text.replace(o.e.lineBreakRegex,"\n"),void 0===e.style&&(m.style=m.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),m.labelStyle=m.labelStyle.replace("color:","fill:"),m.id=p,m.classes="flowchart-link "+b+" "+w;const x=(0,a.f)(s,m),{source:k,target:_,sourceId:A,targetId:E}=((t,e)=>{let n=t.start,i=t.end;const r=n,a=i,o=h[n],s=h[i];return o&&s?("diamond"===o.type&&(n=`${n}-${d(n,"out",e)}`),"diamond"===s.type&&(i=`${i}-${d(i,"in",e)}`),{source:n,target:i,sourceId:r,targetId:a}):{source:n,target:i}})(e,g);o.l.debug("abc78 source and target",k,_),n.edges.push({id:"e"+e.start+e.end,sources:[k],targets:[_],sourceId:A,targetId:E,labelEl:x,labels:[{width:m.width,height:m.height,orgWidth:m.width,orgHeight:m.height,text:m.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:m})})),n},p=function(t,e,n){const i=((t,e,n)=>{const{parentById:i}=n,r=new Set;let a=t;for(;a;){if(r.add(a),a===e)return a;a=i[a]}for(a=e;a;){if(r.has(a))return a;a=i[a]}return"root"})(t,e,n);if(void 0===i||"root"===i)return{x:0,y:0};const r=h[i].offset;return{x:r.posX,y:r.posY}},b=function(t,e,n,i,a){const o=p(e.sourceId,e.targetId,a),s=e.sections[0].startPoint,c=e.sections[0].endPoint,u=(e.sections[0].bendPoints?e.sections[0].bendPoints:[]).map((t=>[t.x+o.x,t.y+o.y])),l=[[s.x+o.x,s.y+o.y],...u,[c.x+o.x,c.y+o.y]],h=(0,r.jvg)().curve(r.c_6),f=t.insert("path").attr("d",h(l)).attr("class","path "+n.classes).attr("fill","none"),d=t.insert("g").attr("class","edgeLabel"),g=(0,r.Ys)(d.node().appendChild(e.labelEl)),b=g.node().firstChild.getBoundingClientRect();g.attr("width",b.width),g.attr("height",b.height),d.attr("transform",`translate(${e.labels[0].x+o.x}, ${e.labels[0].y+o.y})`),function(t,e,n,i){let r="";switch(i&&(r=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,r=r.replace(/\(/g,"\\("),r=r.replace(/\)/g,"\\)")),e.arrowTypeStart){case"arrow_cross":t.attr("marker-start","url("+r+"#"+n+"-crossStart)");break;case"arrow_point":t.attr("marker-start","url("+r+"#"+n+"-pointStart)");break;case"arrow_barb":t.attr("marker-start","url("+r+"#"+n+"-barbStart)");break;case"arrow_circle":t.attr("marker-start","url("+r+"#"+n+"-circleStart)");break;case"aggregation":t.attr("marker-start","url("+r+"#"+n+"-aggregationStart)");break;case"extension":t.attr("marker-start","url("+r+"#"+n+"-extensionStart)");break;case"composition":t.attr("marker-start","url("+r+"#"+n+"-compositionStart)");break;case"dependency":t.attr("marker-start","url("+r+"#"+n+"-dependencyStart)");break;case"lollipop":t.attr("marker-start","url("+r+"#"+n+"-lollipopStart)")}switch(e.arrowTypeEnd){case"arrow_cross":t.attr("marker-end","url("+r+"#"+n+"-crossEnd)");break;case"arrow_point":t.attr("marker-end","url("+r+"#"+n+"-pointEnd)");break;case"arrow_barb":t.attr("marker-end","url("+r+"#"+n+"-barbEnd)");break;case"arrow_circle":t.attr("marker-end","url("+r+"#"+n+"-circleEnd)");break;case"aggregation":t.attr("marker-end","url("+r+"#"+n+"-aggregationEnd)");break;case"extension":t.attr("marker-end","url("+r+"#"+n+"-extensionEnd)");break;case"composition":t.attr("marker-end","url("+r+"#"+n+"-compositionEnd)");break;case"dependency":t.attr("marker-end","url("+r+"#"+n+"-dependencyEnd)");break;case"lollipop":t.attr("marker-end","url("+r+"#"+n+"-lollipopEnd)")}}(f,n,i.type,i.arrowMarkerAbsolute)},w=(t,e)=>{t.forEach((t=>{t.children||(t.children=[]);const n=e.childrenById[t.id];n&&n.forEach((e=>{t.children.push(h[e])})),w(t.children,e)}))},m=(t,e,n,i,r,a,s)=>{n.forEach((function(n){if(n)if(h[n.id].offset={posX:n.x+t,posY:n.y+e,x:t,y:e,depth:s,width:n.width,height:n.height},"group"===n.type){const i=r.insert("g").attr("class","subgraph");i.insert("rect").attr("class","subgraph subgraph-lvl-"+s%5+" node").attr("x",n.x+t).attr("y",n.y+e).attr("width",n.width).attr("height",n.height);const a=i.insert("g").attr("class","label"),c=(0,o.c)().flowchart.htmlLabels?n.labelData.width/2:0;a.attr("transform",`translate(${n.labels[0].x+t+n.x+c}, ${n.labels[0].y+e+n.y+3})`),a.node().appendChild(n.labelData.labelNode),o.l.info("Id (UGH)= ",n.type,n.labels)}else o.l.info("Id (UGH)= ",n.id),n.el.attr("transform",`translate(${n.x+t+n.width/2}, ${n.y+e+n.height/2})`)})),n.forEach((function(n){n&&"group"===n.type&&m(t+n.x,e+n.y,n.children,i,r,a,s+1)}))},y={getClasses:function(t,e){o.l.info("Extracting classes"),e.db.clear("ver-2");try{return e.parse(t),e.db.getClasses()}catch(t){return{}}},draw:async function(t,e,n,i){var s;i.db.clear(),h={},u={},i.db.setGen("gen-2"),i.parser.parse(t);const l=(0,r.Ys)("body").append("div").attr("style","height:400px").attr("id","cy");let f={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(o.l.info("Drawing flowchart using v3 renderer",c),i.db.getDirection()){case"BT":f.layoutOptions["elk.direction"]="UP";break;case"TB":f.layoutOptions["elk.direction"]="DOWN";break;case"LR":f.layoutOptions["elk.direction"]="RIGHT";break;case"RL":f.layoutOptions["elk.direction"]="LEFT"}const{securityLevel:d,flowchart:p}=(0,o.c)();let y;"sandbox"===d&&(y=(0,r.Ys)("#i"+e));const v="sandbox"===d?(0,r.Ys)(y.nodes()[0].contentDocument.body):(0,r.Ys)("body"),x="sandbox"===d?y.nodes()[0].contentDocument:document,k=v.select(`[id="${e}"]`);(0,a.a)(k,["point","circle","cross"],i.type,i.arrowMarkerAbsolute);const _=i.db.getVertices();let A;const E=i.db.getSubGraphs();o.l.info("Subgraphs - ",E);for(let t=E.length-1;t>=0;t--)A=E[t],i.db.addVertex(A.id,{text:A.title,type:A.labelType},"group",void 0,A.classes,A.dir);const T=k.insert("g").attr("class","subgraphs"),C=function(t){const e={parentById:{},childrenById:{}},n=t.getSubGraphs();return o.l.info("Subgraphs - ",n),n.forEach((function(t){t.nodes.forEach((function(n){e.parentById[n]=t.id,void 0===e.childrenById[t.id]&&(e.childrenById[t.id]=[]),e.childrenById[t.id].push(n)}))})),n.forEach((function(t){t.id,void 0!==e.parentById[t.id]&&e.parentById[t.id]})),e}(i.db);f=await async function(t,e,n,i,r,s,c){const u=n.select(`[id="${e}"]`).insert("g").attr("class","nodes"),l=Object.keys(t);return await Promise.all(l.map((async function(e){const n=t[e];let c="default";n.classes.length>0&&(c=n.classes.join(" ")),c+=" flowchart-label";const l=(0,o.k)(n.styles);let f=void 0!==n.text?n.text:n.id;const d={width:0,height:0},g=[{id:n.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:n.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:n.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:n.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let p=0,b="",w={};switch(n.type){case"round":p=5,b="rect";break;case"square":case"group":default:b="rect";break;case"diamond":b="question",w={portConstraints:"FIXED_SIDE"};break;case"hexagon":b="hexagon";break;case"odd":case"odd_right":b="rect_left_inv_arrow";break;case"lean_right":b="lean_right";break;case"lean_left":b="lean_left";break;case"trapezoid":b="trapezoid";break;case"inv_trapezoid":b="inv_trapezoid";break;case"circle":b="circle";break;case"ellipse":b="ellipse";break;case"stadium":b="stadium";break;case"subroutine":b="subroutine";break;case"cylinder":b="cylinder";break;case"doublecircle":b="doublecircle"}const m={labelStyle:l.labelStyle,shape:b,labelText:f,labelType:n.labelType,rx:p,ry:p,class:c,style:l.style,id:n.id,link:n.link,linkTarget:n.linkTarget,tooltip:r.db.getTooltip(n.id)||"",domId:r.db.lookUpDomId(n.id),haveCallback:n.haveCallback,width:"group"===n.type?500:void 0,dir:n.dir,type:n.type,props:n.props,padding:(0,o.c)().flowchart.padding};let y,v;if("group"!==m.type)v=await(0,a.e)(u,m,n.dir),y=v.node().getBBox();else{i.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:t,bbox:e}=await(0,a.l)(u,m,void 0,!0);d.width=e.width,d.wrappingWidth=(0,o.c)().flowchart.wrappingWidth,d.height=e.height,d.labelNode=t.node(),m.labelData=d}const x={id:n.id,ports:"diamond"===n.type?g:[],layoutOptions:w,labelText:f,labelData:d,domId:r.db.lookUpDomId(n.id),width:null==y?void 0:y.width,height:null==y?void 0:y.height,type:n.type,el:v,parent:s.parentById[n.id]};h[m.id]=x}))),c}(_,e,v,x,i,C,f);const S=k.insert("g").attr("class","edges edgePath"),I=i.db.getEdges();f=g(I,i,f,k);Object.keys(h).forEach((t=>{const e=h[t];e.parent||f.children.push(e),void 0!==C.childrenById[t]&&(e.labels=[{text:e.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:e.labelData.width,height:e.labelData.height}],delete e.x,delete e.y,delete e.width,delete e.height)})),w(f.children,C),o.l.info("after layout",JSON.stringify(f,null,2));const M=await c.layout(f);m(0,0,M.children,k,T,i,0),o.l.info("after layout",M),null==(s=M.edges)||s.map((t=>{b(S,t,t.edgeData,i,C)})),(0,o.p)({},k,p.diagramPadding,p.useMaxWidth),l.remove()}},v=t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.85;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n .subgraph {\n stroke-width:2;\n rx:3;\n }\n // .subgraph-lvl-1 {\n // fill:#ccc;\n // // stroke:black;\n // }\n\n .flowchart-label text {\n text-anchor: middle;\n }\n\n ${(t=>{let e="";for(let n=0;n<5;n++)e+=`\n .subgraph-lvl-${n} {\n fill: ${t[`surface${n}`]};\n stroke: ${t[`surfacePeer${n}`]};\n }\n `;return e})(t)}\n`,x={db:i.d,renderer:y,parser:i.p,styles:v}},2418:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return W}});var i=n(2510),r=n(7530),a=n(7547),o=n(5466),s=n(7664),c=n(8540),u=n(1504),l=(n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,23],d=[1,24],g=[1,25],p=[1,26],b=[1,27],w=[1,29],m=[1,31],y=[1,34],v=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],x={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 2:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 9:i.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:i.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:i.TopAxis(),this.$=a[s].substr(8);break;case 12:i.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 13:i.setTickInterval(a[s].substr(13)),this.$=a[s].substr(13);break;case 14:i.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 15:i.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 16:i.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 17:i.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 18:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 19:case 20:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 21:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 23:i.addTask(a[s-1],a[s]),this.$="task";break;case 27:this.$=a[s-1],i.setClickEvent(a[s-1],a[s],null);break;case 28:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 29:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],null),i.setLink(a[s-2],a[s]);break;case 30:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-2],a[s-1]),i.setLink(a[s-3],a[s]);break;case 31:this.$=a[s-2],i.setClickEvent(a[s-2],a[s],null),i.setLink(a[s-2],a[s-1]);break;case 32:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-1],a[s]),i.setLink(a[s-3],a[s-2]);break;case 33:this.$=a[s-1],i.setLink(a[s-1],a[s]);break;case 34:case 40:this.$=a[s-1]+" "+a[s];break;case 35:case 36:case 38:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 37:case 39:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 41:i.parseDirective("%%{","open_directive");break;case 42:i.parseDirective(a[s],"type_directive");break;case 43:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 44:i.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,30:4,40:n},{1:[3]},{3:6,4:2,5:e,30:4,40:n},t(i,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:r,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:d,23:g,25:p,26:b,27:28,28:w,30:4,35:m,40:n},{32:32,33:[1,33],43:y},t([33,43],[2,42]),t(i,[2,8],{1:[2,2]}),t(i,[2,4]),{4:30,10:35,12:r,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:d,23:g,25:p,26:b,27:28,28:w,30:4,35:m,40:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),t(i,[2,12]),t(i,[2,13]),t(i,[2,14]),t(i,[2,15]),t(i,[2,16]),t(i,[2,17]),{22:[1,36]},{24:[1,37]},t(i,[2,20]),t(i,[2,21]),t(i,[2,22]),{29:[1,38]},t(i,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},t(i,[2,5]),t(i,[2,18]),t(i,[2,19]),t(i,[2,23]),t(i,[2,27],{37:[1,44],38:[1,45]}),t(i,[2,33],{36:[1,46]}),t(v,[2,25]),{32:47,43:y},{43:[2,43]},t(i,[2,28],{38:[1,48]}),t(i,[2,29]),t(i,[2,31],{37:[1,49]}),{11:[1,50]},t(i,[2,30]),t(i,[2,32]),t(v,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 20:case 23:case 26:case 29:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:case 13:case 14:case 16:case 17:case 18:break;case 15:return 11;case 19:this.begin("href");break;case 21:return 38;case 22:this.begin("callbackname");break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 27:return 37;case 28:this.begin("click");break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};function _(){this.yy={}}return x.lexer=k,_.prototype=x,x.Parser=_,new _}());l.parser=l;const h=l;r.extend(a),r.extend(o),r.extend(s);let f,d="",g="",p="",b=[],w=[],m={},y=[],v=[],x="",k="";const _=["active","done","crit","milestone"];let A=[],E=!1,T=!1,C=0;const S=function(t,e,n,i){return!i.includes(t.format(e.trim()))&&(!!(t.isoWeekday()>=6&&n.includes("weekends"))||(!!n.includes(t.format("dddd").toLowerCase())||n.includes(t.format(e.trim()))))},I=function(t,e,n,i){if(!n.length||t.manualEndTime)return;let a,o;a=t.startTime instanceof Date?r(t.startTime):r(t.startTime,e,!0),a=a.add(1,"d"),o=t.endTime instanceof Date?r(t.endTime):r(t.endTime,e,!0);const[s,c]=M(a,o,e,n,i);t.endTime=s.toDate(),t.renderEndTime=c},M=function(t,e,n,i,r){let a=!1,o=null;for(;t<=e;)a||(o=e.toDate()),a=S(t,n,i,r),a&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,o]},D=function(t,e,n){n=n.trim();const i=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==i){let t=null;if(i[1].split(" ").forEach((function(e){let n=$(e);void 0!==n&&(t?n.endTime>t.endTime&&(t=n):t=n)})),t)return t.endTime;{const t=new Date;return t.setHours(0,0,0,0),t}}let a=r(n,e.trim(),!0);if(a.isValid())return a.toDate();{c.l.debug("Invalid date:"+n),c.l.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},O=function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},L=function(t,e,n,i=!1){n=n.trim();let a=r(n,e.trim(),!0);if(a.isValid())return i&&(a=a.add(1,"d")),a.toDate();let o=r(t);const[s,c]=O(n);if(!Number.isNaN(s)){const t=o.add(s,c);t.isValid()&&(o=t)}return o.toDate()};let N=0;const P=function(t){return void 0===t?(N+=1,"task"+N):t};let B,F,R=[];const j={},$=function(t){const e=j[t];return R[e]},z=function(){const t=function(t){const e=R[t];let n="";switch(R[t].raw.startTime.type){case"prevTaskEnd":{const t=$(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=D(0,d,R[t].raw.startTime.startData),n&&(R[t].startTime=n)}return R[t].startTime&&(R[t].endTime=L(R[t].startTime,d,R[t].raw.endTime.data,E),R[t].endTime&&(R[t].processed=!0,R[t].manualEndTime=r(R[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),I(R[t],d,w,b))),R[t].processed};let e=!0;for(const[n,i]of R.entries())t(n),e=e&&i.processed;return e},q=function(t,e){t.split(",").forEach((function(t){let n=$(t);void 0!==n&&n.classes.push(e)}))},H=function(t,e){A.push((function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",(function(){e()}))}),(function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",(function(){e()}))}))},U={parseDirective:function(t,e,n){c.m.parseDirective(this,t,e,n)},getConfig:()=>(0,c.c)().gantt,clear:function(){y=[],v=[],x="",A=[],N=0,B=void 0,F=void 0,R=[],d="",g="",k="",f=void 0,p="",b=[],w=[],E=!1,T=!1,C=0,m={},(0,c.v)()},setDateFormat:function(t){d=t},getDateFormat:function(){return d},enableInclusiveEndDates:function(){E=!0},endDatesAreInclusive:function(){return E},enableTopAxis:function(){T=!0},topAxisEnabled:function(){return T},setAxisFormat:function(t){g=t},getAxisFormat:function(){return g},setTickInterval:function(t){f=t},getTickInterval:function(){return f},setTodayMarker:function(t){p=t},getTodayMarker:function(){return p},setAccTitle:c.s,getAccTitle:c.g,setDiagramTitle:c.r,getDiagramTitle:c.t,setDisplayMode:function(t){k=t},getDisplayMode:function(){return k},setAccDescription:c.b,getAccDescription:c.a,addSection:function(t){x=t,y.push(t)},getSections:function(){return y},getTasks:function(){let t=z();let e=0;for(;!t&&e<10;)t=z(),e++;return v=R,v},addTask:function(t,e){const n={section:x,type:x,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},i=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),r={};G(i,r,_);for(let t=0;t{c.u.runFunc(e,...i)}))}(t,e,n)})),q(t,"clickable")},setLink:function(t,e){let n=e;"loose"!==(0,c.c)().securityLevel&&(n=(0,i.Nm)(e)),t.split(",").forEach((function(t){void 0!==$(t)&&(H(t,(()=>{window.open(n,"_self")})),m[t]=n)})),q(t,"clickable")},getLinks:function(){return m},bindFunctions:function(t){A.forEach((function(e){e(t)}))},parseDuration:O,isInvalidDate:S};function G(t,e,n){let i=!0;for(;i;)i=!1,n.forEach((function(n){const r=new RegExp("^\\s*"+n+"\\s*$");t[0].match(r)&&(e[n]=!0,t.shift(1),i=!0)}))}const Y=(t,e)=>{let n=[...t].map((()=>-1/0)),i=[...t].sort(((t,e)=>t.startTime-e.startTime||t.order-e.order)),r=0;for(const t of i)for(let i=0;i=n[i]){n[i]=t.endTime,t.order=i+e,i>r&&(r=i);break}return r};let Z;const W={parser:h,db:U,renderer:{setConf:function(){c.l.debug("Something is calling, setConf, remove the call")},draw:function(t,e,n,i){const a=(0,c.c)().gantt,o=(0,c.c)().securityLevel;let s;"sandbox"===o&&(s=(0,u.Ys)("#i"+e));const l="sandbox"===o?(0,u.Ys)(s.nodes()[0].contentDocument.body):(0,u.Ys)("body"),h="sandbox"===o?s.nodes()[0].contentDocument:document,f=h.getElementById(e);Z=f.parentElement.offsetWidth,void 0===Z&&(Z=1200),void 0!==a.useWidth&&(Z=a.useWidth);const d=i.db.getTasks();let g=[];for(const t of d)g.push(t.type);g=function(t){const e={},n=[];for(let i=0,r=t.length;ie.type===t)).length}f.setAttribute("viewBox","0 0 "+Z+" "+b);const w=l.select(`[id="${e}"]`),m=(0,u.Xf)().domain([(0,u.VV$)(d,(function(t){return t.startTime})),(0,u.Fp7)(d,(function(t){return t.endTime}))]).rangeRound([0,Z-a.leftPadding-a.rightPadding]);d.sort((function(t,e){const n=t.startTime,i=e.startTime;let r=0;return n>i?r=1:nt?Math.min(t,e):e),0),f=c.reduce(((t,{endTime:e})=>t?Math.max(t,e):e),0),d=i.db.getDateFormat();if(!h||!f)return;const g=[];let p=null,b=r(h);for(;b.valueOf()<=f;)i.db.isInvalidDate(b,d,u,l)?p?p.end=b:p={start:b,end:b}:p&&(g.push(p),p=null),b=b.add(1,"d");w.append("g").selectAll("rect").data(g).enter().append("rect").attr("id",(function(t){return"exclude-"+t.start.format("YYYY-MM-DD")})).attr("x",(function(t){return m(t.start)+n})).attr("y",a.gridLineStartPadding).attr("width",(function(t){const e=t.end.add(1,"day");return m(e)-m(t.start)})).attr("height",s-e-a.gridLineStartPadding).attr("transform-origin",(function(e,i){return(m(e.start)+n+.5*(m(e.end)-m(e.start))).toString()+"px "+(i*t+.5*s).toString()+"px"})).attr("class","exclude-range")})(l,f,d,0,o,t,i.db.getExcludes(),i.db.getIncludes()),function(t,e,n,r){let o=(0,u.LLu)(m).tickSize(-r+e+a.gridLineStartPadding).tickFormat((0,u.i$Z)(i.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));const s=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==s){const t=s[1];switch(s[2]){case"minute":o.ticks(u.Z_i.every(t));break;case"hour":o.ticks(u.WQD.every(t));break;case"day":o.ticks(u.rr1.every(t));break;case"week":o.ticks(u.NGh.every(t));break;case"month":o.ticks(u.F0B.every(t))}}if(w.append("g").attr("class","grid").attr("transform","translate("+t+", "+(r-50)+")").call(o).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,u.F5q)(m).tickSize(-r+e+a.gridLineStartPadding).tickFormat((0,u.i$Z)(i.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));if(null!==s){const t=s[1];switch(s[2]){case"minute":n.ticks(u.Z_i.every(t));break;case"hour":n.ticks(u.WQD.every(t));break;case"day":n.ticks(u.rr1.every(t));break;case"week":n.ticks(u.NGh.every(t));break;case"month":n.ticks(u.F0B.every(t))}}w.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(d,f,0,o),function(t,n,r,o,s,l,h){const f=[...new Set(t.map((t=>t.order)))].map((e=>t.find((t=>t.order===e))));w.append("g").selectAll("rect").data(f).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*n+r-2})).attr("width",(function(){return h-a.rightPadding/2})).attr("height",n).attr("class",(function(t){for(const[e,n]of g.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"}));const d=w.append("g").selectAll("rect").data(t).enter(),p=i.db.getLinks();d.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?m(t.startTime)+o+.5*(m(t.endTime)-m(t.startTime))-.5*s:m(t.startTime)+o})).attr("y",(function(t,e){return t.order*n+r})).attr("width",(function(t){return t.milestone?s:m(t.renderEndTime||t.endTime)-m(t.startTime)})).attr("height",s).attr("transform-origin",(function(t,e){return e=t.order,(m(t.startTime)+o+.5*(m(t.endTime)-m(t.startTime))).toString()+"px "+(e*n+r+.5*s).toString()+"px"})).attr("class",(function(t){const e="task";let n="";t.classes.length>0&&(n=t.classes.join(" "));let i=0;for(const[e,n]of g.entries())t.type===n&&(i=e%a.numberSectionStyles);let r="";return t.active?t.crit?r+=" activeCrit":r=" active":t.done?r=t.crit?" doneCrit":" done":t.crit&&(r+=" crit"),0===r.length&&(r=" task"),t.milestone&&(r=" milestone "+r),r+=i,r+=" "+n,e+r})),d.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",a.fontSize).attr("x",(function(t){let e=m(t.startTime),n=m(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(m(t.endTime)-m(t.startTime))-.5*s),t.milestone&&(n=e+s);const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>h?e+o-5:n+o+5:(n-e)/2+e+o})).attr("y",(function(t,e){return t.order*n+a.barHeight/2+(a.fontSize/2-2)+r})).attr("text-height",s).attr("class",(function(t){const e=m(t.startTime);let n=m(t.endTime);t.milestone&&(n=e+s);const i=this.getBBox().width;let r="";t.classes.length>0&&(r=t.classes.join(" "));let o=0;for(const[e,n]of g.entries())t.type===n&&(o=e%a.numberSectionStyles);let c="";return t.active&&(c=t.crit?"activeCritText"+o:"activeText"+o),t.done?c=t.crit?c+" doneCritText"+o:c+" doneText"+o:t.crit&&(c=c+" critText"+o),t.milestone&&(c+=" milestoneText"),i>n-e?n+i+1.5*a.leftPadding>h?r+" taskTextOutsideLeft taskTextOutside"+o+" "+c:r+" taskTextOutsideRight taskTextOutside"+o+" "+c+" width-"+i:r+" taskText taskText"+o+" "+c+" width-"+i}));if("sandbox"===(0,c.c)().securityLevel){let t;t=(0,u.Ys)("#i"+e);const n=t.nodes()[0].contentDocument;d.filter((function(t){return void 0!==p[t.id]})).each((function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const r=e.parentNode;var a=n.createElement("a");a.setAttribute("xlink:href",p[t.id]),a.setAttribute("target","_top"),r.appendChild(a),a.appendChild(e),a.appendChild(i)}))}}(t,l,f,d,s,0,n),function(t,e){let n=0;const i=Object.keys(p).map((t=>[t,p[t]]));w.append("g").selectAll("text").data(i).enter().append((function(t){const e=t[0].split(c.e.lineBreakRegex),n=-(e.length-1)/2,i=h.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[t,n]of e.entries()){const e=h.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttribute("alignment-baseline","central"),e.setAttribute("x","10"),t>0&&e.setAttribute("dy","1em"),e.textContent=n,i.appendChild(e)}return i})).attr("x",10).attr("y",(function(r,a){if(!(a>0))return r[1]*t/2+e;for(let o=0;o`\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${t.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${t.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`}},8787:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return R}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,4],n=[1,7],i=[1,5],r=[1,9],a=[1,6],o=[2,6],s=[1,16],c=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],u=[8,14,20,22,24,25,27,29,32,37,40],l=[8,13,14,20,22,24,25,27,29,32,37,40],h=[1,26],f=[6,8,14,50,55],d=[8,14,55],g=[1,53],p=[1,52],b=[8,14,30,33,35,38,55],w=[1,67],m=[1,68],y=[1,69],v=[8,14,33,35,42,55],x={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 3:return a[s];case 4:return a[s-1];case 5:return i.setDirection(a[s-3]),a[s-1];case 7:i.setOptions(a[s-1]),this.$=a[s];break;case 8:a[s-1]+=a[s],this.$=a[s-1];break;case 10:this.$=[];break;case 11:a[s-1].push(a[s]),this.$=a[s-1];break;case 12:this.$=a[s-1];break;case 17:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 20:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 22:i.checkout(a[s]);break;case 23:i.branch(a[s]);break;case 24:i.branch(a[s-2],a[s]);break;case 25:i.cherryPick(a[s],"",void 0);break;case 26:i.cherryPick(a[s-2],"",a[s]);break;case 27:case 29:i.cherryPick(a[s-2],"","");break;case 28:i.cherryPick(a[s],"",a[s-2]);break;case 30:i.merge(a[s],"","","");break;case 31:i.merge(a[s-2],a[s],"","");break;case 32:i.merge(a[s-2],"",a[s],"");break;case 33:i.merge(a[s-2],"","",a[s]);break;case 34:i.merge(a[s-4],a[s],"",a[s-2]);break;case 35:i.merge(a[s-4],"",a[s],a[s-2]);break;case 36:i.merge(a[s-4],"",a[s-2],a[s]);break;case 37:i.merge(a[s-4],a[s-2],a[s],"");break;case 38:i.merge(a[s-4],a[s-2],"",a[s]);break;case 39:i.merge(a[s-4],a[s],a[s-2],"");break;case 40:i.merge(a[s-6],a[s-4],a[s-2],a[s]);break;case 41:i.merge(a[s-6],a[s],a[s-4],a[s-2]);break;case 42:i.merge(a[s-6],a[s-4],a[s],a[s-2]);break;case 43:i.merge(a[s-6],a[s-2],a[s-4],a[s]);break;case 44:i.merge(a[s-6],a[s],a[s-2],a[s-4]);break;case 45:i.merge(a[s-6],a[s-2],a[s],a[s-4]);break;case 46:i.commit(a[s]);break;case 47:i.commit("","",i.commitType.NORMAL,a[s]);break;case 48:i.commit("","",a[s],"");break;case 49:i.commit("","",a[s],a[s-2]);break;case 50:i.commit("","",a[s-2],a[s]);break;case 51:i.commit("",a[s],i.commitType.NORMAL,"");break;case 52:i.commit("",a[s-2],i.commitType.NORMAL,a[s]);break;case 53:i.commit("",a[s],i.commitType.NORMAL,a[s-2]);break;case 54:i.commit("",a[s-2],a[s],"");break;case 55:i.commit("",a[s],a[s-2],"");break;case 56:i.commit("",a[s-4],a[s-2],a[s]);break;case 57:i.commit("",a[s-4],a[s],a[s-2]);break;case 58:i.commit("",a[s-2],a[s-4],a[s]);break;case 59:i.commit("",a[s],a[s-4],a[s-2]);break;case 60:i.commit("",a[s],a[s-2],a[s-4]);break;case 61:i.commit("",a[s-2],a[s],a[s-4]);break;case 62:i.commit(a[s],"",i.commitType.NORMAL,"");break;case 63:i.commit(a[s],"",i.commitType.NORMAL,a[s-2]);break;case 64:i.commit(a[s-2],"",i.commitType.NORMAL,a[s]);break;case 65:i.commit(a[s-2],"",a[s],"");break;case 66:i.commit(a[s],"",a[s-2],"");break;case 67:i.commit(a[s],a[s-2],i.commitType.NORMAL,"");break;case 68:i.commit(a[s-2],a[s],i.commitType.NORMAL,"");break;case 69:i.commit(a[s-4],"",a[s-2],a[s]);break;case 70:i.commit(a[s-4],"",a[s],a[s-2]);break;case 71:i.commit(a[s-2],"",a[s-4],a[s]);break;case 72:i.commit(a[s],"",a[s-4],a[s-2]);break;case 73:i.commit(a[s],"",a[s-2],a[s-4]);break;case 74:i.commit(a[s-2],"",a[s],a[s-4]);break;case 75:i.commit(a[s-4],a[s],a[s-2],"");break;case 76:i.commit(a[s-4],a[s-2],a[s],"");break;case 77:i.commit(a[s-2],a[s],a[s-4],"");break;case 78:i.commit(a[s],a[s-2],a[s-4],"");break;case 79:i.commit(a[s],a[s-4],a[s-2],"");break;case 80:i.commit(a[s-2],a[s-4],a[s],"");break;case 81:i.commit(a[s-4],a[s],i.commitType.NORMAL,a[s-2]);break;case 82:i.commit(a[s-4],a[s-2],i.commitType.NORMAL,a[s]);break;case 83:i.commit(a[s-2],a[s],i.commitType.NORMAL,a[s-4]);break;case 84:i.commit(a[s],a[s-2],i.commitType.NORMAL,a[s-4]);break;case 85:i.commit(a[s],a[s-4],i.commitType.NORMAL,a[s-2]);break;case 86:i.commit(a[s-2],a[s-4],i.commitType.NORMAL,a[s]);break;case 87:i.commit(a[s-6],a[s-4],a[s-2],a[s]);break;case 88:i.commit(a[s-6],a[s-4],a[s],a[s-2]);break;case 89:i.commit(a[s-6],a[s-2],a[s-4],a[s]);break;case 90:i.commit(a[s-6],a[s],a[s-4],a[s-2]);break;case 91:i.commit(a[s-6],a[s-2],a[s],a[s-4]);break;case 92:i.commit(a[s-6],a[s],a[s-2],a[s-4]);break;case 93:i.commit(a[s-4],a[s-6],a[s-2],a[s]);break;case 94:i.commit(a[s-4],a[s-6],a[s],a[s-2]);break;case 95:i.commit(a[s-2],a[s-6],a[s-4],a[s]);break;case 96:i.commit(a[s],a[s-6],a[s-4],a[s-2]);break;case 97:i.commit(a[s-2],a[s-6],a[s],a[s-4]);break;case 98:i.commit(a[s],a[s-6],a[s-2],a[s-4]);break;case 99:i.commit(a[s],a[s-4],a[s-2],a[s-6]);break;case 100:i.commit(a[s-2],a[s-4],a[s],a[s-6]);break;case 101:i.commit(a[s],a[s-2],a[s-4],a[s-6]);break;case 102:i.commit(a[s-2],a[s],a[s-4],a[s-6]);break;case 103:i.commit(a[s-4],a[s-2],a[s],a[s-6]);break;case 104:i.commit(a[s-4],a[s],a[s-2],a[s-6]);break;case 105:i.commit(a[s-2],a[s-4],a[s-6],a[s]);break;case 106:i.commit(a[s],a[s-4],a[s-6],a[s-2]);break;case 107:i.commit(a[s-2],a[s],a[s-6],a[s-4]);break;case 108:i.commit(a[s],a[s-2],a[s-6],a[s-4]);break;case 109:i.commit(a[s-4],a[s-2],a[s-6],a[s]);break;case 110:i.commit(a[s-4],a[s],a[s-6],a[s-2]);break;case 111:this.$="";break;case 112:this.$=a[s];break;case 113:this.$=i.commitType.NORMAL;break;case 114:this.$=i.commitType.REVERSE;break;case 115:this.$=i.commitType.HIGHLIGHT;break;case 118:i.parseDirective("%%{","open_directive");break;case 119:i.parseDirective(a[s],"type_directive");break;case 120:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 121:i.parseDirective("}%%","close_directive","gitGraph")}},table:[{3:1,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{1:[3]},{3:10,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{3:11,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{7:12,8:o,9:[1,13],10:[1,14],11:15,14:s},t(c,[2,124]),t(c,[2,125]),t(c,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:o,11:15,14:s},{9:[1,21]},t(u,[2,10],{12:22,13:[1,23]}),t(l,[2,9]),{9:[1,25],48:24,53:h},t([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:o,11:15,14:s},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},t(l,[2,8]),t(f,[2,116]),{49:45,52:[1,46]},t(f,[2,121]),{1:[2,4]},{8:[1,47]},t(u,[2,11]),{4:48,8:n,14:i,55:a},t(u,[2,13]),t(d,[2,14]),t(d,[2,15]),t(d,[2,16]),{21:[1,49]},{23:[1,50]},t(d,[2,19]),t(d,[2,20]),t(d,[2,21]),{28:51,34:g,54:p},t(d,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:g,54:p},{33:[1,61],35:[1,62]},{28:63,34:g,54:p},{48:64,53:h},{53:[2,120]},{1:[2,5]},t(u,[2,12]),t(d,[2,17]),t(d,[2,18]),t(d,[2,22]),t(b,[2,122]),t(b,[2,123]),t(d,[2,46]),{34:[1,65]},{39:66,43:w,44:m,45:y},{34:[1,70]},{34:[1,71]},t(d,[2,112]),t(d,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},t(d,[2,23],{30:[1,78]}),t(f,[2,117]),t(d,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),t(d,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),t(v,[2,113]),t(v,[2,114]),t(v,[2,115]),t(d,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),t(d,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:w,44:m,45:y},{34:[1,93]},t(d,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:w,44:m,45:y},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:w,44:m,45:y},{34:[1,106]},{34:[1,107]},{39:108,43:w,44:m,45:y},{34:[1,109]},t(d,[2,31],{35:[1,111],38:[1,110]}),t(d,[2,32],{33:[1,113],35:[1,112]}),t(d,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},t(d,[2,24]),t(d,[2,49],{33:[1,120],42:[1,121]}),t(d,[2,53],{38:[1,122],42:[1,123]}),t(d,[2,63],{33:[1,125],38:[1,124]}),t(d,[2,50],{33:[1,126],42:[1,127]}),t(d,[2,55],{35:[1,128],42:[1,129]}),t(d,[2,66],{33:[1,131],35:[1,130]}),t(d,[2,52],{38:[1,132],42:[1,133]}),t(d,[2,54],{35:[1,134],42:[1,135]}),t(d,[2,67],{35:[1,137],38:[1,136]}),t(d,[2,64],{33:[1,139],38:[1,138]}),t(d,[2,65],{33:[1,141],35:[1,140]}),t(d,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:w,44:m,45:y},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:w,44:m,45:y},t(d,[2,26]),t(d,[2,27]),t(d,[2,28]),t(d,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:w,44:m,45:y},{34:[1,153]},{39:154,43:w,44:m,45:y},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:w,44:m,45:y},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:w,44:m,45:y},{34:[1,167]},{39:168,43:w,44:m,45:y},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:w,44:m,45:y},{34:[1,173]},t(d,[2,37],{35:[1,174]}),t(d,[2,38],{38:[1,175]}),t(d,[2,36],{33:[1,176]}),t(d,[2,39],{35:[1,177]}),t(d,[2,34],{38:[1,178]}),t(d,[2,35],{33:[1,179]}),t(d,[2,60],{42:[1,180]}),t(d,[2,73],{33:[1,181]}),t(d,[2,61],{42:[1,182]}),t(d,[2,84],{38:[1,183]}),t(d,[2,74],{33:[1,184]}),t(d,[2,83],{38:[1,185]}),t(d,[2,59],{42:[1,186]}),t(d,[2,72],{33:[1,187]}),t(d,[2,58],{42:[1,188]}),t(d,[2,78],{35:[1,189]}),t(d,[2,71],{33:[1,190]}),t(d,[2,77],{35:[1,191]}),t(d,[2,57],{42:[1,192]}),t(d,[2,85],{38:[1,193]}),t(d,[2,56],{42:[1,194]}),t(d,[2,79],{35:[1,195]}),t(d,[2,80],{35:[1,196]}),t(d,[2,86],{38:[1,197]}),t(d,[2,70],{33:[1,198]}),t(d,[2,81],{38:[1,199]}),t(d,[2,69],{33:[1,200]}),t(d,[2,75],{35:[1,201]}),t(d,[2,76],{35:[1,202]}),t(d,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:w,44:m,45:y},{34:[1,206]},{34:[1,207]},{39:208,43:w,44:m,45:y},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:w,44:m,45:y},{34:[1,214]},{39:215,43:w,44:m,45:y},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:w,44:m,45:y},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:w,44:m,45:y},{34:[1,228]},{39:229,43:w,44:m,45:y},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:w,44:m,45:y},t(d,[2,40]),t(d,[2,42]),t(d,[2,41]),t(d,[2,43]),t(d,[2,45]),t(d,[2,44]),t(d,[2,101]),t(d,[2,102]),t(d,[2,99]),t(d,[2,100]),t(d,[2,104]),t(d,[2,103]),t(d,[2,108]),t(d,[2,107]),t(d,[2,106]),t(d,[2,105]),t(d,[2,110]),t(d,[2,109]),t(d,[2,98]),t(d,[2,97]),t(d,[2,96]),t(d,[2,95]),t(d,[2,93]),t(d,[2,94]),t(d,[2,92]),t(d,[2,91]),t(d,[2,90]),t(d,[2,89]),t(d,[2,87]),t(d,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 34:case 38:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}};function _(){this.yy={}}return x.lexer=k,_.prototype=x,x.Parser=_,new _}());a.parser=a;const o=a;let s=(0,i.c)().gitGraph.mainBranchName,c=(0,i.c)().gitGraph.mainBranchOrder,u={},l=null,h={};h[s]={name:s,order:c};let f={};f[s]=l;let d=s,g="LR",p=0;function b(){return(0,i.y)({length:7})}let w={};const m=function(t){if(t=i.e.sanitizeText(t,(0,i.c)()),void 0===f[t]){let e=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+t+'")');throw e.hash={text:"checkout "+t,token:"checkout "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+t+'"']},e}{d=t;const e=f[d];l=u[e]}};function y(t,e,n){const i=t.indexOf(e);-1===i?t.push(n):t.splice(i,1,n)}function v(t){const e=t.reduce(((t,e)=>t.seq>e.seq?t:e),t[0]);let n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));const r=[n,e.id,e.seq];for(let t in f)f[t]===e.id&&r.push(t);if(i.l.debug(r.join(" ")),e.parents&&2==e.parents.length){const n=u[e.parents[0]];y(t,e,n),t.push(u[e.parents[1]])}else{if(0==e.parents.length)return;{const n=u[e.parents];y(t,e,n)}}v(t=function(t,e){const n=Object.create(null);return t.reduce(((t,i)=>{const r=e(i);return n[r]||(n[r]=!0,t.push(i)),t}),[])}(t,(t=>t.id)))}const x=function(){const t=Object.keys(u).map((function(t){return u[t]}));return t.forEach((function(t){i.l.debug(t.id)})),t.sort(((t,e)=>t.seq-e.seq)),t},k={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},_={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().gitGraph,setDirection:function(t){g=t},setOptions:function(t){i.l.debug("options str",t),t=(t=t&&t.trim())||"{}";try{w=JSON.parse(t)}catch(t){i.l.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return w},commit:function(t,e,n,r){i.l.debug("Entering commit:",t,e,n,r),e=i.e.sanitizeText(e,(0,i.c)()),t=i.e.sanitizeText(t,(0,i.c)()),r=i.e.sanitizeText(r,(0,i.c)());const a={id:e||p+"-"+b(),message:t,seq:p++,type:n||k.NORMAL,tag:r||"",parents:null==l?[]:[l.id],branch:d};l=a,u[a.id]=a,f[d]=a.id,i.l.debug("in pushCommit "+a.id)},branch:function(t,e){if(t=i.e.sanitizeText(t,(0,i.c)()),void 0!==f[t]){let e=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+t+'")');throw e.hash={text:"branch "+t,token:"branch "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+t+'"']},e}f[t]=null!=l?l.id:null,h[t]={name:t,order:e?parseInt(e,10):null},m(t),i.l.debug("in createBranch")},merge:function(t,e,n,r){t=i.e.sanitizeText(t,(0,i.c)()),e=i.e.sanitizeText(e,(0,i.c)());const a=u[f[d]],o=u[f[t]];if(d===t){let e=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(void 0===a||!a){let e=new Error('Incorrect usage of "merge". Current branch ('+d+")has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},e}if(void 0===f[t]){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+t]},e}if(void 0===o||!o){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},e}if(a===o){let e=new Error('Incorrect usage of "merge". Both branches have same head');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(e&&void 0!==u[e]){let i=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom Id");throw i.hash={text:"merge "+t+e+n+r,token:"merge "+t+e+n+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+t+" "+e+"_UNIQUE "+n+" "+r]},i}const s={id:e||p+"-"+b(),message:"merged branch "+t+" into "+d,seq:p++,parents:[null==l?null:l.id,f[t]],branch:d,type:k.MERGE,customType:n,customId:!!e,tag:r||""};l=s,u[s.id]=s,f[d]=s.id,i.l.debug(f),i.l.debug("in mergeBranch")},cherryPick:function(t,e,n){if(i.l.debug("Entering cherryPick:",t,e,n),t=i.e.sanitizeText(t,(0,i.c)()),e=i.e.sanitizeText(e,(0,i.c)()),n=i.e.sanitizeText(n,(0,i.c)()),!t||void 0===u[t]){let n=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}let r=u[t],a=r.branch;if(r.type===k.MERGE){let n=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}if(!e||void 0===u[e]){if(a===d){let n=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const o=u[f[d]];if(void 0===o||!o){let n=new Error('Incorrect usage of "cherry-pick". Current branch ('+d+")has no commits");throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const s={id:p+"-"+b(),message:"cherry-picked "+r+" into "+d,seq:p++,parents:[null==l?null:l.id,r.id],branch:d,type:k.CHERRY_PICK,tag:n??"cherry-pick:"+r.id};l=s,u[s.id]=s,f[d]=s.id,i.l.debug(f),i.l.debug("in cherryPick")}},checkout:m,prettyPrint:function(){i.l.debug(u);v([x()[0]])},clear:function(){u={},l=null;let t=(0,i.c)().gitGraph.mainBranchName,e=(0,i.c)().gitGraph.mainBranchOrder;f={},f[t]=null,h={},h[t]={name:t,order:e},d=t,p=0,(0,i.v)()},getBranchesAsObjArray:function(){return Object.values(h).map(((t,e)=>null!==t.order?t:{...t,order:parseFloat(`0.${e}`,10)})).sort(((t,e)=>t.order-e.order)).map((({name:t})=>({name:t})))},getBranches:function(){return f},getCommits:function(){return u},getCommitsArray:x,getCurrentBranch:function(){return d},getDirection:function(){return g},getHead:function(){return l},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,setDiagramTitle:i.r,getDiagramTitle:i.t,commitType:k};let A={};const E=0,T=1,C=2,S=3,I=4;let M={},D={},O=[],L=0;const N=(t,e,n)=>{const r=(0,i.z)().gitGraph,a=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let s=0;Object.keys(e).sort(((t,n)=>e[t].seq-e[n].seq)).forEach((t=>{const i=e[t],c=M[i.branch].pos,u=s+10;if(n){let t,e=void 0!==i.customType&&""!==i.customType?i.customType:i.type;switch(e){case E:t="commit-normal";break;case T:t="commit-reverse";break;case C:t="commit-highlight";break;case S:t="commit-merge";break;case I:t="commit-cherry-pick";break;default:t="commit-normal"}if(e===C){const e=a.append("rect");e.attr("x",u-10),e.attr("y",c-10),e.attr("height",20),e.attr("width",20),e.attr("class",`commit ${i.id} commit-highlight${M[i.branch].index%8} ${t}-outer`),a.append("rect").attr("x",u-6).attr("y",c-6).attr("height",12).attr("width",12).attr("class",`commit ${i.id} commit${M[i.branch].index%8} ${t}-inner`)}else if(e===I)a.append("circle").attr("cx",u).attr("cy",c).attr("r",10).attr("class",`commit ${i.id} ${t}`),a.append("circle").attr("cx",u-3).attr("cy",c+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${t}`),a.append("circle").attr("cx",u+3).attr("cy",c+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${t}`),a.append("line").attr("x1",u+3).attr("y1",c+1).attr("x2",u).attr("y2",c-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${t}`),a.append("line").attr("x1",u-3).attr("y1",c+1).attr("x2",u).attr("y2",c-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${t}`);else{const n=a.append("circle");if(n.attr("cx",u),n.attr("cy",c),n.attr("r",i.type===S?9:10),n.attr("class",`commit ${i.id} commit${M[i.branch].index%8}`),e===S){const e=a.append("circle");e.attr("cx",u),e.attr("cy",c),e.attr("r",6),e.attr("class",`commit ${t} ${i.id} commit${M[i.branch].index%8}`)}if(e===T){a.append("path").attr("d",`M ${u-5},${c-5}L${u+5},${c+5}M${u-5},${c+5}L${u+5},${c-5}`).attr("class",`commit ${t} ${i.id} commit${M[i.branch].index%8}`)}}}if(D[i.id]={x:s+10,y:c},n){const t=4,e=2;if(i.type!==I&&(i.customId&&i.type===S||i.type!==S)&&r.showCommitLabel){const t=o.append("g"),n=t.insert("rect").attr("class","commit-label-bkg"),a=t.append("text").attr("x",s).attr("y",c+25).attr("class","commit-label").text(i.id);let u=a.node().getBBox();if(n.attr("x",s+10-u.width/2-e).attr("y",c+13.5).attr("width",u.width+2*e).attr("height",u.height+2*e),a.attr("x",s+10-u.width/2),r.rotateCommitLabel){let e=-7.5-(u.width+10)/25*9.5,n=10+u.width/25*8.5;t.attr("transform","translate("+e+", "+n+") rotate(-45, "+s+", "+c+")")}}if(i.tag){const n=o.insert("polygon"),r=o.append("circle"),a=o.append("text").attr("y",c-16).attr("class","tag-label").text(i.tag);let u=a.node().getBBox();a.attr("x",s+10-u.width/2);const l=u.height/2,h=c-19.2;n.attr("class","tag-label-bkg").attr("points",`\n ${s-u.width/2-t/2},${h+e}\n ${s-u.width/2-t/2},${h-e}\n ${s+10-u.width/2-t},${h-l-e}\n ${s+10+u.width/2+t},${h-l-e}\n ${s+10+u.width/2+t},${h+l+e}\n ${s+10-u.width/2-t},${h+l+e}`),r.attr("cx",s-u.width/2+t/2).attr("cy",h).attr("r",1.5).attr("class","tag-hole")}}s+=50,s>L&&(L=s)}))},P=(t,e,n=0)=>{const i=t+Math.abs(t-e)/2;if(n>5)return i;if(O.every((t=>Math.abs(t-i)>=10)))return O.push(i),i;const r=Math.abs(t-e);return P(t,e-r/5,n+1)},B=(t,e,n,i)=>{const r=D[e.id],a=D[n.id],o=((t,e,n)=>Object.keys(n).filter((i=>n[i].branch===e.branch&&n[i].seq>t.seq&&n[i].seq0)(e,n,i);let s,c="",u="",l=0,h=0,f=M[n.branch].index;if(o){c="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",l=10,h=10,f=M[n.branch].index;const t=r.ya.y&&(c="A 20 20, 0, 0, 0,",l=20,h=20,f=M[e.branch].index,s=`M ${r.x} ${r.y} L ${a.x-l} ${r.y} ${c} ${a.x} ${r.y-h} L ${a.x} ${a.y}`),r.y===a.y&&(f=M[e.branch].index,s=`M ${r.x} ${r.y} L ${r.x} ${a.y-l} ${c} ${r.x+h} ${a.y} L ${a.x} ${a.y}`);t.append("path").attr("d",s).attr("class","arrow arrow"+f%8)},F=(t,e)=>{const n=(0,i.z)().gitGraph,r=t.append("g");e.forEach(((t,e)=>{const i=e%8,a=M[t.name].pos,o=r.append("line");o.attr("x1",0),o.attr("y1",a),o.attr("x2",L),o.attr("y2",a),o.attr("class","branch branch"+i),O.push(a);const s=(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","text");let n=[];n="string"==typeof t?t.split(/\\n|\n|/gi):Array.isArray(t)?t:[];for(const t of n){const n=document.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),n.setAttribute("dy","1em"),n.setAttribute("x","0"),n.setAttribute("class","row"),n.textContent=t.trim(),e.appendChild(n)}return e})(t.name),c=r.insert("rect"),u=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+i);u.node().appendChild(s);let l=s.getBBox();c.attr("class","branchLabelBkg label"+i).attr("rx",4).attr("ry",4).attr("x",-l.width-4-(!0===n.rotateCommitLabel?30:0)).attr("y",-l.height/2+8).attr("width",l.width+18).attr("height",l.height+4),u.attr("transform","translate("+(-l.width-14-(!0===n.rotateCommitLabel?30:0))+", "+(a-l.height/2-1)+")"),c.attr("transform","translate(-19, "+(a-l.height/2)+")")}))},R={parser:o,db:_,renderer:{draw:function(t,e,n,a){M={},D={},A={},L=0,O=[];const o=(0,i.z)(),s=o.gitGraph;i.l.debug("in gitgraph renderer",t+"\n","id:",e,n),A=a.db.getCommits();const c=a.db.getBranchesAsObjArray();let u=0;c.forEach(((t,e)=>{M[t.name]={pos:u,index:e},u+=50+(s.rotateCommitLabel?40:0)}));const l=(0,r.Ys)(`[id="${e}"]`);N(l,A,!1),s.showBranches&&F(l,c),((t,e)=>{const n=t.append("g").attr("class","commit-arrows");Object.keys(e).forEach((t=>{const i=e[t];i.parents&&i.parents.length>0&&i.parents.forEach((t=>{B(n,e[t],i,e)}))}))})(l,A),N(l,A,!0),i.u.insertTitle(l,"gitTitleText",s.titleTopMargin,a.db.getDiagramTitle()),(0,i.A)(void 0,l,s.diagramPadding,s.useMaxWidth??o.useMaxWidth)}},styles:t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map((e=>`\n .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; }\n .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; }\n .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; }\n .label${e} { fill: ${t["git"+e]}; }\n .arrow${e} { stroke: ${t["git"+e]}; }\n `)).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`}},113:function(t,e,n){"use strict";n.d(e,{r:function(){return _}});var i=n(1768),r=n(835),a=n(3430),o=n(8540),s=n(8066),c=n(1524),u=n(1504);let l={},h={},f={};const d=(t,e)=>(o.l.trace("In isDecendant",e," ",t," = ",h[e].includes(t)),!!h[e].includes(t)),g=(t,e,n,i)=>{o.l.warn("Copying children of ",t,"root",i,"data",e.node(t),i);const r=e.children(t)||[];t!==i&&r.push(t),o.l.warn("Copying (nodes) clusterId",t,"nodes",r),r.forEach((r=>{if(e.children(r).length>0)g(r,e,n,i);else{const a=e.node(r);o.l.info("cp ",r," to ",i," with parent ",t),n.setNode(r,a),i!==e.parent(r)&&(o.l.warn("Setting parent",r,e.parent(r)),n.setParent(r,e.parent(r))),t!==i&&r!==t?(o.l.debug("Setting parent",r,t),n.setParent(r,t)):(o.l.info("In copy ",t,"root",i,"data",e.node(t),i),o.l.debug("Not Setting parent for node=",r,"cluster!==rootId",t!==i,"node!==clusterId",r!==t));const s=e.edges(r);o.l.debug("Copying Edges",s),s.forEach((r=>{o.l.info("Edge",r);const a=e.edge(r.v,r.w,r.name);o.l.info("Edge data",a,i);try{((t,e)=>(o.l.info("Decendants of ",e," is ",h[e]),o.l.info("Edge is ",t),t.v!==e&&t.w!==e&&(h[e]?h[e].includes(t.v)||d(t.v,e)||d(t.w,e)||h[e].includes(t.w):(o.l.debug("Tilt, ",e,",not in decendants"),!1))))(r,i)?(o.l.info("Copying as ",r.v,r.w,a,r.name),n.setEdge(r.v,r.w,a,r.name),o.l.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):o.l.info("Skipping copy of edge ",r.v,"--\x3e",r.w," rootId: ",i," clusterId:",t)}catch(t){o.l.error(t)}}))}o.l.debug("Removing node",r),e.removeNode(r)}))},p=(t,e)=>{const n=e.children(t);let i=[...n];for(const r of n)f[r]=t,i=[...i,...p(r,e)];return i},b=(t,e)=>{o.l.trace("Searching",t);const n=e.children(t);if(o.l.trace("Searching children of id ",t,n),n.length<1)return o.l.trace("This is a valid node",t),t;for(const i of n){const n=b(i,e);if(n)return o.l.trace("Found replacement for",t," => ",n),n}},w=t=>l[t]&&l[t].externalConnections&&l[t]?l[t].id:t,m=(t,e)=>{if(o.l.warn("extractor - ",e,r.c(t),t.children("D")),e>10)return void o.l.error("Bailing out");let n=t.nodes(),i=!1;for(const e of n){const n=t.children(e);i=i||n.length>0}if(i){o.l.debug("Nodes = ",n,e);for(const i of n)if(o.l.debug("Extracting node",i,l,l[i]&&!l[i].externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),l[i])if(!l[i].externalConnections&&t.children(i)&&t.children(i).length>0){o.l.warn("Cluster without external connections, without a parent and with children",i,e);let n="TB"===t.graph().rankdir?"LR":"TB";l[i]&&l[i].clusterData&&l[i].clusterData.dir&&(n=l[i].clusterData.dir,o.l.warn("Fixing dir",l[i].clusterData.dir,n));const a=new s.k({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));o.l.warn("Old graph before copy",r.c(t)),g(i,t,a,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:l[i].clusterData,labelText:l[i].labelText,graph:a}),o.l.warn("New graph after copy node: (",i,")",r.c(a)),o.l.debug("Old graph after copy",r.c(t))}else o.l.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!l[i].externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),o.l.debug(l);else o.l.debug("Not a cluster",i,e);n=t.nodes(),o.l.warn("New list of nodes",n);for(const i of n){const n=t.node(i);o.l.warn(" Now next level",i,n),n.clusterNode&&m(n.graph,e+1)}}else o.l.debug("Done, no node has children",t.nodes())},y=(t,e)=>{if(0===e.length)return[];let n=Object.assign(e);return e.forEach((e=>{const i=t.children(e),r=y(t,i);n=[...n,...r]})),n},v={rect:(t,e)=>{o.l.info("Creating subgraph rect for ",e.id,e);const n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),i=n.insert("rect",":first-child"),r=(0,o.n)((0,o.c)().flowchart.htmlLabels),s=n.insert("g").attr("class","cluster-label"),l="markdown"===e.labelType?(0,c.c)(s,e.labelText,{style:e.labelStyle,useHtmlLabels:r}):s.node().appendChild((0,a.c)(e.labelText,e.labelStyle,void 0,!0));let h=l.getBBox();if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t=l.children[0],e=(0,u.Ys)(l);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}const f=0*e.padding,d=f/2,g=e.width<=h.width+f?h.width+f:e.width;e.width<=h.width+f?e.diff=(h.width-e.width)/2-e.padding/2:e.diff=-e.padding/2,o.l.trace("Data ",e,JSON.stringify(e)),i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-g/2).attr("y",e.y-e.height/2-d).attr("width",g).attr("height",e.height+f),r?s.attr("transform","translate("+(e.x-h.width/2)+", "+(e.y-e.height/2)+")"):s.attr("transform","translate("+e.x+", "+(e.y-e.height/2)+")");const p=i.node().getBBox();return e.width=p.width,e.height=p.height,e.intersect=function(t){return(0,a.i)(e,t)},n},roundedWithTitle:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),i=n.insert("rect",":first-child"),r=n.insert("g").attr("class","cluster-label"),s=n.append("rect"),c=r.node().appendChild((0,a.c)(e.labelText,e.labelStyle,void 0,!0));let l=c.getBBox();if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t=c.children[0],e=(0,u.Ys)(c);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}l=c.getBBox();const h=0*e.padding,f=h/2,d=e.width<=l.width+e.padding?l.width+e.padding:e.width;e.width<=l.width+e.padding?e.diff=(l.width+0*e.padding-e.width)/2:e.diff=-e.padding/2,i.attr("class","outer").attr("x",e.x-d/2-f).attr("y",e.y-e.height/2-f).attr("width",d+h).attr("height",e.height+h),s.attr("class","inner").attr("x",e.x-d/2-f).attr("y",e.y-e.height/2-f+l.height-1).attr("width",d+h).attr("height",e.height+h-l.height-3),r.attr("transform","translate("+(e.x-l.width/2)+", "+(e.y-e.height/2-e.padding/3+((0,o.n)((0,o.c)().flowchart.htmlLabels)?5:3))+")");const g=i.node().getBBox();return e.height=g.height,e.intersect=function(t){return(0,a.i)(e,t)},n},noteGroup:(t,e)=>{const n=t.insert("g").attr("class","note-cluster").attr("id",e.id),i=n.insert("rect",":first-child"),r=0*e.padding,o=r/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-o).attr("y",e.y-e.height/2-o).attr("width",e.width+r).attr("height",e.height+r).attr("fill","none");const s=i.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(t){return(0,a.i)(e,t)},n},divider:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),i=n.insert("rect",":first-child"),r=0*e.padding,o=r/2;i.attr("class","divider").attr("x",e.x-e.width/2-o).attr("y",e.y-e.height/2).attr("width",e.width+r).attr("height",e.height+r);const s=i.node().getBBox();return e.width=s.width,e.height=s.height,e.diff=-e.padding/2,e.intersect=function(t){return(0,a.i)(e,t)},n}};let x={};const k=async(t,e,n,s)=>{o.l.info("Graph in recursive render: XXX",r.c(e),s);const c=e.graph().rankdir;o.l.trace("Dir in recursive render - dir:",c);const u=t.insert("g").attr("class","root");e.nodes()?o.l.info("Recursive render XXX",e.nodes()):o.l.info("No nodes found for",e),e.edges().length>0&&o.l.trace("Recursive edges",e.edge(e.edges()[0]));const h=u.insert("g").attr("class","clusters"),f=u.insert("g").attr("class","edgePaths"),d=u.insert("g").attr("class","edgeLabels"),g=u.insert("g").attr("class","nodes");await Promise.all(e.nodes().map((async function(t){const i=e.node(t);if(void 0!==s){const n=JSON.parse(JSON.stringify(s.clusterData));o.l.info("Setting data for cluster XXX (",t,") ",n,s),e.setNode(s.id,n),e.parent(t)||(o.l.trace("Setting parent",t,s.id),e.setParent(t,s.id,n))}if(o.l.info("(Insert) Node XXX"+t+": "+JSON.stringify(e.node(t))),i&&i.clusterNode){o.l.info("Cluster identified",t,i.width,e.node(t));const r=await k(g,i.graph,n,e.node(t)),s=r.elem;(0,a.u)(i,s),i.diff=r.diff||0,o.l.info("Node bounds (abc123)",t,i,i.width,i.x,i.y),(0,a.s)(s,i),o.l.warn("Recursive render complete ",s,i)}else e.children(t).length>0?(o.l.info("Cluster - the non recursive path XXX",t,i.id,i,e),o.l.info(b(i.id,e)),l[i.id]={id:b(i.id,e),node:i}):(o.l.info("Node - the non recursive path",t,i.id,i),await(0,a.e)(g,e.node(t),c))}))),e.edges().forEach((function(t){const n=e.edge(t.v,t.w,t.name);o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),o.l.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(e.edge(t))),o.l.info("Fix",l,"ids:",t.v,t.w,"Translateing: ",l[t.v],l[t.w]),(0,a.f)(d,n)})),e.edges().forEach((function(t){o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),o.l.info("#############################################"),o.l.info("### Layout ###"),o.l.info("#############################################"),o.l.info(e),(0,i.bK)(e),o.l.info("Graph after layout:",r.c(e));let p=0;return(t=>y(t,t.children()))(e).forEach((function(t){const n=e.node(t);o.l.info("Position "+t+": "+JSON.stringify(e.node(t))),o.l.info("Position "+t+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n&&n.clusterNode?(0,a.p)(n):e.children(t).length>0?(((t,e)=>{o.l.trace("Inserting cluster");const n=e.shape||"rect";x[e.id]=v[n](t,e)})(h,n),l[n.id].node=n):(0,a.p)(n)})),e.edges().forEach((function(t){const i=e.edge(t);o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(i),i);const r=(0,a.g)(f,t,i,l,n,e);(0,a.h)(i,r)})),e.nodes().forEach((function(t){const n=e.node(t);o.l.info(t,n.type,n.diff),"group"===n.type&&(p=n.diff)})),{elem:u,diff:p}},_=async(t,e,n,i,s)=>{(0,a.a)(t,n,i,s),(0,a.b)(),(0,a.d)(),x={},h={},f={},l={},o.l.warn("Graph at first:",r.c(e)),((t,e)=>{!t||e>10?o.l.debug("Opting out, no graph "):(o.l.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(o.l.warn("Cluster identified",e," Replacement id in edges: ",b(e,t)),h[e]=p(e,t),l[e]={id:b(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){const n=t.children(e),i=t.edges();n.length>0?(o.l.debug("Cluster identified",e,h),i.forEach((t=>{t.v!==e&&t.w!==e&&d(t.v,e)^d(t.w,e)&&(o.l.warn("Edge: ",t," leaves cluster ",e),o.l.warn("Decendants of XXX ",e,": ",h[e]),l[e].externalConnections=!0)}))):o.l.debug("Not a cluster ",e,h)})),t.edges().forEach((function(e){const n=t.edge(e);o.l.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),o.l.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));let i=e.v,r=e.w;if(o.l.warn("Fix XXX",l,"ids:",e.v,e.w,"Translating: ",l[e.v]," --- ",l[e.w]),l[e.v]&&l[e.w]&&l[e.v]===l[e.w]){o.l.warn("Fixing and trixing link to self - removing XXX",e.v,e.w,e.name),o.l.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),i=w(e.v),r=w(e.w),t.removeEdge(e.v,e.w,e.name);const a=e.w+"---"+e.v;t.setNode(a,{domId:a,id:a,labelStyle:"",labelText:n.label,padding:0,shape:"labelRect",style:""});const s=JSON.parse(JSON.stringify(n)),c=JSON.parse(JSON.stringify(n));s.label="",s.arrowTypeEnd="none",c.label="",s.fromCluster=e.v,c.toCluster=e.v,t.setEdge(i,a,s,e.name+"-cyclic-special"),t.setEdge(a,r,c,e.name+"-cyclic-special")}else(l[e.v]||l[e.w])&&(o.l.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),i=w(e.v),r=w(e.w),t.removeEdge(e.v,e.w,e.name),i!==e.v&&(n.fromCluster=e.v),r!==e.w&&(n.toCluster=e.w),o.l.warn("Fix Replacing with XXX",i,r,e.name),t.setEdge(i,r,n,e.name))})),o.l.warn("Adjusted Graph",r.c(t)),m(t,0),o.l.trace(l))})(e),o.l.warn("Graph after:",r.c(e)),await k(t,e,i)}},5891:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return c}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,i,r,a,o){switch(a.length,r){case 1:return i;case 4:break;case 6:i.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},i={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function r(){this.yy={}}return n.lexer=i,r.prototype=n,n.Parser=r,new r}());a.parser=a;var o="",s=!1;const c={parser:a,db:{setMessage:t=>{i.l.debug("Setting message to: "+t),o=t},getMessage:()=>o,setInfo:t=>{s=t},getInfo:()=>s,clear:i.v},renderer:{draw:(t,e,n)=>{try{i.l.debug("Rendering info diagram\n"+t);const a=(0,i.c)().securityLevel;let o;"sandbox"===a&&(o=(0,r.Ys)("#i"+e));const s=("sandbox"===a?(0,r.Ys)(o.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),s.attr("height",100),s.attr("width",400)}catch(t){i.l.error("Error while rendering info diagram"),i.l.error(t.message)}}},styles:()=>""}},7e3:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return L}});var i=n(8540),r=n(1504),a=n(2699),o=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,17,18,20,22,23,24,26],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,24],h=[4,6,9,11,17,18,20,22,23,24,26],f={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 11:i.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 15:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 16:i.addTask(a[s-1],a[s]),this.$="task";break;case 18:i.parseDirective("%%{","open_directive");break;case 19:i.parseDirective(a[s],"type_directive");break;case 20:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 21:i.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,26:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,26:n},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:a,20:o,22:s,23:c,24:u,26:n},{1:[2,2]},{14:22,15:[1,23],29:l},t([15,29],[2,19]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:21,10:25,12:4,17:r,18:a,20:o,22:s,23:c,24:u,26:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),{19:[1,26]},{21:[1,27]},t(i,[2,14]),t(i,[2,15]),{25:[1,28]},t(i,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},t(i,[2,5]),t(i,[2,12]),t(i,[2,13]),t(i,[2,16]),t(h,[2,9]),{14:32,29:l},{29:[2,20]},{11:[1,33]},t(h,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};function g(){this.yy={}}return f.lexer=d,g.prototype=f,f.Parser=g,new g}());o.parser=o;const s=o;let c="";const u=[],l=[],h=[],f=function(){let t=!0;for(const[e,n]of h.entries())h[e].processed,t=t&&n.processed;return t},d={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().journey,clear:function(){u.length=0,l.length=0,c="",h.length=0,(0,i.v)()},setDiagramTitle:i.r,getDiagramTitle:i.t,setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,addSection:function(t){c=t,u.push(t)},getSections:function(){return u},getTasks:function(){let t=f();let e=0;for(;!t&&e<100;)t=f(),e++;return l.push(...h),l},addTask:function(t,e){const n=e.substr(1).split(":");let i=0,r=[];1===n.length?(i=Number(n[0]),r=[]):(i=Number(n[0]),r=n[1].split(","));const a=r.map((t=>t.trim())),o={section:c,type:c,people:a,task:t,score:i};h.push(o)},addTaskOrg:function(t){const e={section:c,type:c,description:t,task:t,classes:[]};l.push(e)},getActors:function(){return function(){const t=[];return l.forEach((e=>{e.people&&t.push(...e.people)})),[...new Set(t)].sort()}()}},g=t=>`.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n`,p=function(t,e){return(0,a.d)(t,e)},b=function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},w=function(t,e){return(0,a.f)(t,e)};let m=-1;const y=function(){function t(t,e,n,r,a,o,s,c){i(e.append("text").attr("x",n+a/2).attr("y",r+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,r,a,o,s,c,u){const{taskFontSize:l,taskFontFamily:h}=c,f=t.split(//gi);for(let t=0;t3?function(t){const i=(0,r.Nb1)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}(a):e.score<3?function(t){const i=(0,r.Nb1)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}(a):a.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(o,{cx:i,cy:300+30*(5-e.score),score:e.score});const s=(0,a.g)();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,p(o,s);let c=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,i={cx:c,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};b(o,i),c+=10})),y(n)(e.task,o,s.x,s.y,s.width,s.height,{class:"task"},n,e.colour)},A=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},E={};const T=(0,i.c)().journey,C=T.leftMargin,S={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},updateBounds:function(t,e,n,r){const a=(0,i.c)().journey,o=this;let s=0;var c;this.sequenceItems.forEach((function(i){s++;const u=o.sequenceItems.length-s+1;o.updateVal(i,"starty",e-u*a.boxMargin,Math.min),o.updateVal(i,"stopy",r+u*a.boxMargin,Math.max),o.updateVal(S.data,"startx",t-u*a.boxMargin,Math.min),o.updateVal(S.data,"stopx",n+u*a.boxMargin,Math.max),"activation"!==c&&(o.updateVal(i,"startx",t-u*a.boxMargin,Math.min),o.updateVal(i,"stopx",n+u*a.boxMargin,Math.max),o.updateVal(S.data,"starty",e-u*a.boxMargin,Math.min),o.updateVal(S.data,"stopy",r+u*a.boxMargin,Math.max))}))},insert:function(t,e,n,i){const r=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,i),s=Math.max(e,i);this.updateVal(S.data,"startx",r,Math.min),this.updateVal(S.data,"starty",o,Math.min),this.updateVal(S.data,"stopx",a,Math.max),this.updateVal(S.data,"stopy",s,Math.max),this.updateBounds(r,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},I=T.sectionFills,M=T.sectionColours,D=function(t,e,n){const r=(0,i.c)().journey;let a="";const o=n+(2*r.height+r.diagramMarginY);let s=0,c="#CCC",u="black",l=0;for(const[n,i]of e.entries()){if(a!==i.section){c=I[s%I.length],l=s%I.length,u=M[s%M.length];let o=0;const h=i.section;for(let t=n;t(E[e]&&(t[e]=E[e]),t)),{});i.x=n*r.taskMargin+n*r.width+C,i.y=o,i.width=r.diagramMarginX,i.height=r.diagramMarginY,i.colour=u,i.fill=c,i.num=l,i.actors=h,_(t,i,r),S.insert(i.x,i.y,i.x+i.width+r.taskMargin,450)}},O={setConf:function(t){Object.keys(t).forEach((function(e){T[e]=t[e]}))},draw:function(t,e,n,a){const o=(0,i.c)().journey;a.db.clear(),a.parser.parse(t+"\n");const s=(0,i.c)().securityLevel;let c;"sandbox"===s&&(c=(0,r.Ys)("#i"+e));const u="sandbox"===s?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body");S.init();const l=u.select("#"+e);A(l);const h=a.db.getTasks(),f=a.db.getDiagramTitle(),d=a.db.getActors();for(const t in E)delete E[t];let g=0;d.forEach((t=>{E[t]={color:o.actorColours[g%o.actorColours.length],position:g},g++})),function(t){const e=(0,i.c)().journey;let n=60;Object.keys(E).forEach((i=>{const r=E[i].color,a={cx:20,cy:n,r:7,fill:r,stroke:"#000",pos:E[i].position};v(t,a);const o={x:40,y:n+7,fill:"#666",text:i,textMargin:5|e.boxTextMargin};k(t,o),n+=20}))}(l),S.insert(0,0,C,50*Object.keys(E).length),D(l,h,0);const p=S.getBounds();f&&l.append("text").text(f).attr("x",C).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const b=p.stopy-p.starty+2*o.diagramMarginY,w=C+p.stopx+2*o.diagramMarginX;(0,i.i)(l,b,w,o.useMaxWidth),l.append("line").attr("x1",C).attr("y1",4*o.height).attr("x2",w-C-4).attr("y2",4*o.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const m=f?70:0;l.attr("viewBox",`${p.startx} -25 ${w} ${b+m}`),l.attr("preserveAspectRatio","xMinYMin meet"),l.attr("height",b+m+25)}},L={parser:s,db:d,renderer:O,styles:g,init:t=>{O.setConf(t.journey),d.clear()}}},8540:function(t,e,n){"use strict";n.d(e,{A:function(){return $n},B:function(){return yi},C:function(){return xt},D:function(){return Ct},E:function(){return lr},F:function(){return si},G:function(){return tn},H:function(){return gr},I:function(){return On},J:function(){return Nn},K:function(){return Ir},Z:function(){return Qn},a:function(){return Sn},b:function(){return Cn},c:function(){return un},d:function(){return ft},e:function(){return wt},f:function(){return Je},g:function(){return Tn},h:function(){return di},i:function(){return bn},j:function(){return fi},k:function(){return ai},l:function(){return ot},m:function(){return yr},n:function(){return pt},o:function(){return ii},p:function(){return wn},q:function(){return cn},r:function(){return In},s:function(){return En},t:function(){return Mn},u:function(){return vi},v:function(){return An},w:function(){return li},x:function(){return bt},y:function(){return ci},z:function(){return Rn}});var i=n(9632),r=n(7530),a=n(2510),o=n(1504),s=n(6951),c=n(9297),u=n(5571);var l=(t,e)=>{const n=c.Z.parse(t),i={};for(const t in e)e[t]&&(i[t]=n[t]+e[t]);return(0,u.Z)(t,i)},h=n(852);var f=(t,e,n=50)=>{const{r:i,g:r,b:a,a:o}=c.Z.parse(t),{r:s,g:u,b:l,a:f}=c.Z.parse(e),d=n/100,g=2*d-1,p=o-f,b=((g*p==-1?g:(g+p)/(1+g*p))+1)/2,w=1-b,m=i*b+s*w,y=r*b+u*w,v=a*b+l*w,x=o*d+f*(1-d);return(0,h.Z)(m,y,v,x)};var d=(t,e=100)=>{const n=c.Z.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,f(n,t,e)},g=n(733),p=n(1778),b=n(7471),w=n(9828),m="comm",y="rule",v="decl",x=Math.abs,k=String.fromCharCode;Object.assign;function _(t){return t.trim()}function A(t,e,n){return t.replace(e,n)}function E(t,e){return t.indexOf(e)}function T(t,e){return 0|t.charCodeAt(e)}function C(t,e,n){return t.slice(e,n)}function S(t){return t.length}function I(t,e){return e.push(t),t}function M(t,e){for(var n="",i=0;i0?T(F,--P):0,L--,10===B&&(L=1,O--),B}function $(){return B=P2||U(B)>3?"":" "}function K(t,e){for(;--e&&$()&&!(B<48||B>102||B>57&&B<65||B>70&&B<97););return H(t,q()+(e<6&&32==z()&&32==$()))}function X(t){for(;$();)switch(B){case t:return P;case 34:case 39:34!==t&&39!==t&&X(B);break;case 40:41===t&&X(t);break;case 92:$()}return P}function V(t,e){for(;$()&&t+B!==57&&(t+B!==84||47!==z()););return"/*"+H(e,P-1)+"*"+k(47===t?t:$())}function Q(t){for(;!U(z());)$();return H(t,P)}function J(t){return Y(tt("",null,null,null,[""],t=G(t),0,[0],t))}function tt(t,e,n,i,r,a,o,s,c){for(var u=0,l=0,h=o,f=0,d=0,g=0,p=1,b=1,w=1,m=0,y="",v=r,x=a,_=i,C=y;b;)switch(g=m,m=$()){case 40:if(108!=g&&58==T(C,h-1)){-1!=E(C+=A(Z(m),"&","&\f"),"&\f")&&(w=-1);break}case 34:case 39:case 91:C+=Z(m);break;case 9:case 10:case 13:case 32:C+=W(g);break;case 92:C+=K(q()-1,7);continue;case 47:switch(z()){case 42:case 47:I(nt(V($(),q()),e,n,c),c);break;default:C+="/"}break;case 123*p:s[u++]=S(C)*w;case 125*p:case 59:case 0:switch(m){case 0:case 125:b=0;case 59+l:-1==w&&(C=A(C,/\f/g,"")),d>0&&S(C)-h&&I(d>32?it(C+";",i,n,h-1,c):it(A(C," ","")+";",i,n,h-2,c),c);break;case 59:C+=";";default:if(I(_=et(C,e,n,u,l,r,s,y,v=[],x=[],h,a),a),123===m)if(0===l)tt(C,e,_,_,v,a,h,s,x);else switch(99===f&&110===T(C,3)?100:f){case 100:case 108:case 109:case 115:tt(t,_,_,i&&I(et(t,_,_,0,0,r,s,y,r,v=[],h,x),x),r,x,h,s,i?v:x);break;default:tt(C,_,_,_,[""],x,0,s,x)}}u=l=d=0,p=w=1,y=C="",h=o;break;case 58:h=1+S(C),d=g;default:if(p<1)if(123==m)--p;else if(125==m&&0==p++&&125==j())continue;switch(C+=k(m),m*p){case 38:w=l>0?1:(C+="\f",-1);break;case 44:s[u++]=(S(C)-1)*w,w=1;break;case 64:45===z()&&(C+=Z($())),f=z(),l=h=S(y=C+=Q(q())),m++;break;case 45:45===g&&2==S(C)&&(p=0)}}return a}function et(t,e,n,i,r,a,o,s,c,u,l,h){for(var f=r-1,d=0===r?a:[""],g=function(t){return t.length}(d),p=0,b=0,w=0;p0?d[m]+" "+v:A(v,/&\f/g,d[m])))&&(c[w++]=k);return R(t,e,n,0===r?y:s,c,u,l,h)}function nt(t,e,n,i){return R(t,e,n,m,k(B),C(t,2,-2),0,i)}function it(t,e,n,i,r){return R(t,e,n,v,C(t,0,i),C(t,i+1,-1),i,r)}var rt=n(8403);const at={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},ot={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},st=function(t="fatal"){let e=at.fatal;"string"==typeof t?(t=t.toLowerCase())in at&&(e=at[t]):"number"==typeof t&&(e=t),ot.trace=()=>{},ot.debug=()=>{},ot.info=()=>{},ot.warn=()=>{},ot.error=()=>{},ot.fatal=()=>{},e<=at.fatal&&(ot.fatal=console.error?console.error.bind(console,ct("FATAL"),"color: orange"):console.log.bind(console,"",ct("FATAL"))),e<=at.error&&(ot.error=console.error?console.error.bind(console,ct("ERROR"),"color: orange"):console.log.bind(console,"",ct("ERROR"))),e<=at.warn&&(ot.warn=console.warn?console.warn.bind(console,ct("WARN"),"color: orange"):console.log.bind(console,"",ct("WARN"))),e<=at.info&&(ot.info=console.info?console.info.bind(console,ct("INFO"),"color: lightblue"):console.log.bind(console,"",ct("INFO"))),e<=at.debug&&(ot.debug=console.debug?console.debug.bind(console,ct("DEBUG"),"color: lightgreen"):console.log.bind(console,"",ct("DEBUG"))),e<=at.trace&&(ot.trace=console.debug?console.debug.bind(console,ct("TRACE"),"color: lightgreen"):console.log.bind(console,"",ct("TRACE")))},ct=t=>`%c${r().format("ss.SSS")} : ${t} : `,ut=//gi,lt=t=>s.sanitize(t),ht=(t,e)=>{var n;if(!1!==(null==(n=e.flowchart)?void 0:n.htmlLabels)){const n=e.securityLevel;"antiscript"===n||"strict"===n?t=lt(t):"loose"!==n&&(t=(t=(t=gt(t)).replace(//g,">")).replace(/=/g,"="),t=dt(t))}return t},ft=(t,e)=>t?t=e.dompurifyConfig?s.sanitize(ht(t,e),e.dompurifyConfig).toString():s.sanitize(ht(t,e),{FORBID_TAGS:["style"]}).toString():t,dt=t=>t.replace(/#br#/g,"
"),gt=t=>t.replace(ut,"#br#"),pt=t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),bt=function(t){let e=t;if(t.split("~").length-1>=2){let t=e;do{e=t,t=e.replace(/~([^\s,:;]+)~/,"<$1>")}while(t!=e);return bt(t)}return e},wt={getRows:t=>{if(!t)return[""];return gt(t).replace(/\\n/g,"#br#").split("#br#")},sanitizeText:ft,sanitizeTextOrArray:(t,e)=>"string"==typeof t?ft(t,e):t.flat().map((t=>ft(t,e))),hasBreaks:t=>ut.test(t),splitBreaks:t=>t.split(ut),lineBreakRegex:ut,removeScript:lt,getUrl:t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},evaluate:pt,getMax:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.max(...e)},getMin:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.min(...e)}},mt=(t,e)=>l(t,e?{s:-40,l:10}:{s:-40,l:-10}),yt="#ffffff",vt="#f2f2f2";const xt=t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=l(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=(0,h.Z)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,g.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,g.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e};class kt{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,p.Z)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,p.Z)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,p.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}}const _t={base:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||l(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||l(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||mt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||mt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||d(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||d(this.tertiaryColor),this.lineColor=this.lineColor||d(this.background),this.arrowheadColor=this.arrowheadColor||d(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,g.Z)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,g.Z)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||d(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,p.Z)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.darkMode)for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},dark:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,p.Z)(this.primaryColor,16),this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=d(this.background),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,p.Z)(d("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=(0,h.Z)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,g.Z)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,g.Z)(this.sectionBkgColor,10),this.taskBorderColor=(0,h.Z)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,h.Z)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,p.Z)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,p.Z)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,p.Z)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=l(this.primaryColor,{h:64}),this.fillType3=l(this.secondaryColor,{h:64}),this.fillType4=l(this.primaryColor,{h:-64}),this.fillType5=l(this.secondaryColor,{h:-64}),this.fillType6=l(this.primaryColor,{h:128}),this.fillType7=l(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},default:{getThemeVariables:xt},forest:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,p.Z)("#cde498",10),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.primaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,g.Z)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,g.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,g.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},neutral:{getThemeVariables:t=>{const e=new kt;return e.calculate(t),e}}},At={theme:"default",themeVariables:_t.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,displayMode:"",axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0,textPosition:.75},quadrantChart:{chartWidth:500,chartHeight:500,titlePadding:10,titleFontSize:20,quadrantPadding:5,quadrantTextTopPadding:5,quadrantLabelFontSize:16,quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2,xAxisLabelPadding:5,xAxisLabelFontSize:16,xAxisPosition:"top",yAxisLabelPadding:5,yAxisLabelFontSize:16,yAxisPosition:"left",pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};At.class&&(At.class.arrowMarkerAbsolute=At.arrowMarkerAbsolute),At.gitGraph&&(At.gitGraph.arrowMarkerAbsolute=At.arrowMarkerAbsolute);const Et=(t,e="")=>Object.keys(t).reduce(((n,i)=>Array.isArray(t[i])?n:"object"==typeof t[i]&&null!==t[i]?[...n,e+i,...Et(t[i],"")]:[...n,e+i]),[]),Tt=Et(At,""),Ct=At;function St(t){return null==t}var It={isNothing:St,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:St(t)?[]:[t]},repeat:function(t,e){var n,i="";for(n=0;ns&&(e=i-s+(a=" ... ").length),n-i>s&&(n=i+s-(o=" ...").length),{str:a+t.slice(e,n).replace(/\t/g,"→")+o,pos:i-e+a.length}}function Nt(t,e){return It.repeat(" ",e-t.length)+t}var Pt=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var n,i=/\r?\n|\r|\0/g,r=[0],a=[],o=-1;n=i.exec(t.buffer);)a.push(n.index),r.push(n.index+n[0].length),t.position<=n.index&&o<0&&(o=r.length-2);o<0&&(o=r.length-1);var s,c,u="",l=Math.min(t.line+e.linesAfter,a.length).toString().length,h=e.maxLength-(e.indent+l+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)c=Lt(t.buffer,r[o-s],a[o-s],t.position-(r[o]-r[o-s]),h),u=It.repeat(" ",e.indent)+Nt((t.line-s+1).toString(),l)+" | "+c.str+"\n"+u;for(c=Lt(t.buffer,r[o],a[o],t.position,h),u+=It.repeat(" ",e.indent)+Nt((t.line+1).toString(),l)+" | "+c.str+"\n",u+=It.repeat("-",e.indent+l+3+c.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)c=Lt(t.buffer,r[o+s],a[o+s],t.position-(r[o]-r[o+s]),h),u+=It.repeat(" ",e.indent)+Nt((t.line+s+1).toString(),l)+" | "+c.str+"\n";return u.replace(/\n$/,"")},Bt=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Ft=["scalar","sequence","mapping"];var Rt=function(t,e){var n,i;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===Bt.indexOf(e))throw new Ot('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=(n=e.styleAliases||null,i={},null!==n&&Object.keys(n).forEach((function(t){n[t].forEach((function(e){i[String(e)]=t}))})),i),-1===Ft.indexOf(this.kind))throw new Ot('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function jt(t,e){var n=[];return t[e].forEach((function(t){var e=n.length;n.forEach((function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(e=i)})),n[e]=t})),n}function $t(t){return this.extend(t)}$t.prototype.extend=function(t){var e=[],n=[];if(t instanceof Rt)n.push(t);else if(Array.isArray(t))n=n.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new Ot("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof Rt))throw new Ot("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new Ot("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new Ot("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(t){if(!(t instanceof Rt))throw new Ot("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var i=Object.create($t.prototype);return i.implicit=(this.implicit||[]).concat(e),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=jt(i,"implicit"),i.compiledExplicit=jt(i,"explicit"),i.compiledTypeMap=function(){var t,e,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Wt=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var Kt=/^[-+]?[0-9]+e/;var Xt=new Rt("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!Wt.test(t)||"_"===t[t.length-1])},construct:function(t){var e,n;return n="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:n*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||It.isNegativeZero(t))},represent:function(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(It.isNegativeZero(t))return"-0.0";return n=t.toString(10),Kt.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),Vt=zt.extend({implicit:[qt,Ht,Zt,Xt]}),Qt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Jt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var te=new Rt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==Qt.exec(t)||null!==Jt.exec(t))},construct:function(t){var e,n,i,r,a,o,s,c,u=0,l=null;if(null===(e=Qt.exec(t))&&(e=Jt.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(l=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(l=-l)),c=new Date(Date.UTC(n,i,r,a,o,s,u)),l&&c.setTime(c.getTime()-l),c},instanceOf:Date,represent:function(t){return t.toISOString()}});var ee=new Rt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var ie=new Rt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,i=0,r=t.length,a=ne;for(n=0;n64)){if(e<0)return!1;i+=6}return i%8==0},construct:function(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,a=ne,o=0,s=[];for(e=0;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(i.charAt(e));return 0===(n=r%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===n?(s.push(o>>10&255),s.push(o>>2&255)):12===n&&s.push(o>>4&255),new Uint8Array(s)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,n,i="",r=0,a=t.length,o=ne;for(e=0;e>18&63],i+=o[r>>12&63],i+=o[r>>6&63],i+=o[63&r]),r=(r<<8)+t[e];return 0===(n=a%3)?(i+=o[r>>18&63],i+=o[r>>12&63],i+=o[r>>6&63],i+=o[63&r]):2===n?(i+=o[r>>10&63],i+=o[r>>4&63],i+=o[r<<2&63],i+=o[64]):1===n&&(i+=o[r>>2&63],i+=o[r<<4&63],i+=o[64],i+=o[64]),i}}),re=Object.prototype.hasOwnProperty,ae=Object.prototype.toString;var oe=new Rt("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,i,r,a,o=[],s=t;for(e=0,n=s.length;e>10),56320+(t-65536&1023))}for(var Se=new Array(256),Ie=new Array(256),Me=0;Me<256;Me++)Se[Me]=Te(Me)?1:0,Ie[Me]=Te(Me);function De(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||he,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Oe(t,e){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=Pt(n),new Ot(e,n)}function Le(t,e){throw Oe(t,e)}function Ne(t,e){t.onWarning&&t.onWarning.call(null,Oe(t,e))}var Pe={YAML:function(t,e,n){var i,r,a;null!==t.version&&Le(t,"duplication of %YAML directive"),1!==n.length&&Le(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&Le(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),a=parseInt(i[2],10),1!==r&&Le(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Ne(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&Le(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],be.test(i)||Le(t,"ill-formed tag handle (first argument) of the TAG directive"),fe.call(t.tagMap,i)&&Le(t,'there is a previously declared suffix for "'+i+'" tag handle'),we.test(r)||Le(t,"ill-formed tag prefix (second argument) of the TAG directive");try{r=decodeURIComponent(r)}catch(e){Le(t,"tag prefix is malformed: "+r)}t.tagMap[i]=r}};function Be(t,e,n,i){var r,a,o,s;if(e1&&(t.result+=It.repeat("\n",e-1))}function He(t,e){var n,i,r=t.tag,a=t.anchor,o=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Le(t,"tab characters must not be used in indentation")),45===i)&&xe(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,$e(t,!0,-1)&&t.lineIndent<=e)o.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,Ye(t,e,3,!1,!0),o.push(t.result),$e(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>e)&&0!==i)Le(t,"bad indentation of a sequence entry");else if(t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndente)&&(w&&(o=t.line,s=t.lineStart,c=t.position),Ye(t,e,4,!0,r)&&(w?p=t.result:b=t.result),w||(Re(t,f,d,g,p,b,o,s,c),g=p=b=null),$e(t,!0,-1),u=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==u)Le(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===r?Le(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Le(t,"repeat of an indentation width identifier"):(u=e+r-1,c=!0)}if(ve(a)){do{a=t.input.charCodeAt(++t.position)}while(ve(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!ye(a)&&0!==a)}for(;0!==a;){for(je(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!c||t.lineIndentu&&(u=t.lineIndent),ye(a))l++;else{if(t.lineIndent0){for(r=o,a=0;r>0;r--)(o=_e(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Le(t,"expected hexadecimal character");t.result+=Ce(a),t.position++}else Le(t,"unknown escape sequence");n=i=t.position}else ye(s)?(Be(t,n,i,!0),qe(t,$e(t,!1,e)),n=i=t.position):t.position===t.lineStart&&ze(t)?Le(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Le(t,"unexpected end of the stream within a double quoted scalar")}(t,f)?b=!0:!function(t){var e,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!xe(i)&&!ke(i);)i=t.input.charCodeAt(++t.position);return t.position===e&&Le(t,"name of an alias node must contain at least one character"),n=t.input.slice(e,t.position),fe.call(t.anchorMap,n)||Le(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],$e(t,!0,-1),!0}(t)?function(t,e,n){var i,r,a,o,s,c,u,l,h=t.kind,f=t.result;if(xe(l=t.input.charCodeAt(t.position))||ke(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(xe(i=t.input.charCodeAt(t.position+1))||n&&ke(i)))return!1;for(t.kind="scalar",t.result="",r=a=t.position,o=!1;0!==l;){if(58===l){if(xe(i=t.input.charCodeAt(t.position+1))||n&&ke(i))break}else if(35===l){if(xe(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&ze(t)||n&&ke(l))break;if(ye(l)){if(s=t.line,c=t.lineStart,u=t.lineIndent,$e(t,!1,-1),t.lineIndent>=e){o=!0,l=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=c,t.lineIndent=u;break}}o&&(Be(t,r,a,!1),qe(t,t.line-s),r=a=t.position,o=!1),ve(l)||(a=t.position+1),l=t.input.charCodeAt(++t.position)}return Be(t,r,a,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,f,1===n)&&(b=!0,null===t.tag&&(t.tag="?")):(b=!0,null===t.tag&&null===t.anchor||Le(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===g&&(b=s&&He(t,d))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Le(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),c=0,u=t.implicitTypes.length;c"),null!==t.result&&h.kind!==t.kind&&Le(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result,t.tag)?(t.result=h.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Le(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||b}function Ze(t){var e,n,i,r,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(r=t.input.charCodeAt(t.position))&&($e(t,!0,-1),r=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==r));){for(o=!0,r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!xe(r);)r=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(e,t.position)).length<1&&Le(t,"directive name must not be less than one character in length");0!==r;){for(;ve(r);)r=t.input.charCodeAt(++t.position);if(35===r){do{r=t.input.charCodeAt(++t.position)}while(0!==r&&!ye(r));break}if(ye(r))break;for(e=t.position;0!==r&&!xe(r);)r=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==r&&je(t),fe.call(Pe,n)?Pe[n](t,n,i):Ne(t,'unknown document directive "'+n+'"')}$e(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,$e(t,!0,-1)):o&&Le(t,"directives end mark is expected"),Ye(t,t.lineIndent-1,4,!1,!0),$e(t,!0,-1),t.checkLineBreaks&&ge.test(t.input.slice(a,t.position))&&Ne(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&ze(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,$e(t,!0,-1)):t.positionQe(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||i<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(r||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=Qe(t[n],e[n],{depth:i-1,clobber:r}))})),t)},Je=Qe,tn=Object.freeze(Ct);let en,nn=Je({},tn),rn=[],an=Je({},tn);const on=(t,e)=>{let n=Je({},t),i={};for(const t of e)ln(t),i=Je(i,t);if(n=Je(n,i),i.theme&&i.theme in _t){const t=Je({},en),e=Je(t.themeVariables||{},i.themeVariables);n.theme&&n.theme in _t&&(n.themeVariables=_t[n.theme].getThemeVariables(e))}return an=n,pn(an),an},sn=()=>Je({},nn),cn=t=>(pn(t),Je(an,t),un()),un=()=>Je({},an),ln=t=>{["secure",...nn.secure??[]].forEach((e=>{void 0!==t[e]&&(ot.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{0===e.indexOf("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&ln(t[e])}))},hn=t=>{t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),rn.push(t),on(nn,rn)},fn=(t=nn)=>{rn=[],on(t,rn)};var dn=(t=>(t.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",t))(dn||{});const gn={},pn=t=>{var e;t&&((t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&(gn[e="LAZY_LOAD_DEPRECATED"]||(ot.warn(dn[e]),gn[e]=!0)))},bn=function(t,e,n,i){const r=function(t,e,n){let i=new Map;return n?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i}(e,n,i);!function(t,e){for(let n of e)t.attr(n[0],n[1])}(t,r)},wn=function(t,e,n,i){const r=e.node().getBBox(),a=r.width,o=r.height;ot.info(`SVG bounds: ${a}x${o}`,r);let s=0,c=0;ot.info(`Graph bounds: ${s}x${c}`,t),s=a+2*n,c=o+2*n,ot.info(`Calculated bounds: ${s}x${c}`),bn(e,c,s,i);const u=`${r.x-n} ${r.y-n} ${r.width+2*n} ${r.height+2*n}`;e.attr("viewBox",u)},mn={},yn=(t,e,n)=>{let i="";return t in mn&&mn[t]?i=mn[t](n):ot.warn(`No theme found for ${t}`),` & {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n fill: ${n.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${n.errorBkgColor};\n }\n & .error-text {\n fill: ${n.errorTextColor};\n stroke: ${n.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${n.lineColor};\n stroke: ${n.lineColor};\n }\n & .marker.cross {\n stroke: ${n.lineColor};\n }\n\n & svg {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n }\n\n ${i}\n\n ${e}\n`};let vn="",xn="",kn="";const _n=t=>ft(t,un()),An=function(){vn="",kn="",xn=""},En=function(t){vn=_n(t).replace(/^\s+/g,"")},Tn=function(){return vn||xn},Cn=function(t){kn=_n(t).replace(/\n\s+/g,"\n")},Sn=function(){return kn},In=function(t){xn=_n(t)},Mn=function(){return xn},Dn={getAccTitle:Tn,setAccTitle:En,getDiagramTitle:Mn,setDiagramTitle:In,getAccDescription:Sn,setAccDescription:Cn,clear:An},On=Object.freeze(Object.defineProperty({__proto__:null,clear:An,default:Dn,getAccDescription:Sn,getAccTitle:Tn,getDiagramTitle:Mn,setAccDescription:Cn,setAccTitle:En,setDiagramTitle:In},Symbol.toStringTag,{value:"Module"}));let Ln={};const Nn=function(t,e,n,i){ot.debug("parseDirective is being called",e,n,i);try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Ln={};break;case"type_directive":if(!Ln)throw new Error("currentDirective is undefined");Ln.type=e.toLowerCase();break;case"arg_directive":if(!Ln)throw new Error("currentDirective is undefined");Ln.args=JSON.parse(e);break;case"close_directive":Pn(t,Ln,i),Ln=void 0}}catch(t){ot.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${n}`),ot.error(t.message)}},Pn=function(t,e,n){switch(ot.info(`Directive type=${e.type} with args:`,e.args),e.type){case"init":case"initialize":["config"].forEach((t=>{void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),ot.info("sanitize in handleDirective",e.args),bi(e.args),ot.info("sanitize in handleDirective (done)",e.args),hn(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":ot.warn("themeCss encountered");break;default:ot.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e)}},Bn=ot,Fn=st,Rn=un,jn=t=>ft(t,Rn()),$n=wn,zn=(t,e,n,i)=>Nn(t,e,n,i),qn={},Hn=(t,e,n)=>{if(qn[t])throw new Error(`Diagram ${t} already registered.`);var i,r;qn[t]=e,n&&Vn(t,n),i=t,r=e.styles,mn[i]=r,e.injectUtils&&e.injectUtils(Bn,Fn,Rn,jn,$n,On,zn)},Un=t=>{if(t in qn)return qn[t];throw new Error(`Diagram ${t} not found.`)};class Gn extends Error{constructor(t){super(t),this.name="UnknownDiagramError"}}const Yn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Zn=/\s*%%.*\n/gm,Wn={},Kn=function(t,e){t=t.replace(Ve,"").replace(Yn,"").replace(Zn,"\n");for(const[n,{detector:i}]of Object.entries(Wn)){if(i(t,e))return n}throw new Gn(`No diagram type detected matching given configuration for text: ${t}`)},Xn=(...t)=>{for(const{id:e,detector:n,loader:i}of t)Vn(e,n,i)},Vn=(t,e,n)=>{Wn[t]?ot.error(`Detector with key ${t} already exists`):Wn[t]={detector:e,loader:n},ot.debug(`Detector with key ${t} added${n?" with loader":""}`)},Qn="​",Jn={curveBasis:o.$0Z,curveBasisClosed:o.Dts,curveBasisOpen:o.WQY,curveBumpX:o.qpX,curveBumpY:o.u93,curveBundle:o.tFB,curveCardinalClosed:o.OvA,curveCardinalOpen:o.dCK,curveCardinal:o.YY7,curveCatmullRomClosed:o.fGX,curveCatmullRomOpen:o.$m7,curveCatmullRom:o.zgE,curveLinear:o.c_6,curveLinearClosed:o.fxm,curveMonotoneX:o.FdL,curveMonotoneY:o.ak_,curveNatural:o.SxZ,curveStep:o.eA_,curveStepAfter:o.jsv,curveStepBefore:o.iJ},ti=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ei=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ni=function(t,e=null){try{const n=new RegExp(`[%]{2}(?![{]${ei.source})(?=[}][%]{2}).*\n`,"ig");let i;t=t.trim().replace(n,"").replace(/'/gm,'"'),ot.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const r=[];for(;null!==(i=ti.exec(t));)if(i.index===ti.lastIndex&&ti.lastIndex++,i&&!e||e&&i[1]&&i[1].match(e)||e&&i[2]&&i[2].match(e)){const t=i[1]?i[1]:i[2],e=i[3]?i[3].trim():i[4]?JSON.parse(i[4].trim()):null;r.push({type:t,args:e})}return 0===r.length&&r.push({type:t,args:null}),1===r.length?r[0]:r}catch(n){return ot.error(`ERROR: ${n.message} - Unable to parse directive\n ${null!==e?" type:"+e:""} based on the text:${t}`),{type:null,args:null}}};function ii(t,e){if(!t)return e;const n=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Jn[n]||e}function ri(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function ai(t){let e="",n="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?n=n+i+";":e=e+i+";");return{style:e,labelStyle:n}}let oi=0;const si=()=>(oi++,"id-"+Math.random().toString(36).substr(2,12)+"-"+oi);const ci=t=>function(t){let e="";const n="0123456789abcdef",i=n.length;for(let r=0;r{if(!t)return t;if(n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},n),wt.lineBreakRegex.test(t))return t;const i=t.split(" "),r=[];let a="";return i.forEach(((t,o)=>{const s=di(`${t} `,n),c=di(a,n);if(s>e){const{hyphenatedStrings:i,remainingWord:o}=hi(t,e,"-",n);r.push(a,...i),a=o}else c+s>=e?(r.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===i.length&&r.push(a)})),r.filter((t=>""!==t)).join(n.joinWith)}),((t,e,n)=>`${t}${e}${n.fontSize}${n.fontWeight}${n.fontFamily}${n.joinWith}`)),hi=(0,w.Z)(((t,e,n="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const r=[...t],a=[];let o="";return r.forEach(((t,s)=>{const c=`${o}${t}`;if(di(c,i)>=e){const t=s+1,e=r.length===t,i=`${c}${n}`;a.push(e?c:i),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),((t,e,n="-",i)=>`${t}${e}${n}${i.fontSize}${i.fontWeight}${i.fontFamily}`));function fi(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),gi(t,e).height}function di(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),gi(t,e).width}const gi=(0,w.Z)(((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e);const{fontSize:n,fontFamily:i,fontWeight:r}=e;if(!t)return{width:0,height:0};const[,a]=yi(n),s=["sans-serif",i],c=t.split(wt.lineBreakRegex),u=[],l=(0,o.Ys)("body");if(!l.remove)return{width:0,height:0,lineHeight:0};const h=l.append("svg");for(const t of s){let e=0;const n={width:0,height:0,lineHeight:0};for(const i of c){const o={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};o.text=i||Qn;const s=ui(h,o).style("font-size",a).style("font-weight",r).style("font-family",t),c=(s._groups||s)[0][0].getBBox();if(0===c.width&&0===c.height)throw new Error("svg element not in render tree");n.width=Math.round(Math.max(n.width,c.width)),e=Math.round(c.height),n.height+=e,n.lineHeight=Math.round(Math.max(n.lineHeight,e))}u.push(n)}h.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`));let pi;const bi=t=>{if(ot.debug("directiveSanitizer called with",t),"object"==typeof t&&(t.length?t.forEach((t=>bi(t))):Object.keys(t).forEach((e=>{ot.debug("Checking key",e),e.startsWith("__")&&(ot.debug("sanitize deleting __ option",e),delete t[e]),e.includes("proto")&&(ot.debug("sanitize deleting proto option",e),delete t[e]),e.includes("constr")&&(ot.debug("sanitize deleting constr option",e),delete t[e]),e.includes("themeCSS")&&(ot.debug("sanitizing themeCss option"),t[e]=wi(t[e])),e.includes("fontFamily")&&(ot.debug("sanitizing fontFamily option"),t[e]=wi(t[e])),e.includes("altFontFamily")&&(ot.debug("sanitizing altFontFamily option"),t[e]=wi(t[e])),Tt.includes(e)?"object"==typeof t[e]&&(ot.debug("sanitize deleting object",e),bi(t[e])):(ot.debug("sanitize deleting option",e),delete t[e])}))),t.themeVariables){const e=Object.keys(t.themeVariables);for(const n of e){const e=t.themeVariables[n];e&&e.match&&!e.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[n]="")}}ot.debug("After sanitization",t)},wi=t=>{let e=0,n=0;for(const i of t){if(e{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t,10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},vi={assignWithDepth:Je,wrapLabel:li,calculateTextHeight:fi,calculateTextWidth:di,calculateTextDimensions:gi,detectInit:function(t,e){const n=ni(t,/(?:init\b)|(?:initialize\b)/);let i={};if(Array.isArray(n)){const t=n.map((t=>t.args));bi(t),i=Je(i,[...t])}else i=n.args;if(i){let n=Kn(t,e);["config"].forEach((t=>{void 0!==i[t]&&("flowchart-v2"===n&&(n="flowchart"),i[n]=i[t],delete i[t])}))}return i},detectDirective:ni,isSubstringInArray:function(t,e){for(const[n,i]of e.entries())if(i.match(t))return n;return-1},interpolateToCurve:ii,calcLabelPosition:function(t){return 1===t.length?t[0]:function(t){let e,n=0;t.forEach((t=>{n+=ri(t,e),e=t}));let i,r=n/2;return e=void 0,t.forEach((t=>{if(e&&!i){const n=ri(t,e);if(n=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:(t,e,n)=>{let i;ot.info(`our points ${JSON.stringify(e)}`),e[0]!==n&&(e=e.reverse());let r,a=25;i=void 0,e.forEach((t=>{if(i&&!r){const e=ri(t,i);if(e=1&&(r={x:t.x,y:t.y}),n>0&&n<1&&(r={x:(1-n)*i.x+n*t.x,y:(1-n)*i.y+n*t.y})}}i=t}));const o=t?10:5,s=Math.atan2(e[0].y-r.y,e[0].x-r.x),c={x:0,y:0};return c.x=Math.sin(s)*o+(e[0].x+r.x)/2,c.y=-Math.cos(s)*o+(e[0].y+r.y)/2,c},calcTerminalLabelPosition:function(t,e,n){let i,r=JSON.parse(JSON.stringify(n));ot.info("our points",r),"start_left"!==e&&"start_right"!==e&&(r=r.reverse()),r.forEach((t=>{i=t}));let a,o=25+t;i=void 0,r.forEach((t=>{if(i&&!a){const e=ri(t,i);if(e=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*i.x+n*t.x,y:(1-n)*i.y+n*t.y})}}i=t}));const s=10+.5*t,c=Math.atan2(r[0].y-a.y,r[0].x-a.x),u={x:0,y:0};return u.x=Math.sin(c)*s+(r[0].x+a.x)/2,u.y=-Math.cos(c)*s+(r[0].y+a.y)/2,"start_left"===e&&(u.x=Math.sin(c+Math.PI)*s+(r[0].x+a.x)/2,u.y=-Math.cos(c+Math.PI)*s+(r[0].y+a.y)/2),"end_right"===e&&(u.x=Math.sin(c-Math.PI)*s+(r[0].x+a.x)/2-5,u.y=-Math.cos(c-Math.PI)*s+(r[0].y+a.y)/2-5),"end_left"===e&&(u.x=Math.sin(c)*s+(r[0].x+a.x)/2-5,u.y=-Math.cos(c)*s+(r[0].y+a.y)/2-5),u},formatUrl:function(t,e){const n=t.trim();if(n)return"loose"!==e.securityLevel?(0,a.Nm)(n):n},getStylesFromArray:ai,generateId:si,random:ci,runFunc:(t,...e)=>{const n=t.split("."),i=n.length-1,r=n[i];let a=window;for(let t=0;t{if(!i)return;const r=t.node().getBBox();t.append("text").text(i).attr("x",r.x+r.width/2).attr("y",-n).attr("class",e)},parseFontSize:yi},xi="10.2.3",ki={id:"c4",detector:t=>null!==t.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,4946));return{id:"c4",diagram:t}}},_i="flowchart",Ai={id:_i,detector:(t,e)=>{var n,i;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&"elk"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&null!==t.match(/^\s*graph/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,797));return{id:_i,diagram:t}}},Ei="flowchart-v2",Ti={id:Ei,detector:(t,e)=>{var n,i,r;return"dagre-d3"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&"elk"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&(null!==t.match(/^\s*graph/)&&"dagre-wrapper"===(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)||null!==t.match(/^\s*flowchart/))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8832));return{id:Ei,diagram:t}}},Ci={id:"er",detector:t=>null!==t.match(/^\s*erDiagram/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6787));return{id:"er",diagram:t}}},Si="gitGraph",Ii={id:Si,detector:t=>null!==t.match(/^\s*gitGraph/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8787));return{id:Si,diagram:t}}},Mi="gantt",Di={id:Mi,detector:t=>null!==t.match(/^\s*gantt/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,2418));return{id:Mi,diagram:t}}},Oi="info",Li={id:Oi,detector:t=>null!==t.match(/^\s*info/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5891));return{id:Oi,diagram:t}}},Ni={id:"pie",detector:t=>null!==t.match(/^\s*pie/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,431));return{id:"pie",diagram:t}}},Pi="quadrantChart",Bi={id:Pi,detector:t=>null!==t.match(/^\s*quadrantChart/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,722));return{id:Pi,diagram:t}}},Fi="requirement",Ri={id:Fi,detector:t=>null!==t.match(/^\s*requirement(Diagram)?/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,927));return{id:Fi,diagram:t}}},ji="sequence",$i={id:ji,detector:t=>null!==t.match(/^\s*sequenceDiagram/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5123));return{id:ji,diagram:t}}},zi="class",qi={id:zi,detector:(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*classDiagram/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6956));return{id:zi,diagram:t}}},Hi="classDiagram",Ui={id:Hi,detector:(t,e)=>{var n;return null!==t.match(/^\s*classDiagram/)&&"dagre-wrapper"===(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)||null!==t.match(/^\s*classDiagram-v2/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,9582));return{id:Hi,diagram:t}}},Gi="state",Yi={id:Gi,detector:(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*stateDiagram/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,2809));return{id:Gi,diagram:t}}},Zi="stateDiagram",Wi={id:Zi,detector:(t,e)=>{var n,i;return null!==t.match(/^\s*stateDiagram-v2/)||(!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer))||!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(i=null==e?void 0:e.state)?void 0:i.defaultRenderer)))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6185));return{id:Zi,diagram:t}}},Ki="journey",Xi={id:Ki,detector:t=>null!==t.match(/^\s*journey/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,7e3));return{id:Ki,diagram:t}}},Vi={setConf:function(){},draw:(t,e,n)=>{try{ot.debug("Renering svg for syntax error\n");const t=(0,o.Ys)("#"+e),i=t.append("g");i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+n),t.attr("height",100),t.attr("width",500),t.attr("viewBox","768 0 912 512")}catch(t){ot.error("Error while rendering info diagram"),ot.error((i=t)instanceof Error?i.message:String(i))}var i}},Qi={db:{clear:()=>{}},styles:()=>"",renderer:Vi,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},Ji="flowchart-elk",tr={id:Ji,detector:(t,e)=>{var n;return!!(t.match(/^\s*flowchart-elk/)||t.match(/^\s*flowchart|graph/)&&"elk"===(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5248));return{id:Ji,diagram:t}}},er="timeline",nr={id:er,detector:t=>null!==t.match(/^\s*timeline/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,315));return{id:er,diagram:t}}},ir="mindmap",rr={id:ir,detector:t=>null!==t.match(/^\s*mindmap/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8455));return{id:ir,diagram:t}}};let ar=!1;const or=()=>{ar||(ar=!0,Hn("error",Qi,(t=>"error"===t.toLowerCase().trim())),Hn("---",{db:{clear:()=>{}},styles:{},renderer:{},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},(t=>t.toLowerCase().trimStart().startsWith("---"))),Xn(ki,Ui,qi,Ci,Di,Li,Ni,Ri,$i,tr,Ti,Ai,rr,nr,Ii,Wi,Yi,Xi,Bi))};class sr{constructor(t){var e,n;this.text=t,this.type="graph",this.text+="\n";const i=un();try{this.type=Kn(t,i)}catch(t){this.type="error",this.detectError=t}const r=Un(this.type);ot.debug("Type "+this.type),this.db=r.db,null==(n=(e=this.db).clear)||n.call(e),this.renderer=r.renderer,this.parser=r.parser;const a=this.parser.parse.bind(this.parser);this.parser.parse=t=>a((t=>t.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm,""))(function(t,e){var n,i;const r=t.match(Ve);if(r){const a=Xe(r[1],{schema:Ke});return(null==a?void 0:a.title)&&(null==(n=e.setDiagramTitle)||n.call(e,a.title)),(null==a?void 0:a.displayMode)&&(null==(i=e.setDisplayMode)||i.call(e,a.displayMode)),t.slice(r[0].length)}return t}(t,this.db))),this.parser.parser.yy=this.db,r.init&&(r.init(i),ot.info("Initialized diagram "+this.type,i)),this.parse()}parse(){var t,e;if(this.detectError)throw this.detectError;null==(e=(t=this.db).clear)||e.call(t),this.parser.parse(this.text)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}}const cr=async t=>{const e=Kn(t,un());try{Un(e)}catch(t){const n=Wn[e].loader;if(!n)throw new Gn(`Diagram ${e} not found.`);const{id:i,diagram:r}=await n();Hn(i,r)}return new sr(t)};let ur=[];const lr=t=>{ur.push(t)};const hr=["graph","flowchart","flowchart-v2","flowchart-elk","stateDiagram","stateDiagram-v2"],fr=["foreignobject"],dr=["dominant-baseline"];const gr=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},pr=(t,e,n=[])=>`\n.${t} ${e} { ${n.join(" !important; ")} !important; }`,br=(t,e,n,i)=>{const r=((t,e,n={})=>{var i;let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!(0,rt.Z)(n)&&hr.includes(e)){const e=["> *","span"],a=["rect","polygon","ellipse","circle","path"],o=t.htmlLabels||(null==(i=t.flowchart)?void 0:i.htmlLabels)?e:a;for(const t in n){const e=n[t];(0,rt.Z)(e.styles)||o.forEach((t=>{r+=pr(e.id,t,e.styles)})),(0,rt.Z)(e.textStyles)||(r+=pr(e.id,"tspan",e.textStyles))}}return r})(t,e,n);return M(J(`${i}{${yn(e,r,t.themeVariables)}}`),D)},wr=(t,e,n,i,r)=>{const a=t.append("div");a.attr("id",n),i&&a.attr("style",i);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return r&&o.attr("xmlns:xlink",r),o.append("g"),t};function mr(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const yr=Object.freeze({render:async function(t,e,n){var i,r,a,c;or(),fn();const u=vi.detectInit(e);u&&(bi(u),hn(u));const l=un();ot.debug(l),e.length>((null==l?void 0:l.maxTextSize)??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),e=(e=e.replace(/\r\n?/g,"\n")).replace(/<(\w+)([^>]*)>/g,((t,e,n)=>"<"+e+n.replace(/="([^"]*)"/g,"='$1'")+">"));const h="#"+t,f="i"+t,d="#"+f,g="d"+t,p="#"+g;let b=(0,o.Ys)("body");const w="sandbox"===l.securityLevel,m="loose"===l.securityLevel,y=l.fontFamily;if(void 0!==n){if(n&&(n.innerHTML=""),w){const t=mr((0,o.Ys)(n),f);b=(0,o.Ys)(t.nodes()[0].contentDocument.body),b.node().style.margin=0}else b=(0,o.Ys)(n);wr(b,t,g,`font-family: ${y}`,"http://www.w3.org/1999/xlink")}else{if(((t,e,n,i)=>{var r,a,o;null==(r=t.getElementById(e))||r.remove(),null==(a=t.getElementById(n))||a.remove(),null==(o=t.getElementById(i))||o.remove()})(document,t,g,f),w){const t=mr((0,o.Ys)("body"),f);b=(0,o.Ys)(t.nodes()[0].contentDocument.body),b.node().style.margin=0}else b=(0,o.Ys)("body");wr(b,t,g)}let v,x;e=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"})),e}(e);try{v=await cr(e)}catch(t){v=new sr("error"),x=t}const k=b.select(p).node(),_=v.type,A=k.firstChild,E=A.firstChild,T=hr.includes(_)?v.renderer.getClasses(e,v):{},C=br(l,_,T,h),S=document.createElement("style");S.innerHTML=C,A.insertBefore(S,E);try{await v.renderer.draw(e,t,xi,v)}catch(n){throw Vi.draw(e,t,xi),n}!function(t,e,n,i){(function(t,e){t.attr("role","graphics-document document"),(0,rt.Z)(e)||t.attr("aria-roledescription",e)})(e,t),function(t,e,n,i){if(void 0!==t.insert&&(e||n)){if(n){const e="chart-desc-"+i;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(n)}if(e){const n="chart-title-"+i;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}(e,n,i,e.attr("id"))}(_,b.select(`${p} svg`),null==(r=(i=v.db).getAccTitle)?void 0:r.call(i),null==(c=(a=v.db).getAccDescription)?void 0:c.call(a)),b.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let I=b.select(p).node().innerHTML;if(ot.debug("config.arrowMarkerAbsolute",l.arrowMarkerAbsolute),I=((t="",e,n)=>{let i=t;return n||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=gr(i),i=i.replace(/
/g,"
"),i})(I,w,pt(l.arrowMarkerAbsolute)),w){I=((t="",e)=>``)(I,b.select(p+" svg").node())}else m||(I=s.sanitize(I,{ADD_TAGS:fr,ADD_ATTR:dr}));if(ur.forEach((t=>{t()})),ur=[],x)throw x;const M=w?d:p,D=(0,o.Ys)(M).node();return D&&"remove"in D&&D.remove(),{svg:I,bindFunctions:v.db.bindFunctions}},parse:async function(t,e){or();try{(await cr(t)).parse()}catch(t){if(null==e?void 0:e.suppressErrors)return!1;throw t}return!0},parseDirective:Nn,getDiagramFromText:cr,initialize:function(t={}){var e;(null==t?void 0:t.fontFamily)&&!(null==(e=t.themeVariables)?void 0:e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),en=Je({},t),(null==t?void 0:t.theme)&&t.theme in _t?t.themeVariables=_t[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=_t.default.getThemeVariables(t.themeVariables));const n="object"==typeof t?(t=>(nn=Je({},tn),nn=Je(nn,t),t.theme&&_t[t.theme]&&(nn.themeVariables=_t[t.theme].getThemeVariables(t.themeVariables)),on(nn,rn),nn))(t):sn();st(n.logLevel),or()},getConfig:un,setConfig:cn,getSiteConfig:sn,updateSiteConfig:t=>(nn=Je(nn,t),on(nn,rn),nn),reset:()=>{fn()},globalReset:()=>{fn(tn)},defaultConfig:tn});st(un().logLevel),fn(un());const vr=(t,e,n)=>{ot.warn(t),mi(t)?(n&&n(t.str,t.hash),e.push({...t,message:t.str,error:t})):(n&&n(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},xr=async function(t={querySelector:".mermaid"}){try{await kr(t)}catch(e){if(mi(e)&&ot.error(e.str),Ir.parseError&&Ir.parseError(e),!t.suppressErrors)throw ot.error("Use the suppressErrors option to suppress these errors"),e}},kr=async function({postRenderCallback:t,querySelector:e,nodes:n}={querySelector:".mermaid"}){const r=yr.getConfig();let a;if(ot.debug((t?"":"No ")+"Callback function found"),n)a=n;else{if(!e)throw new Error("Nodes and querySelector are both undefined");a=document.querySelectorAll(e)}ot.debug(`Found ${a.length} diagrams`),void 0!==(null==r?void 0:r.startOnLoad)&&(ot.debug("Start On Load: "+(null==r?void 0:r.startOnLoad)),yr.updateSiteConfig({startOnLoad:null==r?void 0:r.startOnLoad}));const o=new vi.initIdGenerator(r.deterministicIds,r.deterministicIDSeed);let s;const c=[];for(const e of Array.from(a)){if(ot.info("Rendering diagram: "+e.id),e.getAttribute("data-processed"))continue;e.setAttribute("data-processed","true");const n=`mermaid-${o.next()}`;s=e.innerHTML,s=(0,i.Z)(vi.entityDecode(s)).trim().replace(//gi,"
");const r=vi.detectInit(s);r&&ot.debug("Detected early reinit: ",r);try{const{svg:i,bindFunctions:r}=await Sr(n,s,e);e.innerHTML=i,t&&await t(n),r&&r(e)}catch(t){vr(t,c,Ir.parseError)}}if(c.length>0)throw c[0]},_r=function(t){yr.initialize(t)},Ar=function(){if(Ir.startOnLoad){const{startOnLoad:t}=yr.getConfig();t&&Ir.run().catch((t=>ot.error("Mermaid failed to initialize",t)))}};"undefined"!=typeof document&&window.addEventListener("load",Ar,!1);const Er=[];let Tr=!1;const Cr=async()=>{if(!Tr){for(Tr=!0;Er.length>0;){const t=Er.shift();if(t)try{await t()}catch(t){ot.error("Error executing queue",t)}}Tr=!1}},Sr=(t,e,n)=>new Promise(((i,r)=>{Er.push((()=>new Promise(((a,o)=>{yr.render(t,e,n).then((t=>{a(t),i(t)}),(t=>{var e;ot.error("Error parsing",t),null==(e=Ir.parseError)||e.call(Ir,t),o(t),r(t)}))})))),Cr().catch(r)})),Ir={startOnLoad:!0,mermaidAPI:yr,parse:async(t,e)=>new Promise(((n,i)=>{Er.push((()=>new Promise(((r,a)=>{yr.parse(t,e).then((t=>{r(t),n(t)}),(t=>{var e;ot.error("Error parsing",t),null==(e=Ir.parseError)||e.call(Ir,t),a(t),i(t)}))})))),Cr().catch(i)})),render:Sr,init:async function(t,e,n){ot.warn("mermaid.init is deprecated. Please use run instead."),t&&_r(t);const i={postRenderCallback:n,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await xr(i)},run:xr,registerExternalDiagrams:async(t,{lazyLoad:e=!0}={})=>{Xn(...t),!1===e&&await(async()=>{ot.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(Wn).map((async([t,{detector:e,loader:n}])=>{if(n)try{Un(t)}catch(i){try{const{diagram:t,id:i}=await n();Hn(i,t,e)}catch(e){throw ot.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete Wn[t],e}}})))).filter((t=>"rejected"===t.status));if(t.length>0){ot.error(`Failed to load ${t.length} external diagrams`);for(const e of t)ot.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}})()},initialize:_r,parseError:void 0,contentLoaded:Ar,setParseErrorHandler:function(t){Ir.parseError=t},detectType:Kn}},8455:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return S}});var i=n(8540),r=n(1504),a=n(1524),o=n(87),s=n(3539),c=n(7471),u=n(1778),l=n(733),h=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,4],n=[1,13],i=[1,12],r=[1,15],a=[1,16],o=[1,20],s=[1,19],c=[6,7,8],u=[1,26],l=[1,24],h=[1,25],f=[6,7,11],d=[1,6,13,15,16,19,22],g=[1,33],p=[1,34],b=[1,6,7,11,13,15,16,19,22],w={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",a[s].id),i.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 16:i.getLogger().trace("Icon: ",a[s]),i.decorateNode({icon:a[s]});break;case 17:case 21:i.decorateNode({class:a[s]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",a[s].id),i.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 20:i.decorateNode({icon:a[s]});break;case 25:i.getLogger().trace("node found ..",a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:i.getType(a[s-2],a[s])};break;case 26:this.$={id:a[s],descr:a[s],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:i.getType(a[s-2],a[s])}}},table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},t(c,[2,3]),{1:[2,2]},t(c,[2,4]),t(c,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},{6:n,9:22,12:11,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},{6:u,7:l,10:23,11:h},t(f,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:s}),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,23]),t(f,[2,24]),t(f,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:l,10:32,11:h},{1:[2,7],6:n,12:21,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},t(d,[2,14],{7:g,11:p}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(f,[2,15]),t(f,[2,16]),t(f,[2,17]),{20:[1,35]},{21:[1,36]},t(d,[2,13],{7:g,11:p}),t(b,[2,11]),t(b,[2,12]),{21:[1,37]},t(f,[2,25]),t(f,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},m={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\-\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};function y(){this.yy={}}return w.lexer=m,y.prototype=w,w.Parser=y,new y}());h.parser=h;const f=h,d=t=>(0,i.d)(t,(0,i.c)());let g=[],p=0,b={};const w={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},m=(t,e)=>{b[t]=e},y=t=>{switch(t){case w.DEFAULT:return"no-border";case w.RECT:return"rect";case w.ROUNDED_RECT:return"rounded-rect";case w.CIRCLE:return"circle";case w.CLOUD:return"cloud";case w.BANG:return"bang";case w.HEXAGON:return"hexgon";default:return"no-border"}};let v;const x=t=>b[t],k=Object.freeze(Object.defineProperty({__proto__:null,addNode:(t,e,n,r)=>{i.l.info("addNode",t,e,n,r);const a=(0,i.c)(),o={id:p++,nodeId:d(e),level:t,descr:d(n),type:r,children:[],width:(0,i.c)().mindmap.maxNodeWidth};switch(o.type){case w.ROUNDED_RECT:case w.RECT:case w.HEXAGON:o.padding=2*a.mindmap.padding;break;default:o.padding=a.mindmap.padding}const s=function(t){for(let e=g.length-1;e>=0;e--)if(g[e].level{g=[],p=0,b={}},decorateNode:t=>{const e=g[g.length-1];t&&t.icon&&(e.icon=d(t.icon)),t&&t.class&&(e.class=d(t.class))},getElementById:x,getLogger:()=>i.l,getMindmap:()=>g.length>0?g[0]:null,getNodeById:t=>g[t],getType:(t,e)=>{switch(i.l.debug("In get type",t,e),t){case"[":return w.RECT;case"(":return")"===e?w.ROUNDED_RECT:w.CLOUD;case"((":return w.CIRCLE;case")":return w.CLOUD;case"))":return w.BANG;case"{{":return w.HEXAGON;default:return w.DEFAULT}},nodeType:w,get parseError(){return v},sanitizeText:d,setElementForId:m,setErrorHandler:t=>{v=t},type2Str:y},Symbol.toStringTag,{value:"Module"}));const _=function(t,e,n,i){const r=i.htmlLabels,o=n%11,s=t.append("g");e.section=o;let c="section-"+o;o<0&&(c+=" section-root"),s.attr("class",(e.class?e.class+" ":"")+"mindmap-node "+c);const u=s.append("g"),l=s.append("g"),h=e.descr.replace(/()/g,"\n");(0,a.c)(l,h,{useHtmlLabels:r,width:e.width,classes:"mindmap-node-label"}),r||l.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const f=l.node().getBBox(),d=i.fontSize.replace?i.fontSize.replace("px",""):i.fontSize;if(e.height=f.height+1.1*d*.5+e.padding,e.width=f.width+2*e.padding,e.icon)if(e.type===w.CIRCLE){e.height+=50,e.width+=50;s.append("foreignObject").attr("height","50px").attr("width",e.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+o+" "+e.icon),l.attr("transform","translate("+e.width/2+", "+(e.height/2-1.5*e.padding)+")")}else{e.width+=50;const t=e.height;e.height=Math.max(t,60);const n=Math.abs(e.height-t);s.append("foreignObject").attr("width","60px").attr("height",e.height).attr("style","text-align: center;margin-top:"+n/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+o+" "+e.icon),l.attr("transform","translate("+(25+e.width/2)+", "+(n/2+e.padding/2)+")")}else if(r){const t=(e.width-f.width)/2,n=(e.height-f.height)/2;l.attr("transform","translate("+t+", "+n+")")}else{const t=e.width/2,n=e.padding/2;l.attr("transform","translate("+t+", "+n+")")}switch(e.type){case w.DEFAULT:!function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)}(u,e,o);break;case w.ROUNDED_RECT:!function(t,e){t.append("rect").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("height",e.height).attr("rx",e.padding).attr("ry",e.padding).attr("width",e.width)}(u,e);break;case w.RECT:!function(t,e){t.append("rect").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("height",e.height).attr("width",e.width)}(u,e);break;case w.CIRCLE:u.attr("transform","translate("+e.width/2+", "+ +e.height/2+")"),function(t,e){t.append("circle").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("r",e.width/2)}(u,e);break;case w.CLOUD:!function(t,e){const n=e.width,i=e.height,r=.15*n,a=.25*n,o=.35*n,s=.2*n;t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 0 a${r},${r} 0 0,1 ${.25*n},${-1*n*.1}\n a${o},${o} 1 0,1 ${.4*n},${-1*n*.1}\n a${a},${a} 1 0,1 ${.35*n},${1*n*.2}\n\n a${r},${r} 1 0,1 ${.15*n},${1*i*.35}\n a${s},${s} 1 0,1 ${-1*n*.15},${1*i*.65}\n\n a${a},${r} 1 0,1 ${-1*n*.25},${.15*n}\n a${o},${o} 1 0,1 ${-1*n*.5},0\n a${r},${r} 1 0,1 ${-1*n*.25},${-1*n*.15}\n\n a${r},${r} 1 0,1 ${-1*n*.1},${-1*i*.35}\n a${s},${s} 1 0,1 ${.1*n},${-1*i*.65}\n\n H0 V0 Z`)}(u,e);break;case w.BANG:!function(t,e){const n=e.width,i=e.height,r=.15*n;t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 0 a${r},${r} 1 0,0 ${.25*n},${-1*i*.1}\n a${r},${r} 1 0,0 ${.25*n},0\n a${r},${r} 1 0,0 ${.25*n},0\n a${r},${r} 1 0,0 ${.25*n},${1*i*.1}\n\n a${r},${r} 1 0,0 ${.15*n},${1*i*.33}\n a${.8*r},${.8*r} 1 0,0 0,${1*i*.34}\n a${r},${r} 1 0,0 ${-1*n*.15},${1*i*.33}\n\n a${r},${r} 1 0,0 ${-1*n*.25},${.15*i}\n a${r},${r} 1 0,0 ${-1*n*.25},0\n a${r},${r} 1 0,0 ${-1*n*.25},0\n a${r},${r} 1 0,0 ${-1*n*.25},${-1*i*.15}\n\n a${r},${r} 1 0,0 ${-1*n*.1},${-1*i*.33}\n a${.8*r},${.8*r} 1 0,0 0,${-1*i*.34}\n a${r},${r} 1 0,0 ${.1*n},${-1*i*.33}\n\n H0 V0 Z`)}(u,e);break;case w.HEXAGON:!function(t,e){const n=e.height,i=n/4,r=e.width-e.padding+2*i;!function(t,e,n,i,r){t.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+(r.width-e)/2+", "+n+")")}(t,r,n,[{x:i,y:0},{x:r-i,y:0},{x:r,y:-n/2},{x:r-i,y:-n},{x:i,y:-n},{x:0,y:-n/2}],e)}(u,e)}return m(e.id,s),e.height},A=function(t){const e=x(t.id),n=t.x||0,i=t.y||0;e.attr("transform","translate("+n+","+i+")")};function E(t,e,n,i){_(t,e,n,i),e.children&&e.children.forEach(((e,r)=>{E(t,e,n<0?r:n,i)}))}function T(t,e,n,i){e.add({group:"nodes",data:{id:t.id,labelText:t.descr,height:t.height,width:t.width,level:i,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach((r=>{T(r,e,n,i+1),e.add({group:"edges",data:{id:`${t.id}_${r.id}`,source:t.id,target:r.id,depth:i,section:r.section}})}))}function C(t,e){return new Promise((n=>{const a=(0,r.Ys)("body").append("div").attr("id","cy").attr("style","display:none"),s=o({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});a.remove(),T(t,s,e,0),s.nodes().forEach((function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}})),s.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),s.ready((t=>{i.l.info("Ready",t),n(s)}))}))}o.use(s);const S={db:k,renderer:{draw:async(t,e,n,a)=>{const o=(0,i.c)();o.htmlLabels=!1,a.db.clear(),a.parser.parse(t),i.l.debug("Rendering mindmap diagram\n"+t,a.parser);const s=(0,i.c)().securityLevel;let c;"sandbox"===s&&(c=(0,r.Ys)("#i"+e));const u=("sandbox"===s?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);u.append("g");const l=a.db.getMindmap(),h=u.append("g");h.attr("class","mindmap-edges");const f=u.append("g");f.attr("class","mindmap-nodes"),E(f,l,-1,o);const d=await C(l,o);!function(t,e){e.edges().map(((e,n)=>{const r=e.data();if(e[0]._private.bodyBounds){const a=e[0]._private.rscratch;i.l.trace("Edge: ",n,r),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+r.section+" edge-depth-"+r.depth)}}))}(h,d),function(t){t.nodes().map(((t,e)=>{const n=t.data();n.x=t.position().x,n.y=t.position().y,A(n);const r=x(n.nodeId);i.l.info("Id:",e,"Position: (",t.position().x,", ",t.position().y,")",n),r.attr("transform",`translate(${t.position().x-n.width/2}, ${t.position().y-n.height/2})`),r.attr("attr",`apa-${e})`)}))}(d),(0,i.p)(void 0,u,o.mindmap.padding,o.mindmap.useMaxWidth)}},parser:f,styles:t=>`\n .edge {\n stroke-width: 3;\n }\n ${(t=>{let e="";for(let e=0;el&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},v={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};function x(){this.yy={}}return y.lexer=v,x.prototype=y,y.Parser=x,new x}());a.parser=a;const o=a;let s={},c=!1;const u={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().pie,addSection:function(t,e){t=i.e.sanitizeText(t,(0,i.c)()),void 0===s[t]&&(s[t]=e,i.l.debug("Added new section :",t))},getSections:()=>s,cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){s={},c=!1,(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setDiagramTitle:i.r,getDiagramTitle:i.t,setShowData:function(t){c=t},getShowData:function(){return c},getAccDescription:i.a,setAccDescription:i.b},l=t=>`\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${t.pieOuterStrokeColor};\n stroke-width: ${t.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`;let h,f=(0,i.c)();const d=450,g={parser:o,db:u,renderer:{draw:(t,e,n,a)=>{var o;try{f=(0,i.c)(),i.l.debug("Rendering info diagram\n"+t);const n=(0,i.c)().securityLevel;let k;"sandbox"===n&&(k=(0,r.Ys)("#i"+e));const _="sandbox"===n?(0,r.Ys)(k.nodes()[0].contentDocument.body):(0,r.Ys)("body"),A="sandbox"===n?k.nodes()[0].contentDocument:document;a.db.clear(),a.parser.parse(t),i.l.debug("Parsed info diagram");const E=A.getElementById(e);h=E.parentElement.offsetWidth,void 0===h&&(h=1200),void 0!==f.useWidth&&(h=f.useWidth),void 0!==f.pie.useWidth&&(h=f.pie.useWidth);const T=_.select("#"+e);(0,i.i)(T,d,h,f.pie.useMaxWidth),E.setAttribute("viewBox","0 0 "+h+" "+d);var s=18,c=Math.min(h,d)/2-40,u=T.append("g").attr("transform","translate("+h/2+",225)"),l=a.db.getSections(),g=0;Object.keys(l).forEach((function(t){g+=l[t]}));const C=f.themeVariables;var p=[C.pie1,C.pie2,C.pie3,C.pie4,C.pie5,C.pie6,C.pie7,C.pie8,C.pie9,C.pie10,C.pie11,C.pie12];const S=(null==(o=f.pie)?void 0:o.textPosition)??.75;let[I]=(0,i.B)(C.pieOuterStrokeWidth);I??(I=2);var b=(0,r.PKp)().range(p),w=Object.entries(l).map((function(t,e){return{order:e,name:t[0],value:t[1]}})),m=(0,r.ve8)().value((function(t){return t.value})).sort((function(t,e){return t.order-e.order}))(w),y=(0,r.Nb1)().innerRadius(0).outerRadius(c),v=(0,r.Nb1)().innerRadius(c*S).outerRadius(c*S);u.append("circle").attr("cx",0).attr("cy",0).attr("r",c+I/2).attr("class","pieOuterCircle"),u.selectAll("mySlices").data(m).enter().append("path").attr("d",y).attr("fill",(function(t){return b(t.data.name)})).attr("class","pieCircle"),u.selectAll("mySlices").data(m).enter().append("text").text((function(t){return(t.data.value/g*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+v.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice"),u.append("text").text(a.db.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var x=u.selectAll(".legend").data(b.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*b.domain().length/2)+")"}));x.append("rect").attr("width",s).attr("height",s).style("fill",b).style("stroke",b),x.data(m).append("text").attr("x",22).attr("y",14).text((function(t){return a.db.getShowData()||f.showData||f.pie.showData?t.data.name+" ["+t.data.value+"]":t.data.name}))}catch(t){i.l.error("Error while rendering info diagram"),i.l.error(t)}}},styles:l}},722:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return h}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[1,6],r=[1,7],a=[1,8],o=[1,10],s=[1,5,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],c=[1,5,7,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],u=[38,39,40],l=[2,8],h=[1,19],f=[1,23],d=[1,24],g=[1,25],p=[1,26],b=[1,27],w=[1,29],m=[1,30],y=[1,31],v=[1,32],x=[1,33],k=[1,34],_=[1,37],A=[1,38],E=[1,39],T=[1,40],C=[1,41],S=[1,42],I=[1,43],M=[1,44],D=[1,45],O=[1,46],L=[1,47],N=[1,48],P=[1,49],B=[1,52],F=[1,67],R=[1,68],j=[5,23,27,38,39,40,50,51,52,53,54,55,56,57,58,59,60,61],$=[5,7,38,39,40,41],z={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,directive:6,QUADRANT:7,document:8,line:9,statement:10,axisDetails:11,quadrantDetails:12,points:13,title:14,title_value:15,acc_title:16,acc_title_value:17,acc_descr:18,acc_descr_value:19,acc_descr_multiline_value:20,section:21,text:22,point_start:23,point_x:24,point_y:25,"X-AXIS":26,"AXIS-TEXT-DELIMITER":27,"Y-AXIS":28,QUADRANT_1:29,QUADRANT_2:30,QUADRANT_3:31,QUADRANT_4:32,openDirective:33,typeDirective:34,closeDirective:35,":":36,argDirective:37,NEWLINE:38,SEMI:39,EOF:40,open_directive:41,type_directive:42,arg_directive:43,close_directive:44,alphaNumToken:45,textNoTagsToken:46,STR:47,MD_STR:48,alphaNum:49,PUNCTUATION:50,AMP:51,NUM:52,ALPHA:53,COMMA:54,PLUS:55,EQUALS:56,MULT:57,DOT:58,BRKT:59,UNDERSCORE:60,MINUS:61,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",7:"QUADRANT",14:"title",15:"title_value",16:"acc_title",17:"acc_title_value",18:"acc_descr",19:"acc_descr_value",20:"acc_descr_multiline_value",21:"section",23:"point_start",24:"point_x",25:"point_y",26:"X-AXIS",27:"AXIS-TEXT-DELIMITER",28:"Y-AXIS",29:"QUADRANT_1",30:"QUADRANT_2",31:"QUADRANT_3",32:"QUADRANT_4",36:":",38:"NEWLINE",39:"SEMI",40:"EOF",41:"open_directive",42:"type_directive",43:"arg_directive",44:"close_directive",47:"STR",48:"MD_STR",50:"PUNCTUATION",51:"AMP",52:"NUM",53:"ALPHA",54:"COMMA",55:"PLUS",56:"EQUALS",57:"MULT",58:"DOT",59:"BRKT",60:"UNDERSCORE",61:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[10,0],[10,2],[10,1],[10,1],[10,1],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[13,4],[11,4],[11,3],[11,2],[11,4],[11,3],[11,2],[12,2],[12,2],[12,2],[12,2],[6,3],[6,5],[4,1],[4,1],[4,1],[33,1],[34,1],[37,1],[35,1],[22,1],[22,2],[22,1],[22,1],[49,1],[49,2],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[46,1],[46,1],[46,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 13:this.$=a[s].trim(),i.setDiagramTitle(this.$);break;case 14:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 15:case 16:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 17:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 19:i.addPoint(a[s-3],a[s-1],a[s]);break;case 20:i.setXAxisLeftText(a[s-2]),i.setXAxisRightText(a[s]);break;case 21:a[s-1].text+=" ⟶ ",i.setXAxisLeftText(a[s-1]);break;case 22:i.setXAxisLeftText(a[s]);break;case 23:i.setYAxisBottomText(a[s-2]),i.setYAxisTopText(a[s]);break;case 24:a[s-1].text+=" ⟶ ",i.setYAxisBottomText(a[s-1]);break;case 25:i.setYAxisBottomText(a[s]);break;case 26:i.setQuadrant1Text(a[s]);break;case 27:i.setQuadrant2Text(a[s]);break;case 28:i.setQuadrant3Text(a[s]);break;case 29:i.setQuadrant4Text(a[s]);break;case 35:i.parseDirective("%%{","open_directive");break;case 36:i.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 38:i.parseDirective("}%%","close_directive","quadrantChart");break;case 39:case 41:this.$={text:a[s],type:"text"};break;case 40:this.$={text:a[s-1].text+""+a[s],type:a[s-1].type};break;case 42:this.$={text:a[s],type:"markdown"};break;case 43:this.$=a[s];break;case 44:this.$=a[s-1]+""+a[s]}},table:[{3:1,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{1:[3]},{3:11,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{3:12,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{3:13,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},t(s,[2,5],{8:14}),t(c,[2,32]),t(c,[2,33]),t(c,[2,34]),{34:15,42:[1,16]},{42:[2,35]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(u,l,{33:9,9:17,10:18,11:20,12:21,13:22,6:28,22:35,45:36,1:[2,4],5:h,14:f,16:d,18:g,20:p,21:b,26:w,28:m,29:y,30:v,31:x,32:k,41:o,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),{35:50,36:[1,51],44:B},t([36,44],[2,36]),t(s,[2,6]),{4:53,38:i,39:r,40:a},t(u,l,{33:9,11:20,12:21,13:22,6:28,22:35,45:36,10:54,5:h,14:f,16:d,18:g,20:p,21:b,26:w,28:m,29:y,30:v,31:x,32:k,41:o,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),{15:[1,55]},{17:[1,56]},{19:[1,57]},t(u,[2,16]),t(u,[2,17]),t(u,[2,18]),{22:58,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:59,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:60,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:61,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:62,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:63,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{5:F,23:[1,64],45:66,46:65,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R},t(j,[2,39]),t(j,[2,41]),t(j,[2,42]),t(j,[2,45]),t(j,[2,46]),t(j,[2,47]),t(j,[2,48]),t(j,[2,49]),t(j,[2,50]),t(j,[2,51]),t(j,[2,52]),t(j,[2,53]),t(j,[2,54]),t(j,[2,55]),t($,[2,30]),{37:69,43:[1,70]},t($,[2,38]),t(s,[2,7]),t(u,[2,9]),t(u,[2,13]),t(u,[2,14]),t(u,[2,15]),t(u,[2,22],{46:65,45:66,5:F,27:[1,71],50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,25],{46:65,45:66,5:F,27:[1,72],50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,26],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,27],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,28],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,29],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),{24:[1,73]},t(j,[2,40]),t(j,[2,56]),t(j,[2,57]),t(j,[2,58]),{35:74,44:B},{44:[2,37]},t(u,[2,21],{45:36,22:75,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),t(u,[2,24],{45:36,22:76,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),{25:[1,77]},t($,[2,31]),t(u,[2,20],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,23],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,19])],defaultActions:{10:[2,35],11:[2,1],12:[2,2],13:[2,3],70:[2,37]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},q={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),41;case 1:return this.begin("type_directive"),42;case 2:return this.popState(),this.begin("arg_directive"),36;case 3:return this.popState(),this.popState(),44;case 4:return 43;case 5:case 6:case 8:break;case 7:return 38;case 9:return this.begin("title"),14;case 10:return this.popState(),"title_value";case 11:return this.begin("acc_title"),16;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),18;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 27:case 29:case 33:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 26;case 19:return 28;case 20:return 27;case 21:return 29;case 22:return 30;case 23:return 31;case 24:return 32;case 25:this.begin("md_string");break;case 26:return"MD_STR";case 28:this.begin("string");break;case 30:return"STR";case 31:return this.begin("point_start"),23;case 32:return this.begin("point_x"),24;case 34:this.popState(),this.begin("point_y");break;case 35:return this.popState(),25;case 36:return 7;case 37:return 53;case 38:return"COLON";case 39:return 55;case 40:return 54;case 41:case 42:return 56;case 43:return 57;case 44:return 59;case 45:return 60;case 46:return 58;case 47:return 51;case 48:return 61;case 49:return 52;case 50:return 5;case 51:return 39;case 52:return 50;case 53:return 40}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[35],inclusive:!1},point_x:{rules:[34],inclusive:!1},point_start:{rules:[32,33],inclusive:!1},acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[10],inclusive:!1},md_string:{rules:[26,27],inclusive:!1},string:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,11,13,15,18,19,20,21,22,23,24,25,28,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function H(){this.yy={}}return z.lexer=q,H.prototype=z,z.Parser=H,new H}());a.parser=a;const o=a,s=(0,i.C)();const c=(0,i.c)();function u(t){return(0,i.d)(t.trim(),c)}const l=new class{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var t,e,n,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:(null==(t=i.D.quadrantChart)?void 0:t.chartWidth)||500,chartWidth:(null==(e=i.D.quadrantChart)?void 0:e.chartHeight)||500,titlePadding:(null==(n=i.D.quadrantChart)?void 0:n.titlePadding)||10,titleFontSize:(null==(r=i.D.quadrantChart)?void 0:r.titleFontSize)||20,quadrantPadding:(null==(a=i.D.quadrantChart)?void 0:a.quadrantPadding)||5,xAxisLabelPadding:(null==(o=i.D.quadrantChart)?void 0:o.xAxisLabelPadding)||5,yAxisLabelPadding:(null==(s=i.D.quadrantChart)?void 0:s.yAxisLabelPadding)||5,xAxisLabelFontSize:(null==(c=i.D.quadrantChart)?void 0:c.xAxisLabelFontSize)||16,yAxisLabelFontSize:(null==(u=i.D.quadrantChart)?void 0:u.yAxisLabelFontSize)||16,quadrantLabelFontSize:(null==(l=i.D.quadrantChart)?void 0:l.quadrantLabelFontSize)||16,quadrantTextTopPadding:(null==(h=i.D.quadrantChart)?void 0:h.quadrantTextTopPadding)||5,pointTextPadding:(null==(f=i.D.quadrantChart)?void 0:f.pointTextPadding)||5,pointLabelFontSize:(null==(d=i.D.quadrantChart)?void 0:d.pointLabelFontSize)||12,pointRadius:(null==(g=i.D.quadrantChart)?void 0:g.pointRadius)||5,xAxisPosition:(null==(p=i.D.quadrantChart)?void 0:p.xAxisPosition)||"top",yAxisPosition:(null==(b=i.D.quadrantChart)?void 0:b.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:(null==(w=i.D.quadrantChart)?void 0:w.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:(null==(m=i.D.quadrantChart)?void 0:m.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:s.quadrant1Fill,quadrant2Fill:s.quadrant2Fill,quadrant3Fill:s.quadrant3Fill,quadrant4Fill:s.quadrant4Fill,quadrant1TextFill:s.quadrant1TextFill,quadrant2TextFill:s.quadrant2TextFill,quadrant3TextFill:s.quadrant3TextFill,quadrant4TextFill:s.quadrant4TextFill,quadrantPointFill:s.quadrantPointFill,quadrantPointTextFill:s.quadrantPointTextFill,quadrantXAxisTextFill:s.quadrantXAxisTextFill,quadrantYAxisTextFill:s.quadrantYAxisTextFill,quadrantTitleFill:s.quadrantTitleFill,quadrantInternalBorderStrokeFill:s.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:s.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),i.l.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}setConfig(t){i.l.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){i.l.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,n,i){const r=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,a={top:"top"===t&&e?r:0,bottom:"bottom"===t&&e?r:0},o=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,s={left:"left"===this.config.yAxisPosition&&n?o:0,right:"right"===this.config.yAxisPosition&&n?o:0},c=this.config.titleFontSize+2*this.config.titlePadding,u={top:i?c:0},l=this.config.quadrantPadding+s.left,h=this.config.quadrantPadding+a.top+u.top,f=this.config.chartWidth-2*this.config.quadrantPadding-s.left-s.right,d=this.config.chartHeight-2*this.config.quadrantPadding-a.top-a.bottom-u.top;return{xAxisSpace:a,yAxisSpace:s,titleSpace:u,quadrantSpace:{quadrantLeft:l,quadrantTop:h,quadrantWidth:f,quadrantHalfWidth:f/2,quadrantHeight:d,quadrantHalfHeight:d/2}}}getAxisLabels(t,e,n,i){const{quadrantSpace:r,titleSpace:a}=i,{quadrantHalfHeight:o,quadrantHeight:s,quadrantLeft:c,quadrantHalfWidth:u,quadrantTop:l,quadrantWidth:h}=r,f=0===this.data.points.length,d=[];return this.data.xAxisLeftText&&e&&d.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:c+(f?u/2:0),y:"top"===t?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+l+s+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&d.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:c+u+(f?u/2:0),y:"top"===t?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+l+s+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&d.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+c+h+this.config.quadrantPadding,y:l+s-(f?o/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&d.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+c+h+this.config.quadrantPadding,y:l+o-(f?o/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),d}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:r,quadrantTop:a}=e,o=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+r,y:a,width:r,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:a,width:r,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:a+n,width:r,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+r,y:a+n,width:r,height:n,fill:this.themeConfig.quadrant4Fill}];for(const t of o)t.text.x=t.x+t.width/2,0===this.data.points.length?(t.text.y=t.y+t.height/2,t.text.horizontalPos="middle"):(t.text.y=t.y+this.config.quadrantTextTopPadding,t.text.horizontalPos="top");return o}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:o}=e,s=(0,r.BYU)().domain([0,1]).range([i,o+i]),c=(0,r.BYU)().domain([0,1]).range([n+a,a]);return this.data.points.map((t=>({x:s(t.x),y:c(t.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:s(t.x),y:c(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}})))}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=t,{quadrantHalfHeight:i,quadrantHeight:r,quadrantLeft:a,quadrantHalfWidth:o,quadrantTop:s,quadrantWidth:c}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:s,x2:a+c+e,y2:s},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a+c,y1:s+e,x2:a+c,y2:s+r-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:s+r,x2:a+c+e,y2:s+r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a,y1:s+e,x2:a,y2:s+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+o,y1:s+e,x2:a+o,y2:s+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+e,y1:s+i,x2:a+c-e,y2:s+i}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,r=this.calculateSpace(i,t,e,n);return{points:this.getQuadrantPoints(r),quadrants:this.getQuadrants(r),axisLabels:this.getAxisLabels(i,t,e,r),borderLines:this.getBorders(r),title:this.getTitle(n)}}};const h={parser:o,db:{setWidth:function(t){l.setConfig({chartWidth:t})},setHeight:function(t){l.setConfig({chartHeight:t})},setQuadrant1Text:function(t){l.setData({quadrant1Text:u(t.text)})},setQuadrant2Text:function(t){l.setData({quadrant2Text:u(t.text)})},setQuadrant3Text:function(t){l.setData({quadrant3Text:u(t.text)})},setQuadrant4Text:function(t){l.setData({quadrant4Text:u(t.text)})},setXAxisLeftText:function(t){l.setData({xAxisLeftText:u(t.text)})},setXAxisRightText:function(t){l.setData({xAxisRightText:u(t.text)})},setYAxisTopText:function(t){l.setData({yAxisTopText:u(t.text)})},setYAxisBottomText:function(t){l.setData({yAxisBottomText:u(t.text)})},addPoint:function(t,e,n){l.addPoints([{x:e,y:n,text:u(t.text)}])},getQuadrantData:function(){const t=(0,i.c)(),{themeVariables:e,quadrantChart:n}=t;return n&&l.setConfig(n),l.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),l.setData({titleText:(0,i.t)()}),l.build()},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},clear:function(){l.clear(),(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setDiagramTitle:i.r,getDiagramTitle:i.t,getAccDescription:i.a,setAccDescription:i.b},renderer:{draw:(t,e,n,a)=>{var o,s,c;function u(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}const f=(0,i.c)();i.l.debug("Rendering quadrant chart\n"+t);const d=f.securityLevel;let g;"sandbox"===d&&(g=(0,r.Ys)("#i"+e));const p=("sandbox"===d?(0,r.Ys)(g.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select(`[id="${e}"]`),b=p.append("g").attr("class","main"),w=(null==(o=f.quadrantChart)?void 0:o.chartWidth)||500,m=(null==(s=f.quadrantChart)?void 0:s.chartHeight)||500;(0,i.i)(p,m,w,(null==(c=f.quadrantChart)?void 0:c.useMaxWidth)||!0),p.attr("viewBox","0 0 "+w+" "+m),a.db.setHeight(m),a.db.setWidth(w);const y=a.db.getQuadrantData(),v=b.append("g").attr("class","quadrants"),x=b.append("g").attr("class","border"),k=b.append("g").attr("class","data-points"),_=b.append("g").attr("class","labels"),A=b.append("g").attr("class","title");y.title&&A.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",u(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",(t=>t.x1)).attr("y1",(t=>t.y1)).attr("x2",(t=>t.x2)).attr("y2",(t=>t.y2)).style("stroke",(t=>t.strokeFill)).style("stroke-width",(t=>t.strokeWidth));const E=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");E.append("rect").attr("x",(t=>t.x)).attr("y",(t=>t.y)).attr("width",(t=>t.width)).attr("height",(t=>t.height)).attr("fill",(t=>t.fill)),E.append("text").attr("x",0).attr("y",0).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>u(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text))).text((t=>t.text.text));_.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text((t=>t.text)).attr("fill",(t=>t.fill)).attr("font-size",(t=>t.fontSize)).attr("dominant-baseline",(t=>u(t.horizontalPos))).attr("text-anchor",(t=>l(t.verticalPos))).attr("transform",(t=>h(t)));const T=k.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");T.append("circle").attr("cx",(t=>t.x)).attr("cy",(t=>t.y)).attr("r",(t=>t.radius)).attr("fill",(t=>t.fill)),T.append("text").attr("x",0).attr("y",0).text((t=>t.text.text)).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>u(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text)))}},styles:()=>""}},927:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return E}});var i=n(8540),r=n(1504),a=n(1768),o=n(8066),s=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[1,6],r=[1,7],a=[1,8],o=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],s=[1,22],c=[2,13],u=[1,26],l=[1,27],h=[1,28],f=[1,29],d=[1,30],g=[1,31],p=[1,24],b=[1,32],w=[1,33],m=[1,36],y=[71,72],v=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],x=[1,56],k=[1,57],_=[1,58],A=[1,59],E=[1,60],T=[1,61],C=[1,62],S=[62,63],I=[1,74],M=[1,70],D=[1,71],O=[1,72],L=[1,73],N=[1,75],P=[1,79],B=[1,80],F=[1,77],R=[1,78],j=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],$={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 6:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 7:case 8:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 9:i.parseDirective("%%{","open_directive");break;case 10:i.parseDirective(a[s],"type_directive");break;case 11:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 12:i.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:i.addRequirement(a[s-3],a[s-4]);break;case 20:i.setNewReqId(a[s-2]);break;case 21:i.setNewReqText(a[s-2]);break;case 22:i.setNewReqRisk(a[s-2]);break;case 23:i.setNewReqVerifyMethod(a[s-2]);break;case 26:this.$=i.RequirementType.REQUIREMENT;break;case 27:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=i.RiskLevel.LOW_RISK;break;case 33:this.$=i.RiskLevel.MED_RISK;break;case 34:this.$=i.RiskLevel.HIGH_RISK;break;case 35:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=i.VerifyType.VERIFY_TEST;break;case 39:i.addElement(a[s-3]);break;case 40:i.setNewElementType(a[s-2]);break;case 41:i.setNewElementDocRef(a[s-2]);break;case 44:i.addRelationship(a[s-2],a[s],a[s-4]);break;case 45:i.addRelationship(a[s-2],a[s-4],a[s]);break;case 46:this.$=i.Relationships.CONTAINS;break;case 47:this.$=i.Relationships.COPIES;break;case 48:this.$=i.Relationships.DERIVES;break;case 49:this.$=i.Relationships.SATISFIES;break;case 50:this.$=i.Relationships.VERIFIES;break;case 51:this.$=i.Relationships.REFINES;break;case 52:this.$=i.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n,16:i,18:r,19:a},{1:[3]},{3:10,4:2,5:[1,9],6:e,9:4,14:n,16:i,18:r,19:a},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},t(o,[2,8]),{20:[2,9]},{3:16,4:2,6:e,9:4,14:n,16:i,18:r,19:a},{1:[2,2]},{4:21,5:s,7:17,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{11:34,12:[1,35],22:m},t([12,22],[2,10]),t(o,[2,6]),t(o,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:s,7:38,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:39,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:40,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:41,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:42,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},t(y,[2,26]),t(y,[2,27]),t(y,[2,28]),t(y,[2,29]),t(y,[2,30]),t(y,[2,31]),t(v,[2,55]),t(v,[2,56]),t(o,[2,4]),{13:51,21:[1,52]},t(o,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:x,65:k,66:_,67:A,68:E,69:T,70:C},{61:63,64:x,65:k,66:_,67:A,68:E,69:T,70:C},{11:64,22:m},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},t(S,[2,46]),t(S,[2,47]),t(S,[2,48]),t(S,[2,49]),t(S,[2,50]),t(S,[2,51]),t(S,[2,52]),{63:[1,68]},t(o,[2,5]),{5:I,29:69,30:M,33:D,35:O,37:L,39:N},{5:P,39:B,55:76,56:F,58:R},{32:81,71:b,72:w},{32:82,71:b,72:w},t(j,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:I,29:87,30:M,33:D,35:O,37:L,39:N},t(j,[2,25]),t(j,[2,39]),{31:[1,88]},{31:[1,89]},{5:P,39:B,55:90,56:F,58:R},t(j,[2,43]),t(j,[2,44]),t(j,[2,45]),{32:91,71:b,72:w},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},t(j,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},t(j,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:I,29:116,30:M,33:D,35:O,37:L,39:N},{5:I,29:117,30:M,33:D,35:O,37:L,39:N},{5:I,29:118,30:M,33:D,35:O,37:L,39:N},{5:I,29:119,30:M,33:D,35:O,37:L,39:N},{5:P,39:B,55:120,56:F,58:R},{5:P,39:B,55:121,56:F,58:R},t(j,[2,20]),t(j,[2,21]),t(j,[2,22]),t(j,[2,23]),t(j,[2,40]),t(j,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},z={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return e.yytext=e.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};function q(){this.yy={}}return $.lexer=z,q.prototype=$,$.Parser=q,new q}());s.parser=s;const c=s;let u=[],l={},h={},f={},d={};const g={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().req,addRequirement:(t,e)=>(void 0===h[t]&&(h[t]={name:t,type:e,id:l.id,text:l.text,risk:l.risk,verifyMethod:l.verifyMethod}),l={},h[t]),getRequirements:()=>h,setNewReqId:t=>{void 0!==l&&(l.id=t)},setNewReqText:t=>{void 0!==l&&(l.text=t)},setNewReqRisk:t=>{void 0!==l&&(l.risk=t)},setNewReqVerifyMethod:t=>{void 0!==l&&(l.verifyMethod=t)},setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,addElement:t=>(void 0===d[t]&&(d[t]={name:t,type:f.type,docRef:f.docRef},i.l.info("Added new requirement: ",t)),f={},d[t]),getElements:()=>d,setNewElementType:t=>{void 0!==f&&(f.type=t)},setNewElementDocRef:t=>{void 0!==f&&(f.docRef=t)},addRelationship:(t,e,n)=>{u.push({type:t,src:e,dst:n})},getRelationships:()=>u,clear:()=>{u=[],l={},h={},f={},d={},(0,i.v)()}},p={CONTAINS:"contains",ARROW:"arrow"},b=p,w=(t,e)=>{let n=t.append("defs").append("marker").attr("id",p.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");n.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),n.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",p.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0\n L${e.line_height},${e.line_height/2}\n M${e.line_height},${e.line_height/2}\n L0,${e.line_height}`).attr("stroke-width",1)};let m={},y=0;const v=(t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",m.rect_min_width+"px").attr("height",m.rect_min_height+"px"),x=(t,e,n)=>{let i=m.rect_min_width/2,r=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",i).attr("y",m.rect_padding).attr("dominant-baseline","hanging"),a=0;n.forEach((t=>{0==a?r.append("tspan").attr("text-anchor","middle").attr("x",m.rect_min_width/2).attr("dy",0).text(t):r.append("tspan").attr("text-anchor","middle").attr("x",m.rect_min_width/2).attr("dy",.75*m.line_height).text(t),a++}));let o=1.5*m.rect_padding+a*m.line_height*.75;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",m.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:r,y:o}},k=(t,e,n,i)=>{let r=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",m.rect_padding).attr("y",i).attr("dominant-baseline","hanging"),a=0;let o=[];return n.forEach((t=>{let e=t.length;for(;e>30&&a<3;){let n=t.substring(0,30);e=(t=t.substring(30,t.length)).length,o[o.length]=n,a++}if(3==a){let t=o[o.length-1];o[o.length-1]=t.substring(0,t.length-4)+"..."}else o[o.length]=t;a=0})),o.forEach((t=>{r.append("tspan").attr("x",m.rect_padding).attr("dy",m.line_height).text(t)})),r},_=function(t,e,n,a,o){const s=n.edge(A(e.src),A(e.dst)),c=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})),u=t.insert("path","#"+a).attr("class","er relationshipLine").attr("d",c(s.points)).attr("fill","none");e.type==o.db.Relationships.CONTAINS?u.attr("marker-start","url("+i.e.getUrl(m.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(u.attr("stroke-dasharray","10,7"),u.attr("marker-end","url("+i.e.getUrl(m.arrowMarkerAbsolute)+"#"+b.ARROW+"_line_ending)")),((t,e,n,i)=>{const r=e.node().getTotalLength(),a=e.node().getPointAtLength(.5*r),o="rel"+y;y++;const s=t.append("text").attr("class","req relationshipLabel").attr("id",o).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(i).node().getBBox();t.insert("rect","#"+o).attr("class","req reqLabelBox").attr("x",a.x-s.width/2).attr("y",a.y-s.height/2).attr("width",s.width).attr("height",s.height).attr("fill","white").attr("fill-opacity","85%")})(t,u,0,`<<${e.type}>>`)},A=t=>t.replace(/\s/g,"").replace(/\./g,"_"),E={parser:c,db:g,renderer:{draw:(t,e,n,s)=>{m=(0,i.c)().requirement,s.db.clear(),s.parser.parse(t);const c=m.securityLevel;let u;"sandbox"===c&&(u=(0,r.Ys)("#i"+e));const l=("sandbox"===c?(0,r.Ys)(u.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select(`[id='${e}']`);w(l,m);const h=new o.k({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:m.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));let f=s.db.getRequirements(),d=s.db.getElements(),g=s.db.getRelationships();var p,b,y;p=f,b=h,y=l,Object.keys(p).forEach((t=>{let e=p[t];t=A(t),i.l.info("Added new requirement: ",t);const n=y.append("g").attr("id",t),r=v(n,"req-"+t);let a=x(n,t+"_title",[`<<${e.type}>>`,`${e.name}`]);k(n,t+"_body",[`Id: ${e.id}`,`Text: ${e.text}`,`Risk: ${e.risk}`,`Verification: ${e.verifyMethod}`],a.y);const o=r.node().getBBox();b.setNode(t,{width:o.width,height:o.height,shape:"rect",id:t})})),((t,e,n)=>{Object.keys(t).forEach((i=>{let r=t[i];const a=A(i),o=n.append("g").attr("id",a),s="element-"+a,c=v(o,s);let u=x(o,s+"_title",["<>",`${i}`]);k(o,s+"_body",[`Type: ${r.type||"Not Specified"}`,`Doc Ref: ${r.docRef||"None"}`],u.y);const l=c.node().getBBox();e.setNode(a,{width:l.width,height:l.height,shape:"rect",id:a})}))})(d,h,l),((t,e)=>{t.forEach((function(t){let n=A(t.src),i=A(t.dst);e.setEdge(n,i,{relationship:t})}))})(g,h),(0,a.bK)(h),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&(t.select("#"+n),t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )"))}))}(l,h),g.forEach((function(t){_(l,t,h,e,s)}));const E=m.rect_padding,T=l.node().getBBox(),C=T.width+2*E,S=T.height+2*E;(0,i.i)(l,S,C,m.useMaxWidth),l.attr("viewBox",`${T.x-E} ${T.y-E} ${C} ${S}`)}},styles:t=>`\n\n marker {\n fill: ${t.relationColor};\n stroke: ${t.relationColor};\n }\n\n marker.cross {\n stroke: ${t.lineColor};\n }\n\n svg {\n font-family: ${t.fontFamily};\n font-size: ${t.fontSize};\n }\n\n .reqBox {\n fill: ${t.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${t.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${t.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${t.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${t.relationLabelColor};\n }\n\n`}},5123:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return nt}});var i=n(8540),r=n(1504),a=n(2699),o=n(2510),s=(n(7530),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,3],i=[1,5],r=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,21],l=[1,22],h=[1,23],f=[1,29],d=[1,30],g=[1,31],p=[1,32],b=[1,33],w=[1,34],m=[1,35],y=[1,36],v=[1,37],x=[1,38],k=[1,39],_=[1,40],A=[1,41],E=[1,43],T=[1,44],C=[1,46],S=[1,47],I=[1,48],M=[1,49],D=[1,50],O=[1,51],L=[1,54],N=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,53,54,55,57,58,63,64,65,66,74,84],P=[4,5,21,55,57],B=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,55,57,58,63,64,65,66,74,84],F=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,54,55,57,58,63,64,65,66,74,84],R=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,53,55,57,58,63,64,65,66,74,84],j=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,55,57,58,63,64,65,66,74,84],$=[72,73,74],z=[1,128],q=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,53,54,55,57,58,63,64,65,66,74,84],H={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,par_over:48,critical:49,option_sections:50,break:51,option:52,and:53,else:54,participant:55,AS:56,participant_actor:57,note:58,placement:59,text2:60,over:61,actor_pair:62,links:63,link:64,properties:65,details:66,spaceList:67,",":68,left_of:69,right_of:70,signaltype:71,"+":72,"-":73,ACTOR:74,SOLID_OPEN_ARROW:75,DOTTED_OPEN_ARROW:76,SOLID_ARROW:77,DOTTED_ARROW:78,SOLID_CROSS:79,DOTTED_CROSS:80,SOLID_POINT:81,DOTTED_POINT:82,TXT:83,open_directive:84,type_directive:85,arg_directive:86,close_directive:87,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"par_over",49:"critical",51:"break",52:"option",53:"and",54:"else",55:"participant",56:"AS",57:"participant_actor",58:"note",61:"over",63:"links",64:"link",65:"properties",66:"details",68:",",69:"left_of",70:"right_of",72:"+",73:"-",74:"ACTOR",75:"SOLID_OPEN_ARROW",76:"DOTTED_OPEN_ARROW",77:"SOLID_ARROW",78:"DOTTED_ARROW",79:"SOLID_CROSS",80:"DOTTED_CROSS",81:"SOLID_POINT",82:"DOTTED_POINT",83:"TXT",84:"open_directive",85:"type_directive",86:"arg_directive",87:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[50,1],[50,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[67,2],[67,1],[62,3],[62,1],[59,1],[59,1],[22,5],[22,5],[22,4],[27,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[60,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:return i.apply(a[s]),a[s];case 5:case 10:case 9:case 14:this.$=[];break;case 6:case 11:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:case 12:case 13:case 64:this.$=a[s];break;case 18:a[s-1].unshift({type:"boxStart",boxData:i.parseBoxData(a[s-2])}),a[s-1].push({type:"boxEnd",boxText:a[s-2]}),this.$=a[s-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-2]),sequenceIndexStep:Number(a[s-1]),sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:i.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 25:this.$={type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 31:i.setDiagramTitle(a[s].substring(6)),this.$=a[s].substring(6);break;case 32:i.setDiagramTitle(a[s].substring(7)),this.$=a[s].substring(7);break;case 33:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 34:case 35:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 36:a[s-1].unshift({type:"loopStart",loopText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:i.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 37:a[s-1].unshift({type:"rectStart",color:i.parseMessage(a[s-2]),signalType:i.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:i.parseMessage(a[s-2]),signalType:i.LINETYPE.RECT_END}),this.$=a[s-1];break;case 38:a[s-1].unshift({type:"optStart",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.OPT_END}),this.$=a[s-1];break;case 39:a[s-1].unshift({type:"altStart",altText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:i.LINETYPE.ALT_END}),this.$=a[s-1];break;case 40:a[s-1].unshift({type:"parStart",parText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=a[s-1];break;case 41:a[s-1].unshift({type:"parStart",parText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.PAR_OVER_START}),a[s-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=a[s-1];break;case 42:a[s-1].unshift({type:"criticalStart",criticalText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.CRITICAL_START}),a[s-1].push({type:"criticalEnd",signalType:i.LINETYPE.CRITICAL_END}),this.$=a[s-1];break;case 43:a[s-1].unshift({type:"breakStart",breakText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.BREAK_START}),a[s-1].push({type:"breakEnd",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.BREAK_END}),this.$=a[s-1];break;case 46:this.$=a[s-3].concat([{type:"option",optionText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.CRITICAL_OPTION},a[s]]);break;case 48:this.$=a[s-3].concat([{type:"and",parText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.PAR_AND},a[s]]);break;case 50:this.$=a[s-3].concat([{type:"else",altText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.ALT_ELSE},a[s]]);break;case 51:a[s-3].type="addParticipant",a[s-3].description=i.parseMessage(a[s-1]),this.$=a[s-3];break;case 52:a[s-1].type="addParticipant",this.$=a[s-1];break;case 53:a[s-3].type="addActor",a[s-3].description=i.parseMessage(a[s-1]),this.$=a[s-3];break;case 54:a[s-1].type="addActor",this.$=a[s-1];break;case 55:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 56:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:i.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 57:this.$=[a[s-1],{type:"addLinks",actor:a[s-1].actor,text:a[s]}];break;case 58:this.$=[a[s-1],{type:"addALink",actor:a[s-1].actor,text:a[s]}];break;case 59:this.$=[a[s-1],{type:"addProperties",actor:a[s-1].actor,text:a[s]}];break;case 60:this.$=[a[s-1],{type:"addDetails",actor:a[s-1].actor,text:a[s]}];break;case 63:this.$=[a[s-2],a[s]];break;case 65:this.$=i.PLACEMENT.LEFTOF;break;case 66:this.$=i.PLACEMENT.RIGHTOF;break;case 67:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 68:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 69:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 70:this.$={type:"addParticipant",actor:a[s]};break;case 71:this.$=i.LINETYPE.SOLID_OPEN;break;case 72:this.$=i.LINETYPE.DOTTED_OPEN;break;case 73:this.$=i.LINETYPE.SOLID;break;case 74:this.$=i.LINETYPE.DOTTED;break;case 75:this.$=i.LINETYPE.SOLID_CROSS;break;case 76:this.$=i.LINETYPE.DOTTED_CROSS;break;case 77:this.$=i.LINETYPE.SOLID_POINT;break;case 78:this.$=i.LINETYPE.DOTTED_POINT;break;case 79:this.$=i.parseMessage(a[s].trim().substring(1));break;case 80:i.parseDirective("%%{","open_directive");break;case 81:i.parseDirective(a[s],"type_directive");break;case 82:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 83:i.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:i,14:6,84:r},{1:[3]},{3:8,4:e,5:n,6:4,7:i,14:6,84:r},{3:9,4:e,5:n,6:4,7:i,14:6,84:r},{3:10,4:e,5:n,6:4,7:i,14:6,84:r},t([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,55,57,58,63,64,65,66,74,84],a,{8:11}),{15:12,85:[1,13]},{85:[2,80]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{16:52,17:[1,53],87:L},t([17,87],[2,81]),t(N,[2,6]),{6:42,10:55,13:18,14:6,19:c,22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},t(N,[2,8]),t(N,[2,9]),t(N,[2,17]),{20:[1,56]},{5:[1,57]},{5:[1,60],24:[1,58],25:[1,59]},{27:61,74:O},{27:62,74:O},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},{5:[1,67]},t(N,[2,31]),t(N,[2,32]),{37:[1,68]},{39:[1,69]},t(N,[2,35]),{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},{20:[1,76]},{20:[1,77]},t(N,[2,44]),{27:78,74:O},{27:79,74:O},{71:80,75:[1,81],76:[1,82],77:[1,83],78:[1,84],79:[1,85],80:[1,86],81:[1,87],82:[1,88]},{59:89,61:[1,90],69:[1,91],70:[1,92]},{27:93,74:O},{27:94,74:O},{27:95,74:O},{27:96,74:O},t([5,56,68,75,76,77,78,79,80,81,82,83],[2,70]),{5:[1,97]},{18:98,86:[1,99]},{5:[2,83]},t(N,[2,7]),t(P,[2,10],{11:100}),t(N,[2,19]),{5:[1,102],24:[1,101]},{5:[1,103]},t(N,[2,23]),{5:[1,104]},{5:[1,105]},t(N,[2,26]),t(N,[2,27]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,33]),t(N,[2,34]),t(B,a,{8:106}),t(B,a,{8:107}),t(B,a,{8:108}),t(F,a,{45:109,8:110}),t(R,a,{47:111,8:112}),t(R,a,{8:112,47:113}),t(j,a,{50:114,8:115}),t(B,a,{8:116}),{5:[1,118],56:[1,117]},{5:[1,120],56:[1,119]},{27:123,72:[1,121],73:[1,122],74:O},t($,[2,71]),t($,[2,72]),t($,[2,73]),t($,[2,74]),t($,[2,75]),t($,[2,76]),t($,[2,77]),t($,[2,78]),{27:124,74:O},{27:126,62:125,74:O},{74:[2,65]},{74:[2,66]},{60:127,83:z},{60:129,83:z},{60:130,83:z},{60:131,83:z},t(q,[2,15]),{16:132,87:L},{87:[2,82]},{4:[1,135],5:[1,137],12:134,13:136,21:[1,133],55:E,57:T},{5:[1,138]},t(N,[2,21]),t(N,[2,22]),t(N,[2,24]),t(N,[2,25]),{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,139],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,140],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,141],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,142]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,49],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,54:[1,143],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,144]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,47],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,53:[1,145],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,146]},{21:[1,147]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,45],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,52:[1,148],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,149],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{20:[1,150]},t(N,[2,52]),{20:[1,151]},t(N,[2,54]),{27:152,74:O},{27:153,74:O},{60:154,83:z},{60:155,83:z},{60:156,83:z},{68:[1,157],83:[2,64]},{5:[2,57]},{5:[2,79]},{5:[2,58]},{5:[2,59]},{5:[2,60]},{5:[1,158]},t(N,[2,18]),t(P,[2,11]),{13:159,55:E,57:T},t(P,[2,13]),t(P,[2,14]),t(N,[2,20]),t(N,[2,36]),t(N,[2,37]),t(N,[2,38]),t(N,[2,39]),{20:[1,160]},t(N,[2,40]),{20:[1,161]},t(N,[2,41]),t(N,[2,42]),{20:[1,162]},t(N,[2,43]),{5:[1,163]},{5:[1,164]},{60:165,83:z},{60:166,83:z},{5:[2,69]},{5:[2,55]},{5:[2,56]},{27:167,74:O},t(q,[2,16]),t(P,[2,12]),t(F,a,{8:110,45:168}),t(R,a,{8:112,47:169}),t(j,a,{8:115,50:170}),t(N,[2,51]),t(N,[2,53]),{5:[2,67]},{5:[2,68]},{83:[2,63]},{21:[2,50]},{21:[2,48]},{21:[2,46]}],defaultActions:{7:[2,80],8:[2,1],9:[2,2],10:[2,3],54:[2,83],91:[2,65],92:[2,66],99:[2,82],127:[2,57],128:[2,79],129:[2,58],130:[2,59],131:[2,60],154:[2,69],155:[2,55],156:[2,56],165:[2,67],166:[2,68],167:[2,63],168:[2,50],169:[2,48],170:[2,46]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},U={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),84;case 1:return this.begin("type_directive"),85;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),87;case 4:return 86;case 5:case 54:case 67:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),55;case 14:return this.begin("ID"),57;case 15:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),74;case 16:return this.popState(),this.popState(),this.begin("LINE"),56;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),54;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),48;case 25:return this.begin("LINE"),53;case 26:return this.begin("LINE"),49;case 27:return this.begin("LINE"),52;case 28:return this.begin("LINE"),51;case 29:return this.popState(),20;case 30:return 21;case 31:return 69;case 32:return 70;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 66;case 37:return 61;case 38:return 58;case 39:return this.begin("ID"),26;case 40:return this.begin("ID"),28;case 41:return 34;case 42:return 35;case 43:return this.begin("acc_title"),36;case 44:return this.popState(),"acc_title_value";case 45:return this.begin("acc_descr"),38;case 46:return this.popState(),"acc_descr_value";case 47:this.begin("acc_descr_multiline");break;case 48:this.popState();break;case 49:return"acc_descr_multiline_value";case 50:return 7;case 51:return 23;case 52:return 25;case 53:return 68;case 55:return e.yytext=e.yytext.trim(),74;case 56:return 77;case 57:return 78;case 58:return 75;case 59:return 76;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 83;case 65:return 72;case 66:return 73;case 68:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[48,49],inclusive:!1},acc_descr:{rules:[46],inclusive:!1},acc_title:{rules:[44],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,29],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,45,47,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68],inclusive:!0}}};function G(){this.yy={}}return H.lexer=U,G.prototype=H,H.Parser=G,new G}());s.parser=s;const c=s;let u,l,h,f={},d=[],g=[],p=!1;const b=function(t,e,n,i){let r=h;const a=f[t];if(a){if(h&&a.box&&h!==a.box)throw new Error("A same participant should only be defined in one Box: "+a.name+" can't be in '"+a.box.name+"' and in '"+h.name+"' at the same time.");if(r=a.box?a.box:h,a.box=r,a&&e===a.name&&null==n)return}null!=n&&null!=n.text||(n={text:e,wrap:null,type:i}),null!=i&&null!=n.text||(n={text:e,wrap:null,type:i}),f[t]={box:r,name:e,description:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,prevActor:u,links:{},properties:{},actorCnt:null,rectData:null,type:i||"participant"},u&&f[u]&&(f[u].nextActor=t),h&&h.actorKeys.push(t),u=t},w=function(t,e,n={text:void 0,wrap:void 0},i){if(i===v.ACTIVE_END){if((t=>{let e,n=0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return g.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,type:i}),!0},m=function(t){return f[t]},y=()=>void 0!==l?l:(0,i.c)().sequence.wrap,v={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},x=function(t,e,n){n.text,void 0===n.wrap&&y()||n.wrap;const i=[].concat(t,t);g.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,type:v.NOTE,placement:e})},k=function(t,e){const n=m(t);try{let t=(0,i.d)(e.text,(0,i.c)());t=t.replace(/&/g,"&"),t=t.replace(/=/g,"=");_(n,JSON.parse(t))}catch(t){i.l.error("error while parsing actor link text",t)}};function _(t,e){if(null==t.links)t.links=e;else for(let n in e)t.links[n]=e[n]}const A=function(t,e){const n=m(t);try{let t=(0,i.d)(e.text,(0,i.c)());E(n,JSON.parse(t))}catch(t){i.l.error("error while parsing actor properties text",t)}};function E(t,e){if(null==t.properties)t.properties=e;else for(let n in e)t.properties[n]=e[n]}const T=function(t,e){const n=m(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&E(n,e.properties),e.links&&_(n,e.links)}catch(t){i.l.error("error while parsing actor details text",t)}},C=function(t){if(Array.isArray(t))t.forEach((function(t){C(t)}));else switch(t.type){case"sequenceIndex":g.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":b(t.actor,t.actor,t.description,"participant");break;case"addActor":b(t.actor,t.actor,t.description,"actor");break;case"activeStart":case"activeEnd":w(t.actor,void 0,void 0,t.signalType);break;case"addNote":x(t.actor,t.placement,t.text);break;case"addLinks":k(t.actor,t.text);break;case"addALink":!function(t,e){const n=m(t);try{const t={};let s=(0,i.d)(e.text,(0,i.c)());var r=s.indexOf("@");s=s.replace(/&/g,"&"),s=s.replace(/=/g,"=");var a=s.slice(0,r-1).trim(),o=s.slice(r+1).trim();t[a]=o,_(n,t)}catch(t){i.l.error("error while parsing actor link text",t)}}(t.actor,t.text);break;case"addProperties":A(t.actor,t.text);break;case"addDetails":T(t.actor,t.text);break;case"addMessage":w(t.from,t.to,t.msg,t.signalType);break;case"boxStart":e=t.boxData,d.push({name:e.text,wrap:void 0===e.wrap&&y()||!!e.wrap,fill:e.color,actorKeys:[]}),h=d.slice(-1)[0];break;case"boxEnd":h=void 0;break;case"loopStart":w(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":w(void 0,void 0,void 0,t.signalType);break;case"rectStart":w(void 0,void 0,t.color,t.signalType);break;case"optStart":w(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":w(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,i.s)(t.text);break;case"parStart":case"and":w(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":w(void 0,void 0,t.criticalText,t.signalType);break;case"option":w(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":w(void 0,void 0,t.breakText,t.signalType)}var e},S={addActor:b,addMessage:function(t,e,n,i){g.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,answer:i})},addSignal:w,addLinks:k,addDetails:T,addProperties:A,autoWrap:y,setWrap:function(t){l=t},enableSequenceNumbers:function(){p=!0},disableSequenceNumbers:function(){p=!1},showSequenceNumbers:()=>p,getMessages:function(){return g},getActors:function(){return f},getActor:m,getActorKeys:function(){return Object.keys(f)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getAccTitle:i.g,getBoxes:function(){return d},getDiagramTitle:i.t,setDiagramTitle:i.r,parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().sequence,clear:function(){f={},d=[],g=[],p=!1,(0,i.v)()},parseMessage:function(t){const e=t.trim(),n={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^:?wrap:/)||null===e.match(/^:?nowrap:/)&&void 0};return i.l.debug("parseMessage:",n),n},parseBoxData:function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let n=null!=e&&e[1]?e[1].trim():"transparent",r=null!=e&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",n)||(n="transparent",r=t.trim());else{const e=(new Option).style;e.color=n,e.color!==n&&(n="transparent",r=t.trim())}return{color:n,text:void 0!==r?(0,i.d)(r.replace(/^:?(?:no)?wrap:/,""),(0,i.c)()):void 0,wrap:void 0!==r?null!==r.match(/^:?wrap:/)||null===r.match(/^:?nowrap:/)&&void 0:void 0}},LINETYPE:v,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:x,setAccTitle:i.s,apply:C,setAccDescription:i.b,getAccDescription:i.a,hasAtLeastOneBox:function(){return d.length>0},hasAtLeastOneBoxWithTitle:function(){return d.some((t=>t.name))}},I=t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,M=function(t,e){return(0,a.d)(t,e)},D=(t,e)=>{(0,i.E)((()=>{const n=document.querySelectorAll(t);0!==n.length&&(n[0].addEventListener("mouseover",(function(){O("actor"+e+"_popup")})),n[0].addEventListener("mouseout",(function(){L("actor"+e+"_popup")})))}))},O=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},L=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},N=function(t,e){let n=0,r=0;const a=e.text.split(i.e.lineBreakRegex),[o,s]=(0,i.B)(e.fontSize);let c=[],u=0,l=()=>e.y;if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":l=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":l=()=>Math.round(e.y+(n+r+e.textMargin)/2);break;case"bottom":case"end":l=()=>Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[h,f]of a.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==o&&(u=h*o);const a=t.append("text");a.attr("x",e.x),a.attr("y",l()),void 0!==e.anchor&&a.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&a.style("font-family",e.fontFamily),void 0!==s&&a.style("font-size",s),void 0!==e.fontWeight&&a.style("font-weight",e.fontWeight),void 0!==e.fill&&a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class),void 0!==e.dy?a.attr("dy",e.dy):0!==u&&a.attr("dy",u);const d=f||i.Z;if(e.tspan){const t=a.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(d)}else a.text(d);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(a._groups||a)[0][0].getBBox().height,n=r),c.push(a)}return c},P=function(t,e){const n=t.append("polygon");var i,r,a,o,s;return n.attr("points",(i=e.x,r=e.y,a=e.width,o=e.height,i+","+r+" "+(i+a)+","+r+" "+(i+a)+","+(r+o-(s=7))+" "+(i+a-1.2*s)+","+(r+o)+" "+i+","+(r+o))),n.attr("class","labelBox"),e.y=e.y+e.height/2,N(t,e),n};let B=-1;const F=(t,e)=>{t.selectAll&&t.selectAll(".actor-line").attr("class","200").attr("y2",e-55)},R=function(t,e){(0,a.a)(t,e)},j=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},$=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,a,o,s,c,u){const{actorFontSize:l,actorFontFamily:h,actorFontWeight:f}=u,[d,g]=(0,i.B)(l),p=t.split(i.e.lineBreakRegex);for(let t=0;tn?c.width:n;const d=l.append("rect");if(d.attr("class","actorPopupMenuPanel"+h),d.attr("x",c.x),d.attr("y",c.height),d.attr("fill",c.fill),d.attr("stroke",c.stroke),d.attr("width",f),d.attr("height",c.height),d.attr("rx",c.rx),d.attr("ry",c.ry),null!=a){var g=20;for(let t in a){var p=l.append("a"),b=(0,o.Nm)(a[t]);p.attr("xlink:href",b),p.attr("target","_blank"),z(i)(t,p,c.x+10,c.height+g,f,20,{class:"actor"},i),g+=30}}return d.attr("height",g),{height:c.height+g,width:f}},anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,i,r){const o=(0,a.g)(),s=e.anchored;o.x=e.startx,o.y=e.starty,o.class="activation"+r%3,o.width=e.stopx-e.startx,o.height=n-e.starty,M(s,o)},drawLoop:function(t,e,n,i){const{boxMargin:r,boxTextMargin:o,labelBoxHeight:s,labelBoxWidth:c,messageFontFamily:u,messageFontSize:l,messageFontWeight:h}=i,f=t.append("g"),d=function(t,e,n,i){return f.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",i).attr("class","loopLine")};d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){d(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let g=(0,a.e)();g.text=n,g.x=e.startx,g.y=e.starty,g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=c||50,g.height=s||20,g.textMargin=o,g.class="labelText",P(f,g),g=j(),g.text=e.title,g.x=e.startx+c/2+(e.stopx-e.startx)/2,g.y=e.starty+r+o,g.anchor="middle",g.valign="middle",g.textMargin=o,g.class="loopText",g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.wrap=!0;let p=N(f,g);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){if(t.message){g.text=t.message,g.x=e.startx+(e.stopx-e.startx)/2,g.y=e.sections[n].y+r+o,g.class="loopText",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.wrap=e.wrap,p=N(f,g);let i=Math.round(p.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[n].height+=i-(r+o)}})),e.height=Math.round(e.stopy-e.starty),f},drawBackgroundRect:R,insertArrowHead:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},insertArrowFilledHead:function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},insertSequenceNumber:function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},insertArrowCrossHead:function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},insertDatabaseIcon:function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},insertComputerIcon:function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},insertClockIcon:function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},getTextObj:j,getNoteRect:function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},popupMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'block'; }"},popdownMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'none'; }"},fixLifeLineHeights:F,sanitizeUrl:o.Nm};let H={};const U={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((t=>t.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,X((0,i.c)())},updateVal:function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},updateBounds:function(t,e,n,i){const r=this;let a=0;function o(o){return function(s){a++;const c=r.sequenceItems.length-a+1;r.updateVal(s,"starty",e-c*H.boxMargin,Math.min),r.updateVal(s,"stopy",i+c*H.boxMargin,Math.max),r.updateVal(U.data,"startx",t-c*H.boxMargin,Math.min),r.updateVal(U.data,"stopx",n+c*H.boxMargin,Math.max),"activation"!==o&&(r.updateVal(s,"startx",t-c*H.boxMargin,Math.min),r.updateVal(s,"stopx",n+c*H.boxMargin,Math.max),r.updateVal(U.data,"starty",e-c*H.boxMargin,Math.min),r.updateVal(U.data,"stopy",i+c*H.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){const a=i.e.getMin(t,n),o=i.e.getMax(t,n),s=i.e.getMin(e,r),c=i.e.getMax(e,r);this.updateVal(U.data,"startx",a,Math.min),this.updateVal(U.data,"starty",s,Math.min),this.updateVal(U.data,"stopx",o,Math.max),this.updateVal(U.data,"stopy",c,Math.max),this.updateBounds(a,s,o,c)},newActivation:function(t,e,n){const i=n[t.from.actor],r=V(t.from.actor).length||0,a=i.x+i.width/2+(r-1)*H.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+H.activationWidth,stopy:void 0,actor:t.from.actor,anchored:q.anchorElement(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:U.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=i.e.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},G=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),Y=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),Z=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});const W=function(t,e,n,r,a,o,s){if(!0===a.hideUnusedParticipants){const t=new Set;o.forEach((e=>{t.add(e.from),t.add(e.to)})),n=n.filter((e=>t.has(e)))}let c,u=0,l=0,h=0;for(const a of n){const n=e[a],o=n.box;c&&c!=o&&(s||U.models.addBox(c),l+=H.boxMargin+c.margin),o&&o!=c&&(s||(o.x=u+l,o.y=r),l+=o.margin),n.width=n.width||H.width,n.height=i.e.getMax(n.height||H.height,H.height),n.margin=n.margin||H.actorMargin,n.x=u+l,n.y=U.getVerticalPos();const f=q.drawActor(t,n,H,s);h=i.e.getMax(h,f),U.insert(n.x,r,n.x+n.width,n.height),u+=n.width+l,n.box&&(n.box.width=u+o.margin-n.box.x),l=n.margin,c=n.box,U.models.addActor(n)}c&&!s&&U.models.addBox(c),U.bumpVerticalPos(h)},K=function(t,e,n,i){let r=0,a=0;for(const o of n){const n=e[o],s=tt(n),c=q.drawPopup(t,n,s,H,H.forceMenus,i);c.height>r&&(r=c.height),c.width+n.x>a&&(a=c.width+n.x)}return{maxHeight:r,maxWidth:a}},X=function(t){(0,i.f)(H,t),t.fontFamily&&(H.actorFontFamily=H.noteFontFamily=H.messageFontFamily=t.fontFamily),t.fontSize&&(H.actorFontSize=H.noteFontSize=H.messageFontSize=t.fontSize),t.fontWeight&&(H.actorFontWeight=H.noteFontWeight=H.messageFontWeight=t.fontWeight)},V=function(t){return U.activations.filter((function(e){return e.actor===t}))},Q=function(t,e){const n=e[t],r=V(t);return[r.reduce((function(t,e){return i.e.getMin(t,e.startx)}),n.x+n.width/2),r.reduce((function(t,e){return i.e.getMax(t,e.stopx)}),n.x+n.width/2)]};function J(t,e,n,r,a){U.bumpVerticalPos(n);let o=r;if(e.id&&e.message&&t[e.id]){const n=t[e.id].width,a=G(H);e.message=i.u.wrapLabel(`[${e.message}]`,n-2*H.wrapPadding,a),e.width=n,e.wrap=!0;const s=i.u.calculateTextDimensions(e.message,a),c=i.e.getMax(s.height,H.labelBoxHeight);o=r+c,i.l.debug(`${c} - ${e.message}`)}a(e),U.bumpVerticalPos(o)}const tt=function(t){let e=0;const n=Z(H);for(const r in t.links){const t=i.u.calculateTextDimensions(r,n).width+2*H.wrapPadding+2*H.boxMargin;et.actor)).lastIndexOf(t.from.actor);delete U.activations.splice(e,1)[0]}}void 0!==t.placement?(c=function(t,e,n){const r=e[t.from].x,a=e[t.to].x,o=t.wrap&&t.message;let s=i.u.calculateTextDimensions(o?i.u.wrapLabel(t.message,H.width,Y(H)):t.message,Y(H));const c={width:o?H.width:i.e.getMax(H.width,s.width+2*H.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===n.db.PLACEMENT.RIGHTOF?(c.width=o?i.e.getMax(H.width,s.width):i.e.getMax(e[t.from].width/2+e[t.to].width/2,s.width+2*H.noteMargin),c.startx=r+(e[t.from].width+H.actorMargin)/2):t.placement===n.db.PLACEMENT.LEFTOF?(c.width=o?i.e.getMax(H.width,s.width+2*H.noteMargin):i.e.getMax(e[t.from].width/2+e[t.to].width/2,s.width+2*H.noteMargin),c.startx=r-c.width+(e[t.from].width-H.actorMargin)/2):t.to===t.from?(s=i.u.calculateTextDimensions(o?i.u.wrapLabel(t.message,i.e.getMax(H.width,e[t.from].width),Y(H)):t.message,Y(H)),c.width=o?i.e.getMax(H.width,e[t.from].width):i.e.getMax(e[t.from].width,H.width,s.width+2*H.noteMargin),c.startx=r+(e[t.from].width-c.width)/2):(c.width=Math.abs(r+e[t.from].width/2-(a+e[t.to].width/2))+H.actorMargin,c.startx=r{s=t,s.from=i.e.getMin(s.from,c.startx),s.to=i.e.getMax(s.to,c.startx+c.width),s.width=i.e.getMax(s.width,Math.abs(s.from-s.to))-H.labelBoxWidth}))):(u=function(t,e,n){let r=!1;if([n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(r=!0),!r)return{};const a=Q(t.from,e),o=Q(t.to,e),s=a[0]<=o[0]?1:0,c=a[0]0&&o.forEach((n=>{if(s=n,u.startx===u.stopx){const n=e[t.from],r=e[t.to];s.from=i.e.getMin(n.x-u.width/2,n.x-n.width/2,s.from),s.to=i.e.getMax(r.x+u.width/2,r.x+n.width/2,s.to),s.width=i.e.getMax(s.width,Math.abs(s.to-s.from))-H.labelBoxWidth}else s.from=i.e.getMin(u.startx,s.from),s.to=i.e.getMax(u.stopx,s.to),s.width=i.e.getMax(s.width,u.width)-H.labelBoxWidth})))})),U.activations=[],i.l.debug("Loop type widths:",a),a},nt={parser:c,db:S,renderer:{bounds:U,drawActors:W,drawActorsPopup:K,setConf:X,draw:function(t,e,n,o){const{securityLevel:s,sequence:c}=(0,i.c)();let u;H=c,o.db.clear(),o.parser.parse(t),"sandbox"===s&&(u=(0,r.Ys)("#i"+e));const l="sandbox"===s?(0,r.Ys)(u.nodes()[0].contentDocument.body):(0,r.Ys)("body"),h="sandbox"===s?u.nodes()[0].contentDocument:document;U.init(),i.l.debug(o.db);const f="sandbox"===s?l.select(`[id="${e}"]`):(0,r.Ys)(`[id="${e}"]`),d=o.db.getActors(),g=o.db.getBoxes(),p=o.db.getActorKeys(),b=o.db.getMessages(),w=o.db.getDiagramTitle(),m=o.db.hasAtLeastOneBox(),y=o.db.hasAtLeastOneBoxWithTitle(),v=function(t,e,n){const r={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){const a=t[e.to];if(e.placement===n.db.PLACEMENT.LEFTOF&&!a.prevActor)return;if(e.placement===n.db.PLACEMENT.RIGHTOF&&!a.nextActor)return;const o=void 0!==e.placement,s=!o,c=o?Y(H):G(H),u=e.wrap?i.u.wrapLabel(e.message,H.width-2*H.wrapPadding,c):e.message,l=i.u.calculateTextDimensions(u,c).width+2*H.wrapPadding;s&&e.from===a.nextActor?r[e.to]=i.e.getMax(r[e.to]||0,l):s&&e.from===a.prevActor?r[e.from]=i.e.getMax(r[e.from]||0,l):s&&e.from===e.to?(r[e.from]=i.e.getMax(r[e.from]||0,l/2),r[e.to]=i.e.getMax(r[e.to]||0,l/2)):e.placement===n.db.PLACEMENT.RIGHTOF?r[e.from]=i.e.getMax(r[e.from]||0,l):e.placement===n.db.PLACEMENT.LEFTOF?r[a.prevActor]=i.e.getMax(r[a.prevActor]||0,l):e.placement===n.db.PLACEMENT.OVER&&(a.prevActor&&(r[a.prevActor]=i.e.getMax(r[a.prevActor]||0,l/2)),a.nextActor&&(r[e.from]=i.e.getMax(r[e.from]||0,l/2)))}})),i.l.debug("maxMessageWidthPerActor:",r),r}(d,b,o);H.height=function(t,e,n){let r=0;Object.keys(t).forEach((e=>{const n=t[e];n.wrap&&(n.description=i.u.wrapLabel(n.description,H.width-2*H.wrapPadding,Z(H)));const a=i.u.calculateTextDimensions(n.description,Z(H));n.width=n.wrap?H.width:i.e.getMax(H.width,a.width+2*H.wrapPadding),n.height=n.wrap?i.e.getMax(a.height,H.height):H.height,r=i.e.getMax(r,n.height)}));for(const n in e){const r=t[n];if(!r)continue;const a=t[r.nextActor];if(!a){const t=e[n]+H.actorMargin-r.width/2;r.margin=i.e.getMax(t,H.actorMargin);continue}const o=e[n]+H.actorMargin-r.width/2-a.width/2;r.margin=i.e.getMax(o,H.actorMargin)}let a=0;return n.forEach((e=>{const n=G(H);let r=e.actorKeys.reduce(((e,n)=>e+(t[n].width+(t[n].margin||0))),0);r-=2*H.boxTextMargin,e.wrap&&(e.name=i.u.wrapLabel(e.name,r-2*H.wrapPadding,n));const o=i.u.calculateTextDimensions(e.name,n);a=i.e.getMax(o.height,a);const s=i.e.getMax(r,o.width+2*H.wrapPadding);if(e.margin=H.boxTextMargin,rt.textMaxHeight=a)),i.e.getMax(r,H.height)}(d,v,g),q.insertComputerIcon(f),q.insertDatabaseIcon(f),q.insertClockIcon(f),m&&(U.bumpVerticalPos(H.boxMargin),y&&U.bumpVerticalPos(g[0].textMaxHeight)),W(f,d,p,0,H,b,!1);const x=et(b,d,v,o);q.insertArrowHead(f),q.insertArrowCrossHead(f),q.insertArrowFilledHead(f),q.insertSequenceNumber(f);let k=1,_=1;const A=[];b.forEach((function(t){let e,n,r;switch(t.type){case o.db.LINETYPE.NOTE:U.resetVerticalPos(),n=t.noteModel,function(t,e){U.bumpVerticalPos(H.boxMargin),e.height=H.boxMargin,e.starty=U.getVerticalPos();const n=(0,a.g)();n.x=e.startx,n.y=e.starty,n.width=e.width||H.width,n.class="note";const i=t.append("g"),r=q.drawRect(i,n),o=(0,a.e)();o.x=e.startx,o.y=e.starty,o.width=n.width,o.dy="1em",o.text=e.message,o.class="noteText",o.fontFamily=H.noteFontFamily,o.fontSize=H.noteFontSize,o.fontWeight=H.noteFontWeight,o.anchor=H.noteAlign,o.textMargin=H.noteMargin,o.valign="center";const s=N(i,o),c=Math.round(s.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));r.attr("height",c+2*H.noteMargin),e.height+=c+2*H.noteMargin,U.bumpVerticalPos(c+2*H.noteMargin),e.stopy=e.starty+c+2*H.noteMargin,e.stopx=e.startx+n.width,U.insert(e.startx,e.starty,e.stopx,e.stopy),U.models.addNote(e)}(f,n);break;case o.db.LINETYPE.ACTIVE_START:U.newActivation(t,f,d);break;case o.db.LINETYPE.ACTIVE_END:!function(t,e){const n=U.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),q.drawActivation(f,n,e,H,V(t.from.actor).length),U.insert(n.startx,e-10,n.stopx,e)}(t,U.getVerticalPos());break;case o.db.LINETYPE.LOOP_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.LOOP_END:e=U.endLoop(),q.drawLoop(f,e,"loop",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.RECT_START:J(x,t,H.boxMargin,H.boxMargin,(t=>U.newLoop(void 0,t.message)));break;case o.db.LINETYPE.RECT_END:e=U.endLoop(),q.drawBackgroundRect(f,e),U.models.addLoop(e),U.bumpVerticalPos(e.stopy-U.getVerticalPos());break;case o.db.LINETYPE.OPT_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.OPT_END:e=U.endLoop(),q.drawLoop(f,e,"opt",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.ALT_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.ALT_ELSE:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.ALT_END:e=U.endLoop(),q.drawLoop(f,e,"alt",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.PAR_START:case o.db.LINETYPE.PAR_OVER_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t))),U.saveVerticalPos();break;case o.db.LINETYPE.PAR_AND:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.PAR_END:e=U.endLoop(),q.drawLoop(f,e,"par",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.AUTONUMBER:k=t.message.start||k,_=t.message.step||_,t.message.visible?o.db.enableSequenceNumbers():o.db.disableSequenceNumbers();break;case o.db.LINETYPE.CRITICAL_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.CRITICAL_OPTION:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.CRITICAL_END:e=U.endLoop(),q.drawLoop(f,e,"critical",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.BREAK_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.BREAK_END:e=U.endLoop(),q.drawLoop(f,e,"break",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;default:try{U.resetVerticalPos(),r=t.msgModel,r.starty=U.getVerticalPos(),r.sequenceIndex=k,r.sequenceVisible=o.db.showSequenceNumbers();const e=function(t,e){U.bumpVerticalPos(10);const{startx:n,stopx:r,message:a}=e,o=i.e.splitBreaks(a).length,s=i.u.calculateTextDimensions(a,G(H)),c=s.height/o;let u;e.height+=c,U.bumpVerticalPos(c);let l=s.height-10;const h=s.width;if(n===r){u=U.getVerticalPos()+l,H.rightAngles||(l+=H.boxMargin,u=U.getVerticalPos()+l),l+=30;const t=i.e.getMax(h/2,H.width/2);U.insert(n-t,U.getVerticalPos()-10+l,r+t,U.getVerticalPos()+30+l)}else l+=H.boxMargin,u=U.getVerticalPos()+l,U.insert(n,u-10,r,u);return U.bumpVerticalPos(l),e.height+=l,e.stopy=e.starty+e.height,U.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),u}(0,r);A.push({messageModel:r,lineStartY:e}),U.models.addMessage(r)}catch(t){i.l.error("error while drawing message",t)}}[o.db.LINETYPE.SOLID_OPEN,o.db.LINETYPE.DOTTED_OPEN,o.db.LINETYPE.SOLID,o.db.LINETYPE.DOTTED,o.db.LINETYPE.SOLID_CROSS,o.db.LINETYPE.DOTTED_CROSS,o.db.LINETYPE.SOLID_POINT,o.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(k+=_)})),A.forEach((t=>function(t,e,n,r){const{startx:o,stopx:s,starty:c,message:u,type:l,sequenceIndex:h,sequenceVisible:f}=e,d=i.u.calculateTextDimensions(u,G(H)),g=(0,a.e)();g.x=o,g.y=c+10,g.width=s-o,g.class="messageText",g.dy="1em",g.text=u,g.fontFamily=H.messageFontFamily,g.fontSize=H.messageFontSize,g.fontWeight=H.messageFontWeight,g.anchor=H.messageAlign,g.valign="center",g.textMargin=H.wrapPadding,g.tspan=!1,N(t,g);const p=d.width;let b;o===s?b=H.rightAngles?t.append("path").attr("d",`M ${o},${n} H ${o+i.e.getMax(H.width/2,p/2)} V ${n+25} H ${o}`):t.append("path").attr("d","M "+o+","+n+" C "+(o+60)+","+(n-10)+" "+(o+60)+","+(n+30)+" "+o+","+(n+20)):(b=t.append("line"),b.attr("x1",o),b.attr("y1",n),b.attr("x2",s),b.attr("y2",n)),l===r.db.LINETYPE.DOTTED||l===r.db.LINETYPE.DOTTED_CROSS||l===r.db.LINETYPE.DOTTED_POINT||l===r.db.LINETYPE.DOTTED_OPEN?(b.style("stroke-dasharray","3, 3"),b.attr("class","messageLine1")):b.attr("class","messageLine0");let w="";H.arrowMarkerAbsolute&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),b.attr("stroke-width",2),b.attr("stroke","none"),b.style("fill","none"),l!==r.db.LINETYPE.SOLID&&l!==r.db.LINETYPE.DOTTED||b.attr("marker-end","url("+w+"#arrowhead)"),l!==r.db.LINETYPE.SOLID_POINT&&l!==r.db.LINETYPE.DOTTED_POINT||b.attr("marker-end","url("+w+"#filled-head)"),l!==r.db.LINETYPE.SOLID_CROSS&&l!==r.db.LINETYPE.DOTTED_CROSS||b.attr("marker-end","url("+w+"#crosshead)"),(f||H.showSequenceNumbers)&&(b.attr("marker-start","url("+w+"#sequencenumber)"),t.append("text").attr("x",o).attr("y",n+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))}(f,t.messageModel,t.lineStartY,o))),H.mirrorActors&&(U.bumpVerticalPos(2*H.boxMargin),W(f,d,p,U.getVerticalPos(),H,b,!0),U.bumpVerticalPos(H.boxMargin),F(f,U.getVerticalPos())),U.models.boxes.forEach((function(t){t.height=U.getVerticalPos()-t.y,U.insert(t.x,t.y,t.x+t.width,t.height),t.startx=t.x,t.starty=t.y,t.stopx=t.startx+t.width,t.stopy=t.starty+t.height,t.stroke="rgb(0,0,0, 0.5)",q.drawBox(f,t,H)})),m&&U.bumpVerticalPos(H.boxMargin);const E=K(f,d,p,h),{bounds:T}=U.getBounds();i.l.debug("For line height fix Querying: #"+e+" .actor-line");(0,r.td_)("#"+e+" .actor-line").attr("y2",T.stopy);let C=T.stopy-T.starty;C{c[t]=e},l=(t,e)=>{const n=t.append("text").attr("x",2*(0,s.c)().state.padding).attr("y",(0,s.c)().state.textHeight+1.3*(0,s.c)().state.padding).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),i=n.height,r=t.append("text").attr("x",(0,s.c)().state.padding).attr("y",i+.4*(0,s.c)().state.padding+(0,s.c)().state.dividerMargin+(0,s.c)().state.textHeight).attr("class","state-description");let a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){const i=t.append("tspan").attr("x",2*(0,s.c)().state.padding).text(e);n||i.attr("dy",(0,s.c)().state.textHeight)}(r,t,o),o=!1),a=!1}));const c=t.append("line").attr("x1",(0,s.c)().state.padding).attr("y1",(0,s.c)().state.padding+i+(0,s.c)().state.dividerMargin/2).attr("y2",(0,s.c)().state.padding+i+(0,s.c)().state.dividerMargin/2).attr("class","descr-divider"),u=r.node().getBBox(),l=Math.max(u.width,n.width);return c.attr("x2",l+3*(0,s.c)().state.padding),t.insert("rect",":first-child").attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding).attr("width",l+2*(0,s.c)().state.padding).attr("height",u.height+i+2*(0,s.c)().state.padding).attr("rx",(0,s.c)().state.radius),t},h=(t,e,n)=>{const i=(0,s.c)().state.padding,r=2*(0,s.c)().state.padding,a=t.node().getBBox(),o=a.width,c=a.x,u=t.append("text").attr("x",0).attr("y",(0,s.c)().state.titleShift).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+r;let h,f=Math.max(l,o);f===o&&(f+=r);const d=t.node().getBBox();e.doc,h=c-i,l>o&&(h=(o-f)/2+i),Math.abs(c-d.x)o&&(h=c-(l-o)/2);const g=1-(0,s.c)().state.textHeight;return t.insert("rect",":first-child").attr("x",h).attr("y",g).attr("class",n?"alt-composit":"composit").attr("width",f).attr("height",d.height+(0,s.c)().state.textHeight+(0,s.c)().state.titleShift+1).attr("rx","0"),u.attr("x",h+i),l<=o&&u.attr("x",c+(f-r)/2-l/2+i),t.insert("rect",":first-child").attr("x",h).attr("y",(0,s.c)().state.titleShift-(0,s.c)().state.textHeight-(0,s.c)().state.padding).attr("width",f).attr("height",3*(0,s.c)().state.textHeight).attr("rx",(0,s.c)().state.radius),t.insert("rect",":first-child").attr("x",h).attr("y",(0,s.c)().state.titleShift-(0,s.c)().state.textHeight-(0,s.c)().state.padding).attr("width",f).attr("height",d.height+3+2*(0,s.c)().state.textHeight).attr("rx",(0,s.c)().state.radius),t},f=(t,e)=>{e.attr("class","state-note");const n=e.append("rect").attr("x",0).attr("y",(0,s.c)().state.padding),i=e.append("g"),{textWidth:r,textHeight:a}=((t,e,n,i)=>{let r=0;const a=i.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let o=t.replace(/\r\n/g,"
");o=o.replace(/\n/g,"
");const c=o.split(s.e.lineBreakRegex);let u=1.25*(0,s.c)().state.noteMargin;for(const t of c){const i=t.trim();if(i.length>0){const t=a.append("tspan");t.text(i),0===u&&(u+=t.node().getBBox().height),r+=u,t.attr("x",e+(0,s.c)().state.noteMargin),t.attr("y",n+r+1.25*(0,s.c)().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:r}})(t,0,0,i);return n.attr("height",a+2*(0,s.c)().state.noteMargin),n.attr("width",r+2*(0,s.c)().state.noteMargin),n},d=function(t,e){const n=e.id,i={id:n,label:e.id,width:0,height:0},r=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&(t=>{t.append("circle").attr("class","start-state").attr("r",(0,s.c)().state.sizeUnit).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit)})(r),"end"===e.type&&(t=>{t.append("circle").attr("class","end-state-outer").attr("r",(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,s.c)().state.sizeUnit).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+2).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+2)})(r),"fork"!==e.type&&"join"!==e.type||((t,e)=>{let n=(0,s.c)().state.forkWidth,i=(0,s.c)().state.forkHeight;if(e.parentId){let t=n;n=i,i=t}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",i).attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding)})(r,e),"note"===e.type&&f(e.note.text,r),"divider"===e.type&&(t=>{t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,s.c)().state.textHeight).attr("class","divider").attr("x2",2*(0,s.c)().state.textHeight).attr("y1",0).attr("y2",0)})(r),"default"===e.type&&0===e.descriptions.length&&((t,e)=>{const n=t.append("text").attr("x",2*(0,s.c)().state.padding).attr("y",(0,s.c)().state.textHeight+2*(0,s.c)().state.padding).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.id),i=n.node().getBBox();t.insert("rect",":first-child").attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding).attr("width",i.width+2*(0,s.c)().state.padding).attr("height",i.height+2*(0,s.c)().state.padding).attr("rx",(0,s.c)().state.radius)})(r,e),"default"===e.type&&e.descriptions.length>0&&l(r,e);const a=r.node().getBBox();return i.width=a.width+2*(0,s.c)().state.padding,i.height=a.height+2*(0,s.c)().state.padding,u(n,i),i};let g=0;let p;const b={},w=(t,e,n,c,u,l,f)=>{const m=new o.k({compound:!0,multigraph:!0});let y,v=!0;for(y=0;y{const e=t.parentElement;let n=0,i=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",n-i-8)}))}else s.l.debug("No Node "+t+": "+JSON.stringify(m.node(t)))}));let T=E.getBBox();m.edges().forEach((function(t){void 0!==t&&void 0!==m.edge(t)&&(s.l.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(m.edge(t))),function(t,e,n){e.points=e.points.filter((t=>!Number.isNaN(t.y)));const a=e.points,o=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(r.$0Z),c=t.append("path").attr("d",o(a)).attr("id","edge"+g).attr("class","transition");let u="";if((0,s.c)().state.arrowMarkerAbsolute&&(u=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,u=u.replace(/\(/g,"\\("),u=u.replace(/\)/g,"\\)")),c.attr("marker-end","url("+u+"#"+function(t){switch(t){case i.d.relationType.AGGREGATION:return"aggregation";case i.d.relationType.EXTENSION:return"extension";case i.d.relationType.COMPOSITION:return"composition";case i.d.relationType.DEPENDENCY:return"dependency"}}(i.d.relationType.DEPENDENCY)+"End)"),void 0!==n.title){const i=t.append("g").attr("class","stateLabel"),{x:r,y:a}=s.u.calcLabelPosition(e.points),o=s.e.getRows(n.title);let c=0;const u=[];let l=0,h=0;for(let t=0;t<=o.length;t++){const e=i.append("text").attr("text-anchor","middle").text(o[t]).attr("x",r).attr("y",a+c),n=e.node().getBBox();if(l=Math.max(l,n.width),h=Math.min(h,n.x),s.l.info(n.x,r,a+c),0===c){const t=e.node().getBBox();c=t.height,s.l.info("Title height",c,a)}u.push(e)}let f=c*o.length;if(o.length>1){const t=(o.length-1)*c*.5;u.forEach(((e,n)=>e.attr("y",a+n*c-t))),f=c*o.length}const d=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",r-l/2-(0,s.c)().state.padding/2).attr("y",a-f/2-(0,s.c)().state.padding/2-3.5).attr("width",l+(0,s.c)().state.padding).attr("height",f+(0,s.c)().state.padding),s.l.info(d)}g++}(e,m.edge(t),m.edge(t).relation))})),T=E.getBBox();const C={id:n||"root",label:n||"root",width:0,height:0};return C.width=T.width+2*p.padding,C.height=T.height+2*p.padding,s.l.debug("Doc rendered",C,m),C},m={setConf:function(){},draw:function(t,e,n,i){p=(0,s.c)().state;const a=(0,s.c)().securityLevel;let c;"sandbox"===a&&(c=(0,r.Ys)("#i"+e));const u="sandbox"===a?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body"),l="sandbox"===a?c.nodes()[0].contentDocument:document;s.l.debug("Rendering diagram "+t);const h=u.select(`[id='${e}']`);h.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z");new o.k({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));const f=i.db.getRootDoc();w(f,h,void 0,!1,u,l,i);const d=p.padding,g=h.node().getBBox(),b=g.width+2*d,m=g.height+2*d,y=1.75*b;(0,s.i)(h,m,y,p.useMaxWidth),h.attr("viewBox",`${g.x-p.padding} ${g.y-p.padding} `+b+" "+m)}},y={parser:i.p,db:i.d,renderer:m,styles:i.s,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},6185:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return T}});var i=n(328),r=n(8066),a=n(1504),o=n(8540),s=n(113);n(7530),n(2510),n(6951),n(1768),n(835);const c="rect",u="rectWithTitle",l="statediagram",h="transition",f="parent",d="note",g="----parent",p="fill:none",b="fill: #333",w="text",m="normal";let y={},v=0;function x(t="",e=0,n="",i="----"){return`state-${t}${null!==n&&n.length>0?`${i}${n}`:""}-${e}`}const k=(t,e,n,r,a,s)=>{const l=n.id,h=null==(k=r[l])?"":k.classes?k.classes.join(" "):"";var k;if("root"!==l){let e=c;!0===n.start&&(e="start"),!1===n.start&&(e="end"),n.type!==i.D&&(e=n.type),y[l]||(y[l]={id:l,shape:e,description:o.e.sanitizeText(l,(0,o.c)()),classes:`${h} statediagram-state`});const r=y[l];n.description&&(Array.isArray(r.description)?(r.shape=u,r.description.push(n.description)):r.description.length>0?(r.shape=u,r.description===l?r.description=[n.description]:r.description=[r.description,n.description]):(r.shape=c,r.description=n.description),r.description=o.e.sanitizeTextOrArray(r.description,(0,o.c)())),1===r.description.length&&r.shape===u&&(r.shape=c),!r.type&&n.doc&&(o.l.info("Setting cluster for ",l,A(n)),r.type="group",r.dir=A(n),r.shape=n.type===i.a?"divider":"roundedWithTitle",r.classes=r.classes+" statediagram-cluster "+(s?"statediagram-cluster-alt":""));const a={labelStyle:"",shape:r.shape,labelText:r.description,classes:r.classes,style:"",id:l,dir:r.dir,domId:x(l,v),type:r.type,padding:15,centerLabel:!0};if(n.note){const e={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:l+"----note-"+v,domId:x(l,v,d),type:r.type,padding:15},i={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:r.classes,style:"",id:l+g,domId:x(l,v,f),type:"group",padding:0};v++;const o=l+g;t.setNode(o,i),t.setNode(e.id,e),t.setNode(l,a),t.setParent(l,o),t.setParent(e.id,o);let s=l,c=e.id;"left of"===n.note.position&&(s=e.id,c=l),t.setEdge(s,c,{arrowhead:"none",arrowType:"",style:p,labelStyle:"",classes:"transition note-edge",arrowheadStyle:b,labelpos:"c",labelType:w,thickness:m})}else t.setNode(l,a)}e&&"root"!==e.id&&(o.l.trace("Setting node ",l," to be child of its parent ",e.id),t.setParent(l,e.id)),n.doc&&(o.l.trace("Adding nodes children "),_(t,n,n.doc,r,a,!s))},_=(t,e,n,r,a,s)=>{o.l.trace("items",n),n.forEach((n=>{switch(n.stmt){case i.b:case i.D:k(t,e,n,r,a,s);break;case i.S:{k(t,e,n.state1,r,a,s),k(t,e,n.state2,r,a,s);const i={id:"edge"+v,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:p,labelStyle:"",label:o.e.sanitizeText(n.description,(0,o.c)()),arrowheadStyle:b,labelpos:"c",labelType:w,thickness:m,classes:h};t.setEdge(n.state1.id,n.state2.id,i,v),v++}}}))},A=(t,e=i.c)=>{let n=e;if(t.doc)for(let e=0;e{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},8489:function(t,e,n){"use strict";n.d(e,{a:function(){return w},f:function(){return b}});var i=n(8066),r=n(1504),a=n(895),o=n(8540),s=n(113),c=n(8137),u=n(1022),l=n(9297);var h=(t,e)=>u.Z.lang.round(l.Z.parse(t)[e]),f=n(852);const d={},g=function(t,e,n,i,r,a){const s=i.select(`[id="${n}"]`);Object.keys(t).forEach((function(n){const i=t[n];let u="default";i.classes.length>0&&(u=i.classes.join(" ")),u+=" flowchart-label";const l=(0,o.k)(i.styles);let h,f=void 0!==i.text?i.text:i.id;if(o.l.info("vertex",i,i.labelType),"markdown"===i.labelType)o.l.info("vertex",i,i.labelType);else if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t={label:f.replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``))};h=(0,c.a)(s,t).node(),h.parentNode.removeChild(h)}else{const t=r.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",l.labelStyle.replace("color:","fill:"));const e=f.split(o.e.lineBreakRegex);for(const n of e){const e=r.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","1"),e.textContent=n,t.appendChild(e)}h=t}let d=0,g="";switch(i.type){case"round":d=5,g="rect";break;case"square":case"group":default:g="rect";break;case"diamond":g="question";break;case"hexagon":g="hexagon";break;case"odd":case"odd_right":g="rect_left_inv_arrow";break;case"lean_right":g="lean_right";break;case"lean_left":g="lean_left";break;case"trapezoid":g="trapezoid";break;case"inv_trapezoid":g="inv_trapezoid";break;case"circle":g="circle";break;case"ellipse":g="ellipse";break;case"stadium":g="stadium";break;case"subroutine":g="subroutine";break;case"cylinder":g="cylinder";break;case"doublecircle":g="doublecircle"}e.setNode(i.id,{labelStyle:l.labelStyle,shape:g,labelText:f,labelType:i.labelType,rx:d,ry:d,class:u,style:l.style,id:i.id,link:i.link,linkTarget:i.linkTarget,tooltip:a.db.getTooltip(i.id)||"",domId:a.db.lookUpDomId(i.id),haveCallback:i.haveCallback,width:"group"===i.type?500:void 0,dir:i.dir,type:i.type,props:i.props,padding:(0,o.c)().flowchart.padding}),o.l.info("setNode",{labelStyle:l.labelStyle,labelType:i.labelType,shape:g,labelText:f,rx:d,ry:d,class:u,style:l.style,id:i.id,domId:a.db.lookUpDomId(i.id),width:"group"===i.type?500:void 0,type:i.type,dir:i.dir,props:i.props,padding:(0,o.c)().flowchart.padding})}))},p=function(t,e,n){o.l.info("abc78 edges = ",t);let i,a,s=0,c={};if(void 0!==t.defaultStyle){const e=(0,o.k)(t.defaultStyle);i=e.style,a=e.labelStyle}t.forEach((function(n){s++;const u="L-"+n.start+"-"+n.end;void 0===c[u]?(c[u]=0,o.l.info("abc78 new entry",u,c[u])):(c[u]++,o.l.info("abc78 new entry",u,c[u]));let l=u+"-"+c[u];o.l.info("abc78 new link id to be used is",u,l,c[u]);const h="LS-"+n.start,f="LE-"+n.end,g={style:"",labelStyle:""};switch(g.minlen=n.length||1,"arrow_open"===n.type?g.arrowhead="none":g.arrowhead="normal",g.arrowTypeStart="arrow_open",g.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":g.arrowTypeStart="arrow_cross";case"arrow_cross":g.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":g.arrowTypeStart="arrow_point";case"arrow_point":g.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":g.arrowTypeStart="arrow_circle";case"arrow_circle":g.arrowTypeEnd="arrow_circle"}let p="",b="";switch(n.stroke){case"normal":p="fill:none;",void 0!==i&&(p=i),void 0!==a&&(b=a),g.thickness="normal",g.pattern="solid";break;case"dotted":g.thickness="normal",g.pattern="dotted",g.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":g.thickness="thick",g.pattern="solid",g.style="stroke-width: 3.5px;fill:none;";break;case"invisible":g.thickness="invisible",g.pattern="solid",g.style="stroke-width: 0;fill:none;"}if(void 0!==n.style){const t=(0,o.k)(n.style);p=t.style,b=t.labelStyle}g.style=g.style+=p,g.labelStyle=g.labelStyle+=b,void 0!==n.interpolate?g.curve=(0,o.o)(n.interpolate,r.c_6):void 0!==t.defaultInterpolate?g.curve=(0,o.o)(t.defaultInterpolate,r.c_6):g.curve=(0,o.o)(d.curve,r.c_6),void 0===n.text?void 0!==n.style&&(g.arrowheadStyle="fill: #333"):(g.arrowheadStyle="fill: #333",g.labelpos="c"),g.labelType=n.labelType,g.label=n.text.replace(o.e.lineBreakRegex,"\n"),void 0===n.style&&(g.style=g.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),g.labelStyle=g.labelStyle.replace("color:","fill:"),g.id=l,g.classes="flowchart-link "+h+" "+f,e.setEdge(n.start,n.end,g,s)}))},b={setConf:function(t){const e=Object.keys(t);for(const n of e)d[n]=t[n]},addVertices:g,addEdges:p,getClasses:function(t,e){o.l.info("Extracting classes"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch(t){return}},draw:async function(t,e,n,c){o.l.info("Drawing flowchart"),c.db.clear(),a.f.setGen("gen-2"),c.parser.parse(t);let u=c.db.getDirection();void 0===u&&(u="TD");const{securityLevel:l,flowchart:h}=(0,o.c)(),f=h.nodeSpacing||50,d=h.rankSpacing||50;let b;"sandbox"===l&&(b=(0,r.Ys)("#i"+e));const w="sandbox"===l?(0,r.Ys)(b.nodes()[0].contentDocument.body):(0,r.Ys)("body"),m="sandbox"===l?b.nodes()[0].contentDocument:document,y=new i.k({multigraph:!0,compound:!0}).setGraph({rankdir:u,nodesep:f,ranksep:d,marginx:0,marginy:0}).setDefaultEdgeLabel((function(){return{}}));let v;const x=c.db.getSubGraphs();o.l.info("Subgraphs - ",x);for(let t=x.length-1;t>=0;t--)v=x[t],o.l.info("Subgraph - ",v),c.db.addVertex(v.id,{text:v.title,type:v.labelType},"group",void 0,v.classes,v.dir);const k=c.db.getVertices(),_=c.db.getEdges();o.l.info("Edges",_);let A=0;for(A=x.length-1;A>=0;A--){v=x[A],(0,r.td_)("cluster").append("text");for(let t=0;t`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${((t,e)=>{const n=h,i=n(t,"r"),r=n(t,"g"),a=n(t,"b");return f.Z(i,r,a,e)})(t.edgeLabelBackground,.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`},5349:function(t,e,n){"use strict";n.d(e,{d:function(){return A},p:function(){return o},s:function(){return E}});var i=n(1504),r=n(8540),a=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,34],n=[1,35],i=[1,36],r=[1,37],a=[1,9],o=[1,8],s=[1,19],c=[1,20],u=[1,21],l=[1,40],h=[1,41],f=[1,27],d=[1,25],g=[1,26],p=[1,32],b=[1,33],w=[1,28],m=[1,29],y=[1,30],v=[1,31],x=[1,45],k=[1,42],_=[1,43],A=[1,44],E=[1,46],T=[1,24],C=[1,16,24],S=[1,60],I=[1,61],M=[1,62],D=[1,63],O=[1,64],L=[1,65],N=[1,66],P=[1,16,24,52],B=[1,77],F=[1,16,24,27,28,36,50,52,55,68,69,70,71,72,73,74,79,81],R=[1,16,24,27,28,34,36,50,52,55,59,68,69,70,71,72,73,74,79,81,94,96,97,98,99],j=[1,86],$=[28,94,96,97,98,99],z=[28,73,74,94,96,97,98,99],q=[28,68,69,70,71,72,94,96,97,98,99],H=[1,99],U=[1,16,24,50,52,55],G=[1,16,24,36],Y=[8,9,10,11,19,23,44,46,48,53,57,58,60,61,63,65,75,76,78,82,94,96,97,98,99],Z={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,statements:6,direction:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,EOF:24,statement:25,classLabel:26,SQS:27,STR:28,SQE:29,namespaceName:30,alphaNumToken:31,className:32,classLiteralName:33,GENERICTYPE:34,relationStatement:35,LABEL:36,namespaceStatement:37,classStatement:38,methodStatement:39,annotationStatement:40,clickStatement:41,cssClassStatement:42,noteStatement:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,namespaceIdentifier:49,STRUCT_START:50,classStatements:51,STRUCT_STOP:52,NAMESPACE:53,classIdentifier:54,STYLE_SEPARATOR:55,members:56,CLASS:57,ANNOTATION_START:58,ANNOTATION_END:59,MEMBER:60,SEPARATOR:61,relation:62,NOTE_FOR:63,noteText:64,NOTE:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,CSSCLASS:82,commentToken:83,textToken:84,graphCodeTokens:85,textNoTagsToken:86,TAGSTART:87,TAGEND:88,"==":89,"--":90,PCT:91,DEFAULT:92,SPACE:93,MINUS:94,keywords:95,UNICODE_TEXT:96,NUM:97,ALPHA:98,BQUOTE_STR:99,$accept:0,$end:1},terminals_:{2:"error",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",24:"EOF",27:"SQS",28:"STR",29:"SQE",34:"GENERICTYPE",36:"LABEL",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",50:"STRUCT_START",52:"STRUCT_STOP",53:"NAMESPACE",55:"STYLE_SEPARATOR",57:"CLASS",58:"ANNOTATION_START",59:"ANNOTATION_END",60:"MEMBER",61:"SEPARATOR",63:"NOTE_FOR",65:"NOTE",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"CSSCLASS",85:"graphCodeTokens",87:"TAGSTART",88:"TAGEND",89:"==",90:"--",91:"PCT",92:"DEFAULT",93:"SPACE",94:"MINUS",95:"keywords",96:"UNICODE_TEXT",97:"NUM",98:"ALPHA",99:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[3,1],[7,1],[7,1],[7,1],[7,1],[4,1],[5,4],[5,6],[13,1],[14,1],[18,1],[15,1],[12,4],[6,1],[6,2],[6,3],[26,3],[30,1],[30,2],[32,1],[32,1],[32,2],[32,2],[32,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,2],[25,2],[25,1],[37,4],[37,5],[49,2],[51,1],[51,2],[51,3],[38,1],[38,3],[38,4],[38,6],[54,2],[54,3],[40,4],[56,1],[56,2],[39,1],[39,2],[39,1],[39,1],[35,3],[35,4],[35,4],[35,5],[43,3],[43,2],[62,3],[62,2],[62,2],[62,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[41,3],[41,4],[41,3],[41,4],[41,4],[41,5],[41,3],[41,4],[41,4],[41,5],[41,3],[41,4],[41,4],[41,5],[42,3],[83,1],[83,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[86,1],[86,1],[86,1],[86,1],[31,1],[31,1],[31,1],[31,1],[33,1],[64,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:i.setDirection("TB");break;case 5:i.setDirection("BT");break;case 6:i.setDirection("RL");break;case 7:i.setDirection("LR");break;case 11:i.parseDirective("%%{","open_directive");break;case 12:i.parseDirective(a[s],"type_directive");break;case 13:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 14:i.parseDirective("}%%","close_directive","class");break;case 19:this.$=a[s-1];break;case 20:case 22:case 23:this.$=a[s];break;case 21:case 24:this.$=a[s-1]+a[s];break;case 25:case 26:this.$=a[s-1]+"~"+a[s]+"~";break;case 27:i.addRelation(a[s]);break;case 28:a[s-1].title=i.cleanupLabel(a[s]),i.addRelation(a[s-1]);break;case 37:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 40:i.addClassesToNamespace(a[s-3],a[s-1]);break;case 41:i.addClassesToNamespace(a[s-4],a[s-1]);break;case 42:this.$=a[s],i.addNamespace(a[s]);break;case 43:case 53:this.$=[a[s]];break;case 44:this.$=[a[s-1]];break;case 45:a[s].unshift(a[s-2]),this.$=a[s];break;case 47:i.setCssClass(a[s-2],a[s]);break;case 48:i.addMembers(a[s-3],a[s-1]);break;case 49:i.setCssClass(a[s-5],a[s-3]),i.addMembers(a[s-5],a[s-1]);break;case 50:this.$=a[s],i.addClass(a[s]);break;case 51:this.$=a[s-1],i.addClass(a[s-1]),i.setClassLabel(a[s-1],a[s]);break;case 52:i.addAnnotation(a[s],a[s-2]);break;case 54:a[s].push(a[s-1]),this.$=a[s];break;case 55:case 57:case 58:break;case 56:i.addMember(a[s-1],i.cleanupLabel(a[s]));break;case 59:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 60:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 61:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 62:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 63:i.addNote(a[s],a[s-1]);break;case 64:i.addNote(a[s]);break;case 65:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 66:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 67:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 68:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 69:this.$=i.relationType.AGGREGATION;break;case 70:this.$=i.relationType.EXTENSION;break;case 71:this.$=i.relationType.COMPOSITION;break;case 72:this.$=i.relationType.DEPENDENCY;break;case 73:this.$=i.relationType.LOLLIPOP;break;case 74:this.$=i.lineType.LINE;break;case 75:this.$=i.lineType.DOTTED_LINE;break;case 76:case 82:this.$=a[s-2],i.setClickEvent(a[s-1],a[s]);break;case 77:case 83:this.$=a[s-3],i.setClickEvent(a[s-2],a[s-1]),i.setTooltip(a[s-2],a[s]);break;case 78:case 86:this.$=a[s-2],i.setLink(a[s-1],a[s]);break;case 79:case 87:this.$=a[s-3],i.setLink(a[s-2],a[s-1],a[s]);break;case 80:case 88:this.$=a[s-3],i.setLink(a[s-2],a[s-1]),i.setTooltip(a[s-2],a[s]);break;case 81:case 89:this.$=a[s-4],i.setLink(a[s-3],a[s-2],a[s]),i.setTooltip(a[s-3],a[s-1]);break;case 84:this.$=a[s-3],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 85:this.$=a[s-4],i.setClickEvent(a[s-3],a[s-2],a[s-1]),i.setTooltip(a[s-3],a[s]);break;case 90:i.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:18,8:e,9:n,10:i,11:r,12:5,13:6,19:a,23:o,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},{1:[3]},{1:[2,1]},{3:47,4:2,5:3,6:4,7:18,8:e,9:n,10:i,11:r,12:5,13:6,19:a,23:o,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},{1:[2,3]},{1:[2,8]},{14:48,20:[1,49]},t(T,[2,16],{16:[1,50]}),{16:[1,51]},{20:[2,11]},t(C,[2,27],{36:[1,52]}),t(C,[2,29]),t(C,[2,30]),t(C,[2,31]),t(C,[2,32]),t(C,[2,33]),t(C,[2,34]),t(C,[2,35]),t(C,[2,36]),{45:[1,53]},{47:[1,54]},t(C,[2,39]),t(C,[2,55],{62:55,66:58,67:59,28:[1,56],36:[1,57],68:S,69:I,70:M,71:D,72:O,73:L,74:N}),{50:[1,67]},t(P,[2,46],{50:[1,69],55:[1,68]}),t(C,[2,57]),t(C,[2,58]),{31:70,94:x,96:k,97:_,98:A},{31:38,32:71,33:39,94:x,96:k,97:_,98:A,99:E},{31:38,32:72,33:39,94:x,96:k,97:_,98:A,99:E},{31:38,32:73,33:39,94:x,96:k,97:_,98:A,99:E},{28:[1,74]},{31:38,32:75,33:39,94:x,96:k,97:_,98:A,99:E},{28:B,64:76},t(C,[2,4]),t(C,[2,5]),t(C,[2,6]),t(C,[2,7]),t(F,[2,22],{31:38,33:39,32:78,34:[1,79],94:x,96:k,97:_,98:A,99:E}),t(F,[2,23],{34:[1,80]}),{30:81,31:82,94:x,96:k,97:_,98:A},{31:38,32:83,33:39,94:x,96:k,97:_,98:A,99:E},t(R,[2,104]),t(R,[2,105]),t(R,[2,106]),t(R,[2,107]),t([1,16,24,27,28,34,36,50,52,55,68,69,70,71,72,73,74,79,81],[2,108]),{1:[2,2]},{15:84,17:[1,85],22:j},t([17,22],[2,12]),t(T,[2,17],{25:7,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,7:18,32:22,49:23,54:24,31:38,33:39,6:87,8:e,9:n,10:i,11:r,44:s,46:c,48:u,53:l,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E}),{6:88,7:18,8:e,9:n,10:i,11:r,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},t(C,[2,28]),t(C,[2,37]),t(C,[2,38]),{28:[1,90],31:38,32:89,33:39,94:x,96:k,97:_,98:A,99:E},{62:91,66:58,67:59,68:S,69:I,70:M,71:D,72:O,73:L,74:N},t(C,[2,56]),{67:92,73:L,74:N},t($,[2,68],{66:93,68:S,69:I,70:M,71:D,72:O}),t(z,[2,69]),t(z,[2,70]),t(z,[2,71]),t(z,[2,72]),t(z,[2,73]),t(q,[2,74]),t(q,[2,75]),{16:[1,95],38:96,51:94,54:24,57:h},{31:97,94:x,96:k,97:_,98:A},{56:98,60:H},{59:[1,100]},{28:[1,101]},{28:[1,102]},{79:[1,103],81:[1,104]},{31:105,94:x,96:k,97:_,98:A},{28:B,64:106},t(C,[2,64]),t(C,[2,109]),t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),{50:[2,42]},{30:107,31:82,50:[2,20],94:x,96:k,97:_,98:A},t(U,[2,50],{26:108,27:[1,109]}),{16:[1,110]},{18:111,21:[1,112]},{16:[2,14]},t(T,[2,18]),{24:[1,113]},t(G,[2,59]),{31:38,32:114,33:39,94:x,96:k,97:_,98:A,99:E},{28:[1,116],31:38,32:115,33:39,94:x,96:k,97:_,98:A,99:E},t($,[2,67],{66:117,68:S,69:I,70:M,71:D,72:O}),t($,[2,66]),{52:[1,118]},{38:96,51:119,54:24,57:h},{16:[1,120],52:[2,43]},t(P,[2,47],{50:[1,121]}),{52:[1,122]},{52:[2,53],56:123,60:H},{31:38,32:124,33:39,94:x,96:k,97:_,98:A,99:E},t(C,[2,76],{28:[1,125]}),t(C,[2,78],{28:[1,127],77:[1,126]}),t(C,[2,82],{28:[1,128],80:[1,129]}),t(C,[2,86],{28:[1,131],77:[1,130]}),t(C,[2,90]),t(C,[2,63]),{50:[2,21]},t(U,[2,51]),{28:[1,132]},t(Y,[2,9]),{15:133,22:j},{22:[2,13]},{1:[2,15]},t(G,[2,61]),t(G,[2,60]),{31:38,32:134,33:39,94:x,96:k,97:_,98:A,99:E},t($,[2,65]),t(C,[2,40]),{52:[1,135]},{38:96,51:136,52:[2,44],54:24,57:h},{56:137,60:H},t(P,[2,48]),{52:[2,54]},t(C,[2,52]),t(C,[2,77]),t(C,[2,79]),t(C,[2,80],{77:[1,138]}),t(C,[2,83]),t(C,[2,84],{28:[1,139]}),t(C,[2,87]),t(C,[2,88],{77:[1,140]}),{29:[1,141]},{16:[1,142]},t(G,[2,62]),t(C,[2,41]),{52:[2,45]},{52:[1,143]},t(C,[2,81]),t(C,[2,85]),t(C,[2,89]),t(U,[2,19]),t(Y,[2,10]),t(P,[2,49])],defaultActions:{2:[2,1],4:[2,3],5:[2,8],9:[2,11],47:[2,2],81:[2,42],86:[2,14],107:[2,21],112:[2,13],113:[2,15],123:[2,54],136:[2,45]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},W={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 25:case 30:case 34:case 41:break;case 11:return this.begin("acc_title"),44;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),46;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 52:case 55:case 58:case 60:case 63:case 66:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 29:return 16;case 20:case 21:return 23;case 22:case 31:case 39:return"EDGE_STATE";case 23:return this.begin("namespace"),53;case 24:case 33:return this.popState(),16;case 26:return this.begin("namespace-body"),50;case 27:case 37:return this.popState(),52;case 28:case 38:return"EOF_IN_STRUCT";case 32:return this.begin("class"),57;case 35:return this.popState(),this.popState(),52;case 36:return this.begin("class-body"),50;case 40:return"OPEN_IN_STRUCT";case 42:return"MEMBER";case 43:return 82;case 44:return 75;case 45:return 76;case 46:return 78;case 47:return 63;case 48:return 65;case 49:return 58;case 50:return 59;case 51:this.begin("href");break;case 53:return 81;case 54:this.begin("callback_name");break;case 56:this.popState(),this.begin("callback_args");break;case 57:return 79;case 59:return 80;case 61:return"GENERICTYPE";case 62:this.begin("generic");break;case 64:return"STR";case 65:this.begin("string");break;case 67:return"BQUOTE_STR";case 68:this.begin("bqstring");break;case 69:case 70:case 71:case 72:return 77;case 73:case 74:return 69;case 75:case 76:return 71;case 77:return 70;case 78:return 68;case 79:return 72;case 80:return 73;case 81:return 74;case 82:return 36;case 83:return 55;case 84:return 94;case 85:return"DOT";case 86:return"PLUS";case 87:return 91;case 88:case 89:return"EQUALS";case 90:return 98;case 91:return 27;case 92:return 29;case 93:return"PUNCTUATION";case 94:return 97;case 95:return 96;case 96:return 93;case 97:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[~])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\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\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\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\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-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\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\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\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\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\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])/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[27,28,29,30,31,32,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},namespace:{rules:[23,24,25,26,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},"class-body":{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},class:{rules:[33,34,35,36,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_descr_multiline:{rules:[16,17,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_descr:{rules:[14,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_title:{rules:[12,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},arg_directive:{rules:[7,8,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},type_directive:{rules:[6,7,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},open_directive:{rules:[5,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},callback_args:{rules:[43,44,45,46,47,48,49,50,51,54,58,59,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},callback_name:{rules:[43,44,45,46,47,48,49,50,51,54,55,56,57,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},href:{rules:[43,44,45,46,47,48,49,50,51,52,53,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},struct:{rules:[43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},generic:{rules:[43,44,45,46,47,48,49,50,51,54,60,61,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},bqstring:{rules:[43,44,45,46,47,48,49,50,51,54,62,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},string:{rules:[43,44,45,46,47,48,49,50,51,54,62,63,64,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,32,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};function K(){this.yy={}}return Z.lexer=W,K.prototype=Z,Z.Parser=K,new K}();a.parser=a;const o=a,s="classId-";let c=[],u={},l=[],h=0,f={},d=0,g=[];const p=t=>r.e.sanitizeText(t,(0,r.c)()),b=function(t){let e="",n=t;if(t.indexOf("~")>0){const i=t.split("~");n=p(i[0]),e=p(i[1])}return{className:n,type:e}},w=function(t){const e=b(t);void 0===u[e.className]&&(u[e.className]={id:e.className,type:e.type,label:e.className,cssClasses:[],methods:[],members:[],annotations:[],domId:s+e.className+"-"+h},h++)},m=function(t){if(t in u)return u[t].domId;throw new Error("Class not found: "+t)},y=function(t,e){const n=b(t).className,i=u[n];if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(p(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(p(t)):t&&i.members.push(p(t))}},v=function(t,e){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n=s+n),void 0!==u[n]&&u[n].cssClasses.push(e)}))},x=function(t,e,n){if("loose"!==(0,r.c)().securityLevel)return;if(void 0===e)return;const i=t;if(void 0!==u[i]){const t=m(i);let a=[];if("string"==typeof n){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,i.Ys)(this).classed("hover",!1)}))};g.push(k);let _="TB";const A={parseDirective:function(t,e,n){r.m.parseDirective(this,t,e,n)},setAccTitle:r.s,getAccTitle:r.g,getAccDescription:r.a,setAccDescription:r.b,getConfig:()=>(0,r.c)().class,addClass:w,bindFunctions:function(t){g.forEach((function(e){e(t)}))},clear:function(){c=[],u={},l=[],g=[],g.push(k),f={},d=0,(0,r.v)()},getClass:function(t){return u[t]},getClasses:function(){return u},getNotes:function(){return l},addAnnotation:function(t,e){const n=b(t).className;u[n].annotations.push(e)},addNote:function(t,e){const n={id:`note${l.length}`,class:e,text:t};l.push(n)},getRelations:function(){return c},addRelation:function(t){r.l.debug("Adding relation: "+JSON.stringify(t)),w(t.id1),w(t.id2),t.id1=b(t.id1).className,t.id2=b(t.id2).className,t.relationTitle1=r.e.sanitizeText(t.relationTitle1.trim(),(0,r.c)()),t.relationTitle2=r.e.sanitizeText(t.relationTitle2.trim(),(0,r.c)()),c.push(t)},getDirection:()=>_,setDirection:t=>{_=t},addMember:y,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((e=>y(t,e))))},cleanupLabel:function(t){return t.startsWith(":")&&(t=t.substring(1)),p(t.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){x(t,e,n),u[t].haveCallback=!0})),v(t,"clickable")},setCssClass:v,setLink:function(t,e,n){const i=(0,r.c)();t.split(",").forEach((function(t){let a=t;t[0].match(/\d/)&&(a=s+a),void 0!==u[a]&&(u[a].link=r.u.formatUrl(e,i),"sandbox"===i.securityLevel?u[a].linkTarget="_top":u[a].linkTarget="string"==typeof n?p(n):"_blank")})),v(t,"clickable")},getTooltip:function(t,e){return e?f[e].classes[t].tooltip:u[t].tooltip},setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(u[t].tooltip=p(e))}))},lookUpDomId:m,setDiagramTitle:r.r,getDiagramTitle:r.t,setClassLabel:function(t,e){e&&(e=p(e));const{className:n}=b(t);u[n].label=e},addNamespace:function(t){void 0===f[t]&&(f[t]={id:t,classes:{},children:{},domId:s+t+"-"+d},d++)},addClassesToNamespace:function(t,e){void 0!==f[t]&&e.map((e=>{f[t].classes[e]=u[e],delete u[e],h--}))},getNamespace:function(t){return f[t]},getNamespaces:function(){return f}},E=t=>`g.classGroup text {\n fill: ${t.nodeBorder};\n fill: ${t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`},328:function(t,e,n){"use strict";n.d(e,{D:function(){return u},S:function(){return c},a:function(){return l},b:function(){return s},c:function(){return o},d:function(){return P},p:function(){return a},s:function(){return B}});var i=n(8540),r=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,3],i=[1,5],r=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,21],u=[1,22],l=[1,23],h=[1,24],f=[1,37],d=[1,25],g=[1,26],p=[1,27],b=[1,28],w=[1,29],m=[1,32],y=[1,33],v=[1,34],x=[1,35],k=[1,36],_=[1,39],A=[1,40],E=[1,41],T=[1,42],C=[1,38],S=[1,45],I=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],M=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],D=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],O=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],L={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:return i.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:case 12:this.$=a[s];break;case 9:this.$="nl";break;case 13:const t=a[s-1];t.description=i.trimColon(a[s]),this.$=t;break;case 14:this.$={stmt:"relation",state1:a[s-2],state2:a[s]};break;case 15:const e=i.trimColon(a[s]);this.$={stmt:"relation",state1:a[s-3],state2:a[s-1],description:e};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 20:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 21:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:"state",id:a[s],type:"fork"};break;case 23:this.$={stmt:"state",id:a[s],type:"join"};break;case 24:this.$={stmt:"state",id:a[s],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 31:case 32:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:a[s-1].trim(),classes:a[s].trim()};break;case 35:this.$={stmt:"applyClass",id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:a[s].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:a[s-2].trim(),classes:[a[s].trim()],type:"default",description:""};break;case 50:i.parseDirective("%%{","open_directive");break;case 51:i.parseDirective(a[s],"type_directive");break;case 52:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 53:i.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:i,45:6,60:r},{1:[3]},{3:8,4:e,5:n,6:4,7:i,45:6,60:r},{3:9,4:e,5:n,6:4,7:i,45:6,60:r},{3:10,4:e,5:n,6:4,7:i,45:6,60:r},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],a,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},{47:43,48:[1,44],63:S},t([48,63],[2,51]),t(I,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:c,17:u,19:l,22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,8]),t(I,[2,9]),t(I,[2,10]),t(I,[2,11]),t(I,[2,12],{14:[1,47],15:[1,48]}),t(I,[2,16]),{18:[1,49]},t(I,[2,18],{20:[1,50]}),{23:[1,51]},t(I,[2,22]),t(I,[2,23]),t(I,[2,24]),t(I,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},t(I,[2,28]),t(I,[2,29]),{34:[1,56]},{36:[1,57]},t(I,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},t(M,[2,44],{57:[1,61]}),t(M,[2,45],{57:[1,62]}),t(I,[2,38]),t(I,[2,39]),t(I,[2,40]),t(I,[2,41]),t(D,[2,36]),{49:63,62:[1,64]},t(D,[2,53]),t(I,[2,7]),t(I,[2,13]),{13:65,24:f,56:C},t(I,[2,17]),t(O,a,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},t(I,[2,30]),t(I,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:S},{63:[2,52]},t(I,[2,14],{14:[1,76]}),{4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,21:[1,77],22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},t(I,[2,33]),t(I,[2,34]),t(I,[2,35]),t(M,[2,46]),t(M,[2,47]),t(D,[2,37]),t(I,[2,15]),t(I,[2,19]),t(O,a,{8:81}),t(I,[2,26]),t(I,[2,27]),{4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,21:[1,82],22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},N={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return 41;case 1:case 44:return 50;case 2:case 45:return 51;case 3:case 46:return 52;case 4:case 47:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:case 11:case 13:case 14:case 15:case 16:case 56:case 58:case 64:break;case 12:case 79:return 5;case 17:case 34:return this.pushState("SCALE"),17;case 18:case 35:return 18;case 19:case 25:case 36:case 51:case 54:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 37:this.pushState("STATE");break;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:case 66:return this.popState(),"ID";case 52:return"STATE_DESCR";case 53:return 19;case 55:return this.popState(),this.pushState("struct"),20;case 57:return this.popState(),21;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 65:return"NOTE_TEXT";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 69:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 70:case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return e.yytext=e.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};function P(){this.yy={}}return L.lexer=N,P.prototype=L,L.Parser=P,new P}();r.parser=r;const a=r,o="TB",s="state",c="relation",u="default",l="divider",h="[*]",f="start",d="color",g="fill";let p="LR",b=[],w={};let m={root:{relations:[],states:{},documents:{}}},y=m.root,v=0,x=0;const k=t=>JSON.parse(JSON.stringify(t)),_=(t,e,n)=>{if(e.stmt===c)_(t,e.state1,!0),_(t,e.state2,!1);else if(e.stmt===s&&("[*]"===e.id?(e.id=n?t.id+"_start":t.id+"_end",e.start=n):e.id=e.id.trim()),e.doc){const t=[];let n,r=[];for(n=0;n0&&r.length>0){const n={stmt:s,id:(0,i.F)(),type:"divider",doc:k(r)};t.push(k(n)),e.doc=t}e.doc.forEach((t=>_(e,t,!0)))}},A=function(t,e=u,n=null,r=null,a=null,o=null,s=null,c=null){const l=null==t?void 0:t.trim();if(void 0===y.states[l]?(i.l.info("Adding state ",l,r),y.states[l]={id:l,descriptions:[],type:e,doc:n,note:a,classes:[],styles:[],textStyles:[]}):(y.states[l].doc||(y.states[l].doc=n),y.states[l].type||(y.states[l].type=e)),r&&(i.l.info("Setting state description",l,r),"string"==typeof r&&M(l,r.trim()),"object"==typeof r&&r.forEach((t=>M(l,t.trim())))),a&&(y.states[l].note=a,y.states[l].note.text=i.e.sanitizeText(y.states[l].note.text,(0,i.c)())),o){i.l.info("Setting state classes",l,o);("string"==typeof o?[o]:o).forEach((t=>O(l,t.trim())))}if(s){i.l.info("Setting state styles",l,s);("string"==typeof s?[s]:s).forEach((t=>L(l,t.trim())))}if(c){i.l.info("Setting state styles",l,s);("string"==typeof c?[c]:c).forEach((t=>N(l,t.trim())))}},E=function(t){m={root:{relations:[],states:{},documents:{}}},y=m.root,v=0,w={},t||(0,i.v)()},T=function(t){return y.states[t]};function C(t=""){let e=t;return t===h&&(v++,e=`start${v}`),e}function S(t="",e=u){return t===h?f:e}const I=function(t,e,n){if("object"==typeof t)!function(t,e,n){let r=C(t.id.trim()),a=S(t.id.trim(),t.type),o=C(e.id.trim()),s=S(e.id.trim(),e.type);A(r,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),A(o,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),y.relations.push({id1:r,id2:o,relationTitle:i.e.sanitizeText(n,(0,i.c)())})}(t,e,n);else{const r=C(t.trim()),a=S(t),o=function(t=""){let e=t;return"[*]"===t&&(v++,e=`end${v}`),e}(e.trim()),s=function(t="",e=u){return"[*]"===t?"end":e}(e);A(r,a),A(o,s),y.relations.push({id1:r,id2:o,title:i.e.sanitizeText(n,(0,i.c)())})}},M=function(t,e){const n=y.states[t],r=e.startsWith(":")?e.replace(":","").trim():e;n.descriptions.push(i.e.sanitizeText(r,(0,i.c)()))},D=function(t,e=""){void 0===w[t]&&(w[t]={id:t,styles:[],textStyles:[]});const n=w[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(d)){const t=e.replace(g,"bgFill").replace(d,g);n.textStyles.push(t)}n.styles.push(e)}))},O=function(t,e){t.split(",").forEach((function(t){let n=T(t);if(void 0===n){const e=t.trim();A(e),n=T(e)}n.classes.push(e)}))},L=function(t,e){const n=T(t);void 0!==n&&n.textStyles.push(e)},N=function(t,e){const n=T(t);void 0!==n&&n.textStyles.push(e)},P={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().state,addState:A,clear:E,getState:T,getStates:function(){return y.states},getRelations:function(){return y.relations},getClasses:function(){return w},getDirection:()=>p,addRelation:I,getDividerId:()=>(x++,"divider-id-"+x),setDirection:t=>{p=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){i.l.info("Documents = ",m)},getRootDoc:()=>b,setRootDoc:t=>{i.l.info("Setting root doc",t),b=t},getRootDocV2:()=>(_({id:"root"},{id:"root",doc:b},!0),{id:"root",doc:b}),extract:t=>{let e;e=t.doc?t.doc:t,i.l.info(e),E(!0),i.l.info("Extract",e),e.forEach((t=>{switch(t.stmt){case s:A(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case c:I(t.state1,t.state2,t.description);break;case"classDef":D(t.id.trim(),t.classes);break;case"applyClass":O(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:i.g,setAccTitle:i.s,getAccDescription:i.a,setAccDescription:i.b,addStyleClass:D,setCssClass:O,addDescription:M,setDiagramTitle:i.r,getDiagramTitle:i.t},B=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`},3148:function(t,e,n){"use strict";n.d(e,{p:function(){return s},s:function(){return l}});var i=n(1504),r=n(8540);let a=0;const o=function(t){let e=t.id;return t.type&&(e+="<"+t.type+">"),e},s=function(t){let e="",n="",i="",a="",o=t.substring(0,1),s=t.substring(t.length-1,t.length);o.match(/[#+~-]/)&&(a=o);let c=/[\s\w)~]/;s.match(c)||(n=u(s));const l=""===a?0:1;let h=""===n?t.length:t.length-1;const f=(t=t.substring(l,h)).indexOf("("),d=t.indexOf(")");if(f>1&&d>f&&d<=t.length){let o=t.substring(0,f).trim();const s=t.substring(f+1,d);if(e=a+o+"("+(0,r.x)(s.trim())+")",d0&&(x+=e.cssClasses.join(" "));const k=u.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*n.padding).attr("height",v.height+n.padding+.5*n.dividerMargin).attr("class",x).node().getBBox().width;return l.node().childNodes.forEach((function(t){t.setAttribute("x",(k-t.getBBox().width)/2)})),e.tooltip&&l.insert("title").text(e.tooltip),p.attr("x2",k),m.attr("x2",k),s.width=k,s.height=v.height+n.padding+.5*n.dividerMargin,s},drawEdge:function(t,e,n,o,s){const c=function(t){switch(t){case s.db.relationType.AGGREGATION:return"aggregation";case s.db.relationType.EXTENSION:return"extension";case s.db.relationType.COMPOSITION:return"composition";case s.db.relationType.DEPENDENCY:return"dependency";case s.db.relationType.LOLLIPOP:return"lollipop"}};e.points=e.points.filter((t=>!Number.isNaN(t.y)));const u=e.points,l=(0,i.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(i.$0Z),h=t.append("path").attr("d",l(u)).attr("id","edge"+a).attr("class","relation");let f,d,g="";o.arrowMarkerAbsolute&&(g=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,g=g.replace(/\(/g,"\\("),g=g.replace(/\)/g,"\\)")),1==n.relation.lineType&&h.attr("class","relation dashed-line"),10==n.relation.lineType&&h.attr("class","relation dotted-line"),"none"!==n.relation.type1&&h.attr("marker-start","url("+g+"#"+c(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&h.attr("marker-end","url("+g+"#"+c(n.relation.type2)+"End)");const p=e.points.length;let b,w,m,y,v=r.u.calcLabelPosition(e.points);if(f=v.x,d=v.y,p%2!=0&&p>1){let t=r.u.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),i=r.u.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[p-1]);r.l.debug("cardinality_1_point "+JSON.stringify(t)),r.l.debug("cardinality_2_point "+JSON.stringify(i)),b=t.x,w=t.y,m=i.x,y=i.y}if(void 0!==n.title){const e=t.append("g").attr("class","classLabel"),i=e.append("text").attr("class","label").attr("x",f).attr("y",d).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=i;const r=i.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",r.x-o.padding/2).attr("y",r.y-o.padding/2).attr("width",r.width+o.padding).attr("height",r.height+o.padding)}if(r.l.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1){t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",b).attr("y",w).attr("fill","black").attr("font-size","6").text(n.relationTitle1)}if(void 0!==n.relationTitle2&&"none"!==n.relationTitle2){t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",m).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2)}a++},drawNote:function(t,e,n,i){r.l.debug("Rendering note ",e,n);const a=e.id,o={id:a,text:e.text,width:0,height:0},s=t.append("g").attr("id",a).attr("class","classGroup");let c=s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);const u=JSON.parse(`"${e.text}"`).split("\n");u.forEach((function(t){r.l.debug(`Adding line: ${t}`),c.append("tspan").text(t).attr("class","title").attr("dy",n.textHeight)}));const l=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",l.width+2*n.padding).attr("height",l.height+u.length*n.textHeight+n.padding+.5*n.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach((function(t){t.setAttribute("x",(h-t.getBBox().width)/2)})),o.width=h,o.height=l.height+u.length*n.textHeight+n.padding+.5*n.dividerMargin,o},parseMember:s}},2699:function(t,e,n){"use strict";n.d(e,{a:function(){return a},b:function(){return c},c:function(){return s},d:function(){return r},e:function(){return l},f:function(){return o},g:function(){return u}});var i=n(2510);const r=function(t,e){const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),"undefined"!==e.attrs&&null!==e.attrs)for(let t in e.attrs)n.attr(t,e.attrs[t]);return"undefined"!==e.class&&n.attr("class",e.class),n},a=function(t,e){r(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"}).lower()},o=function(t,e){const n=e.text.replace(//gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),i},s=function(t,e,n,r){const a=t.append("image");a.attr("x",e),a.attr("y",n);var o=(0,i.Nm)(r);a.attr("xlink:href",o)},c=function(t,e,n,r){const a=t.append("use");a.attr("x",e),a.attr("y",n);const o=(0,i.Nm)(r);a.attr("xlink:href","#"+o)},u=function(){return{x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}},l=function(){return{x:0,y:0,width:100,height:100,fill:void 0,anchor:void 0,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}}},315:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return N}});var i=n(8540),r=n(1504),a=n(7471),o=n(1778),s=n(733),c=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,17,18,20,22,23,26,27,28],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,23],l=[1,24],h=[1,27],f=[4,6,9,11,17,18,20,22,23,26,27,28],d={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,period_statement:24,event_statement:25,period:26,event:27,open_directive:28,type_directive:29,arg_directive:30,close_directive:31,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",26:"period",27:"event",28:"open_directive",29:"type_directive",30:"arg_directive",31:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[24,1],[25,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 11:i.getCommonDb().setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),i.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),i.getCommonDb().setAccDescription(this.$);break;case 15:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 19:i.addTask(a[s],0,""),this.$=a[s];break;case 20:i.addEvent(a[s].substr(2)),this.$=a[s];break;case 21:i.parseDirective("%%{","open_directive");break;case 22:i.parseDirective(a[s],"type_directive");break;case 23:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 24:i.parseDirective("}%%","close_directive","timeline")}},table:[{3:1,4:e,7:3,12:4,28:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,28:n},{13:8,29:[1,9]},{29:[2,21]},{6:[1,10],7:22,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:a,20:o,22:s,23:c,24:20,25:21,26:u,27:l,28:n},{1:[2,2]},{14:25,15:[1,26],31:h},t([15,31],[2,22]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:22,10:28,12:4,17:r,18:a,20:o,22:s,23:c,24:20,25:21,26:u,27:l,28:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),{19:[1,29]},{21:[1,30]},t(i,[2,14]),t(i,[2,15]),t(i,[2,16]),t(i,[2,17]),t(i,[2,18]),t(i,[2,19]),t(i,[2,20]),{11:[1,31]},{16:32,30:[1,33]},{11:[2,24]},t(i,[2,5]),t(i,[2,12]),t(i,[2,13]),t(f,[2,9]),{14:34,31:h},{31:[2,23]},{11:[1,35]},t(f,[2,10])],defaultActions:{5:[2,21],7:[2,2],27:[2,24],33:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},g={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),28;case 1:return this.begin("type_directive"),29;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),31;case 4:return 30;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 27;case 21:return 26;case 22:return 6;case 23:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23],inclusive:!0}}};function p(){this.yy={}}return d.lexer=g,p.prototype=d,d.Parser=p,new p}());c.parser=c;const u=c;let l="",h=0;const f=[],d=[],g=[],p=()=>i.I,b=(t,e,n)=>{(0,i.J)(globalThis,t,e,n)},w=function(){f.length=0,d.length=0,l="",g.length=0,(0,i.v)()},m=function(t){l=t,f.push(t)},y=function(){return f},v=function(){let t=A();let e=0;for(;!t&&e<100;)t=A(),e++;return d.push(...g),d},x=function(t,e,n){const i={id:h++,section:l,type:l,task:t,score:e||0,events:n?[n]:[]};g.push(i)},k=function(t){g.find((t=>t.id===h-1)).events.push(t)},_=function(t){const e={section:l,type:l,description:t,task:t,classes:[]};d.push(e)},A=function(){let t=!0;for(const[e,n]of g.entries())g[e].processed,t=t&&n.processed;return t},E={clear:w,getCommonDb:p,addSection:m,getSections:y,getTasks:v,addTask:x,addTaskOrg:_,addEvent:k,parseDirective:b},T=Object.freeze(Object.defineProperty({__proto__:null,addEvent:k,addSection:m,addTask:x,addTaskOrg:_,clear:w,default:E,getCommonDb:p,getSections:y,getTasks:v,parseDirective:b},Symbol.toStringTag,{value:"Module"}));!function(){function t(t,e,n,r,a,o,s,c){i(e.append("text").attr("x",n+a/2).attr("y",r+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,r,a,o,s,c,u){const{taskFontSize:l,taskFontFamily:h}=c,f=t.split(//gi);for(let t=0;t)/).reverse(),a=[],o=n.attr("y"),s=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",o).attr("dy",s+"em");for(let r=0;re||"
"===t)&&(a.pop(),c.text(a.join(" ").trim()),a="
"===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",o).attr("dy","1.1em").text(t))}))}const S=function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},I=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},M=function(t,e,n,i){const r=n%12-1,a=t.append("g");e.section=r,a.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+r);const o=a.append("g"),s=a.append("g"),c=s.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(C,e.width).node().getBBox(),u=i.fontSize&&i.fontSize.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*u*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,s.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),S(o,e,r),e},D=function(t,e,n){const i=t.append("g"),r=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(C,e.width).node().getBBox(),a=n.fontSize&&n.fontSize.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),r.height+1.1*a*.5+e.padding},O=function(t,e,n,r,a,o,s,c,u,l,h){var f;for(const c of e){const e={descr:c.task,section:n,number:n,width:150,padding:20,maxHeight:o};i.l.debug("taskNode",e);const d=t.append("g").attr("class","taskWrapper"),g=M(d,e,n,s).height;if(i.l.debug("taskHeight after draw",g),d.attr("transform",`translate(${r}, ${a})`),o=Math.max(o,g),c.events){const e=t.append("g").attr("class","lineWrapper");let i=o;a+=100,i+=L(t,c.events,n,r,a,s),a-=100,e.append("line").attr("x1",r+95).attr("y1",a+o).attr("x2",r+95).attr("y2",a+o+(h?o:l)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}r+=200,h&&!(null==(f=s.timeline)?void 0:f.disableMulticolor)&&n++}a-=10},L=function(t,e,n,r,a,o){let s=0;const c=a;a+=100;for(const c of e){const e={descr:c,section:n,number:n,width:150,padding:20,maxHeight:50};i.l.debug("eventNode",e);const u=t.append("g").attr("class","eventWrapper"),l=M(u,e,n,o).height;s+=l,u.attr("transform",`translate(${r}, ${a})`),a=a+10+l}return a=c,s},N={db:T,renderer:{setConf:()=>{},draw:function(t,e,n,a){var o,s,c,u;const l=(0,i.c)(),h=l.leftMargin??50;null==(s=(o=a.db).clear)||s.call(o),a.parser.parse(t+"\n"),i.l.debug("timeline",a.db);const f=l.securityLevel;let d;"sandbox"===f&&(d=(0,r.Ys)("#i"+e));const g=("sandbox"===f?(0,r.Ys)(d.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);g.append("g");const p=a.db.getTasks(),b=a.db.getCommonDb().getDiagramTitle();i.l.debug("task",p),I(g);const w=a.db.getSections();i.l.debug("sections",w);let m=0,y=0,v=0,x=0,k=50+h,_=50;x=50;let A=0,E=!0;w.forEach((function(t){const e=D(g,{number:A,descr:t,section:A,width:150,padding:20,maxHeight:m},l);i.l.debug("sectionHeight before draw",e),m=Math.max(m,e+20)}));let T=0,C=0;i.l.debug("tasks.length",p.length);for(const[t,e]of p.entries()){const n={number:t,descr:e,section:e.section,width:150,padding:20,maxHeight:y},r=D(g,n,l);i.l.debug("taskHeight before draw",r),y=Math.max(y,r+20),T=Math.max(T,e.events.length);let a=0;for(let t=0;t0?w.forEach((t=>{const e=p.filter((e=>e.section===t)),n={number:A,descr:t,section:A,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:m};i.l.debug("sectionNode",n);const r=g.append("g"),a=M(r,n,A,l);i.l.debug("sectionNode output",a),r.attr("transform",`translate(${k}, 50)`),_+=m+50,e.length>0&&O(g,e,A,k,_,y,l,T,C,m,!1),k+=200*Math.max(e.length,1),_=50,A++})):(E=!1,O(g,p,A,k,_,y,l,T,C,m,!0));const S=g.node().getBBox();i.l.debug("bounds",S),b&&g.append("text").text(b).attr("x",S.width/2-h).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),v=E?m+y+150:y+100;g.append("g").attr("class","lineWrapper").append("line").attr("x1",h).attr("y1",v).attr("x2",S.width+3*h).attr("y2",v).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.p)(void 0,g,(null==(c=l.timeline)?void 0:c.padding)??50,(null==(u=l.timeline)?void 0:u.useMaxWidth)??!1)}},parser:u,styles:t=>`\n .edge {\n stroke-width: 3;\n }\n ${(t=>{let e="";for(let e=0;e0&&void 0!==n[0]?n[0]:[{}],t.abrupt("return",(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((function(t,n){var i=document.createElement("input");i.type="file",i.webkitdirectory=!0;var r=function(e){"function"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(r,(function(){return a(n)}),i);i.addEventListener("change",(function(){var t=Array.from(i.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter((function(t){return t.webkitRelativePath.split("/").every((function(t){return!e[0].skipDirectory({name:t,kind:"directory"})}))}))):t=t.filter((function(t){return 2===t.webkitRelativePath.split("/").length})),r(t)})),i.click()}))));case 2:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},4036:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return c}});var i=n(1930),r=n(8950),a=n(2975);function o(t){function e(t){if(Object(t)!==t)return Promise.reject(new TypeError(t+" is not an object."));var e=t.done;return Promise.resolve(t.value).then((function(t){return{value:t,done:e}}))}return(o=function(t){this.s=t,this.n=t.next}).prototype={s:null,n:null,next:function(){return e(this.n.apply(this.s,arguments))},return:function(t){var n=this.s.return;return void 0===n?Promise.resolve({value:t,done:!0}):e(n.apply(this.s,arguments))},throw:function(t){var n=this.s.return;return void 0===n?Promise.reject(t):e(n.apply(this.s,arguments))}},new o(t)}var s=function(){var t=(0,r.Z)(a.mark((function t(e,n){var r,c,u,l,h,f,d,g,p,b,w=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=w.length>2&&void 0!==w[2]?w[2]:e.name,c=w.length>3?w[3]:void 0,u=[],l=[],f=!1,d=!1,t.prev=4,g=function(){var t=p.value,i="".concat(r,"/").concat(t.name);"file"===t.kind?l.push(t.getFile().then((function(n){return n.directoryHandle=e,n.handle=t,Object.defineProperty(n,"webkitRelativePath",{configurable:!0,enumerable:!0,get:function(){return i}})}))):"directory"!==t.kind||!n||c&&c(t)||u.push(s(t,n,i,c))},b=function(t){var e,n,i,r=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,i=Symbol.iterator);r--;){if(n&&null!=(e=t[n]))return e.call(t);if(i&&null!=(e=t[i]))return new o(e.call(t));n="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}(e.values());case 7:return t.next=9,b.next();case 9:if(!(f=!(p=t.sent).done)){t.next=14;break}g();case 11:f=!1,t.next=7;break;case 14:t.next=19;break;case 16:t.prev=16,t.t0=t.catch(4),d=!0,h=t.t0;case 19:if(t.prev=19,t.prev=20,t.t1=f&&null!=b.return,!t.t1){t.next=25;break}return t.next=25,b.return();case 25:if(t.prev=25,!d){t.next=28;break}throw h;case 28:return t.finish(25);case 29:return t.finish(19);case 30:return t.t2=[],t.t3=i.Z,t.next=34,Promise.all(u);case 34:return t.t4=t.sent.flat(),t.t5=(0,t.t3)(t.t4),t.t6=i.Z,t.next=39,Promise.all(l);case 39:return t.t7=t.sent,t.t8=(0,t.t6)(t.t7),t.abrupt("return",t.t2.concat.call(t.t2,t.t5,t.t8));case 42:case"end":return t.stop()}}),t,null,[[4,16,19,30],[20,,25,29]])})));return function(e,n){return t.apply(this,arguments)}}(),c=function(){var t=(0,r.Z)(a.mark((function t(){var e,n,i=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(e=i.length>0&&void 0!==i[0]?i[0]:{}).recursive=e.recursive||!1,t.next=4,window.showDirectoryPicker({id:e.id,startIn:e.startIn});case 4:return n=t.sent,t.abrupt("return",s(n,e.recursive,void 0,e.skipDirectory));case 6:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},7464:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return o}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.getFile();case 2:return n=t.sent,t.abrupt("return",(n.handle=e,n));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),o=function(){var t=(0,i.Z)(r.mark((function t(){var e,n,i,o,s=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=s.length>0&&void 0!==s[0]?s[0]:[{}],Array.isArray(e)||(e=[e]),n=[],e.forEach((function(t,e){n[e]={description:t.description||"",accept:{}},t.mimeTypes?t.mimeTypes.map((function(i){n[e].accept[i]=t.extensions||[]})):n[e].accept["*/*"]=t.extensions||[]})),t.next=6,window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:n,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1});case 6:return i=t.sent,t.next=9,Promise.all(i.map(a));case 9:return o=t.sent,t.abrupt("return",e[0].multiple?o:o[0]);case 11:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},3948:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return o}});var i=n(1930),r=n(8950),a=n(2975),o=function(){var t=(0,r.Z)(a.mark((function t(){var e,n=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.length>0&&void 0!==n[0]?n[0]:[{}],t.abrupt("return",(Array.isArray(e)||(e=[e]),new Promise((function(t,n){var r=document.createElement("input");r.type="file";var a=[].concat((0,i.Z)(e.map((function(t){return t.mimeTypes||[]}))),(0,i.Z)(e.map((function(t){return t.extensions||[]})))).join();r.multiple=e[0].multiple||!1,r.accept=a||"";var o=function(e){"function"==typeof s&&s(),t(e)},s=e[0].legacySetup&&e[0].legacySetup(o,(function(){return s(n)}),r);r.addEventListener("change",(function(){o(r.multiple?Array.from(r.files):r.files[0])})),r.click()}))));case 2:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},341:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return a}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n,a,o,s,c,u=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=u.length>1&&void 0!==u[1]?u[1]:{},Array.isArray(n)&&(n=n[0]),a=document.createElement("a"),o=e,t.t0="body"in e,!t.t0){t.next=9;break}return t.next=8,function(){var t=(0,i.Z)(r.mark((function t(e,n){var a,o,s,c;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=e.getReader(),o=new ReadableStream({start:function(t){return function(){var e=(0,i.Z)(r.mark((function e(){return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.read().then((function(e){var i=e.done,r=e.value;if(!i)return t.enqueue(r),n();t.close()})));case 1:case"end":return e.stop()}}),e)})));function n(){return e.apply(this,arguments)}return n}()()}}),s=new Response(o),t.next=5,s.blob();case 5:return c=t.sent,t.abrupt("return",(a.releaseLock(),new Blob([c],{type:n})));case 7:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}()(e.body,e.headers.get("content-type"));case 8:o=t.sent;case 9:return a.download=n.fileName||"Untitled",t.t1=URL,t.next=13,o;case 13:return t.t2=t.sent,a.href=t.t1.createObjectURL.call(t.t1,t.t2),s=function(){"function"==typeof c&&c()},c=n.legacySetup&&n.legacySetup(s,(function(){return c(reject)}),a),t.abrupt("return",(a.addEventListener("click",(function(){setTimeout((function(){return URL.revokeObjectURL(a.href)}),3e4),s()})),a.click(),null));case 17:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()},357:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return a}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n,i,a,o,s,c,u,l,h,f=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=f.length>1&&void 0!==f[1]?f[1]:[{}],i=f.length>2&&void 0!==f[2]?f[2]:null,a=f.length>3&&void 0!==f[3]&&f[3],o=f.length>4&&void 0!==f[4]?f[4]:null,Array.isArray(n)||(n=[n]),n[0].fileName=n[0].fileName||"Untitled",s=[],c=null,e instanceof Blob&&e.type?c=e.type:e.headers&&e.headers.get("content-type")&&(c=e.headers.get("content-type")),n.forEach((function(t,e){s[e]={description:t.description||"",accept:{}},t.mimeTypes?(0===e&&c&&t.mimeTypes.push(c),t.mimeTypes.map((function(n){s[e].accept[n]=t.extensions||[]}))):c&&(s[e].accept[c]=t.extensions||[])})),!i){t.next=17;break}return t.prev=8,t.next=11,i.getFile();case 11:t.next=17;break;case 13:if(t.prev=13,t.t0=t.catch(8),i=null,!a){t.next=17;break}throw t.t0;case 17:if(t.t1=i,t.t1){t.next=22;break}return t.next=21,window.showSaveFilePicker({suggestedName:n[0].fileName,id:n[0].id,startIn:n[0].startIn,types:s,excludeAcceptAllOption:n[0].excludeAcceptAllOption||!1});case 21:t.t1=t.sent;case 22:return u=t.t1,!i&&o&&o(),t.next=26,u.createWritable();case 26:if(l=t.sent,!("stream"in e)){t.next=32;break}return h=e.stream(),t.next=31,h.pipeTo(l);case 31:return t.abrupt("return",u);case 32:if(!("body"in e)){t.next=38;break}return t.next=35,e.body.pipeTo(l);case 35:t.t2=u,t.next=47;break;case 38:return t.t3=l,t.next=41,e;case 41:return t.t4=t.sent,t.next=44,t.t3.write.call(t.t3,t.t4);case 44:return t.next=46,l.close();case 46:t.t2=u;case 47:return t.abrupt("return",t.t2);case 48:case"end":return t.stop()}}),t,null,[[8,13]])})));return function(e){return t.apply(this,arguments)}}()}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt new file mode 100644 index 0000000..705cfa1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt @@ -0,0 +1,32 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/*! + +pica +https://github.com/nodeca/pica + +*/ + +/*! + * Wait for document loaded before starting the execution + */ + +/*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + */ + +/*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */ + +/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/*! Check if previously processed */ + +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ diff --git a/public/js/pixi_v8.1.4/pixi.min.js b/public/js/pixi_v8.1.4/pixi.min.js deleted file mode 100644 index b4811e6..0000000 --- a/public/js/pixi_v8.1.4/pixi.min.js +++ /dev/null @@ -1,1996 +0,0 @@ -/*! - * PixiJS - v8.1.4 - * Compiled Fri, 17 May 2024 12:41:01 UTC - * - * PixiJS is licensed under the MIT License. - * http://www.opensource.org/licenses/mit-license -*/var PIXI=function(d){"use strict";"use strict";var Kb=Object.defineProperty,qb=Object.defineProperties,Zb=Object.getOwnPropertyDescriptors,rl=Object.getOwnPropertySymbols,Qb=Object.prototype.hasOwnProperty,Jb=Object.prototype.propertyIsEnumerable,il=(r,t,e)=>t in r?Kb(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,sl=(r,t)=>{for(var e in t||(t={}))Qb.call(t,e)&&il(r,e,t[e]);if(rl)for(var e of rl(t))Jb.call(t,e)&&il(r,e,t[e]);return r},tv=(r,t)=>qb(r,Zb(t)),x=(r=>(r.Application="application",r.WebGLPipes="webgl-pipes",r.WebGLPipesAdaptor="webgl-pipes-adaptor",r.WebGLSystem="webgl-system",r.WebGPUPipes="webgpu-pipes",r.WebGPUPipesAdaptor="webgpu-pipes-adaptor",r.WebGPUSystem="webgpu-system",r.CanvasSystem="canvas-system",r.CanvasPipesAdaptor="canvas-pipes-adaptor",r.CanvasPipes="canvas-pipes",r.Asset="asset",r.LoadParser="load-parser",r.ResolveParser="resolve-parser",r.CacheParser="cache-parser",r.DetectionParser="detection-parser",r.MaskEffect="mask-effect",r.BlendMode="blend-mode",r.TextureSource="texture-source",r.Environment="environment",r))(x||{});const Ds=r=>{if(typeof r=="function"||typeof r=="object"&&r.extension){const t=typeof r.extension!="object"?{type:r.extension}:r.extension;r=tv(sl({},t),{ref:r})}if(typeof r=="object")r=sl({},r);else throw new Error("Invalid extension type");return typeof r.type=="string"&&(r.type=[r.type]),r},Qe=(r,t)=>{var e;return(e=Ds(r).priority)!=null?e:t},U={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...r){return r.map(Ds).forEach(t=>{t.type.forEach(e=>{var i,s;return(s=(i=this._removeHandlers)[e])==null?void 0:s.call(i,t)})}),this},add(...r){return r.map(Ds).forEach(t=>{t.type.forEach(e=>{var i,s;const n=this._addHandlers,o=this._queue;n[e]?(s=n[e])==null||s.call(n,t):(o[e]=o[e]||[],(i=o[e])==null||i.push(t))})}),this},handle(r,t,e){var i;const s=this._addHandlers,n=this._removeHandlers;s[r]=t,n[r]=e;const o=this._queue;return o[r]&&((i=o[r])==null||i.forEach(a=>t(a)),delete o[r]),this},handleByMap(r,t){return this.handle(r,e=>{e.name&&(t[e.name]=e.ref)},e=>{e.name&&delete t[e.name]})},handleByNamedList(r,t,e=-1){return this.handle(r,i=>{t.findIndex(s=>s.name===i.name)>=0||(t.push({name:i.name,value:i.ref}),t.sort((s,n)=>Qe(n.value,e)-Qe(s.value,e)))},i=>{const s=t.findIndex(n=>n.name===i.name);s!==-1&&t.splice(s,1)})},handleByList(r,t,e=-1){return this.handle(r,i=>{t.includes(i.ref)||(t.push(i.ref),t.sort((s,n)=>Qe(n,e)-Qe(s,e)))},i=>{const s=t.indexOf(i.ref);s!==-1&&t.splice(s,1)})}};var BA=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Us(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function IA(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function FA(r){return r&&Object.prototype.hasOwnProperty.call(r,"default")&&Object.keys(r).length===1?r.default:r}function DA(r){if(r.__esModule)return r;var t=r.default;if(typeof t=="function"){var e=function i(){return this instanceof i?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};e.prototype=t.prototype}else e={};return Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r).forEach(function(i){var s=Object.getOwnPropertyDescriptor(r,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:function(){return r[i]}})}),e}var ks={exports:{}},UA=ks.exports;(function(r){"use strict";var t=Object.prototype.hasOwnProperty,e="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(e=!1));function s(u,l,c){this.fn=u,this.context=l,this.once=c||!1}function n(u,l,c,h,p){if(typeof c!="function")throw new TypeError("The listener must be a function");var f=new s(c,h||u,p),m=e?e+l:l;return u._events[m]?u._events[m].fn?u._events[m]=[u._events[m],f]:u._events[m].push(f):(u._events[m]=f,u._eventsCount++),u}function o(u,l){--u._eventsCount===0?u._events=new i:delete u._events[l]}function a(){this._events=new i,this._eventsCount=0}a.prototype.eventNames=function(){var l=[],c,h;if(this._eventsCount===0)return l;for(h in c=this._events)t.call(c,h)&&l.push(e?h.slice(1):h);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(c)):l},a.prototype.listeners=function(l){var c=e?e+l:l,h=this._events[c];if(!h)return[];if(h.fn)return[h.fn];for(var p=0,f=h.length,m=new Array(f);p0:typeof r=="number"},ot=function(r,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*r)/e+0},Pt=function(r,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),r>e?e:r>t?r:t},nl=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},ol=function(r){return{r:Pt(r.r,0,255),g:Pt(r.g,0,255),b:Pt(r.b,0,255),a:Pt(r.a)}},Ls=function(r){return{r:ot(r.r),g:ot(r.g),b:ot(r.b),a:ot(r.a,3)}},iv=/^#([0-9a-f]{3,8})$/i,qr=function(r){var t=r.toString(16);return t.length<2?"0"+t:t},al=function(r){var t=r.r,e=r.g,i=r.b,s=r.a,n=Math.max(t,e,i),o=n-Math.min(t,e,i),a=o?n===t?(e-i)/o:n===e?2+(i-t)/o:4+(t-e)/o:0;return{h:60*(a<0?a+6:a),s:n?o/n*100:0,v:n/255*100,a:s}},ul=function(r){var t=r.h,e=r.s,i=r.v,s=r.a;t=t/360*6,e/=100,i/=100;var n=Math.floor(t),o=i*(1-e),a=i*(1-(t-n)*e),u=i*(1-(1-t+n)*e),l=n%6;return{r:255*[i,a,o,o,u,i][l],g:255*[u,i,i,a,o,o][l],b:255*[o,o,u,i,i,a][l],a:s}},ll=function(r){return{h:nl(r.h),s:Pt(r.s,0,100),l:Pt(r.l,0,100),a:Pt(r.a)}},cl=function(r){return{h:ot(r.h),s:ot(r.s),l:ot(r.l),a:ot(r.a,3)}},hl=function(r){return ul((e=(t=r).s,{h:t.h,s:(e*=((i=t.l)<50?i:100-i)/100)>0?2*e/(i+e)*100:0,v:i+e,a:t.a}));var t,e,i},Je=function(r){return{h:(t=al(r)).h,s:(s=(200-(e=t.s))*(i=t.v)/100)>0&&s<200?e*i/100/(s<=100?s:200-s)*100:0,l:s/2,a:t.a};var t,e,i,s},sv=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nv=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ov=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,av=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$s={string:[[function(r){var t=iv.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?ot(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?ot(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var t=ov.exec(r)||av.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:ol({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(r){var t=sv.exec(r)||nv.exec(r);if(!t)return null;var e,i,s=ll({h:(e=t[1],i=t[2],i===void 0&&(i="deg"),Number(e)*(rv[i]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return hl(s)},"hsl"]],object:[[function(r){var t=r.r,e=r.g,i=r.b,s=r.a,n=s===void 0?1:s;return zt(t)&&zt(e)&&zt(i)?ol({r:Number(t),g:Number(e),b:Number(i),a:Number(n)}):null},"rgb"],[function(r){var t=r.h,e=r.s,i=r.l,s=r.a,n=s===void 0?1:s;if(!zt(t)||!zt(e)||!zt(i))return null;var o=ll({h:Number(t),s:Number(e),l:Number(i),a:Number(n)});return hl(o)},"hsl"],[function(r){var t=r.h,e=r.s,i=r.v,s=r.a,n=s===void 0?1:s;if(!zt(t)||!zt(e)||!zt(i))return null;var o=function(a){return{h:nl(a.h),s:Pt(a.s,0,100),v:Pt(a.v,0,100),a:Pt(a.a)}}({h:Number(t),s:Number(e),v:Number(i),a:Number(n)});return ul(o)},"hsv"]]},dl=function(r,t){for(var e=0;e=.5},r.prototype.toHex=function(){return t=Ls(this.rgba),e=t.r,i=t.g,s=t.b,o=(n=t.a)<1?qr(ot(255*n)):"","#"+qr(e)+qr(i)+qr(s)+o;var t,e,i,s,n,o},r.prototype.toRgb=function(){return Ls(this.rgba)},r.prototype.toRgbString=function(){return t=Ls(this.rgba),e=t.r,i=t.g,s=t.b,(n=t.a)<1?"rgba("+e+", "+i+", "+s+", "+n+")":"rgb("+e+", "+i+", "+s+")";var t,e,i,s,n},r.prototype.toHsl=function(){return cl(Je(this.rgba))},r.prototype.toHslString=function(){return t=cl(Je(this.rgba)),e=t.h,i=t.s,s=t.l,(n=t.a)<1?"hsla("+e+", "+i+"%, "+s+"%, "+n+")":"hsl("+e+", "+i+"%, "+s+"%)";var t,e,i,s,n},r.prototype.toHsv=function(){return t=al(this.rgba),{h:ot(t.h),s:ot(t.s),v:ot(t.v),a:ot(t.a,3)};var t},r.prototype.invert=function(){return kt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},r.prototype.saturate=function(t){return t===void 0&&(t=.1),kt(Ns(this.rgba,t))},r.prototype.desaturate=function(t){return t===void 0&&(t=.1),kt(Ns(this.rgba,-t))},r.prototype.grayscale=function(){return kt(Ns(this.rgba,-1))},r.prototype.lighten=function(t){return t===void 0&&(t=.1),kt(fl(this.rgba,t))},r.prototype.darken=function(t){return t===void 0&&(t=.1),kt(fl(this.rgba,-t))},r.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},r.prototype.alpha=function(t){return typeof t=="number"?kt({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):ot(this.rgba.a,3);var e},r.prototype.hue=function(t){var e=Je(this.rgba);return typeof t=="number"?kt({h:t,s:e.s,l:e.l,a:e.a}):ot(e.h)},r.prototype.isEqual=function(t){return this.toHex()===kt(t).toHex()},r}(),kt=function(r){return r instanceof Zr?r:new Zr(r)},ml=[],uv=function(r){r.forEach(function(t){ml.indexOf(t)<0&&(t(Zr,$s),ml.push(t))})},LA=function(){return new Zr({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};function lv(r,t){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},i={};for(var s in e)i[e[s]]=s;var n={};r.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,u,l=i[this.toHex()];if(l)return l;if(o!=null&&o.closest){var c=this.toRgb(),h=1/0,p="black";if(!n.length)for(var f in e)n[f]=new r(e[f]).toRgb();for(var m in e){var _=(a=c,u=n[m],Math.pow(a.r-u.r,2)+Math.pow(a.g-u.g,2)+Math.pow(a.b-u.b,2));_t in r?cv(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,pv=(r,t)=>{for(var e in t||(t={}))hv.call(t,e)&&_l(r,e,t[e]);if(gl)for(var e of gl(t))dv.call(t,e)&&_l(r,e,t[e]);return r};uv([lv]);const we=class Yr{constructor(t=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=t}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(t){return this.value=t,this}set value(t){if(t instanceof Yr)this._value=this._cloneSource(t._value),this._int=t._int,this._components.set(t._components);else{if(t===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,t))&&(this._normalize(t),this._value=this._cloneSource(t))}}get value(){return this._value}_cloneSource(t){return typeof t=="string"||typeof t=="number"||t instanceof Number||t===null?t:Array.isArray(t)||ArrayBuffer.isView(t)?t.slice(0):typeof t=="object"&&t!==null?pv({},t):t}_isSourceEqual(t,e){const i=typeof t;if(i!==typeof e)return!1;if(i==="number"||i==="string"||t instanceof Number)return t===e;if(Array.isArray(t)&&Array.isArray(e)||ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return t.length!==e.length?!1:t.every((s,n)=>s===e[n]);if(t!==null&&e!==null){const s=Object.keys(t),n=Object.keys(e);return s.length!==n.length?!1:s.every(o=>t[o]===e[o])}return t===e}toRgba(){const[t,e,i,s]=this._components;return{r:t,g:e,b:i,a:s}}toRgb(){const[t,e,i]=this._components;return{r:t,g:e,b:i}}toRgbaString(){const[t,e,i]=this.toUint8RgbArray();return`rgba(${t},${e},${i},${this.alpha})`}toUint8RgbArray(t){const[e,i,s]=this._components;return this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb,t[0]=Math.round(e*255),t[1]=Math.round(i*255),t[2]=Math.round(s*255),t}toArray(t){this._arrayRgba||(this._arrayRgba=[]),t=t||this._arrayRgba;const[e,i,s,n]=this._components;return t[0]=e,t[1]=i,t[2]=s,t[3]=n,t}toRgbArray(t){this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb;const[e,i,s]=this._components;return t[0]=e,t[1]=i,t[2]=s,t}toNumber(){return this._int}toBgrNumber(){const[t,e,i]=this.toUint8RgbArray();return(i<<16)+(e<<8)+t}toLittleEndianNumber(){const t=this._int;return(t>>16)+(t&65280)+((t&255)<<16)}multiply(t){const[e,i,s,n]=Yr._temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=i,this._components[2]*=s,this._components[3]*=n,this._refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this._refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(t===1)return(255<<24)+this._int;if(t===0)return e?0:this._int;let i=this._int>>16&255,s=this._int>>8&255,n=this._int&255;return e&&(i=i*t+.5|0,s=s*t+.5|0,n=n*t+.5|0),(t*255<<24)+(i<<16)+(s<<8)+n}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const t=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-t.length)+t}setAlpha(t){return this._components[3]=this._clamp(t),this}_normalize(t){let e,i,s,n;if((typeof t=="number"||t instanceof Number)&&t>=0&&t<=16777215){const o=t;e=(o>>16&255)/255,i=(o>>8&255)/255,s=(o&255)/255,n=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,i,s,n=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,i,s,n=255]=t,e/=255,i/=255,s/=255,n/=255;else if(typeof t=="string"||typeof t=="object"){if(typeof t=="string"){const a=Yr.HEX_PATTERN.exec(t);a&&(t=`#${a[2]}`)}const o=kt(t);o.isValid()&&({r:e,g:i,b:s,a:n}=o.rgba,e/=255,i/=255,s/=255)}if(e!==void 0)this._components[0]=e,this._components[1]=i,this._components[2]=s,this._components[3]=n,this._refreshInt();else throw new Error(`Unable to convert color ${t}`)}_refreshInt(){this._clamp(this._components);const[t,e,i]=this._components;this._int=(t*255<<16)+(e*255<<8)+(i*255|0)}_clamp(t,e=0,i=1){return typeof t=="number"?Math.min(Math.max(t,e),i):(t.forEach((s,n)=>{t[n]=Math.min(Math.max(s,e),i)}),t)}static isColorLike(t){return typeof t=="number"||typeof t=="string"||t instanceof Number||t instanceof Yr||Array.isArray(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t.r!==void 0&&t.g!==void 0&&t.b!==void 0||t.r!==void 0&&t.g!==void 0&&t.b!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0&&t.a!==void 0}};we.shared=new we,we._temp=new we,we.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let K=we;const bl={cullArea:null,cullable:!1,cullableChildren:!0},vl=Math.PI*2,yl=180/Math.PI,xl=Math.PI/180;class V{constructor(t=0,e=0){this.x=0,this.y=0,this.x=t,this.y=e}clone(){return new V(this.x,this.y)}copyFrom(t){return this.set(t.x,t.y),this}copyTo(t){return t.set(this.x,this.y),t}equals(t){return t.x===this.x&&t.y===this.y}set(t=0,e=t){return this.x=t,this.y=e,this}static get shared(){return Xs.x=0,Xs.y=0,Xs}}const Xs=new V;class G{constructor(t=1,e=0,i=0,s=1,n=0,o=0){this.array=null,this.a=t,this.b=e,this.c=i,this.d=s,this.tx=n,this.ty=o}fromArray(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]}set(t,e,i,s,n,o){return this.a=t,this.b=e,this.c=i,this.d=s,this.tx=n,this.ty=o,this}toArray(t,e){this.array||(this.array=new Float32Array(9));const i=e||this.array;return t?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(t,e){e=e||new V;const i=t.x,s=t.y;return e.x=this.a*i+this.c*s+this.tx,e.y=this.b*i+this.d*s+this.ty,e}applyInverse(t,e){e=e||new V;const i=this.a,s=this.b,n=this.c,o=this.d,a=this.tx,u=this.ty,l=1/(i*o+n*-s),c=t.x,h=t.y;return e.x=o*l*c+-n*l*h+(u*n-a*o)*l,e.y=i*l*h+-s*l*c+(-u*i+a*s)*l,e}translate(t,e){return this.tx+=t,this.ty+=e,this}scale(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this}rotate(t){const e=Math.cos(t),i=Math.sin(t),s=this.a,n=this.c,o=this.tx;return this.a=s*e-this.b*i,this.b=s*i+this.b*e,this.c=n*e-this.d*i,this.d=n*i+this.d*e,this.tx=o*e-this.ty*i,this.ty=o*i+this.ty*e,this}append(t){const e=this.a,i=this.b,s=this.c,n=this.d;return this.a=t.a*e+t.b*s,this.b=t.a*i+t.b*n,this.c=t.c*e+t.d*s,this.d=t.c*i+t.d*n,this.tx=t.tx*e+t.ty*s+this.tx,this.ty=t.tx*i+t.ty*n+this.ty,this}appendFrom(t,e){const i=t.a,s=t.b,n=t.c,o=t.d,a=t.tx,u=t.ty,l=e.a,c=e.b,h=e.c,p=e.d;return this.a=i*l+s*h,this.b=i*c+s*p,this.c=n*l+o*h,this.d=n*c+o*p,this.tx=a*l+u*h+e.tx,this.ty=a*c+u*p+e.ty,this}setTransform(t,e,i,s,n,o,a,u,l){return this.a=Math.cos(a+l)*n,this.b=Math.sin(a+l)*n,this.c=-Math.sin(a-u)*o,this.d=Math.cos(a-u)*o,this.tx=t-(i*this.a+s*this.c),this.ty=e-(i*this.b+s*this.d),this}prepend(t){const e=this.tx;if(t.a!==1||t.b!==0||t.c!==0||t.d!==1){const i=this.a,s=this.c;this.a=i*t.a+this.b*t.c,this.b=i*t.b+this.b*t.d,this.c=s*t.a+this.d*t.c,this.d=s*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this}decompose(t){const e=this.a,i=this.b,s=this.c,n=this.d,o=t.pivot,a=-Math.atan2(-s,n),u=Math.atan2(i,e),l=Math.abs(a+u);return l<1e-5||Math.abs(vl-l)<1e-5?(t.rotation=u,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=a,t.skew.y=u),t.scale.x=Math.sqrt(e*e+i*i),t.scale.y=Math.sqrt(s*s+n*n),t.position.x=this.tx+(o.x*e+o.y*s),t.position.y=this.ty+(o.x*i+o.y*n),t}invert(){const t=this.a,e=this.b,i=this.c,s=this.d,n=this.tx,o=t*s-e*i;return this.a=s/o,this.b=-e/o,this.c=-i/o,this.d=t/o,this.tx=(i*this.ty-s*n)/o,this.ty=-(t*this.ty-e*n)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const t=new G;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyTo(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyFrom(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this}equals(t){return t.a===this.a&&t.b===this.b&&t.c===this.c&&t.d===this.d&&t.tx===this.tx&&t.ty===this.ty}static get IDENTITY(){return mv.identity()}static get shared(){return fv.identity()}}const fv=new G,mv=new G;class it{constructor(t,e,i){this._x=e||0,this._y=i||0,this._observer=t}clone(t){return new it(t!=null?t:this._observer,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._observer._onUpdate(this)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this._observer._onUpdate(this)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this._observer._onUpdate(this))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this._observer._onUpdate(this))}}const tr={default:-1};function J(r="default"){return tr[r]===void 0&&(tr[r]=-1),++tr[r]}function gv(){for(const r in tr)delete tr[r]}function zs(r,t,e){const i=r.length;let s;if(t>=i||e===0)return;e=t+e>i?i-t:e;const n=i-e;for(s=t;s0&&i<=e){for(let o=e-1;o>=r;o--){const a=this.children[o];a&&(s.push(a),a.parent=null)}zs(this.children,r,e);const n=this.renderGroup||this.parentRenderGroup;n&&n.removeChildren(s);for(let o=0;o=this.children.length)throw new Error(`getChildAt: Index (${r}) does not exist.`);return this.children[r]},setChildIndex(r,t){if(t<0||t>=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);this.getChildIndex(r),this.addChildAt(r,t)},getChildIndex(r){const t=this.children.indexOf(r);if(t===-1)throw new Error("The supplied Container must be a child of the caller");return t},addChildAt(r,t){const{children:e}=this;if(t<0||t>e.length)throw new Error(`${r}addChildAt: The index ${t} supplied is out of bounds ${e.length}`);if(r.parent){const s=r.parent.children.indexOf(r);if(r.parent===this&&s===t)return r;s!==-1&&r.parent.children.splice(s,1)}t===e.length?e.push(r):e.splice(t,0,r),r.parent=this,r.didChange=!0,r.didViewUpdate=!1,r._updateFlags=15;const i=this.renderGroup||this.parentRenderGroup;return i&&i.addChild(r),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",r,this,t),r.emit("added",this),r},swapChildren(r,t){if(r===t)return;const e=this.getChildIndex(r),i=this.getChildIndex(t);this.children[e]=t,this.children[i]=r},removeFromParent(){var r;(r=this.parent)==null||r.removeChild(this)}};class er{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let t=0;t0?i=this._pool[--this._index]:i=new this._classType,(e=i.init)==null||e.call(i,t),i}return(t){var e;(e=t.reset)==null||e.call(t),this._pool[this._index++]=t}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}}class Sl{constructor(){this._poolsByClass=new Map}prepopulate(t,e){this.getPool(t).prepopulate(e)}get(t,e){return this.getPool(t).get(e)}return(t){this.getPool(t.constructor).return(t)}getPool(t){return this._poolsByClass.has(t)||this._poolsByClass.set(t,new Qr(t)),this._poolsByClass.get(t)}stats(){const t={};return this._poolsByClass.forEach(e=>{const i=t[e._classType.name]?e._classType.name+e._classType.ID:e._classType.name;t[i]={free:e.totalFree,used:e.totalUsed,size:e.totalSize}}),t}}const W=new Sl;class El{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(t=>{this.add({test:t.test,maskClass:t})}))}add(t){this._tests.push(t)}getMaskEffect(t){this._initialized||this.init();for(let e=0;ee.priority-i.priority);const t=this.renderGroup||this.parentRenderGroup;t&&(t.structureDidChange=!0),this._updateIsSimple()},removeEffect(r){const t=this.effects.indexOf(r);t!==-1&&(this.effects.splice(t,1),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateIsSimple())},set mask(r){const t=this._maskEffect;(t==null?void 0:t.mask)!==r&&(t&&(this.removeEffect(t),Jr.returnMaskEffect(t),this._maskEffect=null),r!=null&&(this._maskEffect=Jr.getMaskEffect(r),this.addEffect(this._maskEffect)))},get mask(){var r;return(r=this._maskEffect)==null?void 0:r.mask},set filters(r){var t;!Array.isArray(r)&&r&&(r=[r]);const e=this._filterEffect||(this._filterEffect=new er);r=r;const i=(r==null?void 0:r.length)>0,s=((t=e.filters)==null?void 0:t.length)>0,n=i!==s;r=Array.isArray(r)?r.slice(0):r,e.filters=Object.freeze(r),n&&(i?this.addEffect(e):(this.removeEffect(e),e.filters=r!=null?r:null))},get filters(){var r;return(r=this._filterEffect)==null?void 0:r.filters},set filterArea(r){this._filterEffect||(this._filterEffect=new er),this._filterEffect.filterArea=r},get filterArea(){var r;return(r=this._filterEffect)==null?void 0:r.filterArea}},Pl={label:null,get name(){return this.label},set name(r){this.label=r},getChildByName(r,t=!1){return this.getChildByLabel(r,t)},getChildByLabel(r,t=!1){const e=this.children;for(let i=0;i=this.x&&t=this.y&&e=u&&t<=l&&e>=c&&e<=h&&!(t>p&&tm&&e<_)}intersects(t,e){if(!e){const M=this.xt.right?t.right:this.right)<=M)return!1;const S=this.yt.bottom?t.bottom:this.bottom)>S}const i=this.left,s=this.right,n=this.top,o=this.bottom;if(s<=i||o<=n)return!1;const a=ti[0].set(t.left,t.top),u=ti[1].set(t.left,t.bottom),l=ti[2].set(t.right,t.top),c=ti[3].set(t.right,t.bottom);if(l.x<=a.x||u.y<=a.y)return!1;const h=Math.sign(e.a*e.d-e.b*e.c);if(h===0||(e.apply(a,a),e.apply(u,u),e.apply(l,l),e.apply(c,c),Math.max(a.x,u.x,l.x,c.x)<=i||Math.min(a.x,u.x,l.x,c.x)>=s||Math.max(a.y,u.y,l.y,c.y)<=n||Math.min(a.y,u.y,l.y,c.y)>=o))return!1;const p=h*(u.y-a.y),f=h*(a.x-u.x),m=p*i+f*n,_=p*s+f*n,g=p*i+f*o,b=p*s+f*o;if(Math.max(m,_,g,b)<=p*a.x+f*a.y||Math.min(m,_,g,b)>=p*c.x+f*c.y)return!1;const v=h*(a.y-l.y),y=h*(l.x-a.x),T=v*i+y*n,E=v*s+y*n,R=v*i+y*o,w=v*s+y*o;return!(Math.max(T,E,R,w)<=v*a.x+y*a.y||Math.min(T,E,R,w)>=v*c.x+y*c.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),i=Math.min(this.x+this.width,t.x+t.width),s=Math.max(this.y,t.y),n=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(i-e,0),this.y=s,this.height=Math.max(n-s,0),this}ceil(t=1,e=.001){const i=Math.ceil((this.x+this.width-e)*t)/t,s=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=i-this.x,this.height=s-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),i=Math.max(this.x+this.width,t.x+t.width),s=Math.min(this.y,t.y),n=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=i-e,this.y=s,this.height=n-s,this}getBounds(t){return t=t||new j,t.copyFrom(this),t}}const wl=new G;class lt{constructor(t=1/0,e=1/0,i=-1/0,s=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=wl,this.minX=t,this.minY=e,this.maxX=i,this.maxY=s}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new j);const t=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(t.x=0,t.y=0,t.width=0,t.height=0):t.copyFromBounds(this),t}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=wl,this}set(t,e,i,s){this.minX=t,this.minY=e,this.maxX=i,this.maxY=s}addFrame(t,e,i,s,n){n||(n=this.matrix);const o=n.a,a=n.b,u=n.c,l=n.d,c=n.tx,h=n.ty;let p=this.minX,f=this.minY,m=this.maxX,_=this.maxY,g=o*t+u*e+c,b=a*t+l*e+h;gm&&(m=g),b>_&&(_=b),g=o*i+u*e+c,b=a*i+l*e+h,gm&&(m=g),b>_&&(_=b),g=o*t+u*s+c,b=a*t+l*s+h,gm&&(m=g),b>_&&(_=b),g=o*i+u*s+c,b=a*i+l*s+h,gm&&(m=g),b>_&&(_=b),this.minX=p,this.minY=f,this.maxX=m,this.maxY=_}addRect(t,e){this.addFrame(t.x,t.y,t.x+t.width,t.y+t.height,e)}addBounds(t,e){this.addFrame(t.minX,t.minY,t.maxX,t.maxY,e)}addBoundsMask(t){this.minX=this.minX>t.minX?this.minX:t.minX,this.minY=this.minY>t.minY?this.minY:t.minY,this.maxX=this.maxXthis.maxX?p:this.maxX,this.maxY=f>this.maxY?f:this.maxY,p=o*e+u*n+c,f=a*e+l*n+h,this.minX=pthis.maxX?p:this.maxX,this.maxY=f>this.maxY?f:this.maxY,p=o*s+u*n+c,f=a*s+l*n+h,this.minX=pthis.maxX?p:this.maxX,this.maxY=f>this.maxY?f:this.maxY}fit(t){return this.minXt.right&&(this.maxX=t.right),this.minYt.bottom&&(this.maxY=t.bottom),this}fitBounds(t,e,i,s){return this.minXe&&(this.maxX=e),this.minYs&&(this.maxY=s),this}pad(t,e=t){return this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new lt(this.minX,this.minY,this.maxX,this.maxY)}scale(t,e=t){return this.minX*=t,this.minY*=e,this.maxX*=t,this.maxY*=e,this}get x(){return this.minX}set x(t){const e=this.maxX-this.minX;this.minX=t,this.maxX=t+e}get y(){return this.minY}set y(t){const e=this.maxY-this.minY;this.minY=t,this.maxY=t+e}get width(){return this.maxX-this.minX}set width(t){this.maxX=this.minX+t}get height(){return this.maxY-this.minY}set height(t){this.maxY=this.minY+t}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(t,e,i,s){let n=this.minX,o=this.minY,a=this.maxX,u=this.maxY;s||(s=this.matrix);const l=s.a,c=s.b,h=s.c,p=s.d,f=s.tx,m=s.ty;for(let _=e;_a?v:a,u=y>u?y:u}this.minX=n,this.minY=o,this.maxX=a,this.maxY=u}containsPoint(t,e){return this.minX<=t&&this.minY<=e&&this.maxX>=t&&this.maxY>=e}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}}const Lt=new Qr(G),$t=new Qr(lt);function rr(r,t,e){e.clear();let i,s;return r.parent?t?i=r.parent.worldTransform:(s=Lt.get().identity(),i=ir(r,s)):i=G.IDENTITY,js(r,e,i,t),s&&Lt.return(s),e.isValid||e.set(0,0,0,0),e}function js(r,t,e,i){var s,n;if(!r.visible||!r.measurable)return;let o;i?o=r.worldTransform:(r.updateLocalTransform(),o=Lt.get(),o.appendFrom(r.localTransform,e));const a=t,u=!!r.effects.length;if(u&&(t=$t.get().clear()),r.boundsArea)t.addRect(r.boundsArea,o);else{r.addBounds&&(t.matrix=o,r.addBounds(t));for(let l=0;l>12&&(r.didChange=!0,r.data[0]=this._didChangeId>>12),Vs(this,r),r.didChange&&ei(this,r.localBounds,_v),r.localBounds},getBounds(r,t){return rr(this,r,t||new lt)}},Ol={_onRender:null,set onRender(r){const t=this.renderGroup||this.parentRenderGroup;if(!r){this._onRender&&(t==null||t.removeOnRender(this)),this._onRender=null;return}this._onRender||t==null||t.addOnRender(this),this._onRender=r},get onRender(){return this._onRender}},Gl={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(r){this._zIndex!==r&&(this._zIndex=r,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(bv))}};function bv(r,t){return r._zIndex-t._zIndex}const Bl={getGlobalPosition(r=new V,t=!1){return this.parent?this.parent.toGlobal(this._position,r,t):(r.x=this._position.x,r.y=this._position.y),r},toGlobal(r,t,e=!1){if(!e){this.updateLocalTransform();const i=ir(this,new G);return i.append(this.localTransform),i.apply(r,t)}return this.worldTransform.apply(r,t)},toLocal(r,t,e,i){if(t&&(r=t.toGlobal(r,e,i)),!i){this.updateLocalTransform();const s=ir(this,new G);return s.append(this.localTransform),s.applyInverse(r,e)}return this.worldTransform.applyInverse(r,e)}};class Ws{constructor(){this.uid=J("instructionSet"),this.instructions=[],this.instructionSize=0}reset(){this.instructionSize=0}add(t){this.instructions[this.instructionSize++]=t}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}class Il{constructor(t){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new G,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new Ws,this._onRenderContainers=[],this.root=t,t._onRender&&this.addOnRender(t),t.didChange=!0;const e=t.children;for(let i=0;i-1&&this.renderGroupChildren.splice(e,1),t.renderGroupParent=null}addChild(t){if(this.structureDidChange=!0,t.parentRenderGroup=this,t.updateTick=-1,t.parent===this.root?t.relativeRenderGroupDepth=1:t.relativeRenderGroupDepth=t.parent.relativeRenderGroupDepth+1,t.didChange=!0,this.onChildUpdate(t),t.renderGroup){this.addRenderGroupChild(t.renderGroup);return}t._onRender&&this.addOnRender(t);const e=t.children;for(let i=0;i0}addOnRender(t){this._onRenderContainers.push(t)}removeOnRender(t){this._onRenderContainers.splice(this._onRenderContainers.indexOf(t),1)}runOnRender(){for(let t=0;tthis.addChild(s)),this.effects=[],(i=t.parent)==null||i.addChild(this)}static mixin(t){Object.defineProperties(Y.prototype,Object.getOwnPropertyDescriptors(t))}addChild(...t){if(t.length>1){for(let s=0;s1){for(let s=0;s-1&&(this._didChangeId+=4096,this.children.splice(i,1),this.renderGroup?this.renderGroup.removeChild(e):this.parentRenderGroup&&this.parentRenderGroup.removeChild(e),e.parent=null,this.emit("childRemoved",e,this,i),e.emit("removed",this)),e}_onUpdate(t){t&&t===this._skew&&this._updateSkew(),this._didChangeId++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(t){if(this.renderGroup&&t===!1)throw new Error("[Pixi] cannot undo a render group just yet");t&&this.enableRenderGroup()}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const t=this.parentRenderGroup;t&&t.removeChild(this),this.renderGroup=new Il(this),t&&t.addChild(this),this._updateIsSimple(),this.groupTransform=G.IDENTITY}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new G),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(t){this._position.x=t}get y(){return this._position.y}set y(t){this._position.y=t}get position(){return this._position}set position(t){this._position.copyFrom(t)}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this._skew))}get angle(){return this.rotation*yl}set angle(t){this.rotation=t*xl}get pivot(){return this._pivot===Ks&&(this._pivot=new it(this,0,0)),this._pivot}set pivot(t){this._pivot===Ks&&(this._pivot=new it(this,0,0)),typeof t=="number"?this._pivot.set(t):this._pivot.copyFrom(t)}get skew(){return this._skew===Ys&&(this._skew=new it(this,0,0)),this._skew}set skew(t){this._skew===Ys&&(this._skew=new it(this,0,0)),this._skew.copyFrom(t)}get scale(){return this._scale===qs&&(this._scale=new it(this,1,1)),this._scale}set scale(t){this._scale===qs&&(this._scale=new it(this,0,0)),typeof t=="number"?this._scale.set(t):this._scale.copyFrom(t)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(t){const e=this.getLocalBounds().width;this._setWidth(t,e)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(t){const e=this.getLocalBounds().height;this._setHeight(t,e)}getSize(t){t||(t={});const e=this.getLocalBounds();return t.width=Math.abs(this.scale.x*e.width),t.height=Math.abs(this.scale.y*e.height),t}setSize(t,e){var i;const s=this.getLocalBounds();let n,o;typeof t!="object"?(n=t,o=e!=null?e:t):(n=t.width,o=(i=t.height)!=null?i:t.width),n!==void 0&&this._setWidth(n,s.width),o!==void 0&&this._setHeight(o,s.height)}_updateSkew(){const t=this._rotation,e=this._skew;this._cx=Math.cos(t+e._y),this._sx=Math.sin(t+e._y),this._cy=-Math.sin(t-e._x),this._sy=Math.cos(t-e._x)}updateTransform(t){return this.position.set(typeof t.x=="number"?t.x:this.position.x,typeof t.y=="number"?t.y:this.position.y),this.scale.set(typeof t.scaleX=="number"?t.scaleX||1:this.scale.x,typeof t.scaleY=="number"?t.scaleY||1:this.scale.y),this.rotation=typeof t.rotation=="number"?t.rotation:this.rotation,this.skew.set(typeof t.skewX=="number"?t.skewX:this.skew.x,typeof t.skewY=="number"?t.skewY:this.skew.y),this.pivot.set(typeof t.pivotX=="number"?t.pivotX:this.pivot.x,typeof t.pivotY=="number"?t.pivotY:this.pivot.y),this}setFromMatrix(t){t.decompose(this)}updateLocalTransform(){if((this._didLocalTransformChangeId&15)===this._didChangeId)return;this._didLocalTransformChangeId=this._didChangeId;const t=this.localTransform,e=this._scale,i=this._pivot,s=this._position,n=e._x,o=e._y,a=i._x,u=i._y;t.a=this._cx*n,t.b=this._sx*n,t.c=this._cy*o,t.d=this._sy*o,t.tx=s._x-(a*t.a+u*t.c),t.ty=s._y-(a*t.b+u*t.d)}set alpha(t){t!==this.localAlpha&&(this.localAlpha=t,this._updateFlags|=ri,this._onUpdate())}get alpha(){return this.localAlpha}set tint(t){const e=K.shared.setValue(t!=null?t:16777215).toBgrNumber();e!==this.localColor&&(this.localColor=e,this._updateFlags|=ri,this._onUpdate())}get tint(){const t=this.localColor;return((t&255)<<16)+(t&65280)+(t>>16&255)}set blendMode(t){this.localBlendMode!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Zs,this.localBlendMode=t,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(t){const e=t?1:0;(this.localDisplayStatus&2)>>1!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=sr,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(t){const e=t?1:0;(this.localDisplayStatus&4)>>2!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=sr,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(t){const e=t?1:0;(this.localDisplayStatus&1)!==e&&(this._updateFlags|=sr,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(t=!1){if(this.destroyed)return;this.destroyed=!0;const e=this.removeChildren(0,this.children.length);if(this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.children)for(let i=0;i1&&typeof MSStream=="undefined"};function yv(r){return function(t){return t.test(r)}}function Wl(r){var t={userAgent:"",platform:"",maxTouchPoints:0};!r&&typeof navigator!="undefined"?t={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof r=="string"?t.userAgent=r:r&&r.userAgent&&(t={userAgent:r.userAgent,platform:r.platform,maxTouchPoints:r.maxTouchPoints||0});var e=t.userAgent,i=e.split("[FBAN");typeof i[1]!="undefined"&&(e=i[0]),i=e.split("Twitter"),typeof i[1]!="undefined"&&(e=i[0]);var s=yv(e),n={apple:{phone:s(Qs)&&!s(jt),ipod:s(Dl),tablet:!s(Qs)&&(s(Ul)||Vl(t))&&!s(jt),universal:s(kl),device:(s(Qs)||s(Dl)||s(Ul)||s(kl)||Vl(t))&&!s(jt)},amazon:{phone:s(Me),tablet:!s(Me)&&s(ii),device:s(Me)||s(ii)},android:{phone:!s(jt)&&s(Me)||!s(jt)&&s(Js),tablet:!s(jt)&&!s(Me)&&!s(Js)&&(s(ii)||s(Ll)),device:!s(jt)&&(s(Me)||s(ii)||s(Js)||s(Ll))||s(/\bokhttp\b/i)},windows:{phone:s(jt),tablet:s($l),device:s(jt)||s($l)},other:{blackberry:s(Nl),blackberry10:s(Hl),opera:s(Xl),firefox:s(jl),chrome:s(zl),device:s(Nl)||s(Hl)||s(Xl)||s(jl)||s(zl)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}var Yl;const Kl=((Yl=Wl.default)!=null?Yl:Wl)(globalThis.navigator),xv=9,si=100,Tv=0,Sv=0,ql=2,Zl=1,Ev=-1e3,Av=-1e3,Pv=2;class tn{constructor(t,e=Kl){this._mobileInfo=e,this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this._pool=[],this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._hookDiv=null,(e.tablet||e.phone)&&this._createTouchHook();const i=document.createElement("div");i.style.width=`${si}px`,i.style.height=`${si}px`,i.style.position="absolute",i.style.top=`${Tv}px`,i.style.left=`${Sv}px`,i.style.zIndex=ql.toString(),this._div=i,this._renderer=t,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}_createTouchHook(){const t=document.createElement("button");t.style.width=`${Zl}px`,t.style.height=`${Zl}px`,t.style.position="absolute",t.style.top=`${Ev}px`,t.style.left=`${Av}px`,t.style.zIndex=Pv.toString(),t.style.backgroundColor="#FF0000",t.title="select to enable accessibility for this content",t.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(t),this._hookDiv=t}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){var t;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.add(this),(t=this._renderer.view.canvas.parentNode)==null||t.appendChild(this._div))}_deactivate(){var t;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this._renderer.runners.postrender.remove(this),(t=this._div.parentNode)==null||t.removeChild(this._div))}_updateAccessibleObjects(t){if(!t.visible||!t.accessibleChildren)return;t.accessible&&t.isInteractive()&&(t._accessibleActive||this._addChild(t),t._renderId=this._renderId);const e=t.children;if(e)for(let i=0;i title : ${t.title}
tabIndex: ${t.tabIndex}`}_capHitArea(t){t.x<0&&(t.width+=t.x,t.x=0),t.y<0&&(t.height+=t.y,t.y=0);const{width:e,height:i}=this._renderer;t.x+t.width>e&&(t.width=e-t.x),t.y+t.height>i&&(t.height=i-t.y)}_addChild(t){let e=this._pool.pop();e||(e=document.createElement("button"),e.style.width=`${si}px`,e.style.height=`${si}px`,e.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",e.style.position="absolute",e.style.zIndex=ql.toString(),e.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?e.setAttribute("aria-live","off"):e.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?e.setAttribute("aria-relevant","additions"):e.setAttribute("aria-relevant","text"),e.addEventListener("click",this._onClick.bind(this)),e.addEventListener("focus",this._onFocus.bind(this)),e.addEventListener("focusout",this._onFocusOut.bind(this))),e.style.pointerEvents=t.accessiblePointerEvents,e.type=t.accessibleType,t.accessibleTitle&&t.accessibleTitle!==null?e.title=t.accessibleTitle:(!t.accessibleHint||t.accessibleHint===null)&&(e.title=`container ${t.tabIndex}`),t.accessibleHint&&t.accessibleHint!==null&&e.setAttribute("aria-label",t.accessibleHint),this.debug&&this._updateDebugHTML(e),t._accessibleActive=!0,t._accessibleDiv=e,e.container=t,this._children.push(t),this._div.appendChild(t._accessibleDiv),t._accessibleDiv.tabIndex=t.tabIndex}_dispatchEvent(t,e){const{container:i}=t.target,s=this._renderer.events.rootBoundary,n=Object.assign(new Re(s),{target:i});s.rootTarget=this._renderer.lastObjectRendered,e.forEach(o=>s.dispatchEvent(n,o))}_onClick(t){this._dispatchEvent(t,["click","pointertap","tap"])}_onFocus(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","assertive"),this._dispatchEvent(t,["mouseover"])}_onFocusOut(t){t.target.getAttribute("aria-live")||t.target.setAttribute("aria-live","polite"),this._dispatchEvent(t,["mouseout"])}_onKeyDown(t){t.keyCode===xv&&this._activate()}_onMouseMove(t){t.movementX===0&&t.movementY===0||this._deactivate()}destroy(){this._destroyTouchHook(),this._div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this._pool=null,this._children=null,this._renderer=null}}tn.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"accessibility"};const Ql={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,_renderId:-1};U.add(tn),Y.mixin(Ql);class en{static init(t){Object.defineProperty(this,"resizeTo",{set(e){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=e,e&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let e,i;if(this._resizeTo===globalThis.window)e=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:s,clientHeight:n}=this._resizeTo;e=s,i=n}this.renderer.resize(e,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=t.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}en.extension=x.Application;var Vt=(r=>(r[r.INTERACTION=50]="INTERACTION",r[r.HIGH=25]="HIGH",r[r.NORMAL=0]="NORMAL",r[r.LOW=-25]="LOW",r[r.UTILITY=-50]="UTILITY",r))(Vt||{});class ni{constructor(t,e=null,i=0,s=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=t,this._context=e,this.priority=i,this._once=s}match(t,e=null){return this._fn===t&&this._context===e}emit(t){this._fn&&(this._context?this._fn.call(this._context,t):this._fn(t));const e=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const e=this.next;return this.next=t?null:e,this.previous=null,e}}const Jl=class At{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new ni(null,null,1/0),this.deltaMS=1/At.targetFPMS,this.elapsedMS=1/At.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(t,e,i=Vt.NORMAL){return this._addListener(new ni(t,e,i))}addOnce(t,e,i=Vt.NORMAL){return this._addListener(new ni(t,e,i,!0))}_addListener(t){let e=this._head.next,i=this._head;if(!e)t.connect(i);else{for(;e;){if(t.priority>e.priority){t.connect(i);break}i=e,e=e.next}t.previous||t.connect(i)}return this._startIfPossible(),this}remove(t,e){let i=this._head.next;for(;i;)i.match(t,e)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const n=t-this._lastFrame|0;if(n{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=t.sharedTicker?ht.shared:new ht,t.autoStart&&this.start()}static destroy(){if(this._ticker){const t=this._ticker;this.ticker=null,t.destroy()}}}rn.extension=x.Application,U.add(en),U.add(rn);let wv=class{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}init(t){this.removeTickerListener(),this.events=t,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this._tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(t){this._pauseUpdate=t}addTickerListener(){this._tickerAdded||!this.domElement||(ht.system.add(this._tickerUpdate,this,Vt.INTERACTION),this._tickerAdded=!0)}removeTickerListener(){this._tickerAdded&&(ht.system.remove(this._tickerUpdate,this),this._tickerAdded=!1)}pointerMoved(){this._didMove=!0}_update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const t=this.events._rootPointerEvent;this.events.supportsTouchEvents&&t.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:t.clientX,clientY:t.clientY}))}_tickerUpdate(t){this._deltaTime+=t.deltaTime,!(this._deltaTimei.priority-s.priority)}dispatchEvent(t,e){t.propagationStopped=!1,t.propagationImmediatelyStopped=!1,this.propagate(t,e),this.dispatch.emit(e||t.type,t)}mapEvent(t){if(!this.rootTarget)return;const e=this.mappingTable[t.type];if(e)for(let i=0,s=e.length;i=0;s--)if(t.currentTarget=i[s],this.notifyTarget(t,e),t.propagationStopped||t.propagationImmediatelyStopped)return}}all(t,e,i=this._allInteractiveElements){if(i.length===0)return;t.eventPhase=t.BUBBLING_PHASE;const s=Array.isArray(e)?e:[e];for(let n=i.length-1;n>=0;n--)s.forEach(o=>{t.currentTarget=i[n],this.notifyTarget(t,o)})}propagationPath(t){const e=[t];for(let i=0;i=0;h--){const p=c[h],f=this.hitTestMoveRecursive(p,this._isInteractive(e)?e:p.eventMode,i,s,n,o||n(t,i));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const m=t.isInteractive();(f.length>0||m)&&(m&&this._allInteractiveElements.push(t),f.push(t)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}const u=this._isInteractive(e),l=t.isInteractive();return l&&l&&this._allInteractiveElements.push(t),o||this._hitElements.length>0?null:a?this._hitElements:u&&!n(t,i)&&s(t,i)?l?[t]:[]:null}hitTestRecursive(t,e,i,s,n){if(this._interactivePrune(t)||n(t,i))return null;if((t.eventMode==="dynamic"||e==="dynamic")&&(Wt.pauseUpdate=!1),t.interactiveChildren&&t.children){const u=t.children,l=i;for(let c=u.length-1;c>=0;c--){const h=u[c],p=this.hitTestRecursive(h,this._isInteractive(e)?e:h.eventMode,l,s,n);if(p){if(p.length>0&&!p[p.length-1].parent)continue;const f=t.isInteractive();return(p.length>0||f)&&p.push(t),p}}}const o=this._isInteractive(e),a=t.isInteractive();return o&&s(t,i)?a?[t]:[]:null}_isInteractive(t){return t==="static"||t==="dynamic"}_interactivePrune(t){return!t||!t.visible||!t.renderable||t.eventMode==="none"||t.eventMode==="passive"&&!t.interactiveChildren}hitPruneFn(t,e){if(t.hitArea&&(t.worldTransform.applyInverse(e,or),!t.hitArea.contains(or.x,or.y)))return!0;if(t.effects&&t.effects.length)for(let i=0;i0&&u!==n.target){const h=t.type==="mousemove"?"mouseout":"pointerout",p=this.createPointerEvent(t,h,u);if(this.dispatchEvent(p,"pointerout"),o&&this.dispatchEvent(p,"mouseout"),!n.composedPath().includes(u)){const f=this.createPointerEvent(t,"pointerleave",u);for(f.eventPhase=f.AT_TARGET;f.target&&!n.composedPath().includes(f.target);)f.currentTarget=f.target,this.notifyTarget(f),o&&this.notifyTarget(f,"mouseleave"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(p)}if(u!==n.target){const h=t.type==="mousemove"?"mouseover":"pointerover",p=this.clonePointerEvent(n,h);this.dispatchEvent(p,"pointerover"),o&&this.dispatchEvent(p,"mouseover");let f=u==null?void 0:u.parent;for(;f&&f!==this.rootTarget.parent&&f!==n.target;)f=f.parent;if(!f||f===this.rootTarget.parent){const m=this.clonePointerEvent(n,"pointerenter");for(m.eventPhase=m.AT_TARGET;m.target&&m.target!==u&&m.target!==this.rootTarget.parent;)m.currentTarget=m.target,this.notifyTarget(m),o&&this.notifyTarget(m,"mouseenter"),m.target=m.target.parent;this.freeEvent(m)}this.freeEvent(p)}const l=[],c=(i=this.enableGlobalMoveEvents)!=null?i:!0;this.moveOnAll?l.push("pointermove"):this.dispatchEvent(n,"pointermove"),c&&l.push("globalpointermove"),n.pointerType==="touch"&&(this.moveOnAll?l.splice(1,0,"touchmove"):this.dispatchEvent(n,"touchmove"),c&&l.push("globaltouchmove")),o&&(this.moveOnAll?l.splice(1,0,"mousemove"):this.dispatchEvent(n,"mousemove"),c&&l.push("globalmousemove"),this.cursor=(s=n.target)==null?void 0:s.cursor),l.length>0&&this.all(n,l),this._allInteractiveElements.length=0,this._hitElements.length=0,a.overTargets=n.composedPath(),this.freeEvent(n)}mapPointerOver(t){var e;if(!(t instanceof wt))return;const i=this.trackingData(t.pointerId),s=this.createPointerEvent(t),n=s.pointerType==="mouse"||s.pointerType==="pen";this.dispatchEvent(s,"pointerover"),n&&this.dispatchEvent(s,"mouseover"),s.pointerType==="mouse"&&(this.cursor=(e=s.target)==null?void 0:e.cursor);const o=this.clonePointerEvent(s,"pointerenter");for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),n&&this.notifyTarget(o,"mouseenter"),o.target=o.target.parent;i.overTargets=s.composedPath(),this.freeEvent(s),this.freeEvent(o)}mapPointerOut(t){if(!(t instanceof wt))return;const e=this.trackingData(t.pointerId);if(e.overTargets){const i=t.pointerType==="mouse"||t.pointerType==="pen",s=this.findMountedTarget(e.overTargets),n=this.createPointerEvent(t,"pointerout",s);this.dispatchEvent(n),i&&this.dispatchEvent(n,"mouseout");const o=this.createPointerEvent(t,"pointerleave",s);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;e.overTargets=null,this.freeEvent(n),this.freeEvent(o)}this.cursor=null}mapPointerUp(t){if(!(t instanceof wt))return;const e=performance.now(),i=this.createPointerEvent(t);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const a=i.button===2;this.dispatchEvent(i,a?"rightup":"mouseup")}const s=this.trackingData(t.pointerId),n=this.findMountedTarget(s.pressTargetsByButton[t.button]);let o=n;if(n&&!i.composedPath().includes(n)){let a=n;for(;a&&!i.composedPath().includes(a);){if(i.currentTarget=a,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const u=i.button===2;this.notifyTarget(i,u?"rightupoutside":"mouseupoutside")}a=a.parent}delete s.pressTargetsByButton[t.button],o=a}if(o){const a=this.clonePointerEvent(i,"click");a.target=o,a.path=null,s.clicksByButton[t.button]||(s.clicksByButton[t.button]={clickCount:0,target:a.target,timeStamp:e});const u=s.clicksByButton[t.button];if(u.target===a.target&&e-u.timeStamp<200?++u.clickCount:u.clickCount=1,u.target=a.target,u.timeStamp=e,a.detail=u.clickCount,a.pointerType==="mouse"){const l=a.button===2;this.dispatchEvent(a,l?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(i)}mapPointerUpOutside(t){if(!(t instanceof wt))return;const e=this.trackingData(t.pointerId),i=this.findMountedTarget(e.pressTargetsByButton[t.button]),s=this.createPointerEvent(t);if(i){let n=i;for(;n;)s.currentTarget=n,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch"?this.notifyTarget(s,"touchendoutside"):(s.pointerType==="mouse"||s.pointerType==="pen")&&this.notifyTarget(s,s.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete e.pressTargetsByButton[t.button]}this.freeEvent(s)}mapWheel(t){if(!(t instanceof oe))return;const e=this.createWheelEvent(t);this.dispatchEvent(e),this.freeEvent(e)}findMountedTarget(t){if(!t)return null;let e=t[0];for(let i=1;it in r?Cv(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Bv=(r,t)=>{for(var e in t||(t={}))Ov.call(t,e)&&rc(r,e,t[e]);if(ec)for(var e of ec(t))Gv.call(t,e)&&rc(r,e,t[e]);return r};const Iv=1,Fv={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},sn=class Ku{constructor(t){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=t,this.rootBoundary=new tc(null),Wt.init(this),this.autoPreventDefault=!0,this._eventsAdded=!1,this._rootPointerEvent=new wt(null),this._rootWheelEvent=new oe(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy(Bv({},Ku.defaultEventFeatures),{set:(e,i,s)=>(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=s),e[i]=s,!0)}),this._onPointerDown=this._onPointerDown.bind(this),this._onPointerMove=this._onPointerMove.bind(this),this._onPointerUp=this._onPointerUp.bind(this),this._onPointerOverOut=this._onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(t){var e,i;const{canvas:s,resolution:n}=this.renderer;this.setTargetElement(s),this.resolution=n,Ku._defaultEventMode=(e=t.eventMode)!=null?e:"passive",Object.assign(this.features,(i=t.eventFeatures)!=null?i:{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(t){this.resolution=t}destroy(){this.setTargetElement(null),this.renderer=null,this._currentCursor=null}setCursor(t){t=t||"default";let e=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(e=!1),this._currentCursor===t)return;this._currentCursor=t;const i=this.cursorStyles[t];if(i)switch(typeof i){case"string":e&&(this.domElement.style.cursor=i);break;case"function":i(t);break;case"object":e&&Object.assign(this.domElement.style,i);break}else e&&typeof t=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,t)&&(this.domElement.style.cursor=t)}get pointer(){return this._rootPointerEvent}_onPointerDown(t){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const e=this._normalizeToPointerData(t);this.autoPreventDefault&&e[0].isNormalized&&(t.cancelable||!("cancelable"in t))&&t.preventDefault();for(let i=0,s=e.length;i0&&(e=t.composedPath()[0]);const i=e!==this.domElement?"outside":"",s=this._normalizeToPointerData(t);for(let n=0,o=s.length;n{u.off(r,a,o)}),n?u.once(r,a,o):u.on(r,a,o)},removeEventListener(r,t,e){const i=typeof e=="boolean"&&e||typeof e=="object"&&e.capture,s=typeof t=="function"?void 0:t;r=i?`${r}capture`:r,t=typeof t=="function"?t:t.handleEvent,this.off(r,t,s)},dispatchEvent(r){if(!(r instanceof Re))throw new Error("Container cannot propagate events outside of the Federated Events API");return r.defaultPrevented=!1,r.path=null,r.target=this,r.manager.dispatchEvent(r),!r.defaultPrevented}};U.add(nn),Y.mixin(ic);var _t=(r=>(r[r.Low=0]="Low",r[r.Normal=1]="Normal",r[r.High=2]="High",r))(_t||{});const sc={createCanvas:(r,t)=>{const e=document.createElement("canvas");return e.width=r,e.height=t,e},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>{var r;return(r=document.baseURI)!=null?r:window.location.href},getFontFaceSet:()=>document.fonts,fetch:(r,t)=>fetch(r,t),parseXML:r=>new DOMParser().parseFromString(r,"text/xml")};let nc=sc;const z={get(){return nc},set(r){nc=r}};function Ot(r){if(typeof r!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(r)}`)}function ar(r){return r.split("?")[0].split("#")[0]}function Dv(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Uv(r,t,e){return r.replace(new RegExp(Dv(t),"g"),e)}function kv(r,t){let e="",i=0,s=-1,n=0,o=-1;for(let a=0;a<=r.length;++a){if(a2){const u=e.lastIndexOf("/");if(u!==e.length-1){u===-1?(e="",i=0):(e=e.slice(0,u),i=e.length-1-e.lastIndexOf("/")),s=a,n=0;continue}}else if(e.length===2||e.length===1){e="",i=0,s=a,n=0;continue}}t&&(e.length>0?e+="/..":e="..",i=2)}else e.length>0?e+=`/${r.slice(s+1,a)}`:e=r.slice(s+1,a),i=a-s-1;s=a,n=0}else o===46&&n!==-1?++n:n=-1}return e}const ft={toPosix(r){return Uv(r,"\\","/")},isUrl(r){return/^https?:/.test(this.toPosix(r))},isDataUrl(r){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(r)},isBlobUrl(r){return r.startsWith("blob:")},hasProtocol(r){return/^[^/:]+:/.test(this.toPosix(r))},getProtocol(r){Ot(r),r=this.toPosix(r);const t=/^file:\/\/\//.exec(r);if(t)return t[0];const e=/^[^/:]+:\/{0,2}/.exec(r);return e?e[0]:""},toAbsolute(r,t,e){if(Ot(r),this.isDataUrl(r)||this.isBlobUrl(r))return r;const i=ar(this.toPosix(t!=null?t:z.get().getBaseUrl())),s=ar(this.toPosix(e!=null?e:this.rootname(i)));return r=this.toPosix(r),r.startsWith("/")?ft.join(s,r.slice(1)):this.isAbsolute(r)?r:this.join(i,r)},normalize(r){if(Ot(r),r.length===0)return".";if(this.isDataUrl(r)||this.isBlobUrl(r))return r;r=this.toPosix(r);let t="";const e=r.startsWith("/");this.hasProtocol(r)&&(t=this.rootname(r),r=r.slice(t.length));const i=r.endsWith("/");return r=kv(r,!1),r.length>0&&i&&(r+="/"),e?`/${r}`:t+r},isAbsolute(r){return Ot(r),r=this.toPosix(r),this.hasProtocol(r)?!0:r.startsWith("/")},join(...r){var t;if(r.length===0)return".";let e;for(let i=0;i0)if(e===void 0)e=s;else{const n=(t=r[i-1])!=null?t:"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${s}`:e+=`/${s}`}}return e===void 0?".":this.normalize(e)},dirname(r){if(Ot(r),r.length===0)return".";r=this.toPosix(r);let t=r.charCodeAt(0);const e=t===47;let i=-1,s=!0;const n=this.getProtocol(r),o=r;r=r.slice(n.length);for(let a=r.length-1;a>=1;--a)if(t=r.charCodeAt(a),t===47){if(!s){i=a;break}}else s=!1;return i===-1?e?"/":this.isUrl(o)?n+r:n:e&&i===1?"//":n+r.slice(0,i)},rootname(r){Ot(r),r=this.toPosix(r);let t="";if(r.startsWith("/")?t="/":t=this.getProtocol(r),this.isUrl(r)){const e=r.indexOf("/",t.length);e!==-1?t=r.slice(0,e):t=r,t.endsWith("/")||(t+="/")}return t},basename(r,t){Ot(r),t&&Ot(t),r=ar(this.toPosix(r));let e=0,i=-1,s=!0,n;if(t!==void 0&&t.length>0&&t.length<=r.length){if(t.length===r.length&&t===r)return"";let o=t.length-1,a=-1;for(n=r.length-1;n>=0;--n){const u=r.charCodeAt(n);if(u===47){if(!s){e=n+1;break}}else a===-1&&(s=!1,a=n+1),o>=0&&(u===t.charCodeAt(o)?--o===-1&&(i=n):(o=-1,i=a))}return e===i?i=a:i===-1&&(i=r.length),r.slice(e,i)}for(n=r.length-1;n>=0;--n)if(r.charCodeAt(n)===47){if(!s){e=n+1;break}}else i===-1&&(s=!1,i=n+1);return i===-1?"":r.slice(e,i)},extname(r){Ot(r),r=ar(this.toPosix(r));let t=-1,e=0,i=-1,s=!0,n=0;for(let o=r.length-1;o>=0;--o){const a=r.charCodeAt(o);if(a===47){if(!s){e=o+1;break}continue}i===-1&&(s=!1,i=o+1),a===46?t===-1?t=o:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||i===-1||n===0||n===1&&t===i-1&&t===e+1?"":r.slice(t,i)},parse(r){Ot(r);const t={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return t;r=ar(this.toPosix(r));let e=r.charCodeAt(0);const i=this.isAbsolute(r);let s;const n="";t.root=this.rootname(r),i||this.hasProtocol(r)?s=1:s=0;let o=-1,a=0,u=-1,l=!0,c=r.length-1,h=0;for(;c>=s;--c){if(e=r.charCodeAt(c),e===47){if(!l){a=c+1;break}continue}u===-1&&(l=!1,u=c+1),e===46?o===-1?o=c:h!==1&&(h=1):o!==-1&&(h=-1)}return o===-1||u===-1||h===0||h===1&&o===u-1&&o===a+1?u!==-1&&(a===0&&i?t.base=t.name=r.slice(1,u):t.base=t.name=r.slice(a,u)):(a===0&&i?(t.name=r.slice(1,o),t.base=r.slice(1,u)):(t.name=r.slice(a,o),t.base=r.slice(a,u)),t.ext=r.slice(o,u)),t.dir=this.dirname(r),n&&(t.dir=n+t.dir),t},sep:"/",delimiter:":",joinExtensions:[".html"]},Rt=(r,t,e=!1)=>(Array.isArray(r)||(r=[r]),t?r.map(i=>typeof i=="string"||e?t(i):i):r);function oc(r,t,e,i,s){const n=t[e];for(let o=0;o{const o=n.substring(1,n.length-1).split(",");s.push(o)}),oc(r,s,0,e,i)}else i.push(r);return i}const ur=r=>!Array.isArray(r);var Lv=Object.defineProperty,$v=Object.defineProperties,Nv=Object.getOwnPropertyDescriptors,uc=Object.getOwnPropertySymbols,Hv=Object.prototype.hasOwnProperty,Xv=Object.prototype.propertyIsEnumerable,lc=(r,t,e)=>t in r?Lv(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Ce=(r,t)=>{for(var e in t||(t={}))Hv.call(t,e)&&lc(r,e,t[e]);if(uc)for(var e of uc(t))Xv.call(t,e)&&lc(r,e,t[e]);return r},zv=(r,t)=>$v(r,Nv(t));class qt{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){var e,i,s;if(this._bundleIdConnector=(e=t.connector)!=null?e:this._bundleIdConnector,this._createBundleAssetId=(i=t.createBundleAssetId)!=null?i:this._createBundleAssetId,this._extractAssetIdFromBundle=(s=t.extractAssetIdFromBundle)!=null?s:this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(t){if(typeof t=="string")this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(e[i])}`).join("&")}}getAlias(t){const{alias:e,src:i}=t;return Rt(e||i,s=>typeof s=="string"?s:Array.isArray(s)?s.map(n=>{var o;return(o=n==null?void 0:n.src)!=null?o:n}):s!=null&&s.src?s.src:s,!0)}addManifest(t){this._manifest,this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const i=[];let s=e;Array.isArray(e)||(s=Object.entries(e).map(([n,o])=>typeof o=="string"||Array.isArray(o)?{alias:n,src:o}:Ce({alias:n},o))),s.forEach(n=>{const o=n.src,a=n.alias;let u;if(typeof a=="string"){const l=this._createBundleAssetId(t,a);i.push(l),u=[a,l]}else{const l=a.map(c=>this._createBundleAssetId(t,c));i.push(...l),u=[...a,...l]}this.add(zv(Ce({},n),{alias:u,src:o}))}),this._bundles[t]=i}add(t){const e=[];Array.isArray(t)?e.push(...t):e.push(t);let i;Rt(e).forEach(s=>{const{src:n}=s;let{data:o,format:a,loadParser:u}=s;const l=Rt(n).map(p=>typeof p=="string"?ac(p):Array.isArray(p)?p:[p]),c=this.getAlias(s),h=[];l.forEach(p=>{p.forEach(f=>{var m,_,g;let b={};if(typeof f!="object"){b.src=f;for(let v=0;v{this._assetMap[p]=h})})}resolveBundle(t){const e=ur(t);t=Rt(t);const i={};return t.forEach(s=>{const n=this._bundles[s];if(n){const o=this.resolve(n),a={};for(const u in o){const l=o[u];a[this._extractAssetIdFromBundle(s,u)]=l}i[s]=a}}),e?i[t[0]]:i}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const i={};for(const s in e)i[s]=e[s].src;return i}return e.src}resolve(t){const e=ur(t);t=Rt(t);const i={};return t.forEach(s=>{if(!this._resolverHash[s])if(this._assetMap[s]){let n=this._assetMap[s];const o=this._getPreferredOrder(n);o==null||o.priority.forEach(a=>{o.params[a].forEach(u=>{const l=n.filter(c=>c[a]?c[a]===u:!1);l.length&&(n=l)})}),this._resolverHash[s]=n[0]}else this._resolverHash[s]=this._buildResolvedAsset({alias:[s],src:s},{});i[s]=this._resolverHash[s]}),e?i[t[0]]:i}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;en.params.format.includes(i.format));if(s)return s}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;const e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){var i,s;const{aliases:n,data:o,loadParser:a,format:u}=e;return(this._basePath||this._rootPath)&&(t.src=ft.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=(i=n!=null?n:t.alias)!=null?i:[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data=Ce(Ce({},o||{}),t.data),t.loadParser=a!=null?a:t.loadParser,t.format=(s=u!=null?u:t.format)!=null?s:cc(t.src),t}}qt.RETINA_PREFIX=/@([0-9\.]+)x/;function cc(r){return r.split(".").pop().split("?").shift().split("#").shift()}const oi=(r,t)=>{const e=t.split("?")[1];return e&&(r+=`?${e}`),r},ae=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],ue=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],le=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ce=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],on=[],hc=[],ai=Math.sign;function jv(){for(let r=0;r<16;r++){const t=[];on.push(t);for(let e=0;e<16;e++){const i=ai(ae[r]*ae[e]+le[r]*ue[e]),s=ai(ue[r]*ae[e]+ce[r]*ue[e]),n=ai(ae[r]*le[e]+le[r]*ce[e]),o=ai(ue[r]*le[e]+ce[r]*ce[e]);for(let a=0;a<16;a++)if(ae[a]===i&&ue[a]===s&&le[a]===n&&ce[a]===o){t.push(a);break}}}for(let r=0;r<16;r++){const t=new G;t.set(ae[r],ue[r],le[r],ce[r],0,0),hc.push(t)}}jv();const k={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:r=>ae[r],uY:r=>ue[r],vX:r=>le[r],vY:r=>ce[r],inv:r=>r&8?r&15:-r&7,add:(r,t)=>on[r][t],sub:(r,t)=>on[r][k.inv(t)],rotate180:r=>r^4,isVertical:r=>(r&3)===2,byDirection:(r,t)=>Math.abs(r)*2<=Math.abs(t)?t>=0?k.S:k.N:Math.abs(t)*2<=Math.abs(r)?r>0?k.E:k.W:t>0?r>0?k.SE:k.SW:r>0?k.NE:k.NW,matrixAppendRotationInv:(r,t,e=0,i=0)=>{const s=hc[k.inv(t)];s.tx=e,s.ty=i,r.append(s)}},an=()=>{};function he(r){return r+=r===0?1:0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r+1}function un(r){return!(r&r-1)&&!!r}function Vv(r){let t=(r>65535?1:0)<<4;r>>>=t;let e=(r>255?1:0)<<3;return r>>>=e,t|=e,e=(r>15?1:0)<<2,r>>>=e,t|=e,e=(r>3?1:0)<<1,r>>>=e,t|=e,t|r>>1}function Zt(r){const t={};for(const e in r)r[e]!==void 0&&(t[e]=r[e]);return t}var Wv=Object.defineProperty,dc=Object.getOwnPropertySymbols,Yv=Object.prototype.hasOwnProperty,Kv=Object.prototype.propertyIsEnumerable,pc=(r,t,e)=>t in r?Wv(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,fc=(r,t)=>{for(var e in t||(t={}))Yv.call(t,e)&&pc(r,e,t[e]);if(dc)for(var e of dc(t))Kv.call(t,e)&&pc(r,e,t[e]);return r};const mc=Object.create(null);function qv(r){const t=mc[r];return t===void 0&&(mc[r]=J("resource")),t}const gc=class Ab extends pt{constructor(t={}){var e,i,s,n,o,a,u;super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,t=fc(fc({},Ab.defaultOptions),t),this.addressMode=t.addressMode,this.addressModeU=(e=t.addressModeU)!=null?e:this.addressModeU,this.addressModeV=(i=t.addressModeV)!=null?i:this.addressModeV,this.addressModeW=(s=t.addressModeW)!=null?s:this.addressModeW,this.scaleMode=t.scaleMode,this.magFilter=(n=t.magFilter)!=null?n:this.magFilter,this.minFilter=(o=t.minFilter)!=null?o:this.minFilter,this.mipmapFilter=(a=t.mipmapFilter)!=null?a:this.mipmapFilter,this.lodMinClamp=t.lodMinClamp,this.lodMaxClamp=t.lodMaxClamp,this.compare=t.compare,this.maxAnisotropy=(u=t.maxAnisotropy)!=null?u:1}set addressMode(t){this.addressModeU=t,this.addressModeV=t,this.addressModeW=t}get addressMode(){return this.addressModeU}set wrapMode(t){this.addressMode=t}get wrapMode(){return this.addressMode}set scaleMode(t){this.magFilter=t,this.minFilter=t,this.mipmapFilter=t}get scaleMode(){return this.magFilter}set maxAnisotropy(t){this._maxAnisotropy=Math.min(t,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){const t=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=qv(t),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};gc.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let _c=gc;var Zv=Object.defineProperty,bc=Object.getOwnPropertySymbols,Qv=Object.prototype.hasOwnProperty,Jv=Object.prototype.propertyIsEnumerable,vc=(r,t,e)=>t in r?Zv(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,yc=(r,t)=>{for(var e in t||(t={}))Qv.call(t,e)&&vc(r,e,t[e]);if(bc)for(var e of bc(t))Jv.call(t,e)&&vc(r,e,t[e]);return r};const xc=class Pb extends pt{constructor(t={}){var e,i,s;super(),this.options=t,this.uid=J("textureSource"),this._resourceType="textureSource",this._resourceId=J("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,t=yc(yc({},Pb.defaultOptions),t),this.label=(e=t.label)!=null?e:"",this.resource=t.resource,this.autoGarbageCollect=t.autoGarbageCollect,this._resolution=t.resolution,t.width?this.pixelWidth=t.width*this._resolution:this.pixelWidth=this.resource&&(i=this.resourceWidth)!=null?i:1,t.height?this.pixelHeight=t.height*this._resolution:this.pixelHeight=this.resource&&(s=this.resourceHeight)!=null?s:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=t.format,this.dimension=t.dimensions,this.mipLevelCount=t.mipLevelCount,this.autoGenerateMipmaps=t.autoGenerateMipmaps,this.sampleCount=t.sampleCount,this.antialias=t.antialias,this.alphaMode=t.alphaMode,this.style=new _c(Zt(t)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(t){var e,i;this.style!==t&&((e=this._style)==null||e.off("change",this._onStyleChange,this),this._style=t,(i=this._style)==null||i.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(t){this._style.addressMode=t}get repeatMode(){return this._style.addressMode}set repeatMode(t){this._style.addressMode=t}get magFilter(){return this._style.magFilter}set magFilter(t){this._style.magFilter=t}get minFilter(){return this._style.minFilter}set minFilter(t){this._style.minFilter=t}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(t){this._style.mipmapFilter=t}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(t){this._style.lodMinClamp=t}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(t){this._style.lodMaxClamp=t}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const t=this._resolution;if(this.resize(this.resourceWidth/t,this.resourceHeight/t))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=J("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){const{resource:t}=this;return t.naturalWidth||t.videoWidth||t.displayWidth||t.width}get resourceHeight(){const{resource:t}=this;return t.naturalHeight||t.videoHeight||t.displayHeight||t.height}get resolution(){return this._resolution}set resolution(t){this._resolution!==t&&(this._resolution=t,this.width=this.pixelWidth/t,this.height=this.pixelHeight/t)}resize(t,e,i){i=i||this._resolution,t=t||this.width,e=e||this.height;const s=Math.round(t*i),n=Math.round(e*i);return this.width=s/i,this.height=n/i,this._resolution=i,this.pixelWidth===s&&this.pixelHeight===n?!1:(this._refreshPOT(),this.pixelWidth=s,this.pixelHeight=n,this.emit("resize",this),this._resourceId=J("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(t){this._style.wrapMode=t}get wrapMode(){return this._style.wrapMode}set scaleMode(t){this._style.scaleMode=t}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=un(this.pixelWidth)&&un(this.pixelHeight)}static test(t){throw new Error("Unimplemented")}};xc.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let rt=xc;var ty=Object.defineProperty,ey=Object.defineProperties,ry=Object.getOwnPropertyDescriptors,Tc=Object.getOwnPropertySymbols,iy=Object.prototype.hasOwnProperty,sy=Object.prototype.propertyIsEnumerable,Sc=(r,t,e)=>t in r?ty(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ny=(r,t)=>{for(var e in t||(t={}))iy.call(t,e)&&Sc(r,e,t[e]);if(Tc)for(var e of Tc(t))sy.call(t,e)&&Sc(r,e,t[e]);return r},oy=(r,t)=>ey(r,ry(t));class ui extends rt{constructor(t){const e=t.resource||new Float32Array(t.width*t.height*4);let i=t.format;i||(e instanceof Float32Array?i="rgba32float":e instanceof Int32Array||e instanceof Uint32Array?i="rgba32uint":e instanceof Int16Array||e instanceof Uint16Array?i="rgba16uint":(e instanceof Int8Array,i="bgra8unorm")),super(oy(ny({},t),{resource:e,format:i})),this.uploadMethodId="buffer"}static test(t){return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array}}ui.extension=x.TextureSource;const Ec=new G;class ln{constructor(t,e){this.mapCoord=new G,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof e=="undefined"?this.clampMargin=t.width<10?0:.5:this.clampMargin=e,this.isSimple=!1,this.texture=t}get texture(){return this._texture}set texture(t){var e;this.texture!==t&&((e=this._texture)==null||e.removeListener("update",this.update,this),this._texture=t,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(t,e){e===void 0&&(e=t);const i=this.mapCoord;for(let s=0;s{this._callback=t,this._batchIndex=0,this._frameKeys.length<=Kr.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t;const i=Kr.BATCH_SIZE;for(;e-t{this._batchIndex*Kr.BATCH_SIZE{i[s]=t}),Object.keys(t.textures).forEach(s=>{i[s]=t.textures[s]}),!e){const s=ft.dirname(r[0]);t.linkedSheets.forEach((n,o)=>{const a=Pc([`${s}/${t.data.meta.related_multi_packs[o]}`],n,!0);Object.assign(i,a)})}return i}const wc={extension:x.Asset,cache:{test:r=>r instanceof cn,getCacheableAssets:(r,t)=>Pc(r,t,!1)},resolver:{test:r=>{const t=r.split("?")[0].split("."),e=t.pop(),i=t.pop();return e==="json"&&ay.includes(i)},parse:r=>{var t,e;const i=r.split(".");return{resolution:parseFloat((e=(t=qt.RETINA_PREFIX.exec(r))==null?void 0:t[1])!=null?e:"1"),format:i[i.length-2],src:r}}},loader:{name:"spritesheetLoader",extension:{type:x.LoadParser,priority:_t.Normal},async testParse(r,t){return ft.extname(t.src).toLowerCase()===".json"&&!!r.frames},async parse(r,t,e){var i,s,n;const{texture:o,imageFilename:a}=(i=t==null?void 0:t.data)!=null?i:{};let u=ft.dirname(t.src);u&&u.lastIndexOf("/")!==u.length-1&&(u+="/");let l;if(o instanceof P)l=o;else{const p=oi(u+(a!=null?a:r.meta.image),t.src);l=(await e.load([p]))[p]}const c=new cn(l.source,r);await c.parse();const h=(s=r==null?void 0:r.meta)==null?void 0:s.related_multi_packs;if(Array.isArray(h)){const p=[];for(const m of h){if(typeof m!="string")continue;let _=u+m;(n=t.data)!=null&&n.ignoreMultiPack||(_=oi(_,t.src),p.push(e.load({src:_,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(p);c.linkedSheets=f,f.forEach(m=>{m.linkedSheets=[c].concat(c.linkedSheets.filter(_=>_!==m))})}return c},async unload(r,t,e){await e.unload(r.textureSource._sourceOrigin),r.destroy(!1)}}};U.add(wc);function lr(r,t,e,i){const{width:s,height:n}=e.orig,o=e.trim;if(o){const a=o.width,u=o.height;r.minX=o.x-t._x*s-i,r.maxX=r.minX+a,r.minY=o.y-t._y*n-i,r.maxY=r.minY+u}else r.minX=-t._x*s-i,r.maxX=r.minX+s,r.minY=-t._y*n-i,r.maxY=r.minY+n}var uy=Object.defineProperty,li=Object.getOwnPropertySymbols,Rc=Object.prototype.hasOwnProperty,Mc=Object.prototype.propertyIsEnumerable,Cc=(r,t,e)=>t in r?uy(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ly=(r,t)=>{for(var e in t||(t={}))Rc.call(t,e)&&Cc(r,e,t[e]);if(li)for(var e of li(t))Mc.call(t,e)&&Cc(r,e,t[e]);return r},cy=(r,t)=>{var e={};for(var i in r)Rc.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&li)for(var i of li(r))t.indexOf(i)<0&&Mc.call(r,i)&&(e[i]=r[i]);return e};class Gt extends Y{constructor(t=P.EMPTY){t instanceof P&&(t={texture:t});const e=t,{texture:i=P.EMPTY,anchor:s,roundPixels:n,width:o,height:a}=e,u=cy(e,["texture","anchor","roundPixels","width","height"]);super(ly({label:"Sprite"},u)),this.renderPipeId="sprite",this.batched=!0,this._didSpriteUpdate=!1,this._bounds={minX:0,maxX:1,minY:0,maxY:0},this._sourceBounds={minX:0,maxX:1,minY:0,maxY:0},this._boundsDirty=!0,this._sourceBoundsDirty=!0,this._roundPixels=0,this._anchor=new it({_onUpdate:()=>{this.onViewUpdate()}}),s?this.anchor=s:i.defaultAnchor&&(this.anchor=i.defaultAnchor),this.texture=i,this.allowChildren=!1,this.roundPixels=n!=null?n:!1,o&&(this.width=o),a&&(this.height=a)}static from(t,e=!1){return t instanceof P?new Gt(t):new Gt(P.from(t,e))}set texture(t){t||(t=P.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get texture(){return this._texture}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get sourceBounds(){return this._sourceBoundsDirty&&(this._updateSourceBounds(),this._sourceBoundsDirty=!1),this._sourceBounds}containsPoint(t){const e=this.sourceBounds;return t.x>=e.maxX&&t.x<=e.minX&&t.y>=e.maxY&&t.y<=e.minY}addBounds(t){const e=this._texture.trim?this.sourceBounds:this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}onViewUpdate(){if(this._didChangeId+=4096,this._didSpriteUpdate=!0,this._sourceBoundsDirty=this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_updateBounds(){lr(this._bounds,this._anchor,this._texture,0)}_updateSourceBounds(){const t=this._anchor,e=this._texture,i=this._sourceBounds,{width:s,height:n}=e.orig;i.maxX=-t._x*s,i.minX=i.maxX+s,i.maxY=-t._y*n,i.minY=i.maxY+n}destroy(t=!1){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const e=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(e)}this._texture=null,this._bounds=null,this._sourceBounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(t){this._setWidth(t,this._texture.orig.width)}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(t){this._setHeight(t,this._texture.orig.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this._texture.orig.width,t.height=Math.abs(this.scale.y)*this._texture.orig.height,t}setSize(t,e){var i;let s,n;typeof t!="object"?(s=t,n=e!=null?e:t):(s=t.width,n=(i=t.height)!=null?i:t.width),s!==void 0&&this._setWidth(s,this._texture.orig.width),n!==void 0&&this._setHeight(n,this._texture.orig.height)}}const hy=new lt;function ci(r,t,e){const i=hy;r.measurable=!0,rr(r,e,i),t.addBoundsMask(i),r.measurable=!1}function hi(r,t,e){const i=$t.get();r.measurable=!0;const s=Lt.get().identity(),n=hn(r,e,s);ei(r,i,n),r.measurable=!1,t.addBoundsMask(i),Lt.return(s),$t.return(i)}function hn(r,t,e){return r&&r!==t&&(hn(r.parent,t,e),r.updateLocalTransform(),e.append(r.localTransform)),e}class dn{constructor(t){this.priority=0,this.pipe="alphaMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof Gt),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(t,e){ci(this.mask,t,e)}addLocalBounds(t,e){hi(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof Gt}}dn.extension=x.MaskEffect;class pn{constructor(t){this.priority=0,this.pipe="colorMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}}pn.extension=x.MaskEffect;class fn{constructor(t){this.priority=0,this.pipe="stencilMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(t,e){ci(this.mask,t,e)}addLocalBounds(t,e){hi(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}destroy(){this.reset()}static test(t){return t instanceof Y}}fn.extension=x.MaskEffect;class de extends rt{constructor(t){t.resource||(t.resource=z.get().createCanvas()),t.width||(t.width=t.resource.width,t.autoDensity||(t.width/=t.resolution)),t.height||(t.height=t.resource.height,t.autoDensity||(t.height/=t.resolution)),super(t),this.uploadMethodId="image",this.autoDensity=t.autoDensity;const e=t.resource;(this.pixelWidth!==e.width||this.pixelWidth!==e.height)&&this.resizeCanvas(),this.transparent=!!t.transparent}resizeCanvas(){this.autoDensity&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(t=this.width,e=this.height,i=this._resolution){const s=super.resize(t,e,i);return s&&this.resizeCanvas(),s}static test(t){return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&t instanceof OffscreenCanvas}}de.extension=x.TextureSource;class pe extends rt{constructor(t){if(t.resource&&globalThis.HTMLImageElement&&t.resource instanceof HTMLImageElement){const e=z.get().createCanvas(t.resource.width,t.resource.height);e.getContext("2d").drawImage(t.resource,0,0),t.resource=e}super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap}}pe.extension=x.TextureSource;let mn;async function gn(){return mn!=null||(mn=(async()=>{var r;const t=document.createElement("canvas").getContext("webgl");if(!t)return"premultiply-alpha-on-upload";const e=await new Promise(o=>{const a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return"premultiply-alpha-on-upload";const i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i);const s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,n),t.deleteFramebuffer(s),t.deleteTexture(i),(r=t.getExtension("WEBGL_lose_context"))==null||r.loseContext(),n[0]<=n[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),mn}var dy=Object.defineProperty,py=Object.defineProperties,fy=Object.getOwnPropertyDescriptors,Oc=Object.getOwnPropertySymbols,my=Object.prototype.hasOwnProperty,gy=Object.prototype.propertyIsEnumerable,Gc=(r,t,e)=>t in r?dy(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,_n=(r,t)=>{for(var e in t||(t={}))my.call(t,e)&&Gc(r,e,t[e]);if(Oc)for(var e of Oc(t))gy.call(t,e)&&Gc(r,e,t[e]);return r},_y=(r,t)=>py(r,fy(t));const di=class wb extends rt{constructor(t){var e;super(t),this.isReady=!1,this.uploadMethodId="video",t=_n(_n({},wb.defaultOptions),t),this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=(e=t.alphaMode)!=null?e:"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const t=ht.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await gn(),this._load=new Promise((i,s)=>{this.isValid?i(this):(this._resolve=i,this._reject=s,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){const t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(ht.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(ht.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(ht.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement||globalThis.VideoFrame&&t instanceof VideoFrame}};di.extension=x.TextureSource,di.defaultOptions=_y(_n({},rt.defaultOptions),{autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1}),di.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let cr=di,by=class{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){return this._cache.get(t)}set(t,e){const i=Rt(t);let s;for(let u=0;u{n.set(u,e)});const o=[...n.keys()],a={cacheKeys:o,keys:i};i.forEach(u=>{this._cacheMap.set(u,a)}),o.forEach(u=>{const l=s?s[u]:e;this._cache.has(u)&&this._cache.get(u),this._cache.set(u,n.get(u))})}remove(t){if(!this._cacheMap.has(t))return;const e=this._cacheMap.get(t);e.cacheKeys.forEach(i=>{this._cache.delete(i)}),e.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}};const q=new by,bn=[];U.handleByList(x.TextureSource,bn);function Bc(r={}){const t=r&&r.resource,e=t?r.resource:r,i=t?r:{resource:r};for(let s=0;s{q.has(i)&&q.remove(i)}),t||q.set(i,n),n}function Fc(r,t=!1){return typeof r=="string"?q.get(r):r instanceof rt?new P({source:r}):Ic(r,t)}P.from=Fc,U.add(dn,pn,fn,cr,pe,de,ui);var H=(r=>(r[r.MAP_READ=1]="MAP_READ",r[r.MAP_WRITE=2]="MAP_WRITE",r[r.COPY_SRC=4]="COPY_SRC",r[r.COPY_DST=8]="COPY_DST",r[r.INDEX=16]="INDEX",r[r.VERTEX=32]="VERTEX",r[r.UNIFORM=64]="UNIFORM",r[r.STORAGE=128]="STORAGE",r[r.INDIRECT=256]="INDIRECT",r[r.QUERY_RESOLVE=512]="QUERY_RESOLVE",r[r.STATIC=1024]="STATIC",r))(H||{});class bt extends pt{constructor(t){let{data:e,size:i}=t;const{usage:s,label:n,shrinkToFit:o}=t;super(),this.uid=J("buffer"),this._resourceType="buffer",this._resourceId=J("resource"),this._touched=0,this._updateID=1,this.shrinkToFit=!0,this.destroyed=!1,e instanceof Array&&(e=new Float32Array(e)),this._data=e,i=i!=null?i:e==null?void 0:e.byteLength;const a=!!e;this.descriptor={size:i,usage:s,mappedAtCreation:a,label:n},this.shrinkToFit=o!=null?o:!0}get data(){return this._data}set data(t){this.setDataWithSize(t,t.length,!0)}get static(){return!!(this.descriptor.usage&H.STATIC)}set static(t){t?this.descriptor.usage|=H.STATIC:this.descriptor.usage&=~H.STATIC}setDataWithSize(t,e,i){if(this._updateID++,this._updateSize=e*t.BYTES_PER_ELEMENT,this._data===t){i&&this.emit("update",this);return}const s=this._data;if(this._data=t,s.length!==t.length){!this.shrinkToFit&&t.byteLengtha&&(a=f),m>u&&(u=m),fe.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const yy=new Float32Array(1),xy=new Uint32Array(1);class yn extends Oe{constructor(){const t=new bt({data:yy,label:"attribute-batch-buffer",usage:H.VERTEX|H.COPY_DST,shrinkToFit:!1}),e=new bt({data:xy,label:"index-batch-buffer",usage:H.INDEX|H.COPY_DST,shrinkToFit:!1}),i=6*4;super({attributes:{aPosition:{buffer:t,format:"float32x2",stride:i,offset:0,location:1},aUV:{buffer:t,format:"float32x2",stride:i,offset:8,location:3},aColor:{buffer:t,format:"unorm8x4",stride:i,offset:16,location:0},aTextureIdAndRound:{buffer:t,format:"uint16x2",stride:i,offset:20,location:2}},indexBuffer:e})}}class Nt{constructor(t){this.resources=Object.create(null),this._dirty=!0;let e=0;for(const i in t){const s=t[i];this.setResource(s,e++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;const t=[];let e=0;for(const i in this.resources)t[e++]=this.resources[i]._resourceId;this._key=t.join("|")}setResource(t,e){var i,s;const n=this.resources[e];t!==n&&(n&&((i=t.off)==null||i.call(t,"change",this.onResourceChange,this)),(s=t.on)==null||s.call(t,"change",this.onResourceChange,this),this.resources[e]=t,this._dirty=!0)}getResource(t){return this.resources[t]}_touch(t){const e=this.resources;for(const i in e)e[i]._touched=t}destroy(){var t;const e=this.resources;for(const i in e){const s=e[i];(t=s.off)==null||t.call(s,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(t){if(this._dirty=!0,t.destroyed){const e=this.resources;for(const i in e)e[i]===t&&(e[i]=null)}else this._updateKey()}}let hr;function xn(){return(!hr||hr!=null&&hr.isContextLost())&&(hr=z.get().createCanvas().getContext("webgl",{})),hr}function Uc(){const r=xn();return r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS)}const dt=Uc(),kc={};function pi(r,t){let e=0;for(let i=0;i>>0;return kc[e]||Ty(r,e)}function Ty(r,t){const e={};let i=0;for(let n=0;n0){const n=new Uint8Array(r,e*8,s);new Uint8Array(t,e*8,s).set(n)}}const Lc={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var st=(r=>(r[r.DISABLED=0]="DISABLED",r[r.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",r[r.MASK_ACTIVE=2]="MASK_ACTIVE",r[r.RENDERING_MASK_REMOVE=3]="RENDERING_MASK_REMOVE",r[r.NONE=4]="NONE",r))(st||{});function Sn(r,t){return t.alphaMode==="no-premultiply-alpha"&&Lc[r]||r}class En{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let t=0;tt in r?Sy(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Hc=(r,t)=>{for(var e in t||(t={}))Ey.call(t,e)&&Nc(r,e,t[e]);if($c)for(var e of $c(t))Ay.call(t,e)&&Nc(r,e,t[e]);return r};class An{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.blendMode="normal",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null}}let dr=0;const Xc=class Rb{constructor(t={}){this.uid=J("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._vertexSize=6,this._elements=[],this._batchPool=[],this._batchPoolIndex=0,this._textureBatchPool=[],this._textureBatchPoolIndex=0,t=Hc(Hc({},Rb.defaultOptions),t);const{vertexSize:e,indexSize:i}=t;this.attributeBuffer=new Tn(e*this._vertexSize*4),this.indexBuffer=new Uint16Array(i)}begin(){this.batchIndex=0,this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0,this._batchPoolIndex=0,this._textureBatchPoolIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(t){this._elements[this.elementSize++]=t,t.indexStart=this.indexSize,t.location=this.attributeSize,t.batcher=this,this.indexSize+=t.indexSize,this.attributeSize+=t.vertexSize*this._vertexSize}checkAndUpdateTexture(t,e){const i=t.batch.textures.ids[e._source.uid];return!i&&i!==0?!1:(t.textureId=i,t.texture=e,!0)}updateElement(t){this.dirty=!0,t.packAttributes(this.attributeBuffer.float32View,this.attributeBuffer.uint32View,t.location,t.textureId)}break(t){const e=this._elements;let i=this._textureBatchPool[this._textureBatchPoolIndex++]||new En;if(i.clear(),!e[this.elementStart])return;const s=e[this.elementStart];let n=Sn(s.blendMode,s.texture._source);this.attributeSize*4>this.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const o=this.attributeBuffer.float32View,a=this.attributeBuffer.uint32View,u=this.indexBuffer;let l=this._batchIndexSize,c=this._batchIndexStart,h="startBatch",p=this._batchPool[this._batchPoolIndex++]||new An;for(let f=this.elementStart;f=dt||b)&&(this._finishBatch(p,c,l-c,i,n,t,h),h="renderBatch",c=l,n=g,i=this._textureBatchPool[this._textureBatchPoolIndex++]||new En,i.clear(),p=this._batchPool[this._batchPoolIndex++]||new An,++dr),m.textureId=_._textureBindLocation=i.count,i.ids[_.uid]=i.count,i.textures[i.count++]=_,m.batch=p,l+=m.indexSize,m.packAttributes(o,a,m.location,m.textureId),m.packIndex(u,m.indexStart,m.location/this._vertexSize)}i.count>0&&(this._finishBatch(p,c,l-c,i,n,t,h),c=l,++dr),this.elementStart=this.elementSize,this._batchIndexStart=c,this._batchIndexSize=l}_finishBatch(t,e,i,s,n,o,a){t.gpuBindGroup=null,t.action=a,t.batcher=this,t.textures=s,t.blendMode=n,t.start=e,t.size=i,++dr,o.add(t)}finish(t){this.break(t)}ensureAttributeBuffer(t){t*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(t*4)}ensureIndexBuffer(t){t<=this.indexBuffer.length||this._resizeIndexBuffer(t)}_resizeAttributeBuffer(t){const e=Math.max(t,this.attributeBuffer.size*2),i=new Tn(e);fi(this.attributeBuffer.rawBinaryData,i.rawBinaryData),this.attributeBuffer=i}_resizeIndexBuffer(t){const e=this.indexBuffer;let i=Math.max(t,e.length*1.5);i+=i%2;const s=i>65535?new Uint32Array(i):new Uint16Array(i);if(s.BYTES_PER_ELEMENT!==e.BYTES_PER_ELEMENT)for(let n=0;n>16&255,i=r>>8&255,s=r&255,n=t>>16&255,o=t>>8&255,a=t&255,u=e*n/255,l=i*o/255,c=s*a/255;return(u<<16)+(l<<8)+c}class gi{constructor(){this.batcher=null,this.batch=null,this.applyTransform=!0,this.roundPixels=0}get blendMode(){return this.applyTransform?this.renderable.groupBlendMode:"normal"}packIndex(t,e,i){const s=this.geometryData.indices;for(let n=0;n>16|h&65280|(h&255)<<16;if(this.applyTransform){const f=zc(p,o.groupColor)+(this.alpha*o.groupAlpha*255<<24),m=o.groupTransform,_=s<<16|this.roundPixels&65535,g=m.a,b=m.b,v=m.c,y=m.d,T=m.tx,E=m.ty;for(let R=l;R=0&&a>=0&&s>=0&&n>=0))return t;const u=Math.ceil(2.3*Math.sqrt(o+a)),l=u*8+(s?4:0)+(n?4:0);if(l===0)return t;if(u===0)return t[0]=t[6]=e+s,t[1]=t[3]=i+n,t[2]=t[4]=e-s,t[5]=t[7]=i-n,t;let c=0,h=u*4+(s?2:0)+2,p=h,f=l,m=s+o,_=n,g=e+m,b=e-m,v=i+_;if(t[c++]=g,t[c++]=v,t[--h]=v,t[--h]=b,n){const T=i-_;t[p++]=b,t[p++]=T,t[--f]=T,t[--f]=g}for(let T=1;T0&&(s[n++]=u,s[n++]=l,s[n++]=u-1),u++;s[n++]=l+1,s[n++]=l,s[n++]=u-1}},jc=1e-4,Mn=1e-4;function Vc(r){const t=r.length;if(t<6)return 1;let e=0;for(let i=0,s=r[t-2],n=r[t-1];ih&&(h+=Math.PI*2);let p=c;const f=h-c,m=Math.abs(f),_=Math.sqrt(u*u+l*l),g=(15*m*Math.sqrt(_)/Math.PI>>0)+1,b=f/g;if(p+=b,a){o.push(r,t),o.push(e,i);for(let v=1,y=p;v=0&&(c.join==="round"?v+=me(S,A,S-O*I,A-B*I,S-Z*I,A-$*I,g,!1)+4:v+=2,g.push(S-Z*D,A-$*D),g.push(S+Z*I,A+$*I));continue}const Tb=(-O+w)*(-B+A)-(-O+S)*(-B+M),Sb=(-Z+N)*(-$+A)-(-Z+S)*(-$+L),Bs=(ne*Sb-jr*Tb)/Gs,Is=(Vr*Tb-zr*Sb)/Gs,Yu=(Bs-S)*(Bs-S)+(Is-A)*(Is-A),Se=S+(Bs-S)*I,Ee=A+(Is-A)*I,Ae=S-(Bs-S)*D,Pe=A-(Is-A)*D,OA=Math.min(ne*ne+zr*zr,jr*jr+Vr*Vr),Eb=Wr?I:D,GA=OA+Eb*Eb*E;Yu<=GA?c.join==="bevel"||Yu/E>R?(Wr?(g.push(Se,Ee),g.push(S+O*D,A+B*D),g.push(Se,Ee),g.push(S+Z*D,A+$*D)):(g.push(S-O*I,A-B*I),g.push(Ae,Pe),g.push(S-Z*I,A-$*I),g.push(Ae,Pe)),v+=2):c.join==="round"?Wr?(g.push(Se,Ee),g.push(S+O*D,A+B*D),v+=me(S,A,S+O*D,A+B*D,S+Z*D,A+$*D,g,!0)+4,g.push(Se,Ee),g.push(S+Z*D,A+$*D)):(g.push(S-O*I,A-B*I),g.push(Ae,Pe),v+=me(S,A,S-O*I,A-B*I,S-Z*I,A-$*I,g,!1)+4,g.push(S-Z*I,A-$*I),g.push(Ae,Pe)):(g.push(Se,Ee),g.push(Ae,Pe)):(g.push(S-O*I,A-B*I),g.push(S+O*D,A+B*D),c.join==="round"?Wr?v+=me(S,A,S+O*D,A+B*D,S+Z*D,A+$*D,g,!0)+2:v+=me(S,A,S-O*I,A-B*I,S-Z*I,A-$*I,g,!1)+2:c.join==="miter"&&Yu/E<=R&&(Wr?(g.push(Ae,Pe),g.push(Ae,Pe)):(g.push(Se,Ee),g.push(Se,Ee)),v+=2),g.push(S-Z*I,A-$*I),g.push(S+Z*D,A+$*D),v+=2)}w=r[(b-2)*2],M=r[(b-2)*2+1],S=r[(b-1)*2],A=r[(b-1)*2+1],O=-(M-A),B=w-S,Et=Math.sqrt(O*O+B*B),O/=Et,B/=Et,O*=T,B*=T,g.push(S-O*I,A-B*I),g.push(S+O*D,A+B*D),m||(c.cap==="round"?v+=me(S-O*(I-D)*.5,A-B*(I-D)*.5,S-O*I,A-B*I,S+O*D,A+B*D,g,!1)+2:c.cap==="square"&&(v+=Wc(S,A,O,B,I,D,!1,g)));const CA=Mn*Mn;for(let Q=y;Q80*e){a=l=r[0],u=c=r[1];for(var m=e;ml&&(l=h),p>c&&(c=p);f=Math.max(l-a,c-u),f=f!==0?32767/f:0}return pr(n,o,e,a,u,f,0),o}function Kc(r,t,e,i,s){var n,o;if(s===Gn(r,t,e,i)>0)for(n=t;n=t;n-=i)o=Qc(n,r[n],r[n+1],o);return o&&vi(o,o.next)&&(mr(o),o=o.next),o}function ge(r,t){if(!r)return r;t||(t=r);var e=r,i;do if(i=!1,!e.steiner&&(vi(e,e.next)||tt(e.prev,e,e.next)===0)){if(mr(e),e=t=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==t);return t}function pr(r,t,e,i,s,n,o){if(r){!o&&n&&Fy(r,i,s,n);for(var a=r,u,l;r.prev!==r.next;){if(u=r.prev,l=r.next,n?wy(r,i,s,n):Py(r)){t.push(u.i/e|0),t.push(r.i/e|0),t.push(l.i/e|0),mr(r),r=l.next,a=l.next;continue}if(r=l,r===a){o?o===1?(r=Ry(ge(r),t,e),pr(r,t,e,i,s,n,2)):o===2&&My(r,t,e,i,s,n):pr(ge(r),t,e,i,s,n,1);break}}}}function Py(r){var t=r.prev,e=r,i=r.next;if(tt(t,e,i)>=0)return!1;for(var s=t.x,n=e.x,o=i.x,a=t.y,u=e.y,l=i.y,c=sn?s>o?s:o:n>o?n:o,f=a>u?a>l?a:l:u>l?u:l,m=i.next;m!==t;){if(m.x>=c&&m.x<=p&&m.y>=h&&m.y<=f&&Ge(s,a,n,u,o,l,m.x,m.y)&&tt(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function wy(r,t,e,i){var s=r.prev,n=r,o=r.next;if(tt(s,n,o)>=0)return!1;for(var a=s.x,u=n.x,l=o.x,c=s.y,h=n.y,p=o.y,f=au?a>l?a:l:u>l?u:l,g=c>h?c>p?c:p:h>p?h:p,b=Cn(f,m,t,e,i),v=Cn(_,g,t,e,i),y=r.prevZ,T=r.nextZ;y&&y.z>=b&&T&&T.z<=v;){if(y.x>=f&&y.x<=_&&y.y>=m&&y.y<=g&&y!==s&&y!==o&&Ge(a,c,u,h,l,p,y.x,y.y)&&tt(y.prev,y,y.next)>=0||(y=y.prevZ,T.x>=f&&T.x<=_&&T.y>=m&&T.y<=g&&T!==s&&T!==o&&Ge(a,c,u,h,l,p,T.x,T.y)&&tt(T.prev,T,T.next)>=0))return!1;T=T.nextZ}for(;y&&y.z>=b;){if(y.x>=f&&y.x<=_&&y.y>=m&&y.y<=g&&y!==s&&y!==o&&Ge(a,c,u,h,l,p,y.x,y.y)&&tt(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;T&&T.z<=v;){if(T.x>=f&&T.x<=_&&T.y>=m&&T.y<=g&&T!==s&&T!==o&&Ge(a,c,u,h,l,p,T.x,T.y)&&tt(T.prev,T,T.next)>=0)return!1;T=T.nextZ}return!0}function Ry(r,t,e){var i=r;do{var s=i.prev,n=i.next.next;!vi(s,n)&&qc(s,i,i.next,n)&&fr(s,n)&&fr(n,s)&&(t.push(s.i/e|0),t.push(i.i/e|0),t.push(n.i/e|0),mr(i),mr(i.next),i=r=n),i=i.next}while(i!==r);return ge(i)}function My(r,t,e,i,s,n){var o=r;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&ky(o,a)){var u=Zc(o,a);o=ge(o,o.next),u=ge(u,u.next),pr(o,t,e,i,s,n,0),pr(u,t,e,i,s,n,0);return}a=a.next}o=o.next}while(o!==r)}function Cy(r,t,e,i){var s=[],n,o,a,u,l;for(n=0,o=t.length;n=e.next.y&&e.next.y!==e.y){var a=e.x+(s-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(a<=i&&a>n&&(n=a,o=e.x=e.x&&e.x>=l&&i!==e.x&&Ge(so.x||e.x===o.x&&Iy(o,e)))&&(o=e,h=p)),e=e.next;while(e!==u);return o}function Iy(r,t){return tt(r.prev,r,t.prev)<0&&tt(t.next,r,r.next)<0}function Fy(r,t,e,i){var s=r;do s.z===0&&(s.z=Cn(s.x,s.y,t,e,i)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next;while(s!==r);s.prevZ.nextZ=null,s.prevZ=null,Dy(s)}function Dy(r){var t,e,i,s,n,o,a,u,l=1;do{for(e=r,r=null,n=null,o=0;e;){for(o++,i=e,a=0,t=0;t0||u>0&&i;)a!==0&&(u===0||!i||e.z<=i.z)?(s=e,e=e.nextZ,a--):(s=i,i=i.nextZ,u--),n?n.nextZ=s:r=s,s.prevZ=n,n=s;e=i}n.nextZ=null,l*=2}while(o>1);return r}function Cn(r,t,e,i,s){return r=(r-e)*s|0,t=(t-i)*s|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,r|t<<1}function Uy(r){var t=r,e=r;do(t.x=(r-o)*(n-a)&&(r-o)*(i-a)>=(e-o)*(t-a)&&(e-o)*(n-a)>=(s-o)*(i-a)}function ky(r,t){return r.next.i!==t.i&&r.prev.i!==t.i&&!Ly(r,t)&&(fr(r,t)&&fr(t,r)&&$y(r,t)&&(tt(r.prev,r,t.prev)||tt(r,t.prev,t))||vi(r,t)&&tt(r.prev,r,r.next)>0&&tt(t.prev,t,t.next)>0)}function tt(r,t,e){return(t.y-r.y)*(e.x-t.x)-(t.x-r.x)*(e.y-t.y)}function vi(r,t){return r.x===t.x&&r.y===t.y}function qc(r,t,e,i){var s=xi(tt(r,t,e)),n=xi(tt(r,t,i)),o=xi(tt(e,i,r)),a=xi(tt(e,i,t));return!!(s!==n&&o!==a||s===0&&yi(r,e,t)||n===0&&yi(r,i,t)||o===0&&yi(e,r,i)||a===0&&yi(e,t,i))}function yi(r,t,e){return t.x<=Math.max(r.x,e.x)&&t.x>=Math.min(r.x,e.x)&&t.y<=Math.max(r.y,e.y)&&t.y>=Math.min(r.y,e.y)}function xi(r){return r>0?1:r<0?-1:0}function Ly(r,t){var e=r;do{if(e.i!==r.i&&e.next.i!==r.i&&e.i!==t.i&&e.next.i!==t.i&&qc(e,e.next,r,t))return!0;e=e.next}while(e!==r);return!1}function fr(r,t){return tt(r.prev,r,r.next)<0?tt(r,t,r.next)>=0&&tt(r,r.prev,t)>=0:tt(r,t,r.prev)<0||tt(r,r.next,t)<0}function $y(r,t){var e=r,i=!1,s=(r.x+t.x)/2,n=(r.y+t.y)/2;do e.y>n!=e.next.y>n&&e.next.y!==e.y&&s<(e.next.x-e.x)*(n-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==r);return i}function Zc(r,t){var e=new On(r.i,r.x,r.y),i=new On(t.i,t.x,t.y),s=r.next,n=t.prev;return r.next=t,t.prev=r,e.next=s,s.prev=e,i.next=e,e.prev=i,n.next=i,i.prev=n,i}function Qc(r,t,e,i){var s=new On(r,t,e);return i?(s.next=i.next,s.prev=i,i.next.prev=s,i.next=s):(s.prev=s,s.next=s),s}function mr(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function On(r,t,e){this.i=r,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}bi.deviation=function(r,t,e,i){var s=t&&t.length,n=s?t[0]*e:r.length,o=Math.abs(Gn(r,0,n,e));if(s)for(var a=0,u=t.length;a0&&(i+=r[s-1].length,e.holes.push(i))}return e};var Ny=_i.exports,Jc=Us(Ny);function Bn(r,t,e,i,s,n,o){const a=Jc(r,t,2);if(!a)return;for(let l=0;l=0&&o>=0&&(t[0]=i,t[1]=s,t[2]=i+n,t[3]=s,t[4]=i+n,t[5]=s+o,t[6]=i,t[7]=s+o),t},triangulate(r,t,e,i,s,n){let o=0;i*=e,t[i+o]=r[0],t[i+o+1]=r[1],o+=e,t[i+o]=r[2],t[i+o+1]=r[3],o+=e,t[i+o]=r[6],t[i+o+1]=r[7],o+=e,t[i+o]=r[4],t[i+o+1]=r[5],o+=e;const a=i/e;s[n++]=a,s[n++]=a+1,s[n++]=a+2,s[n++]=a+1,s[n++]=a+3,s[n++]=a+2}},Dn={build(r,t){return t[0]=r.x,t[1]=r.y,t[2]=r.x2,t[3]=r.y2,t[4]=r.x3,t[5]=r.y3,t},triangulate(r,t,e,i,s,n){let o=0;i*=e,t[i+o]=r[0],t[i+o+1]=r[1],o+=e,t[i+o]=r[2],t[i+o+1]=r[3],o+=e,t[i+o]=r[4],t[i+o+1]=r[5];const a=i/e;s[n++]=a,s[n++]=a+1,s[n++]=a+2}},Un={rectangle:Fn,polygon:In,triangle:Dn,circle:fe,ellipse:fe,roundedRectangle:fe},Xy=new j;function th(r,t){const{geometryData:e,batches:i}=t;i.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let s=0;s{var f;const m=u.length,_=o.length/2,g=[],b=Un[c.type];if(b.build(c,g),h&&mi(g,h),i){const E=(f=c.closePath)!=null?f:!0;Yc(g,t,!1,E,o,2,_,u,m)}else if(e&&l===p){l!==0&&console.warn("[Pixi Graphics] only the last shape have be cut out");const E=[],R=g.slice();jy(e.shapePath).forEach(w=>{E.push(R.length/2),R.push(...w)}),Bn(R,E,o,2,_,u,m)}else b.triangulate(g,o,2,_,u,m);const v=a.length/2,y=t.texture;if(y!==P.WHITE){const E=t.matrix;h&&E.append(h.clone().invert()),wn(o,2,_,a,v,2,o.length/2-_,E)}else Rn(a,v,2,o.length/2-_);const T=W.get(gi);T.indexOffset=m,T.indexSize=u.length-m,T.vertexOffset=_,T.vertexSize=o.length/2-_,T.color=t.color,T.alpha=t.alpha,T.texture=y,T.geometryData=n,s.push(T)})}function jy(r){if(!r)return[];const t=r.shapePrimitives,e=[];for(let i=0;i{W.return(i)})}destroy(){for(const t of this._needsContextNeedsRebuild)this._gpuContextHash[t.uid]&&this.onGraphicsContextDestroy(t);this._needsContextNeedsRebuild.length=0}};kn.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"graphicsContext"},kn.defaultOptions={bezierSmoothness:.5};let Ti=kn;const Vy={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8},Ln=0,$n=1,Nn=2,Hn=3,Xn=4,zn=5,jn=class Mb{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<>16&255)/255,e[i++]=(r>>8&255)/255,e[i++]=(r&255)/255,e[i++]=t}function gr(r,t,e){const i=(r>>24&255)/255;t[e++]=(r&255)/255*i,t[e++]=(r>>8&255)/255*i,t[e++]=(r>>16&255)/255*i,t[e++]=i}class Vn{constructor(t,e){this.state=Bt.for2d(),this._graphicsBatchesHash=Object.create(null),this.renderer=t,this._adaptor=e,this._adaptor.init()}validateRenderable(t){const e=t.context,i=!!this._graphicsBatchesHash[t.uid],s=this.renderer.graphicsContext.updateGpuContext(e);return!!(s.isBatchable||i!==s.isBatchable)}addRenderable(t,e){const i=this.renderer.graphicsContext.updateGpuContext(t.context);t._didGraphicsUpdate&&(t._didGraphicsUpdate=!1,this._rebuild(t)),i.isBatchable?this._addToBatcher(t,e):(this.renderer.renderPipes.batch.break(e),e.add(t))}updateRenderable(t){const e=this._graphicsBatchesHash[t.uid];if(e)for(let i=0;i{const a=W.get(gi);return o.copyTo(a),a.renderable=t,a.roundPixels=s,a});return this._graphicsBatchesHash[t.uid]=n,t.on("destroyed",()=>{this.destroyRenderable(t)}),n}_removeBatchForRenderable(t){this._graphicsBatchesHash[t].forEach(e=>{W.return(e)}),this._graphicsBatchesHash[t]=null}destroy(){this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null;for(const t in this._graphicsBatchesHash)this._removeBatchForRenderable(t);this._graphicsBatchesHash=null}}Vn.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"graphics"},U.add(Vn),U.add(Ti);const Wn=Object.create(null),sh=Object.create(null);function _r(r,t){let e=sh[r];return e===void 0&&(Wn[t]===void 0&&(Wn[t]=1),sh[r]=e=Wn[t]++),e}function nh(r,t){switch(r){case"f32":return 0;case"vec2":return new Float32Array(2*t);case"vec3":return new Float32Array(3*t);case"vec4":return new Float32Array(4*t);case"mat2x2":return new Float32Array([1,0,0,1]);case"mat3x3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var Yy=Object.defineProperty,oh=Object.getOwnPropertySymbols,Ky=Object.prototype.hasOwnProperty,qy=Object.prototype.propertyIsEnumerable,ah=(r,t,e)=>t in r?Yy(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,uh=(r,t)=>{for(var e in t||(t={}))Ky.call(t,e)&&ah(r,e,t[e]);if(oh)for(var e of oh(t))qy.call(t,e)&&ah(r,e,t[e]);return r};const lh=class Cb{constructor(t,e){this._touched=0,this.uid=J("uniform"),this._resourceType="uniformGroup",this._resourceId=J("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1;var i,s;e=uh(uh({},Cb.defaultOptions),e),this.uniformStructures=t;const n={};for(const o in t){const a=t[o];a.name=o,a.size=(i=a.size)!=null?i:1,(s=a.value)!=null||(a.value=nh(a.type,a.size)),n[o]=a.value}this.uniforms=n,this._dirtyId=1,this.ubo=e.ubo,this.isStatic=e.isStatic,this._signature=_r(Object.keys(n).map(o=>`${o}-${t[o].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};lh.defaultOptions={ubo:!1,isStatic:!1};let nt=lh;class Si{constructor(){this.batcher=null,this.batch=null,this.roundPixels=0,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}get blendMode(){return this.mesh.groupBlendMode}reset(){this.mesh=null,this.texture=null,this.batcher=null,this.batch=null}packIndex(t,e,i){const s=this.geometry.indices;for(let n=0;n"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uRound:{value:0,type:"f32"}}),this.localUniformsBindGroup=new Nt({0:this.localUniforms}),this._meshDataHash=Object.create(null),this._gpuBatchableMeshHash=Object.create(null),this.renderer=t,this._adaptor=e,this._adaptor.init()}validateRenderable(t){const e=this._getMeshData(t),i=e.batched,s=t.batched;if(e.batched=s,i!==s)return!0;if(s){const n=t._geometry;if(n.indices.length!==e.indexSize||n.positions.length!==e.vertexSize)return e.indexSize=n.indices.length,e.vertexSize=n.positions.length,!0;const o=this._getBatchableMesh(t),a=t.texture;if(o.texture._source!==a._source&&o.texture._source!==a._source)return!o.batcher.checkAndUpdateTexture(o,a)}return!1}addRenderable(t,e){const i=this.renderer.renderPipes.batch,{batched:s}=this._getMeshData(t);if(s){const n=this._getBatchableMesh(t);n.texture=t._texture,n.geometry=t._geometry,i.addToBatch(n)}else i.break(e),e.add({renderPipeId:"mesh",mesh:t})}updateRenderable(t){if(t.batched){const e=this._gpuBatchableMeshHash[t.uid];e.texture=t._texture,e.geometry=t._geometry,e.batcher.updateElement(e)}}destroyRenderable(t){this._meshDataHash[t.uid]=null;const e=this._gpuBatchableMeshHash[t.uid];e&&(W.return(e),this._gpuBatchableMeshHash[t.uid]=null)}execute({mesh:t}){if(!t.isRenderable)return;t.state.blendMode=t.groupBlendMode;const e=this.localUniforms;e.uniforms.uTransformMatrix=t.groupTransform,e.uniforms.uRound=this.renderer._roundPixels|t._roundPixels,e.update(),gr(t.groupColorAlpha,e.uniforms.uColor,0),this._adaptor.execute(this,t)}_getMeshData(t){return this._meshDataHash[t.uid]||this._initMeshData(t)}_initMeshData(t){var e,i;return this._meshDataHash[t.uid]={batched:t.batched,indexSize:(e=t._geometry.indices)==null?void 0:e.length,vertexSize:(i=t._geometry.positions)==null?void 0:i.length},t.on("destroyed",()=>{this.destroyRenderable(t)}),this._meshDataHash[t.uid]}_getBatchableMesh(t){return this._gpuBatchableMeshHash[t.uid]||this._initBatchableMesh(t)}_initBatchableMesh(t){const e=W.get(Si);return e.mesh=t,e.texture=t._texture,e.roundPixels=this.renderer._roundPixels|t._roundPixels,this._gpuBatchableMeshHash[t.uid]=e,e.mesh=t,e}destroy(){for(const t in this._gpuBatchableMeshHash)this._gpuBatchableMeshHash[t]&&W.return(this._gpuBatchableMeshHash[t]);this._gpuBatchableMeshHash=null,this._meshDataHash=null,this.localUniforms=null,this.localUniformsBindGroup=null,this._adaptor.destroy(),this._adaptor=null,this.renderer=null}}Yn.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"mesh"},U.add(Yn);class Ei{constructor(){this.vertexSize=4,this.indexSize=6,this.location=0,this.batcher=null,this.batch=null,this.roundPixels=0}get blendMode(){return this.renderable.groupBlendMode}packAttributes(t,e,i,s){const n=this.renderable,o=this.texture,a=n.groupTransform,u=a.a,l=a.b,c=a.c,h=a.d,p=a.tx,f=a.ty,m=this.bounds,_=m.maxX,g=m.minX,b=m.maxY,v=m.minY,y=o.uvs,T=n.groupColorAlpha,E=s<<16|this.roundPixels&65535;t[i+0]=u*g+c*v+p,t[i+1]=h*v+l*g+f,t[i+2]=y.x0,t[i+3]=y.y0,e[i+4]=T,e[i+5]=E,t[i+6]=u*_+c*v+p,t[i+7]=h*v+l*_+f,t[i+8]=y.x1,t[i+9]=y.y1,e[i+10]=T,e[i+11]=E,t[i+12]=u*_+c*b+p,t[i+13]=h*b+l*_+f,t[i+14]=y.x2,t[i+15]=y.y2,e[i+16]=T,e[i+17]=E,t[i+18]=u*g+c*b+p,t[i+19]=h*b+l*g+f,t[i+20]=y.x3,t[i+21]=y.y3,e[i+22]=T,e[i+23]=E}packIndex(t,e,i){t[e]=i+0,t[e+1]=i+1,t[e+2]=i+2,t[e+3]=i+0,t[e+4]=i+2,t[e+5]=i+3}reset(){this.renderable=null,this.texture=null,this.batcher=null,this.batch=null,this.bounds=null}}class Kn{constructor(t){this._gpuText=Object.create(null),this._renderer=t}validateRenderable(t){var e;const i=this._getGpuText(t),s=t._getKey();if(i.currentKey!==s){const n=(e=t.resolution)!=null?e:this._renderer.resolution,{width:o,height:a}=this._renderer.canvasText.getTextureSize(t.text,n,t._style);return!(this._renderer.canvasText.getReferenceCount(i.currentKey)===1&&o===i.texture._source.width&&a===i.texture._source.height)}return!1}addRenderable(t,e){const i=this._getGpuText(t).batchableSprite;t._didTextUpdate&&this._updateText(t),this._renderer.renderPipes.batch.addToBatch(i)}updateRenderable(t){const e=this._getGpuText(t).batchableSprite;t._didTextUpdate&&this._updateText(t),e.batcher.updateElement(e)}destroyRenderable(t){this._destroyRenderableById(t.uid)}_destroyRenderableById(t){const e=this._gpuText[t];this._renderer.canvasText.decreaseReferenceCount(e.currentKey),W.return(e.batchableSprite),this._gpuText[t]=null}_updateText(t){const e=t._getKey(),i=this._getGpuText(t),s=i.batchableSprite;i.currentKey!==e&&this._updateGpuText(t),t._didTextUpdate=!1;const n=t._style.padding;lr(s.bounds,t._anchor,s.texture,n)}_updateGpuText(t){const e=this._getGpuText(t),i=e.batchableSprite;e.texture&&this._renderer.canvasText.decreaseReferenceCount(e.currentKey),e.texture=i.texture=this._renderer.canvasText.getManagedTexture(t),e.currentKey=t._getKey(),i.texture=e.texture}_getGpuText(t){return this._gpuText[t.uid]||this.initGpuText(t)}initGpuText(t){const e={texture:null,currentKey:"--",batchableSprite:W.get(Ei)};return e.batchableSprite.renderable=t,e.batchableSprite.bounds={minX:0,maxX:1,minY:0,maxY:0},e.batchableSprite.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuText[t.uid]=e,this._updateText(t),t.on("destroyed",()=>{this.destroyRenderable(t)}),e}destroy(){for(const t in this._gpuText)this._destroyRenderableById(t);this._gpuText=null,this._renderer=null}}Kn.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"text"};class ch{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,e){const i=z.get().createCanvas();i.width=t,i.height=e;const s=i.getContext("2d");return{canvas:i,context:s}}getOptimalCanvasAndContext(t,e,i=1){t=Math.ceil(t*i-1e-6),e=Math.ceil(e*i-1e-6),t=he(t),e=he(e);const s=(t<<17)+(e<<1);this._canvasPool[s]||(this._canvasPool[s]=[]);let n=this._canvasPool[s].pop();return n||(n=this._createCanvasAndContext(t,e)),n}returnCanvasAndContext(t){const{width:e,height:i}=t.canvas,s=(e<<17)+(i<<1);this._canvasPool[s].push(t)}clear(){this._canvasPool={}}}const Ht=new ch;var Zy=Object.defineProperty,Qy=Object.defineProperties,Jy=Object.getOwnPropertyDescriptors,hh=Object.getOwnPropertySymbols,tx=Object.prototype.hasOwnProperty,ex=Object.prototype.propertyIsEnumerable,dh=(r,t,e)=>t in r?Zy(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,rx=(r,t)=>{for(var e in t||(t={}))tx.call(t,e)&&dh(r,e,t[e]);if(hh)for(var e of hh(t))ex.call(t,e)&&dh(r,e,t[e]);return r},ix=(r,t)=>Qy(r,Jy(t));let sx=0;class ph{constructor(t){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1}createTexture(t,e,i){const s=new rt(ix(rx({},this.textureOptions),{width:t,height:e,resolution:1,antialias:i,autoGarbageCollect:!0}));return new P({source:s,label:`texturePool_${sx++}`})}getOptimalTexture(t,e,i=1,s){let n=Math.ceil(t*i-1e-6),o=Math.ceil(e*i-1e-6);n=he(n),o=he(o);const a=(n<<17)+(o<<1)+(s?1:0);this._texturePool[a]||(this._texturePool[a]=[]);let u=this._texturePool[a].pop();return u||(u=this.createTexture(n,o,s)),u.source._resolution=i,u.source.width=n/i,u.source.height=o/i,u.source.pixelWidth=n,u.source.pixelHeight=o,u.frame.x=0,u.frame.y=0,u.frame.width=t,u.frame.height=e,u.updateUvs(),this._poolKeyHash[u.uid]=a,u}getSameSizeTexture(t,e=!1){const i=t.source;return this.getOptimalTexture(t.width,t.height,i._resolution,e)}returnTexture(t){const e=this._poolKeyHash[t.uid];this._texturePool[e].push(t)}clear(t){if(t=t!==!1,t)for(const e in this._texturePool){const i=this._texturePool[e];if(i)for(let s=0;s2&&(t.push([i].concat(s.splice(0,2))),n="l",i=i=="m"?"l":"L");;){if(s.length==qn[n])return s.unshift(i),t.push(s);if(s.length0&&(s=i.pop(),s?(n=s.startX,o=s.startY):(n=0,o=0)),s=null;break;default:}l!=="Z"&&l!=="z"&&s===null&&(s={startX:n,startY:o},i.push(s))}return t}class Pi{constructor(t=0,e=0,i=0){this.type="circle",this.x=t,this.y=e,this.radius=i}clone(){return new Pi(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const i=this.radius*this.radius;let s=this.x-t,n=this.y-e;return s*=s,n*=n,s+n<=i}strokeContains(t,e,i){if(this.radius===0)return!1;const s=this.x-t,n=this.y-e,o=this.radius,a=i/2,u=Math.sqrt(s*s+n*n);return uo-a}getBounds(t){return t=t||new j,t.x=this.x-this.radius,t.y=this.y-this.radius,t.width=this.radius*2,t.height=this.radius*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.radius=t.radius,this}copyTo(t){return t.copyFrom(this),t}}class wi{constructor(t=0,e=0,i=0,s=0){this.type="ellipse",this.x=t,this.y=e,this.halfWidth=i,this.halfHeight=s}clone(){return new wi(this.x,this.y,this.halfWidth,this.halfHeight)}contains(t,e){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let i=(t-this.x)/this.halfWidth,s=(e-this.y)/this.halfHeight;return i*=i,s*=s,i+s<=1}strokeContains(t,e,i){const{halfWidth:s,halfHeight:n}=this;if(s<=0||n<=0)return!1;const o=i/2,a=s-o,u=n-o,l=s+o,c=n+o,h=t-this.x,p=e-this.y,f=h*h/(a*a)+p*p/(u*u),m=h*h/(l*l)+p*p/(c*c);return f>1&&m<=1}getBounds(){return new j(this.x-this.halfWidth,this.y-this.halfHeight,this.halfWidth*2,this.halfHeight*2)}copyFrom(t){return this.x=t.x,this.y=t.y,this.halfWidth=t.halfWidth,this.halfHeight=t.halfHeight,this}copyTo(t){return t.copyFrom(this),t}}function br(r,t,e,i,s,n){const o=r-e,a=t-i,u=s-e,l=n-i,c=o*u+a*l,h=u*u+l*l;let p=-1;h!==0&&(p=c/h);let f,m;p<0?(f=e,m=i):p>1?(f=s,m=n):(f=e+p*u,m=i+p*l);const _=r-f,g=t-m;return _*_+g*g}class Be{constructor(...t){this.type="polygon";let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const i=[];for(let s=0,n=e.length;se!=c>e&&t<(l-a)*((e-u)/(c-u))+a&&(i=!i)}return i}strokeContains(t,e,i){const s=i/2,n=s*s,{points:o}=this,a=o.length-(this.closePath?0:2);for(let u=0;us?l:s,n=co?c:o}return t.x=i,t.width=s-i,t.y=n,t.height=o-n,t}copyFrom(t){return this.points=t.points.slice(),this.closePath=t.closePath,this}copyTo(t){return t.copyFrom(this),t}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}const Ri=(r,t,e,i,s,n)=>{const o=r-e,a=t-i,u=Math.sqrt(o*o+a*a);return u>=s-n&&u<=s+n};class Mi{constructor(t=0,e=0,i=0,s=0,n=20){this.type="roundedRectangle",this.x=t,this.y=e,this.width=i,this.height=s,this.radius=n}getBounds(t){return t=t||new j,t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}clone(){return new Mi(this.x,this.y,this.width,this.height,this.radius)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+i&&e<=this.y+this.height-i||t>=this.x+i&&t<=this.x+this.width-i)return!0;let s=t-(this.x+i),n=e-(this.y+i);const o=i*i;if(s*s+n*n<=o||(s=t-(this.x+this.width-i),s*s+n*n<=o)||(n=e-(this.y+this.height-i),s*s+n*n<=o)||(s=t-(this.x+i),s*s+n*n<=o))return!0}return!1}strokeContains(t,e,i){const{x:s,y:n,width:o,height:a,radius:u}=this,l=i/2,c=s+u,h=n+u,p=o-u*2,f=a-u*2,m=s+o,_=n+a;return(t>=s-l&&t<=s+l||t>=m-l&&t<=m+l)&&e>=h&&e<=h+f||(e>=n-l&&e<=n+l||e>=_-l&&e<=_+l)&&t>=c&&t<=c+p?!0:tm-u&&em-u&&e>_-u&&Ri(t,e,m-u,_-u,u,l)||t_-u&&Ri(t,e,c,_-u,u,l)}}const dx=8,Ci=11920929e-14,px=1,Zn=.01,Ie=0,_e=0;function Qn(r,t,e,i,s,n,o,a,u,l){const c=Math.min(.99,Math.max(0,l!=null?l:Ti.defaultOptions.bezierSmoothness));let h=(px-c)/1;return h*=h,fx(t,e,i,s,n,o,a,u,r,h),r}function fx(r,t,e,i,s,n,o,a,u,l){Jn(r,t,e,i,s,n,o,a,u,l,0),u.push(o,a)}function Jn(r,t,e,i,s,n,o,a,u,l,c){if(c>dx)return;const h=Math.PI,p=(r+e)/2,f=(t+i)/2,m=(e+s)/2,_=(i+n)/2,g=(s+o)/2,b=(n+a)/2,v=(p+m)/2,y=(f+_)/2,T=(m+g)/2,E=(_+b)/2,R=(v+T)/2,w=(y+E)/2;if(c>0){let M=o-r,S=a-t;const A=Math.abs((e-o)*S-(i-a)*M),N=Math.abs((s-o)*S-(n-a)*M);let L,O;if(A>Ci&&N>Ci){if((A+N)*(A+N)<=l*(M*M+S*S)){if(Ie=h&&(L=2*h-L),O>=h&&(O=2*h-O),L+O_e){u.push(e,i);return}if(O>_e){u.push(s,n);return}}}}else if(A>Ci){if(A*A<=l*(M*M+S*S)){if(Ie=h&&(L=2*h-L),L_e){u.push(e,i);return}}}else if(N>Ci){if(N*N<=l*(M*M+S*S)){if(Ie=h&&(L=2*h-L),L_e){u.push(s,n);return}}}else if(M=R-(r+o)/2,S=w-(t+a)/2,M*M+S*S<=l){u.push(R,w);return}}Jn(r,t,p,f,v,y,R,w,u,l,c+1),Jn(R,w,T,E,g,b,o,a,u,l,c+1)}const mx=8,gx=11920929e-14,_x=1,bx=.01,xh=0;function Th(r,t,e,i,s,n,o,a){const u=Math.min(.99,Math.max(0,a!=null?a:Ti.defaultOptions.bezierSmoothness));let l=(_x-u)/1;return l*=l,vx(t,e,i,s,n,o,r,l),r}function vx(r,t,e,i,s,n,o,a){to(o,r,t,e,i,s,n,a,0),o.push(s,n)}function to(r,t,e,i,s,n,o,a,u){if(u>mx)return;const l=Math.PI,c=(t+i)/2,h=(e+s)/2,p=(i+n)/2,f=(s+o)/2,m=(c+p)/2,_=(h+f)/2;let g=n-t,b=o-e;const v=Math.abs((i-n)*b-(s-o)*g);if(v>gx){if(v*v<=a*(g*g+b*b)){if(xh=l&&(y=2*l-y),yn||o&&n>s)&&(u=2*Math.PI-u),a=a||Math.max(6,Math.floor(6*Math.pow(i,.3333333333333333)*(u/Math.PI))),a=Math.max(a,3);let l=u/a,c=s;l*=o?-1:1;for(let h=0;hc*a)}const vr=Math.PI*2,ro={centerX:0,centerY:0,ang1:0,ang2:0},io=({x:r,y:t},e,i,s,n,o,a,u)=>{r*=e,t*=i;const l=s*r-n*t,c=n*r+s*t;return u.x=l+o,u.y=c+a,u};function yx(r,t){const e=t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),i=t===1.5707963267948966?.551915024494:e,s=Math.cos(r),n=Math.sin(r),o=Math.cos(r+t),a=Math.sin(r+t);return[{x:s-n*i,y:n+s*i},{x:o+a*i,y:a-o*i},{x:o,y:a}]}const Eh=(r,t,e,i)=>{const s=r*i-t*e<0?-1:1;let n=r*e+t*i;return n>1&&(n=1),n<-1&&(n=-1),s*Math.acos(n)},xx=(r,t,e,i,s,n,o,a,u,l,c,h,p)=>{const f=Math.pow(s,2),m=Math.pow(n,2),_=Math.pow(c,2),g=Math.pow(h,2);let b=f*m-f*g-m*_;b<0&&(b=0),b/=f*g+m*_,b=Math.sqrt(b)*(o===a?-1:1);const v=b*s/n*h,y=b*-n/s*c,T=l*v-u*y+(r+e)/2,E=u*v+l*y+(t+i)/2,R=(c-v)/s,w=(h-y)/n,M=(-c-v)/s,S=(-h-y)/n,A=Eh(1,0,R,w);let N=Eh(R,w,M,S);a===0&&N>0&&(N-=vr),a===1&&N<0&&(N+=vr),p.centerX=T,p.centerY=E,p.ang1=A,p.ang2=N};function Ah(r,t,e,i,s,n,o,a=0,u=0,l=0){if(n===0||o===0)return;const c=Math.sin(a*vr/360),h=Math.cos(a*vr/360),p=h*(t-i)/2+c*(e-s)/2,f=-c*(t-i)/2+h*(e-s)/2;if(p===0&&f===0)return;n=Math.abs(n),o=Math.abs(o);const m=Math.pow(p,2)/Math.pow(n,2)+Math.pow(f,2)/Math.pow(o,2);m>1&&(n*=Math.sqrt(m),o*=Math.sqrt(m)),xx(t,e,i,s,n,o,u,l,c,h,p,f,ro);let{ang1:_,ang2:g}=ro;const{centerX:b,centerY:v}=ro;let y=Math.abs(g)/(vr/4);Math.abs(1-y)<1e-7&&(y=1);const T=Math.max(Math.ceil(y),1);g/=T;let E=r[r.length-2],R=r[r.length-1];const w={x:0,y:0};for(let M=0;M{const l=u.x-a.x,c=u.y-a.y,h=Math.sqrt(l*l+c*c),p=l/h,f=c/h;return{len:h,nx:p,ny:f}},n=(a,u)=>{a===0?r.moveTo(u.x,u.y):r.lineTo(u.x,u.y)};let o=t[t.length-1];for(let a=0;a0&&(m=-1,_=!0);const g=f/2;let b,v=Math.abs(Math.cos(g)*l/Math.sin(g));v>Math.min(h.len/2,p.len/2)?(v=Math.min(h.len/2,p.len/2),b=Math.abs(v*Math.sin(g)/Math.cos(g))):b=l;const y=u.x+p.nx*v+-p.ny*b*m,T=u.y+p.ny*v+p.nx*b*m,E=Math.atan2(h.ny,h.nx)+Math.PI/2*m,R=Math.atan2(p.ny,p.nx)-Math.PI/2*m;a===0&&r.moveTo(y+Math.cos(E)*b,T+Math.sin(E)*b),r.arc(y,T,b,E,R,_),o=u}}function wh(r,t,e,i){var s;const n=(u,l)=>Math.sqrt((u.x-l.x)**2+(u.y-l.y)**2),o=(u,l,c)=>({x:u.x+(l.x-u.x)*c,y:u.y+(l.y-u.y)*c}),a=t.length;for(let u=0;u=2;h-=2)c[h]===c[h-2]&&c[h-1]===c[h-3]&&c.splice(h-1,2);return this.poly(c,!0,o)}ellipse(t,e,i,s,n){return this.drawShape(new wi(t,e,i,s),n),this}roundRect(t,e,i,s,n,o){return this.drawShape(new Mi(t,e,i,s,n),o),this}drawShape(t,e){return this.endPoly(),this.shapePrimitives.push({shape:t,transform:e}),this}startPoly(t,e){let i=this._currentPoly;return i&&this.endPoly(),i=new Be,i.points.push(t,e),this._currentPoly=i,this}endPoly(t=!1){const e=this._currentPoly;return e&&e.points.length>2&&(e.closePath=t,this.shapePrimitives.push({shape:e})),this._currentPoly=null,this}_ensurePoly(t=!0){if(!this._currentPoly&&(this._currentPoly=new Be,t)){const e=this.shapePrimitives[this.shapePrimitives.length-1];if(e){let i=e.shape.x,s=e.shape.y;if(!e.transform.isIdentity()){const n=e.transform,o=i;i=n.a*i+n.c*s+n.tx,s=n.b*o+n.d*s+n.ty}this._currentPoly.points.push(i,s)}else this._currentPoly.points.push(0,0)}}buildPath(){const t=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let e=0;et in r?Sx(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Oi=(r,t)=>{for(var e in t||(t={}))Ex.call(t,e)&&Ch(r,e,t[e]);if(Mh)for(var e of Mh(t))Ax.call(t,e)&&Ch(r,e,t[e]);return r};function Oh(r,t){if(typeof r=="string"){const i=document.createElement("div");i.innerHTML=r.trim(),r=i.querySelector("svg")}const e={context:t,path:new Qt};return Gh(r,e,null,null),t}function Gh(r,t,e,i){const s=r.children,{fillStyle:n,strokeStyle:o}=Px(r);n&&e?e=Oi(Oi({},e),n):n&&(e=n),o&&i?i=Oi(Oi({},i),o):o&&(i=o),t.context.fillStyle=e,t.context.strokeStyle=i;let a,u,l,c,h,p,f,m,_,g,b,v,y,T,E,R,w;switch(r.nodeName.toLowerCase()){case"path":T=r.getAttribute("d"),E=new Qt(T),t.context.path(E),e&&t.context.fill(),i&&t.context.stroke();break;case"circle":f=at(r,"cx",0),m=at(r,"cy",0),_=at(r,"r",0),t.context.ellipse(f,m,_,_),e&&t.context.fill(),i&&t.context.stroke();break;case"rect":a=at(r,"x",0),u=at(r,"y",0),R=at(r,"width",0),w=at(r,"height",0),g=at(r,"rx",0),b=at(r,"ry",0),g||b?t.context.roundRect(a,u,R,w,g||b):t.context.rect(a,u,R,w),e&&t.context.fill(),i&&t.context.stroke();break;case"ellipse":f=at(r,"cx",0),m=at(r,"cy",0),g=at(r,"rx",0),b=at(r,"ry",0),t.context.beginPath(),t.context.ellipse(f,m,g,b),e&&t.context.fill(),i&&t.context.stroke();break;case"line":l=at(r,"x1",0),c=at(r,"y1",0),h=at(r,"x2",0),p=at(r,"y2",0),t.context.beginPath(),t.context.moveTo(l,c),t.context.lineTo(h,p),i&&t.context.stroke();break;case"polygon":y=r.getAttribute("points"),v=y.match(/\d+/g).map(M=>parseInt(M,10)),t.context.poly(v,!0),e&&t.context.fill(),i&&t.context.stroke();break;case"polyline":y=r.getAttribute("points"),v=y.match(/\d+/g).map(M=>parseInt(M,10)),t.context.poly(v,!1),i&&t.context.stroke();break;case"g":case"svg":break;default:{console.info(`[SVG parser] <${r.nodeName}> elements unsupported`);break}}for(let M=0;Mt in r?wx(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,be=(r,t)=>{for(var e in t||(t={}))Cx.call(t,e)&&Fh(r,e,t[e]);if(Ih)for(var e of Ih(t))Ox.call(t,e)&&Fh(r,e,t[e]);return r},no=(r,t)=>Rx(r,Mx(t));function Yt(r,t){var e,i;if(r==null)return null;let s,n;if(r!=null&&r.fill?(n=r.fill,s=be(be({},t),r)):(n=r,s=t),K.isColorLike(n)){const u=K.shared.setValue(n!=null?n:0);return no(be({},s),{color:u.toNumber(),alpha:u.alpha===1?s.alpha:u.alpha,texture:P.WHITE})}else if(n instanceof so){const u=n;return no(be({},s),{color:16777215,texture:u.texture,matrix:u.transform,fill:(e=s.fill)!=null?e:null})}else if(n instanceof Ai){const u=n;return u.buildLinearGradient(),no(be({},s),{color:16777215,texture:u.texture,matrix:u.transform})}const o=be(be({},t),r);if(o.texture){if(o.texture!==P.WHITE){const l=((i=o.matrix)==null?void 0:i.invert())||new G;l.scale(1/o.texture.frame.width,1/o.texture.frame.height),o.matrix=l}const u=o.texture.source.style;u.addressMode==="clamp-to-edge"&&(u.addressMode="repeat")}const a=K.shared.setValue(o.color);return o.alpha*=a.alpha,o.color=a.toNumber(),o.matrix=o.matrix?o.matrix.clone():null,o}var Gx=Object.defineProperty,Dh=Object.getOwnPropertySymbols,Bx=Object.prototype.hasOwnProperty,Ix=Object.prototype.propertyIsEnumerable,Uh=(r,t,e)=>t in r?Gx(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Fe=(r,t)=>{for(var e in t||(t={}))Bx.call(t,e)&&Uh(r,e,t[e]);if(Dh)for(var e of Dh(t))Ix.call(t,e)&&Uh(r,e,t[e]);return r};const Fx=new V,kh=new G,oo=class Xt extends pt{constructor(){super(...arguments),this.uid=J("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this._activePath=new Qt,this._transform=new G,this._fillStyle=Fe({},Xt.defaultFillStyle),this._strokeStyle=Fe({},Xt.defaultStrokeStyle),this._stateStack=[],this._tick=0,this._bounds=new lt,this._boundsDirty=!0}clone(){const t=new Xt;return t.batchMode=this.batchMode,t.instructions=this.instructions.slice(),t._activePath=this._activePath.clone(),t._transform=this._transform.clone(),t._fillStyle=Fe({},this._fillStyle),t._strokeStyle=Fe({},this._strokeStyle),t._stateStack=this._stateStack.slice(),t._bounds=this._bounds.clone(),t._boundsDirty=!0,t}get fillStyle(){return this._fillStyle}set fillStyle(t){this._fillStyle=Yt(t,Xt.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(t){this._strokeStyle=Yt(t,Xt.defaultStrokeStyle)}setFillStyle(t){return this._fillStyle=Yt(t,Xt.defaultFillStyle),this}setStrokeStyle(t){return this._strokeStyle=Yt(t,Xt.defaultStrokeStyle),this}texture(t,e,i,s,n,o){return this.instructions.push({action:"texture",data:{image:t,dx:i||0,dy:s||0,dw:n||t.frame.width,dh:o||t.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:e?K.shared.setValue(e).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new Qt,this}fill(t,e){let i;const s=this.instructions[this.instructions.length-1];return this._tick===0&&s&&s.action==="stroke"?i=s.data.path:i=this._activePath.clone(),i?(t!=null&&(e!==void 0&&typeof t=="number"&&(t={color:t,alpha:e}),this._fillStyle=Yt(t,Xt.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:i}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}_initNextPathLocation(){const{x:t,y:e}=this._activePath.getLastPoint(V.shared);this._activePath.clear(),this._activePath.moveTo(t,e)}stroke(t){let e;const i=this.instructions[this.instructions.length-1];return this._tick===0&&i&&i.action==="fill"?e=i.data.path:e=this._activePath.clone(),e?(t!=null&&(this._strokeStyle=Yt(t,Xt.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:e}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}cut(){for(let t=0;t<2;t++){const e=this.instructions[this.instructions.length-1-t],i=this._activePath.clone();if(e&&(e.action==="stroke"||e.action==="fill"))if(e.data.hole)e.data.hole.addPath(i);else{e.data.hole=i;break}}return this._initNextPathLocation(),this}arc(t,e,i,s,n,o){this._tick++;const a=this._transform;return this._activePath.arc(a.a*t+a.c*e+a.tx,a.b*t+a.d*e+a.ty,i,s,n,o),this}arcTo(t,e,i,s,n){this._tick++;const o=this._transform;return this._activePath.arcTo(o.a*t+o.c*e+o.tx,o.b*t+o.d*e+o.ty,o.a*i+o.c*s+o.tx,o.b*i+o.d*s+o.ty,n),this}arcToSvg(t,e,i,s,n,o,a){this._tick++;const u=this._transform;return this._activePath.arcToSvg(t,e,i,s,n,u.a*o+u.c*a+u.tx,u.b*o+u.d*a+u.ty),this}bezierCurveTo(t,e,i,s,n,o,a){this._tick++;const u=this._transform;return this._activePath.bezierCurveTo(u.a*t+u.c*e+u.tx,u.b*t+u.d*e+u.ty,u.a*i+u.c*s+u.tx,u.b*i+u.d*s+u.ty,u.a*n+u.c*o+u.tx,u.b*n+u.d*o+u.ty,a),this}closePath(){var t;return this._tick++,(t=this._activePath)==null||t.closePath(),this}ellipse(t,e,i,s){return this._tick++,this._activePath.ellipse(t,e,i,s,this._transform.clone()),this}circle(t,e,i){return this._tick++,this._activePath.circle(t,e,i,this._transform.clone()),this}path(t){return this._tick++,this._activePath.addPath(t,this._transform.clone()),this}lineTo(t,e){this._tick++;const i=this._transform;return this._activePath.lineTo(i.a*t+i.c*e+i.tx,i.b*t+i.d*e+i.ty),this}moveTo(t,e){this._tick++;const i=this._transform,s=this._activePath.instructions,n=i.a*t+i.c*e+i.tx,o=i.b*t+i.d*e+i.ty;return s.length===1&&s[0].action==="moveTo"?(s[0].data[0]=n,s[0].data[1]=o,this):(this._activePath.moveTo(n,o),this)}quadraticCurveTo(t,e,i,s,n){this._tick++;const o=this._transform;return this._activePath.quadraticCurveTo(o.a*t+o.c*e+o.tx,o.b*t+o.d*e+o.ty,o.a*i+o.c*s+o.tx,o.b*i+o.d*s+o.ty,n),this}rect(t,e,i,s){return this._tick++,this._activePath.rect(t,e,i,s,this._transform.clone()),this}roundRect(t,e,i,s,n){return this._tick++,this._activePath.roundRect(t,e,i,s,n,this._transform.clone()),this}poly(t,e){return this._tick++,this._activePath.poly(t,e,this._transform.clone()),this}regularPoly(t,e,i,s,n=0,o){return this._tick++,this._activePath.regularPoly(t,e,i,s,n,o),this}roundPoly(t,e,i,s,n,o){return this._tick++,this._activePath.roundPoly(t,e,i,s,n,o),this}roundShape(t,e,i,s){return this._tick++,this._activePath.roundShape(t,e,i,s),this}filletRect(t,e,i,s,n){return this._tick++,this._activePath.filletRect(t,e,i,s,n),this}chamferRect(t,e,i,s,n,o){return this._tick++,this._activePath.chamferRect(t,e,i,s,n,o),this}star(t,e,i,s,n=0,o=0){return this._tick++,this._activePath.star(t,e,i,s,n,o,this._transform.clone()),this}svg(t){return this._tick++,Oh(t,this),this}restore(){const t=this._stateStack.pop();return t&&(this._transform=t.transform,this._fillStyle=t.fillStyle,this._strokeStyle=t.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:Fe({},this._fillStyle),strokeStyle:Fe({},this._strokeStyle)}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(t){return this._transform.rotate(t),this}scale(t,e=t){return this._transform.scale(t,e),this}setTransform(t,e,i,s,n,o){return t instanceof G?(this._transform.set(t.a,t.b,t.c,t.d,t.tx,t.ty),this):(this._transform.set(t,e,i,s,n,o),this)}transform(t,e,i,s,n,o){return t instanceof G?(this._transform.append(t),this):(kh.set(t,e,i,s,n,o),this._transform.append(kh),this)}translate(t,e=t){return this._transform.translate(t,e),this}clear(){return this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this.dirty||(this.emit("update",this,16),this.dirty=!0,this._boundsDirty=!0)}get bounds(){if(!this._boundsDirty)return this._bounds;const t=this._bounds;t.clear();for(let e=0;et in r?Ux(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,xr=(r,t)=>{for(var e in t||(t={}))kx.call(t,e)&&Hh(r,e,t[e]);if(Nh)for(var e of Nh(t))Lx.call(t,e)&&Hh(r,e,t[e]);return r};const uo=class Ze extends pt{constructor(t={}){super(),$x(t);const e=xr(xr({},Ze.defaultTextStyle),t);for(const i in e){const s=i;this[s]=e[i]}this.update()}get align(){return this._align}set align(t){this._align=t,this.update()}get breakWords(){return this._breakWords}set breakWords(t){this._breakWords=t,this.update()}get dropShadow(){return this._dropShadow}set dropShadow(t){t!==null&&typeof t=="object"?this._dropShadow=xr(xr({},Ze.defaultDropShadow),t):this._dropShadow=t?xr({},Ze.defaultDropShadow):null,this.update()}get fontFamily(){return this._fontFamily}set fontFamily(t){this._fontFamily=t,this.update()}get fontSize(){return this._fontSize}set fontSize(t){typeof t=="string"?this._fontSize=parseInt(t,10):this._fontSize=t,this.update()}get fontStyle(){return this._fontStyle}set fontStyle(t){this._fontStyle=t,this.update()}get fontVariant(){return this._fontVariant}set fontVariant(t){this._fontVariant=t,this.update()}get fontWeight(){return this._fontWeight}set fontWeight(t){this._fontWeight=t,this.update()}get leading(){return this._leading}set leading(t){this._leading=t,this.update()}get letterSpacing(){return this._letterSpacing}set letterSpacing(t){this._letterSpacing=t,this.update()}get lineHeight(){return this._lineHeight}set lineHeight(t){this._lineHeight=t,this.update()}get padding(){return this._padding}set padding(t){this._padding=t,this.update()}get trim(){return this._trim}set trim(t){this._trim=t,this.update()}get textBaseline(){return this._textBaseline}set textBaseline(t){this._textBaseline=t,this.update()}get whiteSpace(){return this._whiteSpace}set whiteSpace(t){this._whiteSpace=t,this.update()}get wordWrap(){return this._wordWrap}set wordWrap(t){this._wordWrap=t,this.update()}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(t){this._wordWrapWidth=t,this.update()}get fill(){return this._originalFill}set fill(t){t!==this._originalFill&&(this._originalFill=t,this._fill=Yt(t===0?"black":t,It.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(t){t!==this._originalStroke&&(this._originalStroke=t,this._stroke=Yt(t,It.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=ao(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){const t=Ze.defaultTextStyle;for(const e in t)this[e]=t[e]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new Ze({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth})}destroy(t=!1){var e,i,s,n;if(this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const o=typeof t=="boolean"?t:t==null?void 0:t.textureSource;(e=this._fill)!=null&&e.texture&&this._fill.texture.destroy(o),(i=this._originalFill)!=null&&i.texture&&this._originalFill.texture.destroy(o),(s=this._stroke)!=null&&s.texture&&this._stroke.texture.destroy(o),(n=this._originalStroke)!=null&&n.texture&&this._originalStroke.texture.destroy(o)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}};uo.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5},uo.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let Ft=uo;function $x(r){var t,e,i,s,n;const o=r;if(typeof o.dropShadow=="boolean"&&o.dropShadow){const a=Ft.defaultDropShadow;r.dropShadow={alpha:(t=o.dropShadowAlpha)!=null?t:a.alpha,angle:(e=o.dropShadowAngle)!=null?e:a.angle,blur:(i=o.dropShadowBlur)!=null?i:a.blur,color:(s=o.dropShadowColor)!=null?s:a.color,distance:(n=o.dropShadowDistance)!=null?n:a.distance}}if(o.strokeThickness!==void 0){const a=o.stroke;r.stroke={color:a,width:o.strokeThickness}}if(Array.isArray(o.fill)){const a=new Ai(0,0,0,r.fontSize*1.7),u=o.fill.map(l=>K.shared.setValue(l).toNumber());u.forEach((l,c)=>{var h;const p=(h=o.fillGradientStops[c])!=null?h:c/u.length;a.addColorStop(p,l)}),r.fill={fill:a}}}const Nx=new lt;function lo(r,t,e,i){const s=Nx;s.minX=0,s.minY=0,s.maxX=r.width/i|0,s.maxY=r.height/i|0;const n=ct.getOptimalTexture(s.width,s.height,i,!1);return n.source.uploadMethodId="image",n.source.resource=r,n.source.alphaMode="premultiply-alpha-on-upload",n.frame.width=t/i,n.frame.height=e/i,n.source.emit("update",n.source),n.updateUvs(),n}const Hx=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function Tr(r){const t=typeof r.fontSize=="number"?`${r.fontSize}px`:r.fontSize;let e=r.fontFamily;Array.isArray(r.fontFamily)||(e=r.fontFamily.split(","));for(let i=e.length-1;i>=0;i--){let s=e[i].trim();!/([\"\'])[^\'\"]+\1/.test(s)&&!Hx.includes(s)&&(s=`"${s}"`),e[i]=s}return`${r.fontStyle} ${r.fontVariant} ${r.fontWeight} ${t} ${e.join(",")}`}const co={willReadFrequently:!0},Dt=class C{static get experimentalLetterSpacingSupported(){let t=C._experimentalLetterSpacingSupported;if(t!==void 0){const e=z.get().getCanvasRenderingContext2D().prototype;t=C._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,i,s,n,o,a,u,l){this.text=t,this.style=e,this.width=i,this.height=s,this.lines=n,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=u,this.fontProperties=l}static measureText(t=" ",e,i=C._canvas,s=e.wordWrap){var n;const o=`${t}:${e.styleKey}`;if(C._measurementCache[o])return C._measurementCache[o];const a=Tr(e),u=C.measureFont(a);u.fontSize===0&&(u.fontSize=e.fontSize,u.ascent=e.fontSize);const l=C.__context;l.font=a;const c=(s?C._wordWrap(t,e,i):t).split(/(?:\r\n|\r|\n)/),h=new Array(c.length);let p=0;for(let b=0;b0&&(s?n-=e:n+=(C.graphemeSegmenter(t).length-1)*e),n}static _wordWrap(t,e,i=C._canvas){const s=i.getContext("2d",co);let n=0,o="",a="";const u=Object.create(null),{letterSpacing:l,whiteSpace:c}=e,h=C._collapseSpaces(c),p=C._collapseNewlines(c);let f=!h;const m=e.wordWrapWidth+l,_=C._tokenize(t);for(let g=0;g<_.length;g++){let b=_[g];if(C._isNewline(b)){if(!p){a+=C._addLine(o),f=!h,o="",n=0;continue}b=" "}if(h){const y=C.isBreakingSpace(b),T=C.isBreakingSpace(o[o.length-1]);if(y&&T)continue}const v=C._getFromCache(b,l,u,s);if(v>m)if(o!==""&&(a+=C._addLine(o),o="",n=0),C.canBreakWords(b,e.breakWords)){const y=C.wordWrapSplit(b);for(let T=0;Tm&&(a+=C._addLine(o),f=!1,o="",n=0),o+=E,n+=M}}else{o.length>0&&(a+=C._addLine(o),o="",n=0);const y=g===_.length-1;a+=C._addLine(b,!y),f=!1,o="",n=0}else v+n>m&&(f=!1,a+=C._addLine(o),o="",n=0),(o.length>0||!C.isBreakingSpace(b)||f)&&(o+=b,n+=v)}return a+=C._addLine(o,!1),a}static _addLine(t,e=!0){return t=C._trimRight(t),t=e?`${t} -`:t,t}static _getFromCache(t,e,i,s){let n=i[t];return typeof n!="number"&&(n=C._measureText(t,e,s)+e,i[t]=n),n}static _collapseSpaces(t){return t==="normal"||t==="pre-line"}static _collapseNewlines(t){return t==="normal"}static _trimRight(t){if(typeof t!="string")return"";for(let e=t.length-1;e>=0;e--){const i=t[e];if(!C.isBreakingSpace(i))break;t=t.slice(0,-1)}return t}static _isNewline(t){return typeof t!="string"?!1:C._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return typeof t!="string"?!1:C._breakingSpaces.includes(t.charCodeAt(0))}static _tokenize(t){const e=[];let i="";if(typeof t!="string")return e;for(let s=0;s{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const r=new Intl.Segmenter;return t=>[...r.segment(t)].map(e=>e.segment)}return r=>[...r]})(),Dt.experimentalLetterSpacing=!1,Dt._fonts={},Dt._newlines=[10,13],Dt._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288],Dt._measurementCache={};let Ut=Dt;function Sr(r,t){if(r.texture===P.WHITE&&!r.fill)return K.shared.setValue(r.color).toHex();if(r.fill){if(r.fill instanceof so){const e=r.fill,i=t.createPattern(e.texture.source.resource,"repeat"),s=e.transform.copyTo(G.shared);return s.scale(e.texture.frame.width,e.texture.frame.height),i.setTransform(s),i}else if(r.fill instanceof Ai){const e=r.fill;if(e.type==="linear"){const i=t.createLinearGradient(e.x0,e.y0,e.x1,e.y1);return e.gradientStops.forEach(s=>{i.addColorStop(s.offset,K.shared.setValue(s.color).toHex())}),i}}}else{const e=t.createPattern(r.texture.source.resource,"repeat"),i=r.matrix.copyTo(G.shared);return i.scale(r.texture.frame.width,r.texture.frame.height),e.setTransform(i),e}return"red"}class ho{constructor(t){this._activeTextures={},this._renderer=t}getTextureSize(t,e,i){const s=Ut.measureText(t||" ",i);let n=Math.ceil(Math.ceil(Math.max(1,s.width)+i.padding*2)*e),o=Math.ceil(Math.ceil(Math.max(1,s.height)+i.padding*2)*e);return n=Math.ceil(n-1e-6),o=Math.ceil(o-1e-6),n=he(n),o=he(o),{width:n,height:o}}getTexture(t,e,i,s){typeof t=="string"&&(bh("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),t={text:t,style:i,resolution:e}),t.style instanceof Ft||(t.style=new Ft(t.style));const{texture:n,canvasAndContext:o}=this.createTextureAndCanvas(t);return this._renderer.texture.initSource(n._source),Ht.returnCanvasAndContext(o),n}createTextureAndCanvas(t){var e;const{text:i,style:s}=t,n=(e=t.resolution)!=null?e:this._renderer.resolution,o=Ut.measureText(i||" ",s),a=Math.ceil(Math.ceil(Math.max(1,o.width)+s.padding*2)*n),u=Math.ceil(Math.ceil(Math.max(1,o.height)+s.padding*2)*n),l=Ht.getOptimalCanvasAndContext(a,u),{canvas:c}=l;this.renderTextToCanvas(i,s,n,l);const h=lo(c,a,u,n);if(s.trim){const p=gh(c,n);h.frame.copyFrom(p),h.updateUvs()}return{texture:h,canvasAndContext:l}}getManagedTexture(t){const e=t._getKey();if(this._activeTextures[e])return this._increaseReferenceCount(e),this._activeTextures[e].texture;const{texture:i,canvasAndContext:s}=this.createTextureAndCanvas(t);return this._activeTextures[e]={canvasAndContext:s,texture:i,usageCount:1},i}_increaseReferenceCount(t){this._activeTextures[t].usageCount++}decreaseReferenceCount(t){const e=this._activeTextures[t];if(e.usageCount--,e.usageCount===0){Ht.returnCanvasAndContext(e.canvasAndContext),ct.returnTexture(e.texture);const i=e.texture.source;i.resource=null,i.uploadMethodId="unknown",i.alphaMode="no-premultiply-alpha",this._activeTextures[t]=null}}getReferenceCount(t){return this._activeTextures[t].usageCount}renderTextToCanvas(t,e,i,s){var n,o,a,u,l,c,h;const{canvas:p,context:f}=s,m=Tr(e),_=Ut.measureText(t||" ",e),g=_.lines,b=_.lineHeight,v=_.lineWidths,y=_.maxLineWidth,T=_.fontProperties,E=p.height;f.resetTransform(),f.scale(i,i);const R=e.padding*2;if(f.clearRect(0,0,_.width+4+R,_.height+4+R),(n=e._stroke)!=null&&n.width){const A=e._stroke;f.lineWidth=A.width,f.miterLimit=A.miterLimit,f.lineJoin=A.join,f.lineCap=A.cap}f.font=m;let w,M;const S=e.dropShadow?2:1;for(let A=0;Ae.texture.destroy(!0)),this.pages=null)}}function fo(r){if(r==="")return[];typeof r=="string"&&(r=[r]);const t=[];for(let e=0,i=r.length;e!this._currentChars.includes(y)).filter((y,T,E)=>E.indexOf(y)===T);if(!o.length)return;this._currentChars=[...this._currentChars,...o];let a;this._currentPageIndex===-1?a=this._nextPage():a=this.pages[this._currentPageIndex];let{canvas:u,context:l}=a.canvasAndContext,c=a.texture.source;const h=this._style;let p=this._currentX,f=this._currentY;const m=this.baseRenderedFontSize/this.baseMeasurementFontSize,_=this._padding*m,g=h.fontStyle==="italic"?2:1;let b=0,v=!1;for(let y=0;y512&&(f+=b,b=S,p=0,f+b>512)){c.update();const N=this._nextPage();u=N.canvasAndContext.canvas,l=N.canvasAndContext.context,c=N.texture.source,f=0}const A=R/m-((i=(e=h.dropShadow)==null?void 0:e.distance)!=null?i:0)-((n=(s=h._stroke)==null?void 0:s.width)!=null?n:0);if(this.chars[T]={id:T.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:A,kerning:{}},v){this._drawGlyph(l,E,p+_,f+_,m,h);const N=c.width*m,L=c.height*m,O=new j(p/N*c.width,f/L*c.height,M/N*c.width,S/L*c.height);this.chars[T].texture=new P({source:c,frame:O}),p+=Math.ceil(M)}}c.update(),this._currentX=p,this._currentY=f,this._skipKerning&&this._applyKerning(o,l)}get pageTextures(){return this.pages}_applyKerning(t,e){const i=this._measureCache;for(let s=0;s{const m=s.width;for(let _=0;_{let f=s.chars.length-1,m=s.chars[f];for(;m===" ";)s.width-=e.chars[m].xAdvance,m=s.chars[--f];i.width=Math.max(i.width,s.width),s={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},o=!0,i.lines.push(s),i.height+=e.lineHeight},c=e.baseMeasurementFontSize/t.fontSize,h=t.letterSpacing*c,p=t.wordWrapWidth*c;for(let f=0;fp?(l(),u(a),_||s.charPositions.push(0)):(a.start=s.width,u(a),_||s.charPositions.push(0)),m==="\r"||m===` -`)s.width!==0&&l();else if(!_){const b=g.xAdvance+(g.kerning[n]||0)+h;s.width+=b,s.spaceWidth=b,s.spacesIndex.push(s.charPositions.length),s.chars.push(m)}}else{const b=g.kerning[n]||0,v=g.xAdvance+b+h;a.positions[a.index++]=a.width+b,a.chars.push(m),a.width+=v}n=m}return l(),t.align==="center"?Xx(i):t.align==="right"?zx(i):t.align==="justify"&&jx(i),i}function Xx(r){for(let t=0;tt in r?Vx(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,_o=(r,t)=>{for(var e in t||(t={}))Wx.call(t,e)&&zh(r,e,t[e]);if(Xh)for(var e of Xh(t))Yx.call(t,e)&&zh(r,e,t[e]);return r};let Kx=class{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1}}getFont(t,e){var i;let s=`${e.fontFamily}-bitmap`,n=!0;if(e._fill.fill&&(s+=e._fill.fill.uid,n=!1),!q.has(s)){const a=new mo(_o({style:e,overrideFill:n,overrideSize:!0},this.defaultOptions));a.once("destroy",()=>q.remove(s)),q.set(s,a)}const o=q.get(s);return(i=o.ensureCharacters)==null||i.call(o,t),o}getLayout(t,e){const i=this.getFont(t,e);return go([...t],e,i)}measureText(t,e){return this.getLayout(t,e)}install(...t){var e,i,s,n;let o=t[0];typeof o=="string"&&(o={name:o,style:t[1],chars:(e=t[2])==null?void 0:e.chars,resolution:(i=t[2])==null?void 0:i.resolution,padding:(s=t[2])==null?void 0:s.padding,skipKerning:(n=t[2])==null?void 0:n.skipKerning});const a=o==null?void 0:o.name;if(!a)throw new Error("[BitmapFontManager] Property `name` is required.");o=_o(_o({},this.defaultOptions),o);const u=o.style,l=u instanceof Ft?u:new Ft(u),c=l._fill.fill!==null&&l._fill.fill!==void 0,h=new mo({style:l,overrideFill:c,skipKerning:o.skipKerning,padding:o.padding,resolution:o.resolution,overrideSize:!1}),p=fo(o.chars);return h.ensureCharacters(p.join("")),q.set(`${a}-bitmap`,h),h.once("destroy",()=>q.remove(`${a}-bitmap`)),h}uninstall(t){const e=`${t}-bitmap`,i=q.get(e);i&&(q.remove(e),i.destroy())}};const Er=new Kx;class bo extends po{constructor(t,e){var i;super();const{textures:s,data:n}=t;Object.keys(n.pages).forEach(o=>{const a=n.pages[parseInt(o,10)],u=s[a.id];this.pages.push({texture:u})}),Object.keys(n.chars).forEach(o=>{var a;const u=n.chars[o],{frame:l,source:c}=s[u.page],h=new j(u.x+l.x,u.y+l.y,u.width,u.height),p=new P({source:c,frame:h});this.chars[o]={id:o.codePointAt(0),xOffset:u.xOffset,yOffset:u.yOffset,xAdvance:u.xAdvance,kerning:(a=u.kerning)!=null?a:{},texture:p}}),this.baseRenderedFontSize=n.fontSize,this.baseMeasurementFontSize=n.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:n.fontSize},this.baseLineOffset=n.baseLineOffset,this.lineHeight=n.lineHeight,this.fontFamily=n.fontFamily,this.distanceField=(i=n.distanceField)!=null?i:{type:"none",range:0},this.url=e}destroy(){super.destroy();for(let t=0;t")?vo.test(z.get().parseXML(r)):!1},parse(r){return vo.parse(z.get().parseXML(r))}},qx=[".xml",".fnt"],jh={extension:x.CacheParser,test:r=>r instanceof bo,getCacheableAssets(r,t){const e={};return r.forEach(i=>{e[i]=t}),e[`${t.fontFamily}-bitmap`]=t,e}},Vh={extension:{type:x.LoadParser,priority:_t.Normal},test(r){return qx.includes(ft.extname(r).toLowerCase())},async testParse(r){return Gi.test(r)||yo.test(r)},async parse(r,t,e){const i=Gi.test(r)?Gi.parse(r):yo.parse(r),{src:s}=t,{pages:n}=i,o=[];for(let l=0;la[l]);return new bo({data:i,textures:u},s)},async load(r,t){return await(await z.get().fetch(r)).text()},async unload(r,t,e){await Promise.all(r.pages.map(i=>e.unload(i.texture.source._sourceOrigin))),r.destroy()}};var Zx=Object.defineProperty,Bi=Object.getOwnPropertySymbols,Wh=Object.prototype.hasOwnProperty,Yh=Object.prototype.propertyIsEnumerable,Kh=(r,t,e)=>t in r?Zx(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Qx=(r,t)=>{for(var e in t||(t={}))Wh.call(t,e)&&Kh(r,e,t[e]);if(Bi)for(var e of Bi(t))Yh.call(t,e)&&Kh(r,e,t[e]);return r},Jx=(r,t)=>{var e={};for(var i in r)Wh.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Bi)for(var i of Bi(r))t.indexOf(i)<0&&Yh.call(r,i)&&(e[i]=r[i]);return e};class De extends Y{constructor(t){t instanceof It&&(t={context:t});const e=t||{},{context:i,roundPixels:s}=e,n=Jx(e,["context","roundPixels"]);super(Qx({label:"Graphics"},n)),this.canBundle=!0,this.renderPipeId="graphics",this._roundPixels=0,i?this._context=i:this._context=this._ownedContext=new It,this._context.on("update",this.onViewUpdate,this),this.allowChildren=!1,this.roundPixels=s!=null?s:!1}set context(t){t!==this._context&&(this._context.off("update",this.onViewUpdate,this),this._context=t,this._context.on("update",this.onViewUpdate,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}addBounds(t){t.addBounds(this._context.bounds)}containsPoint(t){return this._context.containsPoint(t)}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}onViewUpdate(){if(this._didChangeId+=4096,this._didGraphicsUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}destroy(t){this._ownedContext&&!t?this._ownedContext.destroy(t):(t===!0||(t==null?void 0:t.context)===!0)&&this._context.destroy(t),this._ownedContext=null,this._context=null,super.destroy(t)}_callContextMethod(t,e){return this.context[t](...e),this}setFillStyle(...t){return this._callContextMethod("setFillStyle",t)}setStrokeStyle(...t){return this._callContextMethod("setStrokeStyle",t)}fill(...t){return this._callContextMethod("fill",t)}stroke(...t){return this._callContextMethod("stroke",t)}texture(...t){return this._callContextMethod("texture",t)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...t){return this._callContextMethod("arc",t)}arcTo(...t){return this._callContextMethod("arcTo",t)}arcToSvg(...t){return this._callContextMethod("arcToSvg",t)}bezierCurveTo(...t){return this._callContextMethod("bezierCurveTo",t)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...t){return this._callContextMethod("ellipse",t)}circle(...t){return this._callContextMethod("circle",t)}path(...t){return this._callContextMethod("path",t)}lineTo(...t){return this._callContextMethod("lineTo",t)}moveTo(...t){return this._callContextMethod("moveTo",t)}quadraticCurveTo(...t){return this._callContextMethod("quadraticCurveTo",t)}rect(...t){return this._callContextMethod("rect",t)}roundRect(...t){return this._callContextMethod("roundRect",t)}poly(...t){return this._callContextMethod("poly",t)}regularPoly(...t){return this._callContextMethod("regularPoly",t)}roundPoly(...t){return this._callContextMethod("roundPoly",t)}roundShape(...t){return this._callContextMethod("roundShape",t)}filletRect(...t){return this._callContextMethod("filletRect",t)}chamferRect(...t){return this._callContextMethod("chamferRect",t)}star(...t){return this._callContextMethod("star",t)}svg(...t){return this._callContextMethod("svg",t)}restore(...t){return this._callContextMethod("restore",t)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...t){return this._callContextMethod("rotate",t)}scaleTransform(...t){return this._callContextMethod("scale",t)}setTransform(...t){return this._callContextMethod("setTransform",t)}transform(...t){return this._callContextMethod("transform",t)}translateTransform(...t){return this._callContextMethod("translate",t)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(t){this._context.fillStyle=t}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(t){this._context.strokeStyle=t}clone(t=!1){return t?new De(this._context.clone()):(this._ownedContext=null,new De(this._context))}lineStyle(t,e,i){const s={};return t&&(s.width=t),e&&(s.color=e),i&&(s.alpha=i),this.context.strokeStyle=s,this}beginFill(t,e){const i={};return t&&(i.color=t),e&&(i.alpha=e),this.context.fillStyle=i,this}endFill(){this.context.fill();const t=this.context.strokeStyle;return(t.width!==It.defaultStrokeStyle.width||t.color!==It.defaultStrokeStyle.color||t.alpha!==It.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...t){return this._callContextMethod("circle",t)}drawEllipse(...t){return this._callContextMethod("ellipse",t)}drawPolygon(...t){return this._callContextMethod("poly",t)}drawRect(...t){return this._callContextMethod("rect",t)}drawRoundedRect(...t){return this._callContextMethod("roundRect",t)}drawStar(...t){return this._callContextMethod("star",t)}}let Ii;function qh(){if(!Ii){Ii="mediump";const r=xn();r&&r.getShaderPrecisionFormat&&(Ii=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision?"highp":"mediump")}return Ii}function Zh(r,t,e){return t?r:e?(r=r.replace("out vec4 finalColor;",""),` - - #ifdef GL_ES // This checks if it is WebGL1 - #define in varying - #define finalColor gl_FragColor - #define texture texture2D - #endif - ${r} - `):` - - #ifdef GL_ES // This checks if it is WebGL1 - #define in attribute - #define out varying - #endif - ${r} - `}function Qh(r,t,e){const i=e?t.maxSupportedFragmentPrecision:t.maxSupportedVertexPrecision;if(r.substring(0,9)!=="precision"){let s=e?t.requestedFragmentPrecision:t.requestedVertexPrecision;return s==="highp"&&i!=="highp"&&(s="mediump"),`precision ${s} float; -${r}`}else if(i!=="highp"&&r.substring(0,15)==="precision highp")return r.replace("precision highp","precision mediump");return r}function Jh(r,t){return t?`#version 300 es -${r}`:r}const t0={},e0={};function td(r,{name:t="pixi-program"},e=!0){t=t.replace(/\s+/g,"-"),t+=e?"-fragment":"-vertex";const i=e?t0:e0;return i[t]?(i[t]++,t+=`-${i[t]}`):i[t]=1,r.indexOf("#define SHADER_NAME")!==-1?r:`${`#define SHADER_NAME ${t}`} -${r}`}function ed(r,t){return t?r.replace("#version 300 es",""):r}var r0=Object.defineProperty,rd=Object.getOwnPropertySymbols,i0=Object.prototype.hasOwnProperty,s0=Object.prototype.propertyIsEnumerable,id=(r,t,e)=>t in r?r0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,sd=(r,t)=>{for(var e in t||(t={}))i0.call(t,e)&&id(r,e,t[e]);if(rd)for(var e of rd(t))s0.call(t,e)&&id(r,e,t[e]);return r};const xo={stripVersion:ed,ensurePrecision:Qh,addProgramDefines:Zh,setProgramName:td,insertVersion:Jh},To=Object.create(null),nd=class Qu{constructor(t){t=sd(sd({},Qu.defaultOptions),t);const e=t.fragment.indexOf("#version 300 es")!==-1,i={stripVersion:e,ensurePrecision:{requestedFragmentPrecision:t.preferredFragmentPrecision,requestedVertexPrecision:t.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:qh()},setProgramName:{name:t.name},addProgramDefines:e,insertVersion:e};let s=t.fragment,n=t.vertex;Object.keys(xo).forEach(o=>{const a=i[o];s=xo[o](s,a,!0),n=xo[o](n,a,!1)}),this.fragment=s,this.vertex=n,this._key=_r(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(t){const e=`${t.vertex}:${t.fragment}`;return To[e]||(To[e]=new Qu(t)),To[e]}};nd.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let Mt=nd;const od={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function Ue(r){var t;return(t=od[r])!=null?t:od.float32}const n0={f32:"float32","vec2":"float32x2","vec3":"float32x3","vec4":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2":"sint32x2","vec3":"sint32x3","vec4":"sint32x4",u32:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4",bool:"uint32","vec2":"uint32x2","vec3":"uint32x3","vec4":"uint32x4"};function ad({source:r,entryPoint:t}){var e;const i={},s=r.indexOf(`fn ${t}`);if(s!==-1){const n=r.indexOf("->",s);if(n!==-1){const o=r.substring(s,n),a=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g;let u;for(;(u=a.exec(o))!==null;){const l=(e=n0[u[3]])!=null?e:"float32";i[u[2]]={location:parseInt(u[1],10),format:l,stride:Ue(l).stride,offset:0,instance:!1,start:0}}}}return i}function Fi(r){var t,e,i;const s=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,n=/@group\((\d+)\)/,o=/@binding\((\d+)\)/,a=/var(<[^>]+>)? (\w+)/,u=/:\s*(\w+)/,l=/struct\s+(\w+)\s*{([^}]+)}/g,c=/(\w+)\s*:\s*([\w\<\>]+)/g,h=/struct\s+(\w+)/,p=(t=r.match(s))==null?void 0:t.map(m=>({group:parseInt(m.match(n)[1],10),binding:parseInt(m.match(o)[1],10),name:m.match(a)[2],isUniform:m.match(a)[1]==="",type:m.match(u)[1]}));if(!p)return{groups:[],structs:[]};const f=(i=(e=r.match(l))==null?void 0:e.map(m=>{const _=m.match(h)[1],g=m.match(c).reduce((b,v)=>{const[y,T]=v.split(":");return b[y.trim()]=T.trim(),b},{});return g?{name:_,members:g}:null}).filter(({name:m})=>p.some(_=>_.type===m)))!=null?i:[];return{groups:p,structs:f}}var ke=(r=>(r[r.VERTEX=1]="VERTEX",r[r.FRAGMENT=2]="FRAGMENT",r[r.COMPUTE=4]="COMPUTE",r))(ke||{});function ud({groups:r}){const t=[];for(let e=0;ee.has(o.name)?!1:(e.add(o.name),!0)),n=[...r.groups,...t.groups].filter(o=>{const a=`${o.name}-${o.binding}`;return i.has(a)?!1:(i.add(a),!0)});return{structs:s,groups:n}}const So=Object.create(null);class vt{constructor(t){this._layoutKey=0;var e,i;const{fragment:s,vertex:n,layout:o,gpuLayout:a,name:u}=t;if(this.name=u,this.fragment=s,this.vertex=n,s.source===n.source){const l=Fi(s.source);this.structsAndGroups=l}else{const l=Fi(n.source),c=Fi(s.source);this.structsAndGroups=cd(l,c)}this.layout=o!=null?o:ld(this.structsAndGroups),this.gpuLayout=a!=null?a:ud(this.structsAndGroups),this.autoAssignGlobalUniforms=((e=this.layout[0])==null?void 0:e.globalUniforms)!==void 0,this.autoAssignLocalUniforms=((i=this.layout[1])==null?void 0:i.localUniforms)!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:t,fragment:e}=this,i=t.source+e.source+t.entryPoint+e.entryPoint;this._layoutKey=_r(i,"program")}get attributeData(){var t;return(t=this._attributeData)!=null||(this._attributeData=ad(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(t){const e=`${t.vertex.source}:${t.fragment.source}:${t.fragment.entryPoint}:${t.vertex.entryPoint}`;return So[e]||(So[e]=new vt(t)),So[e]}}function Eo(r,t,e){if(r)for(const i in r){const s=i.toLocaleLowerCase(),n=t[s];if(n){let o=r[i];i==="header"&&(o=o.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),e&&n.push(`//----${e}----//`),n.push(o)}}}const hd=/\{\{(.*?)\}\}/g;function Ao(r){var t,e;const i={};return((e=(t=r.match(hd))==null?void 0:t.map(s=>s.replace(/[{()}]/g,"")))!=null?e:[]).forEach(s=>{i[s]=[]}),i}function dd(r,t){let e;const i=/@in\s+([^;]+);/g;for(;(e=i.exec(r))!==null;)t.push(e[1])}function Po(r,t,e=!1){const i=[];dd(t,i),r.forEach(a=>{a.header&&dd(a.header,i)});const s=i;e&&s.sort();const n=s.map((a,u)=>` @location(${u}) ${a},`).join(` -`);let o=t.replace(/@in\s+[^;]+;\s*/g,"");return o=o.replace("{{in}}",` -${n} -`),o}function pd(r,t){let e;const i=/@out\s+([^;]+);/g;for(;(e=i.exec(r))!==null;)t.push(e[1])}function o0(r){const t=/\b(\w+)\s*:/g.exec(r);return t?t[1]:""}function a0(r){const t=/@.*?\s+/g;return r.replace(t,"")}function fd(r,t){const e=[];pd(t,e),r.forEach(u=>{u.header&&pd(u.header,e)});let i=0;const s=e.sort().map(u=>u.indexOf("builtin")>-1?u:`@location(${i++}) ${u}`).join(`, -`),n=e.sort().map(u=>` var ${a0(u)};`).join(` -`),o=`return VSOutput( - ${e.sort().map(u=>` ${o0(u)}`).join(`, -`)});`;let a=t.replace(/@out\s+[^;]+;\s*/g,"");return a=a.replace("{{struct}}",` -${s} -`),a=a.replace("{{start}}",` -${n} -`),a=a.replace("{{return}}",` -${o} -`),a}function wo(r,t){let e=r;for(const i in t){const s=t[i];s.join(` -`).length?e=e.replace(`{{${i}}}`,`//-----${i} START-----// -${s.join(` -`)} -//----${i} FINISH----//`):e=e.replace(`{{${i}}}`,"")}return e}const ve=Object.create(null),Ro=new Map;let u0=0;function md({template:r,bits:t}){const e=_d(r,t);if(ve[e])return ve[e];const{vertex:i,fragment:s}=l0(r,t);return ve[e]=bd(i,s,t),ve[e]}function gd({template:r,bits:t}){const e=_d(r,t);return ve[e]||(ve[e]=bd(r.vertex,r.fragment,t)),ve[e]}function l0(r,t){const e=t.map(o=>o.vertex).filter(o=>!!o),i=t.map(o=>o.fragment).filter(o=>!!o);let s=Po(e,r.vertex,!0);s=fd(e,s);const n=Po(i,r.fragment,!0);return{vertex:s,fragment:n}}function _d(r,t){return t.map(e=>(Ro.has(e)||Ro.set(e,u0++),Ro.get(e))).sort((e,i)=>e-i).join("-")+r.vertex+r.fragment}function bd(r,t,e){const i=Ao(r),s=Ao(t);return e.forEach(n=>{Eo(n.vertex,i,n.name),Eo(n.fragment,s,n.name)}),{vertex:wo(r,i),fragment:wo(t,s)}}const vd=` - @in aPosition: vec2; - @in aUV: vec2; - - @out @builtin(position) vPosition: vec4; - @out vUV : vec2; - @out vColor : vec4; - - {{header}} - - struct VSOutput { - {{struct}} - }; - - @vertex - fn main( {{in}} ) -> VSOutput { - - var worldTransformMatrix = globalUniforms.uWorldTransformMatrix; - var modelMatrix = mat3x3( - 1.0, 0.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, 0.0, 1.0 - ); - var position = aPosition; - var uv = aUV; - - {{start}} - - vColor = vec4(1., 1., 1., 1.); - - {{main}} - - vUV = uv; - - var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix; - - vPosition = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); - - vColor *= globalUniforms.uWorldColorAlpha; - - {{end}} - - {{return}} - }; -`,yd=` - @in vUV : vec2; - @in vColor : vec4; - - {{header}} - - @fragment - fn main( - {{in}} - ) -> @location(0) vec4 { - - {{start}} - - var outColor:vec4; - - {{main}} - - return outColor * vColor; - }; -`,xd=` - in vec2 aPosition; - in vec2 aUV; - - out vec4 vColor; - out vec2 vUV; - - {{header}} - - void main(void){ - - mat3 worldTransformMatrix = uWorldTransformMatrix; - mat3 modelMatrix = mat3( - 1.0, 0.0, 0.0, - 0.0, 1.0, 0.0, - 0.0, 0.0, 1.0 - ); - vec2 position = aPosition; - vec2 uv = aUV; - - {{start}} - - vColor = vec4(1.); - - {{main}} - - vUV = uv; - - mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix; - - gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0); - - vColor *= uWorldColorAlpha; - - {{end}} - } -`,Td=` - - in vec4 vColor; - in vec2 vUV; - - out vec4 finalColor; - - {{header}} - - void main(void) { - - {{start}} - - vec4 outColor; - - {{main}} - - finalColor = outColor * vColor; - } -`,Sd={name:"global-uniforms-bit",vertex:{header:` - struct GlobalUniforms { - uProjectionMatrix:mat3x3, - uWorldTransformMatrix:mat3x3, - uWorldColorAlpha: vec4, - uResolution: vec2, - } - - @group(0) @binding(0) var globalUniforms : GlobalUniforms; - `}},c0={name:"global-uniforms-ubo-bit",vertex:{header:` - uniform globalUniforms { - mat3 uProjectionMatrix; - mat3 uWorldTransformMatrix; - vec4 uWorldColorAlpha; - vec2 uResolution; - }; - `}},Ed={name:"global-uniforms-bit",vertex:{header:` - uniform mat3 uProjectionMatrix; - uniform mat3 uWorldTransformMatrix; - uniform vec4 uWorldColorAlpha; - uniform vec2 uResolution; - `}};var h0=Object.defineProperty,Ad=Object.getOwnPropertySymbols,d0=Object.prototype.hasOwnProperty,p0=Object.prototype.propertyIsEnumerable,Pd=(r,t,e)=>t in r?h0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,f0=(r,t)=>{for(var e in t||(t={}))d0.call(t,e)&&Pd(r,e,t[e]);if(Ad)for(var e of Ad(t))p0.call(t,e)&&Pd(r,e,t[e]);return r};function Le({bits:r,name:t}){const e=md({template:{fragment:yd,vertex:vd},bits:[Sd,...r]});return vt.from({name:t,vertex:{source:e.vertex,entryPoint:"main"},fragment:{source:e.fragment,entryPoint:"main"}})}function $e({bits:r,name:t}){return new Mt(f0({name:t},gd({template:{vertex:xd,fragment:Td},bits:[Ed,...r]})))}const Di={name:"color-bit",vertex:{header:` - @in aColor: vec4; - `,main:` - vColor *= vec4(aColor.rgb * aColor.a, aColor.a); - `}},Ui={name:"color-bit",vertex:{header:` - in vec4 aColor; - `,main:` - vColor *= vec4(aColor.rgb * aColor.a, aColor.a); - `}},Mo={};function m0(r){const t=[];if(r===1)t.push("@group(1) @binding(0) var textureSource1: texture_2d;"),t.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let e=0;for(let i=0;i;`),t.push(`@group(1) @binding(${e++}) var textureSampler${i+1}: sampler;`)}return t.join(` -`)}function g0(r){const t=[];if(r===1)t.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{t.push("switch vTextureId {");for(let e=0;e; - @out @interpolate(flat) vTextureId : u32; - `,main:` - vTextureId = aTextureIdAndRound.y; - `,end:` - if(aTextureIdAndRound.x == 1) - { - vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw); - } - `},fragment:{header:` - @in @interpolate(flat) vTextureId: u32; - - ${m0(dt)} - `,main:` - var uvDx = dpdx(vUV); - var uvDy = dpdy(vUV); - - ${g0(dt)} - `}}),Mo[r]}const Co={};function _0(r){const t=[];for(let e=0;e0&&t.push("else"),e, targetSize: vec2) -> vec2 - { - return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0; - } - `}},He={name:"round-pixels-bit",vertex:{header:` - vec2 roundPixels(vec2 position, vec2 targetSize) - { - return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0; - } - `}},wd=new Int32Array(dt);for(let r=0;r(r[r.WEBGL=1]="WEBGL",r[r.WEBGPU=2]="WEBGPU",r[r.BOTH=3]="BOTH",r))(yt||{}),b0=Object.defineProperty,Ni=Object.getOwnPropertySymbols,Rd=Object.prototype.hasOwnProperty,Md=Object.prototype.propertyIsEnumerable,Cd=(r,t,e)=>t in r?b0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,v0=(r,t)=>{for(var e in t||(t={}))Rd.call(t,e)&&Cd(r,e,t[e]);if(Ni)for(var e of Ni(t))Md.call(t,e)&&Cd(r,e,t[e]);return r},y0=(r,t)=>{var e={};for(var i in r)Rd.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Ni)for(var i of Ni(r))t.indexOf(i)<0&&Md.call(r,i)&&(e[i]=r[i]);return e};class xt extends pt{constructor(t){super(),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram:e,glProgram:i,groups:s,resources:n,compatibleRenderers:o,groupMap:a}=t;this.gpuProgram=e,this.glProgram=i,o===void 0&&(o=0,e&&(o|=yt.WEBGPU),i&&(o|=yt.WEBGL)),this.compatibleRenderers=o;const u={};if(!n&&!s&&(n={}),n&&s)throw new Error("[Shader] Cannot have both resources and groups");if(!e&&s&&!a)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!e&&s&&a)for(const l in a)for(const c in a[l]){const h=a[l][c];u[h]={group:l,binding:c,name:h}}else if(e&&s&&!a){const l=e.structsAndGroups.groups;a={},l.forEach(c=>{a[c.group]=a[c.group]||{},a[c.group][c.binding]=c.name,u[c.name]=c})}else if(n){if(e){const l=e.structsAndGroups.groups;a={},l.forEach(c=>{a[c.group]=a[c.group]||{},a[c.group][c.binding]=c.name,u[c.name]=c})}else{a={},s={99:new Nt},this._ownedBindGroups.push(s[99]);let l=0;for(const c in n)u[c]={group:99,binding:l,name:c},a[99]=a[99]||{},a[99][l]=c,l++}s={};for(const l in n){const c=l;let h=n[l];!h.source&&!h._resourceType&&(h=new nt(h));const p=u[c];p&&(s[p.group]||(s[p.group]=new Nt,this._ownedBindGroups.push(s[p.group])),s[p.group].setResource(h,p.binding))}}this.groups=s,this._uniformBindMap=a,this.resources=this._buildResourceAccessor(s,u)}addResource(t,e,i){var s,n;(s=this._uniformBindMap)[e]||(s[e]={}),(n=this._uniformBindMap[e])[i]||(n[i]=t),this.groups[e]||(this.groups[e]=new Nt,this._ownedBindGroups.push(this.groups[e]))}_buildResourceAccessor(t,e){const i={};for(const s in e){const n=e[s];Object.defineProperty(i,n.name,{get(){return t[n.group].getResource(n.binding)},set(o){t[n.group].setResource(o,n.binding)}})}return i}destroy(t=!1){var e,i;this.emit("destroy",this),t&&((e=this.gpuProgram)==null||e.destroy(),(i=this.glProgram)==null||i.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(s=>{s.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(t){const e=t,{gpu:i,gl:s}=e,n=y0(e,["gpu","gl"]);let o,a;return i&&(o=vt.from(i)),s&&(a=Mt.from(s)),new xt(v0({gpuProgram:o,glProgram:a},n))}}const Od={name:"local-uniform-msdf-bit",vertex:{header:` - struct LocalUniforms { - uColor:vec4, - uTransformMatrix:mat3x3, - uDistance: f32, - uRound:f32, - } - - @group(2) @binding(0) var localUniforms : LocalUniforms; - `,main:` - vColor *= localUniforms.uColor; - modelMatrix *= localUniforms.uTransformMatrix; - `,end:` - if(localUniforms.uRound == 1) - { - vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw); - } - `},fragment:{header:` - struct LocalUniforms { - uColor:vec4, - uTransformMatrix:mat3x3, - uDistance: f32 - } - - @group(2) @binding(0) var localUniforms : LocalUniforms; - `,main:` - outColor = vColor * calculateMSDFAlpha(outColor, localUniforms.uDistance); - `}},Gd={name:"local-uniform-msdf-bit",vertex:{header:` - uniform mat3 uTransformMatrix; - uniform vec4 uColor; - uniform float uRound; - `,main:` - vColor *= uColor; - modelMatrix *= uTransformMatrix; - `,end:` - if(uRound == 1.) - { - gl_Position.xy = roundPixels(gl_Position.xy, uResolution); - } - `},fragment:{header:` - uniform float uDistance; - `,main:` - outColor = vColor * calculateMSDFAlpha(outColor, uDistance); - `}},Bd={name:"msdf-bit",fragment:{header:` - fn calculateMSDFAlpha(msdfColor:vec4, distance:f32) -> f32 { - - // MSDF - var median = msdfColor.r + msdfColor.g + msdfColor.b - - min(msdfColor.r, min(msdfColor.g, msdfColor.b)) - - max(msdfColor.r, max(msdfColor.g, msdfColor.b)); - - // SDF - median = min(median, msdfColor.a); - - var screenPxDistance = distance * (median - 0.5); - var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0); - if (median < 0.01) { - alpha = 0.0; - } else if (median > 0.99) { - alpha = 1.0; - } - - return alpha; - } - `}},Id={name:"msdf-bit",fragment:{header:` - float calculateMSDFAlpha(vec4 msdfColor, float distance) { - - // MSDF - float median = msdfColor.r + msdfColor.g + msdfColor.b - - min(msdfColor.r, min(msdfColor.g, msdfColor.b)) - - max(msdfColor.r, max(msdfColor.g, msdfColor.b)); - - // SDF - median = min(median, msdfColor.a); - - float screenPxDistance = distance * (median - 0.5); - float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0); - - if (median < 0.01) { - alpha = 0.0; - } else if (median > 0.99) { - alpha = 1.0; - } - - return alpha; - } - `}};class Fd extends xt{constructor(){const t=new nt({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uTransformMatrix:{value:new G,type:"mat3x3"},uDistance:{value:4,type:"f32"},uRound:{value:0,type:"f32"}}),e=Le({name:"sdf-shader",bits:[Di,ki(dt),Od,Bd,Ne]}),i=$e({name:"sdf-shader",bits:[Ui,Li(dt),Gd,Id,He]});super({glProgram:i,gpuProgram:e,resources:{localUniforms:t,batchSamplers:$i}})}}class Oo{constructor(t){this._gpuBitmapText={},this._renderer=t}validateRenderable(t){const e=this._getGpuBitmapText(t);return t._didTextUpdate&&(t._didTextUpdate=!1,this._updateContext(t,e)),this._renderer.renderPipes.graphics.validateRenderable(e)}addRenderable(t,e){const i=this._getGpuBitmapText(t);Dd(t,i),t._didTextUpdate&&(t._didTextUpdate=!1,this._updateContext(t,i)),this._renderer.renderPipes.graphics.addRenderable(i,e),i.context.customShader&&this._updateDistanceField(t)}destroyRenderable(t){this._destroyRenderableByUid(t.uid)}_destroyRenderableByUid(t){W.return(this._gpuBitmapText[t]),this._gpuBitmapText[t]=null}updateRenderable(t){const e=this._getGpuBitmapText(t);Dd(t,e),this._renderer.renderPipes.graphics.updateRenderable(e),e.context.customShader&&this._updateDistanceField(t)}_updateContext(t,e){var i;const{context:s}=e,n=Er.getFont(t.text,t._style);s.clear(),n.distanceField.type!=="none"&&(s.customShader||(this._sdfShader||(this._sdfShader=new Fd),s.customShader=this._sdfShader));const o=Array.from(t.text),a=t._style;let u=(((i=a._stroke)==null?void 0:i.width)||0)/2;u+=n.baseLineOffset;const l=go(o,a,n);let c=0;const h=a.padding,p=l.scale;s.translate(-t._anchor._x*l.width-h,-t._anchor._y*(l.height+l.offsetY)-h).scale(p,p);const f=a._fill.color;for(let m=0;m{this.destroyRenderable(t)}),this._gpuBitmapText[t.uid]}_updateDistanceField(t){var e;const i=this._getGpuBitmapText(t).context,s=t._style.fontFamily,n=q.get(`${s}-bitmap`),{a:o,b:a,c:u,d:l}=t.groupTransform,c=Math.sqrt(o*o+a*a),h=Math.sqrt(u*u+l*l),p=(Math.abs(c)+Math.abs(h))/2,f=n.baseRenderedFontSize/t._style.fontSize,m=(e=t.resolution)!=null?e:this._renderer.resolution,_=p*n.distanceField.range*(1/f)*m;i.customShader.resources.localUniforms.uniforms.uDistance=_}destroy(){var t;for(const e in this._gpuBitmapText)this._destroyRenderableByUid(e);this._gpuBitmapText=null,(t=this._sdfShader)==null||t.destroy(!0),this._sdfShader=null,this._renderer=null}}Oo.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"bitmapText"};function Dd(r,t){t.groupTransform=r.groupTransform,t.groupColorAlpha=r.groupColorAlpha,t.groupColor=r.groupColor,t.groupBlendMode=r.groupBlendMode,t.globalDisplayStatus=r.globalDisplayStatus,t.groupTransform=r.groupTransform,t.localDisplayStatus=r.localDisplayStatus,t.groupAlpha=r.groupAlpha,t._roundPixels=r._roundPixels}U.add(Oo,Vh,jh);class Go{constructor(t){this._gpuText=Object.create(null),this._renderer=t}validateRenderable(t){const e=this._getGpuText(t),i=t._getKey();return e.textureNeedsUploading?(e.textureNeedsUploading=!1,!0):e.currentKey!==i}addRenderable(t){const e=this._getGpuText(t).batchableSprite;t._didTextUpdate&&this._updateText(t),this._renderer.renderPipes.batch.addToBatch(e)}updateRenderable(t){const e=this._getGpuText(t).batchableSprite;t._didTextUpdate&&this._updateText(t),e.batcher.updateElement(e)}destroyRenderable(t){this._destroyRenderableById(t.uid)}_destroyRenderableById(t){const e=this._gpuText[t];this._renderer.htmlText.decreaseReferenceCount(e.currentKey),W.return(e.batchableSprite),this._gpuText[t]=null}_updateText(t){const e=t._getKey(),i=this._getGpuText(t),s=i.batchableSprite;i.currentKey!==e&&this._updateGpuText(t).catch(o=>{console.error(o)}),t._didTextUpdate=!1;const n=t._style.padding;lr(s.bounds,t._anchor,s.texture,n)}async _updateGpuText(t){var e;t._didTextUpdate=!1;const i=this._getGpuText(t);if(i.generatingTexture)return;const s=t._getKey();this._renderer.htmlText.decreaseReferenceCount(i.currentKey),i.generatingTexture=!0,i.currentKey=s;const n=(e=t.resolution)!=null?e:this._renderer.resolution,o=await this._renderer.htmlText.getManagedTexture(t.text,n,t._style,t._getKey()),a=i.batchableSprite;a.texture=i.texture=o,i.generatingTexture=!1,i.textureNeedsUploading=!0,t.onViewUpdate();const u=t._style.padding;lr(a.bounds,t._anchor,a.texture,u)}_getGpuText(t){return this._gpuText[t.uid]||this.initGpuText(t)}initGpuText(t){const e={texture:P.EMPTY,currentKey:"--",batchableSprite:W.get(Ei),textureNeedsUploading:!1,generatingTexture:!1},i=e.batchableSprite;return i.renderable=t,i.texture=P.EMPTY,i.bounds={minX:0,maxX:1,minY:0,maxY:0},i.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuText[t.uid]=e,t.on("destroyed",()=>{this.destroyRenderable(t)}),e}destroy(){for(const t in this._gpuText)this._destroyRenderableById(t);this._gpuText=null,this._renderer=null}}Go.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"htmlText"};function Ud(){const{userAgent:r}=z.get().getNavigator();return/^((?!chrome|android).)*safari/i.test(r)}const Bo="http://www.w3.org/2000/svg",Io="http://www.w3.org/1999/xhtml";class Fo{constructor(){this.svgRoot=document.createElementNS(Bo,"svg"),this.foreignObject=document.createElementNS(Bo,"foreignObject"),this.domElement=document.createElementNS(Io,"div"),this.styleElement=document.createElementNS(Io,"style"),this.image=new Image;const{foreignObject:t,svgRoot:e,styleElement:i,domElement:s}=this;t.setAttribute("width","10000"),t.setAttribute("height","10000"),t.style.overflow="hidden",e.appendChild(t),t.appendChild(i),t.appendChild(s)}}function kd(r){const t=r._stroke,e=r._fill,i=[`div { ${[`color: ${K.shared.setValue(e.color).toHex()}`,`font-size: ${r.fontSize}px`,`font-family: ${r.fontFamily}`,`font-weight: ${r.fontWeight}`,`font-style: ${r.fontStyle}`,`font-variant: ${r.fontVariant}`,`letter-spacing: ${r.letterSpacing}px`,`text-align: ${r.align}`,`padding: ${r.padding}px`,`white-space: ${r.whiteSpace==="pre"&&r.wordWrap?"pre-wrap":r.whiteSpace}`,...r.lineHeight?[`line-height: ${r.lineHeight}px`]:[],...r.wordWrap?[`word-wrap: ${r.breakWords?"break-all":"break-word"}`,`max-width: ${r.wordWrapWidth}px`]:[],...t?[$d(t)]:[],...r.dropShadow?[Ld(r.dropShadow)]:[],...r.cssOverrides].join(";")} }`];return x0(r.tagStyles,i),i.join(" ")}function Ld(r){const t=K.shared.setValue(r.color).setAlpha(r.alpha).toHexa(),e=Math.round(Math.cos(r.angle)*r.distance),i=Math.round(Math.sin(r.angle)*r.distance),s=`${e}px ${i}px`;return r.blur>0?`text-shadow: ${s} ${r.blur}px ${t}`:`text-shadow: ${s} ${t}`}function $d(r){return[`-webkit-text-stroke-width: ${r.width}px`,`-webkit-text-stroke-color: ${K.shared.setValue(r.color).toHex()}`,`text-stroke-width: ${r.width}px`,`text-stroke-color: ${K.shared.setValue(r.color).toHex()}`,"paint-order: stroke"].join(";")}const Nd={fontSize:"font-size: {{VALUE}}px",fontFamily:"font-family: {{VALUE}}",fontWeight:"font-weight: {{VALUE}}",fontStyle:"font-style: {{VALUE}}",fontVariant:"font-variant: {{VALUE}}",letterSpacing:"letter-spacing: {{VALUE}}px",align:"text-align: {{VALUE}}",padding:"padding: {{VALUE}}px",whiteSpace:"white-space: {{VALUE}}",lineHeight:"line-height: {{VALUE}}px",wordWrapWidth:"max-width: {{VALUE}}px"},Hd={fill:r=>`color: ${K.shared.setValue(r).toHex()}`,breakWords:r=>`word-wrap: ${r?"break-all":"break-word"}`,stroke:$d,dropShadow:Ld};function x0(r,t){for(const e in r){const i=r[e],s=[];for(const n in i)Hd[n]?s.push(Hd[n](i[n])):Nd[n]&&s.push(Nd[n].replace("{{VALUE}}",i[n]));t.push(`${e} { ${s.join(";")} }`)}}class ye extends Ft{constructor(t={}){var e,i;super(t),this._cssOverrides=[],(e=this.cssOverrides)!=null||(this.cssOverrides=t.cssOverrides),this.tagStyles=(i=t.tagStyles)!=null?i:{}}set cssOverrides(t){this._cssOverrides=t instanceof Array?t:[t],this.update()}get cssOverrides(){return this._cssOverrides}_generateKey(){return this._styleKey=ao(this)+this._cssOverrides.join("-"),this._styleKey}update(){this._cssStyle=null,super.update()}clone(){return new ye({align:this.align,breakWords:this.breakWords,dropShadow:this.dropShadow,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,cssOverrides:this.cssOverrides})}get cssStyle(){return this._cssStyle||(this._cssStyle=kd(this)),this._cssStyle}addOverride(...t){const e=t.filter(i=>!this.cssOverrides.includes(i));e.length>0&&(this.cssOverrides.push(...e),this.update())}removeOverride(...t){const e=t.filter(i=>this.cssOverrides.includes(i));e.length>0&&(this.cssOverrides=this.cssOverrides.filter(i=>!e.includes(i)),this.update())}set fill(t){super.fill=t}set stroke(t){super.stroke=t}}function Xd(r,t){const e=t.fontFamily,i=[],s={},n=/font-family:([^;"\s]+)/g,o=r.match(n);function a(u){s[u]||(i.push(u),s[u]=!0)}if(Array.isArray(e))for(let u=0;u{const l=u.split(":")[1].trim();a(l)});for(const u in t.tagStyles){const l=t.tagStyles[u].fontFamily;a(l)}return i}async function zd(r){const t=await(await z.get().fetch(r)).blob(),e=new FileReader;return await new Promise((i,s)=>{e.onloadend=()=>i(e.result),e.onerror=s,e.readAsDataURL(t)})}async function Do(r,t){const e=await zd(t);return`@font-face { - font-family: "${r.fontFamily}"; - src: url('${e}'); - font-weight: ${r.fontWeight}; - font-style: ${r.fontStyle}; - }`}const Ar=new Map;async function jd(r,t,e){const i=r.filter(s=>q.has(`${s}-and-url`)).map((s,n)=>{if(!Ar.has(s)){const{url:o}=q.get(`${s}-and-url`);n===0?Ar.set(s,Do(t,o)):Ar.set(s,Do({fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:s},o))}return Ar.get(s)});return(await Promise.all(i)).join(` -`)}function Vd(r,t,e,i,s){const{domElement:n,styleElement:o,svgRoot:a}=s;n.innerHTML=`
${r}
`,n.setAttribute("style",`transform: scale(${e});transform-origin: top left; display: inline-block`),o.textContent=i;const{width:u,height:l}=s.image;return a.setAttribute("width",u.toString()),a.setAttribute("height",l.toString()),new XMLSerializer().serializeToString(a)}function Wd(r,t){const e=Ht.getOptimalCanvasAndContext(r.width,r.height,t),{context:i}=e;return i.clearRect(0,0,r.width,r.height),i.drawImage(r,0,0),Ht.returnCanvasAndContext(e),e.canvas}function Yd(r,t,e){return new Promise(async i=>{e&&await new Promise(s=>setTimeout(s,100)),r.onload=()=>{i()},r.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(t)}`,r.crossOrigin="anonymous"})}let Kd;function Uo(r,t,e,i){i=i||Kd||(Kd=new Fo);const{domElement:s,styleElement:n,svgRoot:o}=i;s.innerHTML=`
${r}
`,s.setAttribute("style","transform-origin: top left; display: inline-block"),e&&(n.textContent=e),document.body.appendChild(o);const a=s.getBoundingClientRect();o.remove();const u=Ut.measureFont(t.fontStyle).descent;return{width:a.width,height:a.height+u}}class Hi{constructor(t){this._activeTextures={},this._renderer=t,this._createCanvas=t.type===yt.WEBGPU}getTexture(t){return this._buildTexturePromise(t.text,t.resolution,t.style)}getManagedTexture(t,e,i,s){if(this._activeTextures[s])return this._increaseReferenceCount(s),this._activeTextures[s].promise;const n=this._buildTexturePromise(t,e,i).then(o=>(this._activeTextures[s].texture=o,o));return this._activeTextures[s]={texture:null,promise:n,usageCount:1},n}async _buildTexturePromise(t,e,i){const s=W.get(Fo),n=Xd(t,i),o=await jd(n,i,ye.defaultTextStyle),a=Uo(t,i,o,s),u=Math.ceil(Math.ceil(Math.max(1,a.width)+i.padding*2)*e),l=Math.ceil(Math.ceil(Math.max(1,a.height)+i.padding*2)*e),c=s.image;c.width=u|0,c.height=l|0;const h=Vd(t,i,e,o,s);await Yd(c,h,Ud()&&n.length>0);let p=c;this._createCanvas&&(p=Wd(c,e));const f=lo(p,c.width,c.height,e);return this._createCanvas&&this._renderer.texture.initSource(f.source),W.return(s),f}_increaseReferenceCount(t){this._activeTextures[t].usageCount++}decreaseReferenceCount(t){const e=this._activeTextures[t];e&&(e.usageCount--,e.usageCount===0&&(e.texture?this._cleanUp(e):e.promise.then(i=>{e.texture=i,this._cleanUp(e)}).catch(()=>{}),this._activeTextures[t]=null))}_cleanUp(t){ct.returnTexture(t.texture),t.texture.source.resource=null,t.texture.source.uploadMethodId="unknown"}getReferenceCount(t){return this._activeTextures[t].usageCount}destroy(){this._activeTextures=null}}Hi.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"htmlText"},Hi.defaultFontOptions={fontFamily:"Arial",fontStyle:"normal",fontWeight:"normal"},U.add(Hi),U.add(Go);var T0=Object.defineProperty,qd=Object.getOwnPropertySymbols,S0=Object.prototype.hasOwnProperty,E0=Object.prototype.propertyIsEnumerable,Zd=(r,t,e)=>t in r?T0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Qd=(r,t)=>{for(var e in t||(t={}))S0.call(t,e)&&Zd(r,e,t[e]);if(qd)for(var e of qd(t))E0.call(t,e)&&Zd(r,e,t[e]);return r};const Jd=class Ob extends Oe{constructor(...t){var e;let i=(e=t[0])!=null?e:{};i instanceof Float32Array&&(i={positions:i,uvs:t[1],indices:t[2]}),i=Qd(Qd({},Ob.defaultOptions),i);const s=i.positions||new Float32Array([0,0,1,0,1,1,0,1]),n=i.uvs||new Float32Array([0,0,1,0,1,1,0,1]),o=i.indices||new Uint32Array([0,1,2,0,2,3]),a=i.shrinkBuffersToFit,u=new bt({data:s,label:"attribute-mesh-positions",shrinkToFit:a,usage:H.VERTEX|H.COPY_DST}),l=new bt({data:n,label:"attribute-mesh-uvs",shrinkToFit:a,usage:H.VERTEX|H.COPY_DST}),c=new bt({data:o,label:"index-mesh-buffer",shrinkToFit:a,usage:H.INDEX|H.COPY_DST});super({attributes:{aPosition:{buffer:u,format:"float32x2",stride:2*4,offset:0},aUV:{buffer:l,format:"float32x2",stride:2*4,offset:0}},indexBuffer:c,topology:i.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(t){this.attributes.aPosition.buffer.data=t}get uvs(){return this.attributes.aUV.buffer.data}set uvs(t){this.attributes.aUV.buffer.data=t}get indices(){return this.indexBuffer.data}set indices(t){this.indexBuffer.data=t}};Jd.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let Jt=Jd;var A0=Object.defineProperty,P0=Object.defineProperties,w0=Object.getOwnPropertyDescriptors,tp=Object.getOwnPropertySymbols,R0=Object.prototype.hasOwnProperty,M0=Object.prototype.propertyIsEnumerable,ep=(r,t,e)=>t in r?A0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,rp=(r,t)=>{for(var e in t||(t={}))R0.call(t,e)&&ep(r,e,t[e]);if(tp)for(var e of tp(t))M0.call(t,e)&&ep(r,e,t[e]);return r},ip=(r,t)=>P0(r,w0(t));const Xe={name:"local-uniform-bit",vertex:{header:` - - struct LocalUniforms { - uTransformMatrix:mat3x3, - uColor:vec4, - uRound:f32, - } - - @group(1) @binding(0) var localUniforms : LocalUniforms; - `,main:` - vColor *= localUniforms.uColor; - modelMatrix *= localUniforms.uTransformMatrix; - `,end:` - if(localUniforms.uRound == 1) - { - vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw); - } - `}},sp=ip(rp({},Xe),{vertex:ip(rp({},Xe.vertex),{header:Xe.vertex.header.replace("group(1)","group(2)")})}),Xi={name:"local-uniform-bit",vertex:{header:` - - uniform mat3 uTransformMatrix; - uniform vec4 uColor; - uniform float uRound; - `,main:` - vColor *= uColor; - modelMatrix = uTransformMatrix; - `,end:` - if(uRound == 1.) - { - gl_Position.xy = roundPixels(gl_Position.xy, uResolution); - } - `}},np={name:"tiling-bit",vertex:{header:` - struct TilingUniforms { - uMapCoord:mat3x3, - uClampFrame:vec4, - uClampOffset:vec2, - uTextureTransform:mat3x3, - uSizeAnchor:vec4 - }; - - @group(2) @binding(0) var tilingUniforms: TilingUniforms; - @group(2) @binding(1) var uTexture: texture_2d; - @group(2) @binding(2) var uSampler: sampler; - `,main:` - uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy; - - position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy; - `},fragment:{header:` - struct TilingUniforms { - uMapCoord:mat3x3, - uClampFrame:vec4, - uClampOffset:vec2, - uTextureTransform:mat3x3, - uSizeAnchor:vec4 - }; - - @group(2) @binding(0) var tilingUniforms: TilingUniforms; - @group(2) @binding(1) var uTexture: texture_2d; - @group(2) @binding(2) var uSampler: sampler; - `,main:` - - var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV); - coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy; - var unclamped = coord; - coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw); - - var bias = 0.; - - if(unclamped.x == coord.x && unclamped.y == coord.y) - { - bias = -32.; - } - - outColor = textureSampleBias(uTexture, uSampler, coord, bias); - `}},op={name:"tiling-bit",vertex:{header:` - uniform mat3 uTextureTransform; - uniform vec4 uSizeAnchor; - - `,main:` - uv = (uTextureTransform * vec3(aUV, 1.0)).xy; - - position = (position - uSizeAnchor.zw) * uSizeAnchor.xy; - `},fragment:{header:` - uniform sampler2D uTexture; - uniform mat3 uMapCoord; - uniform vec4 uClampFrame; - uniform vec2 uClampOffset; - `,main:` - - vec2 coord = vUV + ceil(uClampOffset - vUV); - coord = (uMapCoord * vec3(coord, 1.0)).xy; - vec2 unclamped = coord; - coord = clamp(coord, uClampFrame.xy, uClampFrame.zw); - - outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0 - - `}};let ko,Lo;class ap extends xt{constructor(){ko!=null||(ko=Le({name:"tiling-sprite-shader",bits:[Xe,np,Ne]})),Lo!=null||(Lo=$e({name:"tiling-sprite-shader",bits:[Xi,op,He]}));const t=new nt({uMapCoord:{value:new G,type:"mat3x3"},uClampFrame:{value:new Float32Array([0,0,1,1]),type:"vec4"},uClampOffset:{value:new Float32Array([0,0]),type:"vec2"},uTextureTransform:{value:new G,type:"mat3x3"},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:"vec4"}});super({glProgram:Lo,gpuProgram:ko,resources:{localUniforms:new nt({uTransformMatrix:{value:new G,type:"mat3x3"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uRound:{value:0,type:"f32"}}),tilingUniforms:t,uTexture:P.EMPTY.source,uSampler:P.EMPTY.source.style}})}updateUniforms(t,e,i,s,n,o){const a=this.resources.tilingUniforms,u=o.width,l=o.height,c=o.textureMatrix,h=a.uniforms.uTextureTransform;h.set(i.a*u/t,i.b*u/e,i.c*l/t,i.d*l/e,i.tx/t,i.ty/e),h.invert(),a.uniforms.uMapCoord=c.mapCoord,a.uniforms.uClampFrame=c.uClampFrame,a.uniforms.uClampOffset=c.uClampOffset,a.uniforms.uTextureTransform=h,a.uniforms.uSizeAnchor[0]=t,a.uniforms.uSizeAnchor[1]=e,a.uniforms.uSizeAnchor[2]=s,a.uniforms.uSizeAnchor[3]=n,o&&(this.resources.uTexture=o.source,this.resources.uSampler=o.source.style)}}class up extends Jt{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}}function lp(r,t){const e=r.anchor.x,i=r.anchor.y;t[0]=-e*r.width,t[1]=-i*r.height,t[2]=(1-e)*r.width,t[3]=-i*r.height,t[4]=(1-e)*r.width,t[5]=(1-i)*r.height,t[6]=-e*r.width,t[7]=(1-i)*r.height}function cp(r,t,e,i){let s=0;const n=r.length/(t||2),o=i.a,a=i.b,u=i.c,l=i.d,c=i.tx,h=i.ty;for(e*=t;s{this.destroyRenderable(t)}),this._tilingSpriteDataHash[t.uid]}_updateBatchableMesh(t){const e=this._getTilingSpriteData(t),{geometry:i}=e,s=t.texture.source.style;s.addressMode!=="repeat"&&(s.addressMode="repeat",s.update()),hp(t,i.uvs),lp(t,i.positions)}destroy(){for(const t in this._tilingSpriteDataHash)this.destroyRenderable(this._tilingSpriteDataHash[t].renderable);this._tilingSpriteDataHash=null,this._renderer=null}_updateCanBatch(t){const e=this._getTilingSpriteData(t),i=t.texture;let s=!0;return this._renderer.type===yt.WEBGL&&(s=this._renderer.context.supports.nonPowOf2wrapping),e.canBatch=i.textureMatrix.isSimple&&(s||i.source.isPowerOfTwo),e.canBatch}}$o.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"tilingSprite"},U.add($o);var C0=Object.defineProperty,dp=Object.getOwnPropertySymbols,O0=Object.prototype.hasOwnProperty,G0=Object.prototype.propertyIsEnumerable,pp=(r,t,e)=>t in r?C0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,fp=(r,t)=>{for(var e in t||(t={}))O0.call(t,e)&&pp(r,e,t[e]);if(dp)for(var e of dp(t))G0.call(t,e)&&pp(r,e,t[e]);return r};const mp=class Gb extends Jt{constructor(...t){var e;super({});let i=(e=t[0])!=null?e:{};typeof i=="number"&&(i={width:i,height:t[1],verticesX:t[2],verticesY:t[3]}),this.build(i)}build(t){var e,i,s,n;t=fp(fp({},Gb.defaultOptions),t),this.verticesX=(e=this.verticesX)!=null?e:t.verticesX,this.verticesY=(i=this.verticesY)!=null?i:t.verticesY,this.width=(s=this.width)!=null?s:t.width,this.height=(n=this.height)!=null?n:t.height;const o=this.verticesX*this.verticesY,a=[],u=[],l=[],c=this.verticesX-1,h=this.verticesY-1,p=this.width/c,f=this.height/h;for(let _=0;_t in r?B0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,bp=(r,t)=>{for(var e in t||(t={}))I0.call(t,e)&&_p(r,e,t[e]);if(gp)for(var e of gp(t))F0.call(t,e)&&_p(r,e,t[e]);return r};const vp=class Bb extends No{constructor(t={}){t=bp(bp({},Bb.defaultOptions),t),super({width:t.width,height:t.height,verticesX:4,verticesY:4}),this.update(t)}update(t){var e,i,s,n,o,a,u,l;this.width=(e=t.width)!=null?e:this.width,this.height=(i=t.height)!=null?i:this.height,this._originalWidth=(s=t.originalWidth)!=null?s:this._originalWidth,this._originalHeight=(n=t.originalHeight)!=null?n:this._originalHeight,this._leftWidth=(o=t.leftWidth)!=null?o:this._leftWidth,this._rightWidth=(a=t.rightWidth)!=null?a:this._rightWidth,this._topHeight=(u=t.topHeight)!=null?u:this._topHeight,this._bottomHeight=(l=t.bottomHeight)!=null?l:this._bottomHeight,this.updateUvs(),this.updatePositions()}updatePositions(){const t=this.positions,e=this._leftWidth+this._rightWidth,i=this.width>e?1:this.width/e,s=this._topHeight+this._bottomHeight,n=this.height>s?1:this.height/s,o=Math.min(i,n);t[9]=t[11]=t[13]=t[15]=this._topHeight*o,t[17]=t[19]=t[21]=t[23]=this.height-this._bottomHeight*o,t[25]=t[27]=t[29]=t[31]=this.height,t[2]=t[10]=t[18]=t[26]=this._leftWidth*o,t[4]=t[12]=t[20]=t[28]=this.width-this._rightWidth*o,t[6]=t[14]=t[22]=t[30]=this.width,this.getBuffer("aPosition").update()}updateUvs(){const t=this.uvs;t[0]=t[8]=t[16]=t[24]=0,t[1]=t[3]=t[5]=t[7]=0,t[6]=t[14]=t[22]=t[30]=1,t[25]=t[27]=t[29]=t[31]=1;const e=1/this._originalWidth,i=1/this._originalHeight;t[2]=t[10]=t[18]=t[26]=e*this._leftWidth,t[9]=t[11]=t[13]=t[15]=i*this._topHeight,t[4]=t[12]=t[20]=t[28]=1-e*this._rightWidth,t[17]=t[19]=t[21]=t[23]=1-i*this._bottomHeight,this.getBuffer("aUV").update()}};vp.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};let te=vp;class Ho{constructor(t){this._gpuSpriteHash=Object.create(null),this._renderer=t}addRenderable(t,e){const i=this._getGpuSprite(t);t._didSpriteUpdate&&this._updateBatchableSprite(t,i),this._renderer.renderPipes.batch.addToBatch(i)}updateRenderable(t){const e=this._gpuSpriteHash[t.uid];t._didSpriteUpdate&&this._updateBatchableSprite(t,e),e.batcher.updateElement(e)}validateRenderable(t){const e=t._texture,i=this._getGpuSprite(t);return i.texture._source!==e._source?!i.batcher.checkAndUpdateTexture(i,e):!1}destroyRenderable(t){const e=this._gpuSpriteHash[t.uid];W.return(e),this._gpuSpriteHash[t.uid]=null}_updateBatchableSprite(t,e){t._didSpriteUpdate=!1,e.geometry.update(t),e.texture=t._texture}_getGpuSprite(t){return this._gpuSpriteHash[t.uid]||this._initGPUSprite(t)}_initGPUSprite(t){const e=new Si;return e.geometry=new te,e.mesh=t,e.texture=t._texture,e.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuSpriteHash[t.uid]=e,t.on("destroyed",()=>{this.destroyRenderable(t)}),e}destroy(){for(const t in this._gpuSpriteHash)this._gpuSpriteHash[t].geometry.destroy();this._gpuSpriteHash=null,this._renderer=null}}Ho.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"nineSliceSprite"},U.add(Ho);class Xo{constructor(t){this._renderer=t}push(t,e,i){this._renderer.renderPipes.batch.break(i),i.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:e,filterEffect:t})}pop(t,e,i){this._renderer.renderPipes.batch.break(i),i.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(t){t.action==="pushFilter"?this._renderer.filter.push(t):t.action==="popFilter"&&this._renderer.filter.pop()}destroy(){this._renderer=null}}Xo.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"filter"};const D0=new G;function yp(r,t){return t.clear(),zo(r,t),t.isValid||t.set(0,0,0,0),r.renderGroup?t.applyMatrix(r.renderGroup.localTransform):t.applyMatrix(r.parentRenderGroup.worldTransform),t}function zo(r,t){if(r.localDisplayStatus!==7||!r.measurable)return;const e=!!r.effects.length;let i=t;if((r.renderGroup||e)&&(i=$t.get().clear()),r.boundsArea)t.addRect(r.boundsArea,r.worldTransform);else{if(r.renderPipeId){const n=r.bounds;i.addFrame(n.minX,n.minY,n.maxX,n.maxY,r.groupTransform)}const s=r.children;for(let n=0;n"},uInputPixel:{value:new Float32Array(4),type:"vec4"},uInputClamp:{value:new Float32Array(4),type:"vec4"},uOutputFrame:{value:new Float32Array(4),type:"vec4"},uGlobalFrame:{value:new Float32Array(4),type:"vec4"},uOutputTexture:{value:new Float32Array(4),type:"vec4"}}),this._globalFilterBindGroup=new Nt({}),this.renderer=t}get activeBackTexture(){var t;return(t=this._activeFilterData)==null?void 0:t.backTexture}push(t){var e,i;const s=this.renderer,n=t.filterEffect.filters;this._filterStack[this._filterStackIndex]||(this._filterStack[this._filterStackIndex]=this._getFilterData());const o=this._filterStack[this._filterStackIndex];if(this._filterStackIndex++,n.length===0){o.skip=!0;return}const a=o.bounds;t.renderables?xp(t.renderables,a):t.filterEffect.filterArea?(a.clear(),a.addRect(t.filterEffect.filterArea),a.applyMatrix(t.container.worldTransform)):yp(t.container,a);const u=s.renderTarget.rootRenderTarget.colorTexture.source;let l=u._resolution,c=0,h=u.antialias,p=!1,f=!1;for(let _=0;_0?this._filterStack[this._filterStackIndex-1].bounds:null,u=t.renderTarget.getRenderTarget(e.previousRenderSurface);n=this.getBackTexture(u,s,a)}e.backTexture=n;const o=e.filterEffect.filters;if(this._globalFilterBindGroup.setResource(i.source.style,2),this._globalFilterBindGroup.setResource(n.source,3),t.globalUniforms.pop(),o.length===1)o[0].apply(this,i,e.previousRenderSurface,!1),ct.returnTexture(i);else{let a=e.inputTexture,u=ct.getOptimalTexture(s.width,s.height,a.source._resolution,!1),l=0;for(l=0;l0&&this._filterStack[h].skip;)--h;h>0&&(c=this._filterStack[h].inputTexture.source._resolution);const p=this._filterGlobalUniforms,f=p.uniforms,m=f.uOutputFrame,_=f.uInputSize,g=f.uInputPixel,b=f.uInputClamp,v=f.uGlobalFrame,y=f.uOutputTexture;if(l){let R=this._filterStackIndex;for(;R>0;){R--;const w=this._filterStack[this._filterStackIndex-1];if(!w.skip){u.x=w.bounds.minX,u.y=w.bounds.minY;break}}m[0]=a.minX-u.x,m[1]=a.minY-u.y}else m[0]=0,m[1]=0;m[2]=e.frame.width,m[3]=e.frame.height,_[0]=e.source.width,_[1]=e.source.height,_[2]=1/_[0],_[3]=1/_[1],g[0]=e.source.pixelWidth,g[1]=e.source.pixelHeight,g[2]=1/g[0],g[3]=1/g[1],b[0]=.5*g[2],b[1]=.5*g[3],b[2]=e.frame.width*_[2]-.5*g[2],b[3]=e.frame.height*_[3]-.5*g[3];const T=this.renderer.renderTarget.rootRenderTarget.colorTexture;v[0]=u.x*c,v[1]=u.y*c,v[2]=T.source.width*c,v[3]=T.source.height*c;const E=this.renderer.renderTarget.getRenderTarget(i);if(n.renderTarget.bind(i,!!s),i instanceof P?(y[0]=i.frame.width,y[1]=i.frame.height):(y[0]=E.width,y[1]=E.height),y[2]=E.isRoot?-1:1,p.update(),n.renderPipes.uniformBatch){const R=n.renderPipes.uniformBatch.getUboResource(p);this._globalFilterBindGroup.setResource(R,0)}else this._globalFilterBindGroup.setResource(p,0);this._globalFilterBindGroup.setResource(e.source,1),this._globalFilterBindGroup.setResource(e.source.style,2),t.groups[0]=this._globalFilterBindGroup,n.encoder.draw({geometry:U0,shader:t,state:t._state,topology:"triangle-list"}),n.type===yt.WEBGL&&n.renderTarget.finishRenderPass()}_getFilterData(){return{skip:!1,inputTexture:null,bounds:new lt,container:null,filterEffect:null,blendRequired:!1,previousRenderSurface:null}}calculateSpriteMatrix(t,e){const i=this._activeFilterData,s=t.set(i.inputTexture._source.width,0,0,i.inputTexture._source.height,i.bounds.minX,i.bounds.minY),n=e.worldTransform.copyTo(G.shared);return n.invert(),s.prepend(n),s.scale(1/e.texture.frame.width,1/e.texture.frame.height),s.translate(e.anchor.x,e.anchor.y),s}}jo.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"filter"},U.add(jo),U.add(Xo);var k0={__proto__:null};const Vo=[];U.handleByNamedList(x.Environment,Vo);async function Tp(r){if(r)for(let t=0;t(r[r.NONE=0]="NONE",r[r.COLOR=16384]="COLOR",r[r.STENCIL=1024]="STENCIL",r[r.DEPTH=256]="DEPTH",r[r.COLOR_DEPTH=16640]="COLOR_DEPTH",r[r.COLOR_STENCIL=17408]="COLOR_STENCIL",r[r.DEPTH_STENCIL=1280]="DEPTH_STENCIL",r[r.ALL=17664]="ALL",r))(mt||{});class Yo{constructor(t){this.items=[],this._name=t}emit(t,e,i,s,n,o,a,u){const{name:l,items:c}=this;for(let h=0,p=c.length;ht in r?L0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ji=(r,t)=>{for(var e in t||(t={}))$0.call(t,e)&&Ep(r,e,t[e]);if(Sp)for(var e of Sp(t))N0.call(t,e)&&Ep(r,e,t[e]);return r};const H0=["init","destroy","contextChange","resolutionChange","reset","renderEnd","renderStart","render","update","postrender","prerender"],Ap=class Ib extends pt{constructor(t){var e;super(),this.runners=Object.create(null),this.renderPipes=Object.create(null),this._initOptions={},this._systemsHash=Object.create(null),this.type=t.type,this.name=t.name;const i=[...H0,...(e=t.runners)!=null?e:[]];this._addRunners(...i),this._addSystems(t.systems),this._addPipes(t.renderPipes,t.renderPipeAdaptors),this._unsafeEvalCheck()}async init(t={}){for(const e in this._systemsHash){const i=this._systemsHash[e].constructor.defaultOptions;t=ji(ji({},i),t)}t=ji(ji({},Ib.defaultOptions),t),this._roundPixels=t.roundPixels?1:0;for(let e=0;e{this.runners[e]=new Yo(e)})}_addSystems(t){let e;for(e in t){const i=t[e];this._addSystem(i.value,i.name)}}_addSystem(t,e){const i=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=i,this._systemsHash[e]=i;for(const s in this.runners)this.runners[s].add(i);return this}_addPipes(t,e){const i=e.reduce((s,n)=>(s[n.name]=n.value,s),{});t.forEach(s=>{const n=s.value,o=s.name,a=i[o];this.renderPipes[o]=new n(this,a?new a:null)})}destroy(t=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(t),Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash=null,this.renderPipes=null}generateTexture(t){return this.textureGenerator.generateTexture(t)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!Wo())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}};Ap.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let wr=Ap,Ko;function Rr(r){return Ko!==void 0||(Ko=(()=>{var t;const e={stencil:!0,failIfMajorPerformanceCaveat:r!=null?r:wr.defaultOptions.failIfMajorPerformanceCaveat};try{if(!z.get().getWebGLRenderingContext())return!1;let i=z.get().createCanvas().getContext("webgl",e);const s=!!((t=i==null?void 0:i.getContextAttributes())!=null&&t.stencil);if(i){const n=i.getExtension("WEBGL_lose_context");n&&n.loseContext()}return i=null,s}catch(i){return!1}})()),Ko}let qo;async function Mr(r={}){return qo!==void 0||(qo=await(async()=>{if(!z.get().getNavigator().gpu)return!1;try{return await(await navigator.gpu.requestAdapter(r)).requestDevice(),!0}catch(t){return!1}})()),qo}var X0=Object.defineProperty,Pp=Object.getOwnPropertySymbols,z0=Object.prototype.hasOwnProperty,j0=Object.prototype.propertyIsEnumerable,wp=(r,t,e)=>t in r?X0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Cr=(r,t)=>{for(var e in t||(t={}))z0.call(t,e)&&wp(r,e,t[e]);if(Pp)for(var e of Pp(t))j0.call(t,e)&&wp(r,e,t[e]);return r};const Rp=["webgl","webgpu","canvas"];async function Mp(r){var t,e;let i=[];r.preference?(i.push(r.preference),Rp.forEach(a=>{a!==r.preference&&i.push(a)})):i=Rp.slice();let s;await Tp((t=r.manageImports)!=null?t:!0);let n={};for(let a=0;at in r?V0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,K0=(r,t)=>{for(var e in t||(t={}))W0.call(t,e)&&Op(r,e,t[e]);if(Cp)for(var e of Cp(t))Y0.call(t,e)&&Op(r,e,t[e]);return r};const Gp=class Ju{constructor(...t){this.stage=new Y}async init(t){t=K0({},t),this.renderer=await Mp(t),Ju._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,e=!1){const i=Ju._plugins.slice(0);i.reverse(),i.forEach(s=>{s.destroy.call(this)}),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};Gp._plugins=[];let Bp=Gp;U.handleByList(x.Application,Bp._plugins);class Ip{constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach(e=>{this._assetList.push(e)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;iArray.isArray(r)&&r.every(t=>t instanceof P),getCacheableAssets:(r,t)=>{const e={};return r.forEach(i=>{t.forEach((s,n)=>{e[i+(n===0?"":n+1)]=s})}),e}};async function Zo(r){if("Image"in globalThis)return new Promise(t=>{const e=new Image;e.onload=()=>{t(!0)},e.onerror=()=>{t(!1)},e.src=r});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const t=await(await fetch(r)).blob();await createImageBitmap(t)}catch(t){return!1}return!0}return!1}const Dp={extension:{type:x.DetectionParser,priority:1},test:async()=>Zo("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async r=>[...r,"avif"],remove:async r=>r.filter(t=>t!=="avif")},Up=["png","jpg","jpeg"],kp={extension:{type:x.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async r=>[...r,...Up],remove:async r=>r.filter(t=>!Up.includes(t))},q0="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function Vi(r){return q0?!1:document.createElement("video").canPlayType(r)!==""}const Lp={extension:{type:x.DetectionParser,priority:0},test:async()=>Vi("video/mp4"),add:async r=>[...r,"mp4","m4v"],remove:async r=>r.filter(t=>t!=="mp4"&&t!=="m4v")},$p={extension:{type:x.DetectionParser,priority:0},test:async()=>Vi("video/ogg"),add:async r=>[...r,"ogv"],remove:async r=>r.filter(t=>t!=="ogv")},Np={extension:{type:x.DetectionParser,priority:0},test:async()=>Vi("video/webm"),add:async r=>[...r,"webm"],remove:async r=>r.filter(t=>t!=="webm")},Hp={extension:{type:x.DetectionParser,priority:0},test:async()=>Zo("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async r=>[...r,"webp"],remove:async r=>r.filter(t=>t!=="webp")};var Z0=Object.defineProperty,Q0=Object.defineProperties,J0=Object.getOwnPropertyDescriptors,Xp=Object.getOwnPropertySymbols,t1=Object.prototype.hasOwnProperty,e1=Object.prototype.propertyIsEnumerable,zp=(r,t,e)=>t in r?Z0(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,r1=(r,t)=>{for(var e in t||(t={}))t1.call(t,e)&&zp(r,e,t[e]);if(Xp)for(var e of Xp(t))e1.call(t,e)&&zp(r,e,t[e]);return r},i1=(r,t)=>Q0(r,J0(t));class jp{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,e,i)=>(this._parsersValidated=!1,t[e]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,e){const i={promise:null,parser:null};return i.promise=(async()=>{var s,n;let o=null,a=null;if(e.loadParser&&(a=this._parserHash[e.loadParser]),!a){for(let u=0;u({alias:[l],src:l})),a=o.length,u=o.map(async l=>{const c=ft.toAbsolute(l.src);if(!s[l.src])try{this.promiseCache[c]||(this.promiseCache[c]=this._getLoadPromiseAndParser(c,l)),s[l.src]=await this.promiseCache[c].promise,e&&e(++i/a)}catch(h){throw delete this.promiseCache[c],delete s[l.src],new Error(`[Loader.load] Failed to load ${c}. -${h}`)}});return await Promise.all(u),n?s[o[0].src]:s}async unload(t){const e=Rt(t,i=>({alias:[i],src:i})).map(async i=>{var s,n;const o=ft.toAbsolute(i.src),a=this.promiseCache[o];if(a){const u=await a.promise;delete this.promiseCache[o],await((n=(s=a.parser)==null?void 0:s.unload)==null?void 0:n.call(s,u,i,this))}});await Promise.all(e)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,e)=>(e.name&&t[e.name],i1(r1({},t),{[e.name]:e})),{})}}function xe(r,t){if(Array.isArray(t)){for(const e of t)if(r.startsWith(`data:${e}`))return!0;return!1}return r.startsWith(`data:${t}`)}function Ct(r,t){const e=r.split("?")[0],i=ft.extname(e).toLowerCase();return Array.isArray(t)?t.includes(i):i===t}const s1=".json",n1="application/json",Vp={extension:{type:x.LoadParser,priority:_t.Low},name:"loadJson",test(r){return xe(r,n1)||Ct(r,s1)},async load(r){return await(await z.get().fetch(r)).json()}},o1=".txt",a1="text/plain",Wp={name:"loadTxt",extension:{type:x.LoadParser,priority:_t.Low},test(r){return xe(r,a1)||Ct(r,o1)},async load(r){return await(await z.get().fetch(r)).text()}};var u1=Object.defineProperty,l1=Object.defineProperties,c1=Object.getOwnPropertyDescriptors,Yp=Object.getOwnPropertySymbols,h1=Object.prototype.hasOwnProperty,d1=Object.prototype.propertyIsEnumerable,Kp=(r,t,e)=>t in r?u1(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,p1=(r,t)=>{for(var e in t||(t={}))h1.call(t,e)&&Kp(r,e,t[e]);if(Yp)for(var e of Yp(t))d1.call(t,e)&&Kp(r,e,t[e]);return r},f1=(r,t)=>l1(r,c1(t));const m1=["normal","bold","100","200","300","400","500","600","700","800","900"],g1=[".ttf",".otf",".woff",".woff2"],_1=["font/ttf","font/otf","font/woff","font/woff2"],b1=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function qp(r){const t=ft.extname(r),e=ft.basename(r,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1));let i=e.length>0;for(const n of e)if(!n.match(b1)){i=!1;break}let s=e.join(" ");return i||(s=`"${s.replace(/[\\"]/g,"\\$&")}"`),s}const v1=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function y1(r){return v1.test(r)?r:encodeURI(r)}const Zp={extension:{type:x.LoadParser,priority:_t.Low},name:"loadWebFont",test(r){return xe(r,_1)||Ct(r,g1)},async load(r,t){var e,i,s,n,o,a;const u=z.get().getFontFaceSet();if(u){const l=[],c=(i=(e=t.data)==null?void 0:e.family)!=null?i:qp(r),h=(o=(n=(s=t.data)==null?void 0:s.weights)==null?void 0:n.filter(f=>m1.includes(f)))!=null?o:["normal"],p=(a=t.data)!=null?a:{};for(let f=0;f{q.remove(t.family),z.get().getFontFaceSet().delete(t)})}};function Wi(r,t=1){var e;const i=(e=qt.RETINA_PREFIX)==null?void 0:e.exec(r);return i?parseFloat(i[1]):t}function ee(r,t,e){r.label=e,r._sourceOrigin=e;const i=new P({source:r,label:e}),s=()=>{delete t.promiseCache[e],q.has(e)&&q.remove(e)};return i.source.once("destroy",()=>{t.promiseCache[e]&&s()}),i.once("destroy",()=>{r.destroyed||s()}),i}var x1=Object.defineProperty,Yi=Object.getOwnPropertySymbols,Qp=Object.prototype.hasOwnProperty,Jp=Object.prototype.propertyIsEnumerable,tf=(r,t,e)=>t in r?x1(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,T1=(r,t)=>{for(var e in t||(t={}))Qp.call(t,e)&&tf(r,e,t[e]);if(Yi)for(var e of Yi(t))Jp.call(t,e)&&tf(r,e,t[e]);return r},S1=(r,t)=>{var e={};for(var i in r)Qp.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Yi)for(var i of Yi(r))t.indexOf(i)<0&&Jp.call(r,i)&&(e[i]=r[i]);return e};const E1=".svg",A1="image/svg+xml",ef={extension:{type:x.LoadParser,priority:_t.Low},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(r){return xe(r,A1)||Ct(r,E1)},async load(r,t,e){var i;return((i=t.data.parseAsGraphicsContext)!=null?i:this.config.parseAsGraphicsContext)?w1(r):P1(r,t,e,this.config.crossOrigin)},unload(r){r.destroy(!0)}};async function P1(r,t,e,i){var s,n,o,a,u;const l=await(await z.get().fetch(r)).blob(),c=URL.createObjectURL(l),h=new Image;h.src=c,h.crossOrigin=i,await h.decode(),URL.revokeObjectURL(c);const p=document.createElement("canvas"),f=p.getContext("2d"),m=((s=t.data)==null?void 0:s.resolution)||Wi(r),_=(o=(n=t.data)==null?void 0:n.width)!=null?o:h.width,g=(u=(a=t.data)==null?void 0:a.height)!=null?u:h.height;p.width=_*m,p.height=g*m,f.drawImage(h,0,0,_*m,g*m);const b=t.data,{parseAsGraphicsContext:v}=b,y=S1(b,["parseAsGraphicsContext"]),T=new pe(T1({resource:p,alphaMode:"premultiply-alpha-on-upload",resolution:m},y));return ee(T,e,r)}async function w1(r){const t=await(await z.get().fetch(r)).text(),e=new It;return e.svg(t),e}const R1=`(function(){"use strict";const e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";async function a(){try{if(typeof createImageBitmap!="function")return!1;const A=await(await fetch(e)).blob(),t=await createImageBitmap(A);return t.width===1&&t.height===1}catch(A){return!1}}a().then(A=>{self.postMessage(A)})})(); -`;let ze=null,Qo=class{constructor(){ze||(ze=URL.createObjectURL(new Blob([R1],{type:"application/javascript"}))),this.worker=new Worker(ze)}};Qo.revokeObjectURL=function(){ze&&(URL.revokeObjectURL(ze),ze=null)};const M1='(function(){"use strict";async function e(t){const a=await fetch(t);if(!a.ok)throw new Error(`[WorkerManager.loadImageBitmap] Failed to fetch ${t}: ${a.status} ${a.statusText}`);const s=await a.blob();return await createImageBitmap(s)}self.onmessage=async t=>{try{const a=await e(t.data.data[0]);self.postMessage({data:a,uuid:t.data.uuid,id:t.data.id},[a])}catch(a){self.postMessage({error:a,uuid:t.data.uuid,id:t.data.id})}}})();\n';let je=null,rf=class{constructor(){je||(je=URL.createObjectURL(new Blob([M1],{type:"application/javascript"}))),this.worker=new Worker(je)}};rf.revokeObjectURL=function(){je&&(URL.revokeObjectURL(je),je=null)};let sf=0,Jo,C1=class{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(t=>{const{worker:e}=new Qo;e.addEventListener("message",i=>{e.terminate(),Qo.revokeObjectURL(),t(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){Jo===void 0&&(Jo=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers{this._complete(e.data),this._returnWorker(e.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){t.error!==void 0?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const i=new Promise((s,n)=>{this._queue.push({id:t,arguments:e,resolve:s,reject:n})});return this._next(),i}_next(){if(!this._queue.length)return;const t=this._getWorker();if(!t)return;const e=this._queue.pop(),i=e.id;this._resolveHash[sf]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:sf++,id:i})}};const ta=new C1;var O1=Object.defineProperty,nf=Object.getOwnPropertySymbols,G1=Object.prototype.hasOwnProperty,B1=Object.prototype.propertyIsEnumerable,of=(r,t,e)=>t in r?O1(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,I1=(r,t)=>{for(var e in t||(t={}))G1.call(t,e)&&of(r,e,t[e]);if(nf)for(var e of nf(t))B1.call(t,e)&&of(r,e,t[e]);return r};const F1=[".jpeg",".jpg",".png",".webp",".avif"],D1=["image/jpeg","image/png","image/webp","image/avif"];async function af(r){const t=await z.get().fetch(r);if(!t.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${r}: ${t.status} ${t.statusText}`);const e=await t.blob();return await createImageBitmap(e)}const ea={name:"loadTextures",extension:{type:x.LoadParser,priority:_t.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(r){return xe(r,D1)||Ct(r,F1)},async load(r,t,e){var i;let s=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await ta.isImageBitmapSupported()?s=await ta.loadImageBitmap(r):s=await af(r):s=await new Promise(o=>{s=new Image,s.crossOrigin=this.config.crossOrigin,s.src=r,s.complete?o(s):s.onload=()=>{o(s)}});const n=new pe(I1({resource:s,alphaMode:"premultiply-alpha-on-upload",resolution:((i=t.data)==null?void 0:i.resolution)||Wi(r)},t.data));return ee(n,e,r)},unload(r){r.destroy(!0)}};var U1=Object.defineProperty,k1=Object.defineProperties,L1=Object.getOwnPropertyDescriptors,uf=Object.getOwnPropertySymbols,$1=Object.prototype.hasOwnProperty,N1=Object.prototype.propertyIsEnumerable,lf=(r,t,e)=>t in r?U1(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ra=(r,t)=>{for(var e in t||(t={}))$1.call(t,e)&&lf(r,e,t[e]);if(uf)for(var e of uf(t))N1.call(t,e)&&lf(r,e,t[e]);return r},cf=(r,t)=>k1(r,L1(t));const hf=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],H1=hf.map(r=>`video/${r.substring(1)}`);function df(r,t,e){e===void 0&&!t.startsWith("data:")?r.crossOrigin=ff(t):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}function pf(r){return new Promise((t,e)=>{r.addEventListener("canplaythrough",i),r.addEventListener("error",s),r.load();function i(){n(),t()}function s(o){n(),e(o)}function n(){r.removeEventListener("canplaythrough",i),r.removeEventListener("error",s)}})}function ff(r,t=globalThis.location){if(r.startsWith("data:"))return"";t=t||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol?"anonymous":""}const mf={name:"loadVideo",extension:{type:x.LoadParser},config:null,test(r){const t=xe(r,H1),e=Ct(r,hf);return t||e},async load(r,t,e){var i,s;const n=ra(cf(ra({},cr.defaultOptions),{resolution:((i=t.data)==null?void 0:i.resolution)||Wi(r),alphaMode:((s=t.data)==null?void 0:s.alphaMode)||await gn()}),t.data),o=document.createElement("video"),a={preload:n.autoLoad!==!1?"auto":void 0,"webkit-playsinline":n.playsinline!==!1?"":void 0,playsinline:n.playsinline!==!1?"":void 0,muted:n.muted===!0?"":void 0,loop:n.loop===!0?"":void 0,autoplay:n.autoPlay!==!1?"":void 0};Object.keys(a).forEach(c=>{const h=a[c];h!==void 0&&o.setAttribute(c,h)}),n.muted===!0&&(o.muted=!0),df(o,r,n.crossorigin);const u=document.createElement("source");let l;if(r.startsWith("data:"))l=r.slice(5,r.indexOf(";"));else if(!r.startsWith("blob:")){const c=r.split("?")[0].slice(r.lastIndexOf(".")+1).toLowerCase();l=cr.MIME_TYPES[c]||`video/${c}`}return u.src=r,l&&(u.type=l),new Promise(c=>{const h=async()=>{const p=new cr(cf(ra({},n),{resource:o}));o.removeEventListener("canplay",h),t.data.preload&&await pf(o),c(ee(p,e,r))};o.addEventListener("canplay",h),o.appendChild(u)})},unload(r){r.destroy(!0)}},ia={extension:x.ResolveParser,test:ea.test,parse:r=>{var t,e;return{resolution:parseFloat((e=(t=qt.RETINA_PREFIX.exec(r))==null?void 0:t[1])!=null?e:"1"),format:r.split(".").pop(),src:r}}},gf={extension:x.ResolveParser,test:r=>qt.RETINA_PREFIX.test(r)&&r.endsWith(".json"),parse:ia.parse};class _f{constructor(){this._detections=[],this._initialized=!1,this.resolver=new qt,this.loader=new jp,this.cache=q,this._backgroundLoader=new Ip(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var e,i,s;if(this._initialized)return;if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let u=t.manifest;typeof u=="string"&&(u=await this.load(u)),this.resolver.addManifest(u)}const n=(i=(e=t.texturePreference)==null?void 0:e.resolution)!=null?i:1,o=typeof n=="number"?[n]:n,a=await this._detectFormats({preferredFormats:(s=t.texturePreference)==null?void 0:s.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:a,resolution:o}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,e){this._initialized||await this.init();const i=ur(t),s=Rt(t).map(a=>{if(typeof a!="string"){const u=this.resolver.getAlias(a);return u.some(l=>!this.resolver.hasKey(l))&&this.add(a),Array.isArray(u)?u[0]:u}return this.resolver.hasKey(a)||this.add({alias:a,src:a}),a}),n=this.resolver.resolve(s),o=await this._mapLoadToResolve(n,e);return i?o[s[0]]:o}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let i=!1;typeof t=="string"&&(i=!0,t=[t]);const s=this.resolver.resolveBundle(t),n={},o=Object.keys(s);let a=0,u=0;const l=()=>{e==null||e(++a/u)},c=o.map(h=>{const p=s[h];return u+=Object.keys(p).length,this._mapLoadToResolve(p,l).then(f=>{n[h]=f})});return await Promise.all(c),i?n[t[0]]:n}async backgroundLoad(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if(typeof t=="string")return q.get(t);const e={};for(let i=0;i{const a=s[o.src],u=[o.src];o.alias&&u.push(...o.alias),u.forEach(l=>{n[l]=a}),q.set(u,a)}),n}async unload(t){this._initialized||await this.init();const e=Rt(t).map(s=>typeof s!="string"?s.src:s),i=this.resolver.resolve(e);await this._unloadFromResolved(i)}async unloadBundle(t){this._initialized||await this.init(),t=Rt(t);const e=this.resolver.resolveBundle(t),i=Object.keys(e).map(s=>this._unloadFromResolved(e[s]));await Promise.all(i)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach(i=>{q.remove(i.src)}),await this.loader.unload(e)}async _detectFormats(t){let e=[];t.preferredFormats&&(e=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]);for(const i of t.detections)t.skipDetections||await i.test()?e=await i.add(e):t.skipDetections||(e=await i.remove(e));return e=e.filter((i,s)=>e.indexOf(i)===s),e}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(e=>{e.config&&Object.keys(e.config).filter(i=>i in t).forEach(i=>{e.config[i]=t[i]})})}}const Or=new _f;U.handleByList(x.LoadParser,Or.loader.parsers).handleByList(x.ResolveParser,Or.resolver.parsers).handleByList(x.CacheParser,Or.cache.parsers).handleByList(x.DetectionParser,Or.detections),U.add(Fp,kp,Dp,Hp,Lp,$p,Np,Vp,Wp,Zp,ef,ea,mf,ia,gf);const bf={loader:x.LoadParser,resolver:x.ResolveParser,cache:x.CacheParser,detection:x.DetectionParser};U.handle(x.Asset,r=>{const t=r.ref;Object.entries(bf).filter(([e])=>!!t[e]).forEach(([e,i])=>{var s;return U.add(Object.assign(t[e],{extension:(s=t[e].extension)!=null?s:i}))})},r=>{const t=r.ref;Object.keys(bf).filter(e=>!!t[e]).forEach(e=>U.remove(t[e]))});const X1={extension:{type:x.DetectionParser,priority:3},test:async()=>!!(await Mr()||Rr()),add:async r=>[...r,"basis"],remove:async r=>r.filter(t=>t!=="basis")};class Gr extends rt{constructor(t){super(t),this.uploadMethodId="compressed",this.resource=t.resource,this.mipLevelCount=this.resource.length}}let Ki;function sa(){if(Ki)return Ki;const r=document.createElement("canvas").getContext("webgl");return r?(Ki=[...r.getExtension("EXT_texture_compression_bptc")?["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"]:[],...r.getExtension("WEBGL_compressed_texture_s3tc")?["bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"]:[],...r.getExtension("WEBGL_compressed_texture_s3tc_srgb")?["bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"]:[],...r.getExtension("EXT_texture_compression_rgtc")?["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"]:[],...r.getExtension("WEBGL_compressed_texture_etc")?["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","eac-r11unorm","eac-rg11unorm"]:[],...r.getExtension("WEBGL_compressed_texture_astc")?["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]:[]],Ki):[]}let qi;async function na(){if(qi)return qi;const r=await navigator.gpu.requestAdapter();return qi=[...r.features.has("texture-compression-bc")?["bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb","bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm","bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"]:[],...r.features.has("texture-compression-etc2")?["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"]:[],...r.features.has("texture-compression-astc")?["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]:[]],qi}let oa;async function aa(){return oa!==void 0||(oa=await(async()=>{const r=await Mr(),t=Rr();if(r&&t){const e=await na(),i=sa();return e.filter(s=>i.includes(s))}else{if(r)return await na();if(t)return sa()}return[]})()),oa}const vf=["r8unorm","r8snorm","r8uint","r8sint","r16uint","r16sint","r16float","rg8unorm","rg8snorm","rg8uint","rg8sint","r32uint","r32sint","r32float","rg16uint","rg16sint","rg16float","rgba8unorm","rgba8unorm-srgb","rgba8snorm","rgba8uint","rgba8sint","bgra8unorm","bgra8unorm-srgb","rgb9e5ufloat","rgb10a2unorm","rg11b10ufloat","rg32uint","rg32sint","rg32float","rgba16uint","rgba16sint","rgba16float","rgba32uint","rgba32sint","rgba32float","stencil8","depth16unorm","depth24plus","depth24plus-stencil8","depth32float","depth32float-stencil8"];let Zi;async function Br(){if(Zi!==void 0)return Zi;const r=await aa();return Zi=[...vf,...r],Zi}const z1='(function(){"use strict";function g(r,a){const t=r.getNumImages(),s=r.getNumLevels(0);if(!r.startTranscoding())throw new Error("startTranscoding failed");const m=[];for(let e=0;e{BASIS({locateFile:s=>a}).then(s=>{s.initializeBasis(),t(s.BasisFile)})})}return c}async function b(r,a){const t=await fetch(r);if(t.ok){const s=await t.arrayBuffer();return new a(new Uint8Array(s))}throw new Error(`Failed to load Basis texture: ${r}`)}const h=["bc7-rgba-unorm","astc-4x4-unorm","etc2-rgba8unorm","bc3-rgba-unorm","rgba8unorm"];async function p(r){const a=await l(),t=await b(r,a),s=g(t,u);return{width:t.getImageWidth(0,0),height:t.getImageHeight(0,0),format:i,resource:s,alphaMode:"no-premultiply-alpha"}}async function y(r,a,t){r&&(n.jsUrl=r),a&&(n.wasmUrl=a),i=h.filter(s=>t.includes(s))[0],u=d(i),await l()}const U={init:async r=>{const{jsUrl:a,wasmUrl:t,supportedTextures:s}=r;await y(a,t,s)},load:async r=>{var a;try{const t=await p(r.url);return{type:"load",url:r.url,success:!0,textureOptions:t,transferables:(a=t.resource)==null?void 0:a.map(s=>s.buffer)}}catch(t){throw t}}};self.onmessage=async r=>{const a=r.data,t=await U[a.type](a);t&&self.postMessage(t,t.transferables)}})();\n';let Ve=null,yf=class{constructor(){Ve||(Ve=URL.createObjectURL(new Blob([z1],{type:"application/javascript"}))),this.worker=new Worker(Ve)}};yf.revokeObjectURL=function(){Ve&&(URL.revokeObjectURL(Ve),Ve=null)};const Qi={jsUrl:"https://files.pixijs.download/transcoders/basis/basis_transcoder.js",wasmUrl:"https://files.pixijs.download/transcoders/basis/basis_transcoder.wasm"};function j1(r){Object.assign(Qi,r)}let Ir;const xf={};function V1(r){return Ir||(Ir=new yf().worker,Ir.onmessage=t=>{const{success:e,url:i,textureOptions:s}=t.data;e||console.warn("Failed to load Basis texture",i),xf[i](s)},Ir.postMessage({type:"init",jsUrl:Qi.jsUrl,wasmUrl:Qi.wasmUrl,supportedTextures:r})),Ir}function Tf(r,t){const e=V1(t);return new Promise(i=>{xf[r]=i,e.postMessage({type:"load",url:r})})}const W1={extension:{type:x.LoadParser,priority:_t.High},name:"loadBasis",test(r){return Ct(r,[".basis"])},async load(r,t,e){const i=await Br(),s=await Tf(r,i),n=new Gr(s);return ee(n,e,r)},unload(r){Array.isArray(r)?r.forEach(t=>t.destroy(!0)):r.destroy(!0)}};function Y1(r,t){const e=r.getNumImages(),i=r.getNumLevels(0);if(!r.startTranscoding())throw new Error("startTranscoding failed");const s=[];for(let n=0;n(r[r.DXGI_FORMAT_UNKNOWN=0]="DXGI_FORMAT_UNKNOWN",r[r.DXGI_FORMAT_R32G32B32A32_TYPELESS=1]="DXGI_FORMAT_R32G32B32A32_TYPELESS",r[r.DXGI_FORMAT_R32G32B32A32_FLOAT=2]="DXGI_FORMAT_R32G32B32A32_FLOAT",r[r.DXGI_FORMAT_R32G32B32A32_UINT=3]="DXGI_FORMAT_R32G32B32A32_UINT",r[r.DXGI_FORMAT_R32G32B32A32_SINT=4]="DXGI_FORMAT_R32G32B32A32_SINT",r[r.DXGI_FORMAT_R32G32B32_TYPELESS=5]="DXGI_FORMAT_R32G32B32_TYPELESS",r[r.DXGI_FORMAT_R32G32B32_FLOAT=6]="DXGI_FORMAT_R32G32B32_FLOAT",r[r.DXGI_FORMAT_R32G32B32_UINT=7]="DXGI_FORMAT_R32G32B32_UINT",r[r.DXGI_FORMAT_R32G32B32_SINT=8]="DXGI_FORMAT_R32G32B32_SINT",r[r.DXGI_FORMAT_R16G16B16A16_TYPELESS=9]="DXGI_FORMAT_R16G16B16A16_TYPELESS",r[r.DXGI_FORMAT_R16G16B16A16_FLOAT=10]="DXGI_FORMAT_R16G16B16A16_FLOAT",r[r.DXGI_FORMAT_R16G16B16A16_UNORM=11]="DXGI_FORMAT_R16G16B16A16_UNORM",r[r.DXGI_FORMAT_R16G16B16A16_UINT=12]="DXGI_FORMAT_R16G16B16A16_UINT",r[r.DXGI_FORMAT_R16G16B16A16_SNORM=13]="DXGI_FORMAT_R16G16B16A16_SNORM",r[r.DXGI_FORMAT_R16G16B16A16_SINT=14]="DXGI_FORMAT_R16G16B16A16_SINT",r[r.DXGI_FORMAT_R32G32_TYPELESS=15]="DXGI_FORMAT_R32G32_TYPELESS",r[r.DXGI_FORMAT_R32G32_FLOAT=16]="DXGI_FORMAT_R32G32_FLOAT",r[r.DXGI_FORMAT_R32G32_UINT=17]="DXGI_FORMAT_R32G32_UINT",r[r.DXGI_FORMAT_R32G32_SINT=18]="DXGI_FORMAT_R32G32_SINT",r[r.DXGI_FORMAT_R32G8X24_TYPELESS=19]="DXGI_FORMAT_R32G8X24_TYPELESS",r[r.DXGI_FORMAT_D32_FLOAT_S8X24_UINT=20]="DXGI_FORMAT_D32_FLOAT_S8X24_UINT",r[r.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS=21]="DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS",r[r.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT=22]="DXGI_FORMAT_X32_TYPELESS_G8X24_UINT",r[r.DXGI_FORMAT_R10G10B10A2_TYPELESS=23]="DXGI_FORMAT_R10G10B10A2_TYPELESS",r[r.DXGI_FORMAT_R10G10B10A2_UNORM=24]="DXGI_FORMAT_R10G10B10A2_UNORM",r[r.DXGI_FORMAT_R10G10B10A2_UINT=25]="DXGI_FORMAT_R10G10B10A2_UINT",r[r.DXGI_FORMAT_R11G11B10_FLOAT=26]="DXGI_FORMAT_R11G11B10_FLOAT",r[r.DXGI_FORMAT_R8G8B8A8_TYPELESS=27]="DXGI_FORMAT_R8G8B8A8_TYPELESS",r[r.DXGI_FORMAT_R8G8B8A8_UNORM=28]="DXGI_FORMAT_R8G8B8A8_UNORM",r[r.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB=29]="DXGI_FORMAT_R8G8B8A8_UNORM_SRGB",r[r.DXGI_FORMAT_R8G8B8A8_UINT=30]="DXGI_FORMAT_R8G8B8A8_UINT",r[r.DXGI_FORMAT_R8G8B8A8_SNORM=31]="DXGI_FORMAT_R8G8B8A8_SNORM",r[r.DXGI_FORMAT_R8G8B8A8_SINT=32]="DXGI_FORMAT_R8G8B8A8_SINT",r[r.DXGI_FORMAT_R16G16_TYPELESS=33]="DXGI_FORMAT_R16G16_TYPELESS",r[r.DXGI_FORMAT_R16G16_FLOAT=34]="DXGI_FORMAT_R16G16_FLOAT",r[r.DXGI_FORMAT_R16G16_UNORM=35]="DXGI_FORMAT_R16G16_UNORM",r[r.DXGI_FORMAT_R16G16_UINT=36]="DXGI_FORMAT_R16G16_UINT",r[r.DXGI_FORMAT_R16G16_SNORM=37]="DXGI_FORMAT_R16G16_SNORM",r[r.DXGI_FORMAT_R16G16_SINT=38]="DXGI_FORMAT_R16G16_SINT",r[r.DXGI_FORMAT_R32_TYPELESS=39]="DXGI_FORMAT_R32_TYPELESS",r[r.DXGI_FORMAT_D32_FLOAT=40]="DXGI_FORMAT_D32_FLOAT",r[r.DXGI_FORMAT_R32_FLOAT=41]="DXGI_FORMAT_R32_FLOAT",r[r.DXGI_FORMAT_R32_UINT=42]="DXGI_FORMAT_R32_UINT",r[r.DXGI_FORMAT_R32_SINT=43]="DXGI_FORMAT_R32_SINT",r[r.DXGI_FORMAT_R24G8_TYPELESS=44]="DXGI_FORMAT_R24G8_TYPELESS",r[r.DXGI_FORMAT_D24_UNORM_S8_UINT=45]="DXGI_FORMAT_D24_UNORM_S8_UINT",r[r.DXGI_FORMAT_R24_UNORM_X8_TYPELESS=46]="DXGI_FORMAT_R24_UNORM_X8_TYPELESS",r[r.DXGI_FORMAT_X24_TYPELESS_G8_UINT=47]="DXGI_FORMAT_X24_TYPELESS_G8_UINT",r[r.DXGI_FORMAT_R8G8_TYPELESS=48]="DXGI_FORMAT_R8G8_TYPELESS",r[r.DXGI_FORMAT_R8G8_UNORM=49]="DXGI_FORMAT_R8G8_UNORM",r[r.DXGI_FORMAT_R8G8_UINT=50]="DXGI_FORMAT_R8G8_UINT",r[r.DXGI_FORMAT_R8G8_SNORM=51]="DXGI_FORMAT_R8G8_SNORM",r[r.DXGI_FORMAT_R8G8_SINT=52]="DXGI_FORMAT_R8G8_SINT",r[r.DXGI_FORMAT_R16_TYPELESS=53]="DXGI_FORMAT_R16_TYPELESS",r[r.DXGI_FORMAT_R16_FLOAT=54]="DXGI_FORMAT_R16_FLOAT",r[r.DXGI_FORMAT_D16_UNORM=55]="DXGI_FORMAT_D16_UNORM",r[r.DXGI_FORMAT_R16_UNORM=56]="DXGI_FORMAT_R16_UNORM",r[r.DXGI_FORMAT_R16_UINT=57]="DXGI_FORMAT_R16_UINT",r[r.DXGI_FORMAT_R16_SNORM=58]="DXGI_FORMAT_R16_SNORM",r[r.DXGI_FORMAT_R16_SINT=59]="DXGI_FORMAT_R16_SINT",r[r.DXGI_FORMAT_R8_TYPELESS=60]="DXGI_FORMAT_R8_TYPELESS",r[r.DXGI_FORMAT_R8_UNORM=61]="DXGI_FORMAT_R8_UNORM",r[r.DXGI_FORMAT_R8_UINT=62]="DXGI_FORMAT_R8_UINT",r[r.DXGI_FORMAT_R8_SNORM=63]="DXGI_FORMAT_R8_SNORM",r[r.DXGI_FORMAT_R8_SINT=64]="DXGI_FORMAT_R8_SINT",r[r.DXGI_FORMAT_A8_UNORM=65]="DXGI_FORMAT_A8_UNORM",r[r.DXGI_FORMAT_R1_UNORM=66]="DXGI_FORMAT_R1_UNORM",r[r.DXGI_FORMAT_R9G9B9E5_SHAREDEXP=67]="DXGI_FORMAT_R9G9B9E5_SHAREDEXP",r[r.DXGI_FORMAT_R8G8_B8G8_UNORM=68]="DXGI_FORMAT_R8G8_B8G8_UNORM",r[r.DXGI_FORMAT_G8R8_G8B8_UNORM=69]="DXGI_FORMAT_G8R8_G8B8_UNORM",r[r.DXGI_FORMAT_BC1_TYPELESS=70]="DXGI_FORMAT_BC1_TYPELESS",r[r.DXGI_FORMAT_BC1_UNORM=71]="DXGI_FORMAT_BC1_UNORM",r[r.DXGI_FORMAT_BC1_UNORM_SRGB=72]="DXGI_FORMAT_BC1_UNORM_SRGB",r[r.DXGI_FORMAT_BC2_TYPELESS=73]="DXGI_FORMAT_BC2_TYPELESS",r[r.DXGI_FORMAT_BC2_UNORM=74]="DXGI_FORMAT_BC2_UNORM",r[r.DXGI_FORMAT_BC2_UNORM_SRGB=75]="DXGI_FORMAT_BC2_UNORM_SRGB",r[r.DXGI_FORMAT_BC3_TYPELESS=76]="DXGI_FORMAT_BC3_TYPELESS",r[r.DXGI_FORMAT_BC3_UNORM=77]="DXGI_FORMAT_BC3_UNORM",r[r.DXGI_FORMAT_BC3_UNORM_SRGB=78]="DXGI_FORMAT_BC3_UNORM_SRGB",r[r.DXGI_FORMAT_BC4_TYPELESS=79]="DXGI_FORMAT_BC4_TYPELESS",r[r.DXGI_FORMAT_BC4_UNORM=80]="DXGI_FORMAT_BC4_UNORM",r[r.DXGI_FORMAT_BC4_SNORM=81]="DXGI_FORMAT_BC4_SNORM",r[r.DXGI_FORMAT_BC5_TYPELESS=82]="DXGI_FORMAT_BC5_TYPELESS",r[r.DXGI_FORMAT_BC5_UNORM=83]="DXGI_FORMAT_BC5_UNORM",r[r.DXGI_FORMAT_BC5_SNORM=84]="DXGI_FORMAT_BC5_SNORM",r[r.DXGI_FORMAT_B5G6R5_UNORM=85]="DXGI_FORMAT_B5G6R5_UNORM",r[r.DXGI_FORMAT_B5G5R5A1_UNORM=86]="DXGI_FORMAT_B5G5R5A1_UNORM",r[r.DXGI_FORMAT_B8G8R8A8_UNORM=87]="DXGI_FORMAT_B8G8R8A8_UNORM",r[r.DXGI_FORMAT_B8G8R8X8_UNORM=88]="DXGI_FORMAT_B8G8R8X8_UNORM",r[r.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM=89]="DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM",r[r.DXGI_FORMAT_B8G8R8A8_TYPELESS=90]="DXGI_FORMAT_B8G8R8A8_TYPELESS",r[r.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB=91]="DXGI_FORMAT_B8G8R8A8_UNORM_SRGB",r[r.DXGI_FORMAT_B8G8R8X8_TYPELESS=92]="DXGI_FORMAT_B8G8R8X8_TYPELESS",r[r.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB=93]="DXGI_FORMAT_B8G8R8X8_UNORM_SRGB",r[r.DXGI_FORMAT_BC6H_TYPELESS=94]="DXGI_FORMAT_BC6H_TYPELESS",r[r.DXGI_FORMAT_BC6H_UF16=95]="DXGI_FORMAT_BC6H_UF16",r[r.DXGI_FORMAT_BC6H_SF16=96]="DXGI_FORMAT_BC6H_SF16",r[r.DXGI_FORMAT_BC7_TYPELESS=97]="DXGI_FORMAT_BC7_TYPELESS",r[r.DXGI_FORMAT_BC7_UNORM=98]="DXGI_FORMAT_BC7_UNORM",r[r.DXGI_FORMAT_BC7_UNORM_SRGB=99]="DXGI_FORMAT_BC7_UNORM_SRGB",r[r.DXGI_FORMAT_AYUV=100]="DXGI_FORMAT_AYUV",r[r.DXGI_FORMAT_Y410=101]="DXGI_FORMAT_Y410",r[r.DXGI_FORMAT_Y416=102]="DXGI_FORMAT_Y416",r[r.DXGI_FORMAT_NV12=103]="DXGI_FORMAT_NV12",r[r.DXGI_FORMAT_P010=104]="DXGI_FORMAT_P010",r[r.DXGI_FORMAT_P016=105]="DXGI_FORMAT_P016",r[r.DXGI_FORMAT_420_OPAQUE=106]="DXGI_FORMAT_420_OPAQUE",r[r.DXGI_FORMAT_YUY2=107]="DXGI_FORMAT_YUY2",r[r.DXGI_FORMAT_Y210=108]="DXGI_FORMAT_Y210",r[r.DXGI_FORMAT_Y216=109]="DXGI_FORMAT_Y216",r[r.DXGI_FORMAT_NV11=110]="DXGI_FORMAT_NV11",r[r.DXGI_FORMAT_AI44=111]="DXGI_FORMAT_AI44",r[r.DXGI_FORMAT_IA44=112]="DXGI_FORMAT_IA44",r[r.DXGI_FORMAT_P8=113]="DXGI_FORMAT_P8",r[r.DXGI_FORMAT_A8P8=114]="DXGI_FORMAT_A8P8",r[r.DXGI_FORMAT_B4G4R4A4_UNORM=115]="DXGI_FORMAT_B4G4R4A4_UNORM",r[r.DXGI_FORMAT_P208=116]="DXGI_FORMAT_P208",r[r.DXGI_FORMAT_V208=117]="DXGI_FORMAT_V208",r[r.DXGI_FORMAT_V408=118]="DXGI_FORMAT_V408",r[r.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE=119]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",r[r.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE=120]="DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",r[r.DXGI_FORMAT_FORCE_UINT=121]="DXGI_FORMAT_FORCE_UINT",r))(Sf||{}),Ef=(r=>(r[r.DDS_DIMENSION_TEXTURE1D=2]="DDS_DIMENSION_TEXTURE1D",r[r.DDS_DIMENSION_TEXTURE2D=3]="DDS_DIMENSION_TEXTURE2D",r[r.DDS_DIMENSION_TEXTURE3D=6]="DDS_DIMENSION_TEXTURE3D",r))(Ef||{});function ut(r){return r.charCodeAt(0)+(r.charCodeAt(1)<<8)+(r.charCodeAt(2)<<16)+(r.charCodeAt(3)<<24)}var Tt=(r=>(r[r.UNKNOWN=0]="UNKNOWN",r[r.R8G8B8=20]="R8G8B8",r[r.A8R8G8B8=21]="A8R8G8B8",r[r.X8R8G8B8=22]="X8R8G8B8",r[r.R5G6B5=23]="R5G6B5",r[r.X1R5G5B5=24]="X1R5G5B5",r[r.A1R5G5B5=25]="A1R5G5B5",r[r.A4R4G4B4=26]="A4R4G4B4",r[r.R3G3B2=27]="R3G3B2",r[r.A8=28]="A8",r[r.A8R3G3B2=29]="A8R3G3B2",r[r.X4R4G4B4=30]="X4R4G4B4",r[r.A2B10G10R10=31]="A2B10G10R10",r[r.A8B8G8R8=32]="A8B8G8R8",r[r.X8B8G8R8=33]="X8B8G8R8",r[r.G16R16=34]="G16R16",r[r.A2R10G10B10=35]="A2R10G10B10",r[r.A16B16G16R16=36]="A16B16G16R16",r[r.A8P8=40]="A8P8",r[r.P8=41]="P8",r[r.L8=50]="L8",r[r.A8L8=51]="A8L8",r[r.A4L4=52]="A4L4",r[r.V8U8=60]="V8U8",r[r.L6V5U5=61]="L6V5U5",r[r.X8L8V8U8=62]="X8L8V8U8",r[r.Q8W8V8U8=63]="Q8W8V8U8",r[r.V16U16=64]="V16U16",r[r.A2W10V10U10=67]="A2W10V10U10",r[r.Q16W16V16U16=110]="Q16W16V16U16",r[r.R16F=111]="R16F",r[r.G16R16F=112]="G16R16F",r[r.A16B16G16R16F=113]="A16B16G16R16F",r[r.R32F=114]="R32F",r[r.G32R32F=115]="G32R32F",r[r.A32B32G32R32F=116]="A32B32G32R32F",r[r.UYVY=ut("UYVY")]="UYVY",r[r.R8G8_B8G8=ut("RGBG")]="R8G8_B8G8",r[r.YUY2=ut("YUY2")]="YUY2",r[r.D3DFMT_G8R8_G8B8=ut("GRGB")]="D3DFMT_G8R8_G8B8",r[r.DXT1=ut("DXT1")]="DXT1",r[r.DXT2=ut("DXT2")]="DXT2",r[r.DXT3=ut("DXT3")]="DXT3",r[r.DXT4=ut("DXT4")]="DXT4",r[r.DXT5=ut("DXT5")]="DXT5",r[r.ATI1=ut("ATI1")]="ATI1",r[r.AT1N=ut("AT1N")]="AT1N",r[r.ATI2=ut("ATI2")]="ATI2",r[r.AT2N=ut("AT2N")]="AT2N",r[r.BC4U=ut("BC4U")]="BC4U",r[r.BC4S=ut("BC4S")]="BC4S",r[r.BC5U=ut("BC5U")]="BC5U",r[r.BC5S=ut("BC5S")]="BC5S",r[r.DX10=ut("DX10")]="DX10",r))(Tt||{});const ua={[Tt.DXT1]:"bc1-rgba-unorm",[Tt.DXT2]:"bc2-rgba-unorm",[Tt.DXT3]:"bc2-rgba-unorm",[Tt.DXT4]:"bc3-rgba-unorm",[Tt.DXT5]:"bc3-rgba-unorm",[Tt.ATI1]:"bc4-r-unorm",[Tt.BC4U]:"bc4-r-unorm",[Tt.BC4S]:"bc4-r-snorm",[Tt.ATI2]:"bc5-rg-unorm",[Tt.BC5U]:"bc5-rg-unorm",[Tt.BC5S]:"bc5-rg-snorm",36:"rgba16uint",110:"rgba16sint",111:"r16float",112:"rg16float",113:"rgba16float",114:"r32float",115:"rg32float",116:"rgba32float"},gt={70:"bc1-rgba-unorm",71:"bc1-rgba-unorm",72:"bc1-rgba-unorm-srgb",73:"bc2-rgba-unorm",74:"bc2-rgba-unorm",75:"bc2-rgba-unorm-srgb",76:"bc3-rgba-unorm",77:"bc3-rgba-unorm",78:"bc3-rgba-unorm-srgb",79:"bc4-r-unorm",80:"bc4-r-unorm",81:"bc4-r-snorm",82:"bc5-rg-unorm",83:"bc5-rg-unorm",84:"bc5-rg-snorm",94:"bc6h-rgb-ufloat",95:"bc6h-rgb-ufloat",96:"bc6h-rgb-float",97:"bc7-rgba-unorm",98:"bc7-rgba-unorm",99:"bc7-rgba-unorm-srgb",28:"rgba8unorm",29:"rgba8unorm-srgb",87:"bgra8unorm",91:"bgra8unorm-srgb",41:"r32float",49:"rg8unorm",56:"r16uint",61:"r8unorm",24:"rgb10a2unorm",11:"rgba16uint",13:"rgba16sint",10:"rgba16float",54:"r16float",34:"rg16float",16:"rg32float",2:"rgba32float"},F={MAGIC_VALUE:542327876,MAGIC_SIZE:4,HEADER_SIZE:124,HEADER_DX10_SIZE:20,PIXEL_FORMAT_FLAGS:{ALPHAPIXELS:1,ALPHA:2,FOURCC:4,RGB:64,RGBA:65,YUV:512,LUMINANCE:131072,LUMINANCEA:131073},RESOURCE_MISC_TEXTURECUBE:4,HEADER_FIELDS:Z1,HEADER_DX10_FIELDS:Q1,DXGI_FORMAT:Sf,D3D10_RESOURCE_DIMENSION:Ef,D3DFMT:Tt},Af={"bc1-rgba-unorm":8,"bc1-rgba-unorm-srgb":8,"bc2-rgba-unorm":16,"bc2-rgba-unorm-srgb":16,"bc3-rgba-unorm":16,"bc3-rgba-unorm-srgb":16,"bc4-r-unorm":8,"bc4-r-snorm":8,"bc5-rg-unorm":16,"bc5-rg-snorm":16,"bc6h-rgb-ufloat":16,"bc6h-rgb-float":16,"bc7-rgba-unorm":16,"bc7-rgba-unorm-srgb":16};function Pf(r,t){const{format:e,fourCC:i,width:s,height:n,dataOffset:o,mipmapCount:a}=tT(r);if(!t.includes(e))throw new Error(`Unsupported texture format: ${i} ${e}, supported: ${t}`);if(a<=1)return{format:e,width:s,height:n,resource:[new Uint8Array(r,o)],alphaMode:"no-premultiply-alpha"};const u=J1(e,s,n,o,a,r);return{format:e,width:s,height:n,resource:u,alphaMode:"no-premultiply-alpha"}}function J1(r,t,e,i,s,n){const o=[],a=Af[r];let u=t,l=e,c=i;for(let h=0;h>1,1),l=Math.max(l>>1,1)}return o}function tT(r){const t=new Uint32Array(r,0,F.HEADER_SIZE/Uint32Array.BYTES_PER_ELEMENT);if(t[F.HEADER_FIELDS.MAGIC]!==F.MAGIC_VALUE)throw new Error("Invalid magic number in DDS header");const e=t[F.HEADER_FIELDS.HEIGHT],i=t[F.HEADER_FIELDS.WIDTH],s=Math.max(1,t[F.HEADER_FIELDS.MIPMAP_COUNT]),n=t[F.HEADER_FIELDS.PF_FLAGS],o=t[F.HEADER_FIELDS.FOURCC],a=eT(t,n,o,r),u=F.MAGIC_SIZE+F.HEADER_SIZE+(o===F.D3DFMT.DX10?F.HEADER_DX10_SIZE:0);return{format:a,fourCC:o,width:i,height:e,dataOffset:u,mipmapCount:s}}function eT(r,t,e,i){if(t&F.PIXEL_FORMAT_FLAGS.FOURCC){if(e===F.D3DFMT.DX10){const s=new Uint32Array(i,F.MAGIC_SIZE+F.HEADER_SIZE,F.HEADER_DX10_SIZE/Uint32Array.BYTES_PER_ELEMENT);if(s[F.HEADER_DX10_FIELDS.MISC_FLAG]===F.RESOURCE_MISC_TEXTURECUBE)throw new Error("DDSParser does not support cubemap textures");if(s[F.HEADER_DX10_FIELDS.RESOURCE_DIMENSION]===F.D3D10_RESOURCE_DIMENSION.DDS_DIMENSION_TEXTURE3D)throw new Error("DDSParser does not supported 3D texture data");const n=s[F.HEADER_DX10_FIELDS.DXGI_FORMAT];if(n in gt)return gt[n];throw new Error(`DDSParser cannot parse texture data with DXGI format ${n}`)}if(e in ua)return ua[e];throw new Error(`DDSParser cannot parse texture data with fourCC format ${e}`)}if(t&F.PIXEL_FORMAT_FLAGS.RGB||t&F.PIXEL_FORMAT_FLAGS.RGBA)return rT(r);throw t&F.PIXEL_FORMAT_FLAGS.YUV?new Error("DDSParser does not supported YUV uncompressed texture data."):t&F.PIXEL_FORMAT_FLAGS.LUMINANCE||t&F.PIXEL_FORMAT_FLAGS.LUMINANCEA?new Error("DDSParser does not support single-channel (lumninance) texture data!"):t&F.PIXEL_FORMAT_FLAGS.ALPHA||t&F.PIXEL_FORMAT_FLAGS.ALPHAPIXELS?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}function rT(r){const t=r[F.HEADER_FIELDS.RGB_BITCOUNT],e=r[F.HEADER_FIELDS.R_BIT_MASK],i=r[F.HEADER_FIELDS.G_BIT_MASK],s=r[F.HEADER_FIELDS.B_BIT_MASK],n=r[F.HEADER_FIELDS.A_BIT_MASK];switch(t){case 32:if(e===255&&i===65280&&s===16711680&&n===4278190080)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM];if(e===16711680&&i===65280&&s===255&&n===4278190080)return gt[F.DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM];if(e===1072693248&&i===1047552&&s===1023&&n===3221225472)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R10G10B10A2_UNORM];if(e===65535&&i===4294901760&&s===0&&n===0)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R16G16_UNORM];if(e===4294967295&&i===0&&s===0&&n===0)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R32_FLOAT];break;case 24:break;case 16:if(e===31744&&i===992&&s===31&&n===32768)return gt[F.DXGI_FORMAT.DXGI_FORMAT_B5G5R5A1_UNORM];if(e===63488&&i===2016&&s===31&&n===0)return gt[F.DXGI_FORMAT.DXGI_FORMAT_B5G6R5_UNORM];if(e===3840&&i===240&&s===15&&n===61440)return gt[F.DXGI_FORMAT.DXGI_FORMAT_B4G4R4A4_UNORM];if(e===255&&i===0&&s===0&&n===65280)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R8G8_UNORM];if(e===65535&&i===0&&s===0&&n===0)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R16_UNORM];break;case 8:if(e===255&&i===0&&s===0&&n===0)return gt[F.DXGI_FORMAT.DXGI_FORMAT_R8_UNORM];break}throw new Error(`DDSParser does not support uncompressed texture with configuration: - bitCount = ${t}, rBitMask = ${e}, gBitMask = ${i}, aBitMask = ${n}`)}const iT={extension:{type:x.LoadParser,priority:_t.High},name:"loadDDS",test(r){return Ct(r,[".dds"])},async load(r,t,e){const i=await Br(),s=await(await fetch(r)).arrayBuffer(),n=Pf(s,i),o=new Gr(n);return ee(o,e,r)},unload(r){Array.isArray(r)?r.forEach(t=>t.destroy(!0)):r.destroy(!0)}};var wf=(r=>(r[r.RGBA8_SNORM=36759]="RGBA8_SNORM",r[r.RGBA=6408]="RGBA",r[r.RGBA8UI=36220]="RGBA8UI",r[r.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",r[r.RGBA8I=36238]="RGBA8I",r[r.RGBA8=32856]="RGBA8",r[r.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",r[r.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",r[r.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",r[r.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",r[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",r[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",r[r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",r[r.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",r[r.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",r[r.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",r[r.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",r[r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",r[r.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",r[r.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",r[r.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",r[r.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",r[r.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",r[r.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",r[r.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",r[r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",r[r.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",r[r.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",r[r.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",r[r.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",r[r.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",r[r.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",r[r.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",r[r.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",r[r.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",r[r.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",r[r.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",r[r.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",r[r.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",r[r.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",r[r.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",r[r.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",r[r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",r[r.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",r[r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",r[r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",r[r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",r))(wf||{}),sT=(r=>(r[r.RGBA=6408]="RGBA",r[r.RGB=6407]="RGB",r[r.RG=33319]="RG",r[r.RED=6403]="RED",r[r.RGBA_INTEGER=36249]="RGBA_INTEGER",r[r.RGB_INTEGER=36248]="RGB_INTEGER",r[r.RG_INTEGER=33320]="RG_INTEGER",r[r.RED_INTEGER=36244]="RED_INTEGER",r[r.ALPHA=6406]="ALPHA",r[r.LUMINANCE=6409]="LUMINANCE",r[r.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",r[r.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",r[r.DEPTH_STENCIL=34041]="DEPTH_STENCIL",r))(sT||{}),nT=(r=>(r[r.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",r[r.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",r[r.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",r[r.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",r[r.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",r[r.UNSIGNED_INT=5125]="UNSIGNED_INT",r[r.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",r[r.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",r[r.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",r[r.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",r[r.BYTE=5120]="BYTE",r[r.SHORT=5122]="SHORT",r[r.INT=5124]="INT",r[r.FLOAT=5126]="FLOAT",r[r.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",r[r.HALF_FLOAT=36193]="HALF_FLOAT",r))(nT||{});const et={FILE_HEADER_SIZE:64,FILE_IDENTIFIER:[171,75,84,88,32,49,49,187,13,10,26,10],FORMATS_TO_COMPONENTS:{6408:4,6407:3,33319:2,6403:1,6409:1,6410:2,6406:1},INTERNAL_FORMAT_TO_BYTES_PER_PIXEL:{33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,36283:.5,36284:.5,36285:1,36286:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,37808:1,37840:1,37809:.8,37841:.8,37810:.64,37842:.64,37811:.53375,37843:.53375,37812:.445,37844:.445,37813:.4,37845:.4,37814:.33375,37846:.33375,37815:.25,37847:.25,37816:.32,37848:.32,37817:.26625,37849:.26625,37818:.2,37850:.2,37819:.16,37851:.16,37820:.13375,37852:.13375,37821:.11125,37853:.11125,36492:1,36493:1,36494:1,36495:1},INTERNAL_FORMAT_TO_TEXTURE_FORMATS:{33776:"bc1-rgba-unorm",33777:"bc1-rgba-unorm",33778:"bc2-rgba-unorm",33779:"bc3-rgba-unorm",35916:"bc1-rgba-unorm-srgb",35917:"bc1-rgba-unorm-srgb",35918:"bc2-rgba-unorm-srgb",35919:"bc3-rgba-unorm-srgb",36283:"bc4-r-unorm",36284:"bc4-r-snorm",36285:"bc5-rg-unorm",36286:"bc5-rg-snorm",37488:"eac-r11unorm",37490:"eac-rg11snorm",37492:"etc2-rgb8unorm",37496:"etc2-rgba8unorm",37493:"etc2-rgb8unorm-srgb",37497:"etc2-rgba8unorm-srgb",37494:"etc2-rgb8a1unorm",37495:"etc2-rgb8a1unorm-srgb",37808:"astc-4x4-unorm",37840:"astc-4x4-unorm-srgb",37809:"astc-5x4-unorm",37841:"astc-5x4-unorm-srgb",37810:"astc-5x5-unorm",37842:"astc-5x5-unorm-srgb",37811:"astc-6x5-unorm",37843:"astc-6x5-unorm-srgb",37812:"astc-6x6-unorm",37844:"astc-6x6-unorm-srgb",37813:"astc-8x5-unorm",37845:"astc-8x5-unorm-srgb",37814:"astc-8x6-unorm",37846:"astc-8x6-unorm-srgb",37815:"astc-8x8-unorm",37847:"astc-8x8-unorm-srgb",37816:"astc-10x5-unorm",37848:"astc-10x5-unorm-srgb",37817:"astc-10x6-unorm",37849:"astc-10x6-unorm-srgb",37818:"astc-10x8-unorm",37850:"astc-10x8-unorm-srgb",37819:"astc-10x10-unorm",37851:"astc-10x10-unorm-srgb",37820:"astc-12x10-unorm",37852:"astc-12x10-unorm-srgb",37821:"astc-12x12-unorm",37853:"astc-12x12-unorm-srgb",36492:"bc7-rgba-unorm",36493:"bc7-rgba-unorm-srgb",36494:"bc6h-rgb-float",36495:"bc6h-rgb-ufloat",35907:"rgba8unorm-srgb",36759:"rgba8snorm",36220:"rgba8uint",36238:"rgba8sint",6408:"rgba8unorm"},FIELDS:{FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},TYPES_TO_BYTES_PER_COMPONENT:{5121:1,5123:2,5124:4,5125:4,5126:4,36193:8},TYPES_TO_BYTES_PER_PIXEL:{32819:2,32820:2,33635:2},ENDIANNESS:67305985};function Rf(r,t){const e=new DataView(r);if(!lT(e))throw new Error("Invalid KTX identifier in header");const{littleEndian:i,glType:s,glFormat:n,glInternalFormat:o,pixelWidth:a,pixelHeight:u,numberOfMipmapLevels:l,offset:c}=uT(e),h=et.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[o];if(!h)throw new Error(`Unknown texture format ${o}`);if(!t.includes(h))throw new Error(`Unsupported texture format: ${h}, supportedFormats: ${t}`);const p=aT(s,n,o),f=oT(e,s,p,a,u,c,l,i);return{format:h,width:a,height:u,resource:f,alphaMode:"no-premultiply-alpha"}}function oT(r,t,e,i,s,n,o,a){const u=i+3&-4,l=s+3&-4;let c=i*s;t===0&&(c=u*l);let h=c*e,p=i,f=s,m=u,_=l,g=n;const b=new Array(o);for(let v=0;v>1||1,f=f>>1||1,m=p+4-1&-4,_=f+4-1&-4,h=m*_*e}return b}function aT(r,t,e){let i=et.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[e];if(r!==0&&(et.TYPES_TO_BYTES_PER_COMPONENT[r]?i=et.TYPES_TO_BYTES_PER_COMPONENT[r]*et.FORMATS_TO_COMPONENTS[t]:i=et.TYPES_TO_BYTES_PER_PIXEL[r]),i===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");return i}function uT(r){const t=r.getUint32(et.FIELDS.ENDIANNESS,!0)===et.ENDIANNESS,e=r.getUint32(et.FIELDS.GL_TYPE,t),i=r.getUint32(et.FIELDS.GL_FORMAT,t),s=r.getUint32(et.FIELDS.GL_INTERNAL_FORMAT,t),n=r.getUint32(et.FIELDS.PIXEL_WIDTH,t),o=r.getUint32(et.FIELDS.PIXEL_HEIGHT,t)||1,a=r.getUint32(et.FIELDS.PIXEL_DEPTH,t)||1,u=r.getUint32(et.FIELDS.NUMBER_OF_ARRAY_ELEMENTS,t)||1,l=r.getUint32(et.FIELDS.NUMBER_OF_FACES,t),c=r.getUint32(et.FIELDS.NUMBER_OF_MIPMAP_LEVELS,t),h=r.getUint32(et.FIELDS.BYTES_OF_KEY_VALUE_DATA,t);if(o===0||a!==1)throw new Error("Only 2D textures are supported");if(l!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");return{littleEndian:t,glType:e,glFormat:i,glInternalFormat:s,pixelWidth:n,pixelHeight:o,numberOfMipmapLevels:c,offset:et.FILE_HEADER_SIZE+h}}function lT(r){for(let t=0;tt.destroy(!0)):r.destroy(!0)}},hT='(function(){"use strict";const s={rgb8unorm:{convertedFormat:"rgba8unorm",convertFunction:i},"rgb8unorm-srgb":{convertedFormat:"rgba8unorm-srgb",convertFunction:i}};function f(r){const t=r.format;if(s[t]){const n=s[t].convertFunction,o=r.resource;for(let e=0;e{LIBKTX({locateFile:o=>t}).then(o=>{n(o)})})}return c}async function v(r,t){const n=await fetch(r);if(n.ok){const o=await n.arrayBuffer();return new t.ktxTexture(new Uint8Array(o))}throw new Error(`Failed to load KTX(2) texture: ${r}`)}const x=["bc7-rgba-unorm","astc-4x4-unorm","etc2-rgba8unorm","bc3-rgba-unorm","rgba8unorm"];async function B(r){const t=await g(),n=await v(r,t);let o;if(n.needsTranscoding){o=u;const R=t.TranscodeTarget[l];if(n.transcodeBasis(R,0)!==t.ErrorCode.SUCCESS)throw new Error("Unable to transcode basis texture.")}else o=U(n);const e=d(n),b={width:n.baseWidth,height:n.baseHeight,format:o,mipLevelCount:n.numLevels,resource:e,alphaMode:"no-premultiply-alpha"};return f(b),b}async function A(r,t,n){r&&(a.jsUrl=r),t&&(a.wasmUrl=t),u=x.filter(o=>n.includes(o))[0],l=y(u),await g()}const m={init:async r=>{const{jsUrl:t,wasmUrl:n,supportedTextures:o}=r;await A(t,n,o)},load:async r=>{var t;try{const n=await B(r.url);return{type:"load",url:r.url,success:!0,textureOptions:n,transferables:(t=n.resource)==null?void 0:t.map(o=>o.buffer)}}catch(n){throw n}}};self.onmessage=async r=>{var t;const n=r.data,o=await((t=m[n.type])==null?void 0:t.call(m,n));o&&self.postMessage(o,o.transferables)}})();\n';let We=null;class Mf{constructor(){We||(We=URL.createObjectURL(new Blob([hT],{type:"application/javascript"}))),this.worker=new Worker(We)}}Mf.revokeObjectURL=function(){We&&(URL.revokeObjectURL(We),We=null)};const Ji={jsUrl:"https://files.pixijs.download/transcoders/ktx/libktx.js",wasmUrl:"https://files.pixijs.download/transcoders/ktx/libktx.wasm"};function dT(r){Object.assign(Ji,r)}let Fr;const Cf={};function pT(r){return Fr||(Fr=new Mf().worker,Fr.onmessage=t=>{const{success:e,url:i,textureOptions:s}=t.data;e||console.warn("Failed to load KTX texture",i),Cf[i](s)},Fr.postMessage({type:"init",jsUrl:Ji.jsUrl,wasmUrl:Ji.wasmUrl,supportedTextures:r})),Fr}function Of(r,t){const e=pT(t);return new Promise(i=>{Cf[r]=i,e.postMessage({type:"load",url:r})})}const fT={extension:{type:x.LoadParser,priority:_t.High},name:"loadKTX2",test(r){return Ct(r,".ktx2")},async load(r,t,e){const i=await Br(),s=await Of(r,i),n=new Gr(s);return ee(n,e,r)},unload(r){Array.isArray(r)?r.forEach(t=>t.destroy(!0)):r.destroy(!0)}},la={rgb8unorm:{convertedFormat:"rgba8unorm",convertFunction:Gf},"rgb8unorm-srgb":{convertedFormat:"rgba8unorm-srgb",convertFunction:Gf}};function mT(r){const t=r.format;if(la[t]){const e=la[t].convertFunction,i=r.resource;for(let s=0;sCt(r,[".ktx",".ktx2",".dds"]),parse:r=>{var t,e;let i;const s=r.split(".");if(s.length>2){const n=s[s.length-2];ts.includes(n)&&(i=n)}else i=s[s.length-1];return{resolution:parseFloat((e=(t=qt.RETINA_PREFIX.exec(r))==null?void 0:t[1])!=null?e:"1"),format:i,src:r}}};let es;const ST={extension:{type:x.DetectionParser,priority:2},test:async()=>!!(await Mr()||Rr()),add:async r=>{const t=await aa();return es=ET(t),[...es,...r]},remove:async r=>es?r.filter(t=>!(t in es)):r};function ET(r){const t=["basis"],e={};return r.forEach(i=>{const s=i.split("-")[0];s&&!e[s]&&(e[s]=!0,t.push(s))}),t.sort((i,s)=>{const n=ts.indexOf(i),o=ts.indexOf(s);return n===-1?1:o===-1?-1:n-o}),t}const AT=new lt,ca=class{cull(t,e,i=!0){this._cullRecursive(t,e,i)}_cullRecursive(t,e,i=!0){var s;if(t.cullable&&t.measurable&&t.includeInBuild){const n=(s=t.cullArea)!=null?s:rr(t,i,AT);t.culled=!(n.x>=e.x+e.width||n.y>=e.y+e.height||n.x+n.width<=e.x||n.y+n.height<=e.y)}if(!(!t.cullableChildren||t.culled||!t.renderable||!t.measurable||!t.includeInBuild))for(let n=0;n{Ff.shared.cull(this.stage,this.renderer.screen),this.renderer.render({container:this.stage})}}static destroy(){this.render=this._renderRef}}Df.extension={priority:10,type:x.Application,name:"culler"};const PT={extension:{type:x.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(function(){return k0})}};var wT=Object.defineProperty,rs=Object.getOwnPropertySymbols,Uf=Object.prototype.hasOwnProperty,kf=Object.prototype.propertyIsEnumerable,Lf=(r,t,e)=>t in r?wT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ha=(r,t)=>{for(var e in t||(t={}))Uf.call(t,e)&&Lf(r,e,t[e]);if(rs)for(var e of rs(t))kf.call(t,e)&&Lf(r,e,t[e]);return r},RT=(r,t)=>{var e={};for(var i in r)Uf.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&rs)for(var i of rs(r))t.indexOf(i)<0&&kf.call(r,i)&&(e[i]=r[i]);return e};const $f=class tl extends xt{constructor(t){t=ha(ha({},tl.defaultOptions),t),super(t),this.enabled=!0,this._state=Bt.for2d(),this.padding=t.padding,typeof t.antialias=="boolean"?this.antialias=t.antialias?"on":"off":this.antialias=t.antialias,this.resolution=t.resolution,this.blendRequired=t.blendRequired,this.addResource("uTexture",0,1)}apply(t,e,i,s){t.applyFilter(this,e,i,s)}get blendMode(){return this._state.blendMode}set blendMode(t){this._state.blendMode=t}static from(t){const e=t,{gpu:i,gl:s}=e,n=RT(e,["gpu","gl"]);let o,a;return i&&(o=vt.from(i)),s&&(a=Mt.from(s)),new tl(ha({gpuProgram:o,glProgram:a},n))}};$f.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1};let Kt=$f;var Nf=` -in vec2 vTextureCoord; -in vec4 vColor; - -out vec4 finalColor; - -uniform float uBlend; - -uniform sampler2D uTexture; -uniform sampler2D uBackTexture; - -{FUNCTIONS} - -void main() -{ - vec4 back = texture(uBackTexture, vTextureCoord); - vec4 front = texture(uTexture, vTextureCoord); - - {MAIN} -} -`,Hf=`in vec2 aPosition; -out vec2 vTextureCoord; -out vec2 backgroundUv; - -uniform vec4 uInputSize; -uniform vec4 uOutputFrame; -uniform vec4 uOutputTexture; - -vec4 filterVertexPosition( void ) -{ - vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; - - position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -vec2 filterTextureCoord( void ) -{ - return aPosition * (uOutputFrame.zw * uInputSize.zw); -} - -void main(void) -{ - gl_Position = filterVertexPosition(); - vTextureCoord = filterTextureCoord(); -} -`,Xf=` -struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct BlendUniforms { - uBlend:f32, -}; - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; -@group(0) @binding(3) var uBackTexture: texture_2d; - -@group(1) @binding(0) var blendUniforms : BlendUniforms; - - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2 - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition) - ); -} - -{FUNCTIONS} - -@fragment -fn mainFragment( - @location(0) uv: vec2 -) -> @location(0) vec4 { - - - var back = textureSample(uBackTexture, uSampler, uv); - var front = textureSample(uTexture, uSampler, uv); - - var out = vec4(0.0,0.0,0.0,0.0); - - {MAIN} - - return out; -}`,MT=Object.defineProperty,zf=Object.getOwnPropertySymbols,CT=Object.prototype.hasOwnProperty,OT=Object.prototype.propertyIsEnumerable,jf=(r,t,e)=>t in r?MT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Vf=(r,t)=>{for(var e in t||(t={}))CT.call(t,e)&&jf(r,e,t[e]);if(zf)for(var e of zf(t))OT.call(t,e)&&jf(r,e,t[e]);return r};class GT extends Kt{constructor(t){const e=t.gpu,i=Wf(Vf({source:Xf},e)),s=vt.from({vertex:{source:i,entryPoint:"mainVertex"},fragment:{source:i,entryPoint:"mainFragment"}}),n=t.gl,o=Wf(Vf({source:Nf},n)),a=Mt.from({vertex:Hf,fragment:o}),u=new nt({uBlend:{value:1,type:"f32"}});super({gpuProgram:s,glProgram:a,blendRequired:!0,resources:{blendUniforms:u,uBackTexture:P.EMPTY}})}}function Wf(r){const{source:t,functions:e,main:i}=r;return t.replace("{FUNCTIONS}",e).replace("{MAIN}",i)}const BT=` - float getLuminosity(vec3 c) { - return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b; - } - - vec3 setLuminosity(vec3 c, float lum) { - float modLum = lum - getLuminosity(c); - vec3 color = c.rgb + vec3(modLum); - - // clip back into legal range - modLum = getLuminosity(color); - vec3 modLumVec = vec3(modLum); - - float cMin = min(color.r, min(color.g, color.b)); - float cMax = max(color.r, max(color.g, color.b)); - - if(cMin < 0.0) { - color = mix(modLumVec, color, modLum / (modLum - cMin)); - } - - if(cMax > 1.0) { - color = mix(modLumVec, color, (1.0 - modLum) / (cMax - modLum)); - } - - return color; - } - - float getSaturation(vec3 c) { - return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b)); - } - - vec3 setSaturationMinMidMax(vec3 cSorted, float s) { - vec3 colorSorted = cSorted; - - if(colorSorted.z > colorSorted.x) { - colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x)); - colorSorted.z = s; - } - else { - colorSorted.y = 0.0; - colorSorted.z = 0.0; - } - - colorSorted.x = 0.0; - - return colorSorted; - } - - vec3 setSaturation(vec3 c, float s) { - vec3 color = c; - - if(color.r <= color.g && color.r <= color.b) { - if(color.g <= color.b) { - color = setSaturationMinMidMax(color.rgb, s).rgb; - } - else { - color = setSaturationMinMidMax(color.rbg, s).rbg; - } - } - else if(color.g <= color.r && color.g <= color.b) { - if(color.r <= color.b) { - color = setSaturationMinMidMax(color.grb, s).grb; - } - else { - color = setSaturationMinMidMax(color.gbr, s).gbr; - } - } - else { - // Using bgr for both fixes part of hue - if(color.r <= color.g) { - color = setSaturationMinMidMax(color.brg, s).brg; - } - else { - color = setSaturationMinMidMax(color.bgr, s).bgr; - } - } - - return color; - } - `,IT=` - fn getLuminosity(c: vec3) -> f32 - { - return 0.3*c.r + 0.59*c.g + 0.11*c.b; - } - - fn setLuminosity(c: vec3, lum: f32) -> vec3 - { - var modLum: f32 = lum - getLuminosity(c); - var color: vec3 = c.rgb + modLum; - - // clip back into legal range - modLum = getLuminosity(color); - let modLumVec = vec3(modLum); - - let cMin: f32 = min(color.r, min(color.g, color.b)); - let cMax: f32 = max(color.r, max(color.g, color.b)); - - if(cMin < 0.0) - { - color = mix(modLumVec, color, modLum / (modLum - cMin)); - } - - if(cMax > 1.0) - { - color = mix(modLumVec, color, (1 - modLum) / (cMax - modLum)); - } - - return color; - } - - fn getSaturation(c: vec3) -> f32 - { - return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b)); - } - - fn setSaturationMinMidMax(cSorted: vec3, s: f32) -> vec3 - { - var colorSorted = cSorted; - - if(colorSorted.z > colorSorted.x) - { - colorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x)); - colorSorted.z = s; - } - else - { - colorSorted.y = 0; - colorSorted.z = 0; - } - - colorSorted.x = 0; - - return colorSorted; - } - - fn setSaturation(c: vec3, s: f32) -> vec3 - { - var color = c; - - if (color.r <= color.g && color.r <= color.b) - { - if (color.g <= color.b) - { - color = vec3(setSaturationMinMidMax(color.rgb, s)).rgb; - } - else - { - color = vec3(setSaturationMinMidMax(color.rbg, s)).rbg; - } - } - else if (color.g <= color.r && color.g <= color.b) - { - if (color.r <= color.b) - { - color = vec3(setSaturationMinMidMax(color.grb, s)).grb; - } - else - { - color = vec3(setSaturationMinMidMax(color.gbr, s)).gbr; - } - } - else - { - // Using bgr for both fixes part of hue - if (color.r <= color.g) - { - color = vec3(setSaturationMinMidMax(color.brg, s)).brg; - } - else - { - color = vec3(setSaturationMinMidMax(color.bgr, s)).bgr; - } - } - - return color; - } - `;var is=`in vec2 aPosition; -out vec2 vTextureCoord; - -uniform vec4 uInputSize; -uniform vec4 uOutputFrame; -uniform vec4 uOutputTexture; - -vec4 filterVertexPosition( void ) -{ - vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; - - position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -vec2 filterTextureCoord( void ) -{ - return aPosition * (uOutputFrame.zw * uInputSize.zw); -} - -void main(void) -{ - gl_Position = filterVertexPosition(); - vTextureCoord = filterTextureCoord(); -} -`,Yf=` -in vec2 vTextureCoord; - -out vec4 finalColor; - -uniform float uAlpha; -uniform sampler2D uTexture; - -void main() -{ - finalColor = texture(uTexture, vTextureCoord) * uAlpha; -} -`,da=`struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct AlphaUniforms { - uAlpha:f32, -}; - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; - -@group(1) @binding(0) var alphaUniforms : AlphaUniforms; - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2 - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -fn getSize() -> vec2 -{ - return gfu.uGlobalFrame.zw; -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition) - ); -} - -@fragment -fn mainFragment( - @location(0) uv: vec2, - @builtin(position) position: vec4 -) -> @location(0) vec4 { - - var sample = textureSample(uTexture, uSampler, uv); - - return sample * alphaUniforms.uAlpha; -}`,FT=Object.defineProperty,DT=Object.defineProperties,UT=Object.getOwnPropertyDescriptors,ss=Object.getOwnPropertySymbols,Kf=Object.prototype.hasOwnProperty,qf=Object.prototype.propertyIsEnumerable,Zf=(r,t,e)=>t in r?FT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,pa=(r,t)=>{for(var e in t||(t={}))Kf.call(t,e)&&Zf(r,e,t[e]);if(ss)for(var e of ss(t))qf.call(t,e)&&Zf(r,e,t[e]);return r},kT=(r,t)=>DT(r,UT(t)),LT=(r,t)=>{var e={};for(var i in r)Kf.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&ss)for(var i of ss(r))t.indexOf(i)<0&&qf.call(r,i)&&(e[i]=r[i]);return e};const Qf=class Fb extends Kt{constructor(t){t=pa(pa({},Fb.defaultOptions),t);const e=vt.from({vertex:{source:da,entryPoint:"mainVertex"},fragment:{source:da,entryPoint:"mainFragment"}}),i=Mt.from({vertex:is,fragment:Yf,name:"alpha-filter"}),s=t,{alpha:n}=s,o=LT(s,["alpha"]),a=new nt({uAlpha:{value:n,type:"f32"}});super(kT(pa({},o),{gpuProgram:e,glProgram:i,resources:{alphaUniforms:a}}))}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(t){this.resources.alphaUniforms.uniforms.uAlpha=t}};Qf.defaultOptions={alpha:1};let $T=Qf;const fa={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},NT=["in vec2 vBlurTexCoords[%size%];","uniform sampler2D uTexture;","out vec4 finalColor;","void main(void)","{"," finalColor = vec4(0.0);"," %blur%","}"].join(` -`);function Jf(r){const t=fa[r],e=t.length;let i=NT,s="";const n="finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;";let o;for(let a=0;a=e&&(o=r-a-1),u=u.replace("%value%",t[o].toString()),s+=u,s+=` -`}return i=i.replace("%blur%",s),i=i.replace("%size%",r.toString()),i}const HT=` - in vec2 aPosition; - - uniform float uStrength; - - out vec2 vBlurTexCoords[%size%]; - - uniform vec4 uInputSize; - uniform vec4 uOutputFrame; - uniform vec4 uOutputTexture; - - vec4 filterVertexPosition( void ) -{ - vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; - - position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - - vec2 filterTextureCoord( void ) - { - return aPosition * (uOutputFrame.zw * uInputSize.zw); - } - - void main(void) - { - gl_Position = filterVertexPosition(); - - float pixelStrength = uInputSize.%dimension% * uStrength; - - vec2 textureCoord = filterTextureCoord(); - %blur% - }`;function tm(r,t){const e=Math.ceil(r/2);let i=HT,s="",n;t?n="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);":n="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);";for(let o=0;o, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct BlurUniforms { - uStrength:f32, -}; - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; - -@group(1) @binding(0) var blurUniforms : BlurUniforms; - - -struct VSOutput { - @builtin(position) position: vec4, - %blur-struct% - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -fn getSize() -> vec2 -{ - return gfu.uGlobalFrame.zw; -} - - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - - let filteredCord = filterTextureCoord(aPosition); - - let strength = gfu.uInputSize.w * blurUniforms.uStrength; - - return VSOutput( - filterVertexPosition(aPosition), - %blur-vertex-out% - ); -} - -@fragment -fn mainFragment( - @builtin(position) position: vec4, - %blur-fragment-in% -) -> @location(0) vec4 { - - var finalColor = vec4(0.0); - - %blur-sampling% - - return finalColor; -}`;function im(r,t){const e=fa[t],i=e.length,s=[],n=[],o=[];for(let h=0;h,`,r?n[h]=`filteredCord + vec2(${h-i+1} * strength, 0.0),`:n[h]=`filteredCord + vec2(0.0, ${h-i+1} * strength),`;const p=ht in r?XT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,ma=(r,t)=>{for(var e in t||(t={}))zT.call(t,e)&&nm(r,e,t[e]);if(sm)for(var e of sm(t))jT.call(t,e)&&nm(r,e,t[e]);return r};const om=class Db extends Kt{constructor(t){t=ma(ma({},Db.defaultOptions),t);const e=em(t.horizontal,t.kernelSize),i=im(t.horizontal,t.kernelSize);super(ma({glProgram:e,gpuProgram:i,resources:{blurUniforms:{uStrength:{value:0,type:"f32"}}}},t)),this.horizontal=t.horizontal,this._quality=0,this.quality=t.quality,this.blur=t.strength,this._uniforms=this.resources.blurUniforms.uniforms}apply(t,e,i,s){if(this._uniforms.uStrength=this.strength/this.passes,this.passes===1)t.applyFilter(this,e,i,s);else{const n=ct.getSameSizeTexture(e);let o=e,a=n;this._state.blend=!1;for(let u=0;ut in r?VT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Dr=(r,t)=>{for(var e in t||(t={}))am.call(t,e)&&lm(r,e,t[e]);if(os)for(var e of os(t))um.call(t,e)&&lm(r,e,t[e]);return r},KT=(r,t)=>WT(r,YT(t)),qT=(r,t)=>{var e={};for(var i in r)am.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&os)for(var i of os(r))t.indexOf(i)<0&&um.call(r,i)&&(e[i]=r[i]);return e};class cm extends Kt{constructor(...t){var e;let i=(e=t[0])!=null?e:{};typeof i=="number"&&(i={strength:i},t[1]&&(i.quality=t[1]),t[2]&&(i.resolution=t[2]),t[3]&&(i.kernelSize=t[3])),i=Dr(Dr({},ns.defaultOptions),i);const s=i,{strength:n,quality:o}=s,a=qT(s,["strength","quality"]);super(KT(Dr({},a),{compatibleRenderers:yt.BOTH,resources:{}})),this._repeatEdgePixels=!1,this.blurXFilter=new ns(Dr({horizontal:!1},i)),this.blurYFilter=new ns(Dr({horizontal:!0},i)),this.quality=o,this.blur=n,this.repeatEdgePixels=!1}apply(t,e,i,s){const n=Math.abs(this.blurXFilter.strength),o=Math.abs(this.blurYFilter.strength);if(n&&o){const a=ct.getSameSizeTexture(e);this.blurXFilter.apply(t,e,a,!0),this.blurYFilter.apply(t,a,i,s),ct.returnTexture(a)}else o?this.blurYFilter.apply(t,e,i,s):this.blurXFilter.apply(t,e,i,s)}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=Math.max(Math.abs(this.blurXFilter.blur),Math.abs(this.blurYFilter.blur))*2}get blur(){return this.blurXFilter.blur}set blur(t){this.blurXFilter.blur=this.blurYFilter.blur=t,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(t){this.blurXFilter.quality=this.blurYFilter.quality=t}get blurX(){return this.blurXFilter.blur}set blurX(t){this.blurXFilter.blur=t,this.updatePadding()}get blurY(){return this.blurYFilter.blur}set blurY(t){this.blurYFilter.blur=t,this.updatePadding()}get blendMode(){return this.blurYFilter.blendMode}set blendMode(t){this.blurYFilter.blendMode=t}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(t){this._repeatEdgePixels=t,this.updatePadding()}}cm.defaultOptions={strength:8,quality:4,kernelSize:5};var hm=` -in vec2 vTextureCoord; -in vec4 vColor; - -out vec4 finalColor; - -uniform float uColorMatrix[20]; -uniform float uAlpha; - -uniform sampler2D uTexture; - -float rand(vec2 co) -{ - return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); -} - -void main() -{ - vec4 color = texture(uTexture, vTextureCoord); - float randomValue = rand(gl_FragCoord.xy * 0.2); - float diff = (randomValue - 0.5) * 0.5; - - if (uAlpha == 0.0) { - finalColor = color; - return; - } - - if (color.a > 0.0) { - color.rgb /= color.a; - } - - vec4 result; - - result.r = (uColorMatrix[0] * color.r); - result.r += (uColorMatrix[1] * color.g); - result.r += (uColorMatrix[2] * color.b); - result.r += (uColorMatrix[3] * color.a); - result.r += uColorMatrix[4]; - - result.g = (uColorMatrix[5] * color.r); - result.g += (uColorMatrix[6] * color.g); - result.g += (uColorMatrix[7] * color.b); - result.g += (uColorMatrix[8] * color.a); - result.g += uColorMatrix[9]; - - result.b = (uColorMatrix[10] * color.r); - result.b += (uColorMatrix[11] * color.g); - result.b += (uColorMatrix[12] * color.b); - result.b += (uColorMatrix[13] * color.a); - result.b += uColorMatrix[14]; - - result.a = (uColorMatrix[15] * color.r); - result.a += (uColorMatrix[16] * color.g); - result.a += (uColorMatrix[17] * color.b); - result.a += (uColorMatrix[18] * color.a); - result.a += uColorMatrix[19]; - - vec3 rgb = mix(color.rgb, result.rgb, uAlpha); - - // Premultiply alpha again. - rgb *= result.a; - - finalColor = vec4(rgb, result.a); -} -`,ga=`struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct ColorMatrixUniforms { - uColorMatrix:array, 5>, - uAlpha:f32, -}; - - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; -@group(1) @binding(0) var colorMatrixUniforms : ColorMatrixUniforms; - - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2, - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition), - ); -} - - -@fragment -fn mainFragment( - @location(0) uv: vec2, -) -> @location(0) vec4 { - - - var c = textureSample(uTexture, uSampler, uv); - - if (colorMatrixUniforms.uAlpha == 0.0) { - return c; - } - - - // Un-premultiply alpha before applying the color matrix. See issue #3539. - if (c.a > 0.0) { - c.r /= c.a; - c.g /= c.a; - c.b /= c.a; - } - - var cm = colorMatrixUniforms.uColorMatrix; - - - var result = vec4(0.); - - result.r = (cm[0][0] * c.r); - result.r += (cm[0][1] * c.g); - result.r += (cm[0][2] * c.b); - result.r += (cm[0][3] * c.a); - result.r += cm[1][0]; - - result.g = (cm[1][1] * c.r); - result.g += (cm[1][2] * c.g); - result.g += (cm[1][3] * c.b); - result.g += (cm[2][0] * c.a); - result.g += cm[2][1]; - - result.b = (cm[2][2] * c.r); - result.b += (cm[2][3] * c.g); - result.b += (cm[3][0] * c.b); - result.b += (cm[3][1] * c.a); - result.b += cm[3][2]; - - result.a = (cm[3][3] * c.r); - result.a += (cm[4][0] * c.g); - result.a += (cm[4][1] * c.b); - result.a += (cm[4][2] * c.a); - result.a += cm[4][3]; - - var rgb = mix(c.rgb, result.rgb, colorMatrixUniforms.uAlpha); - - rgb.r *= result.a; - rgb.g *= result.a; - rgb.b *= result.a; - - return vec4(rgb, result.a); -}`,ZT=Object.defineProperty,QT=Object.defineProperties,JT=Object.getOwnPropertyDescriptors,dm=Object.getOwnPropertySymbols,tS=Object.prototype.hasOwnProperty,eS=Object.prototype.propertyIsEnumerable,pm=(r,t,e)=>t in r?ZT(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,rS=(r,t)=>{for(var e in t||(t={}))tS.call(t,e)&&pm(r,e,t[e]);if(dm)for(var e of dm(t))eS.call(t,e)&&pm(r,e,t[e]);return r},iS=(r,t)=>QT(r,JT(t));class sS extends Kt{constructor(t={}){const e=new nt({uColorMatrix:{value:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],type:"f32",size:20},uAlpha:{value:1,type:"f32"}}),i=vt.from({vertex:{source:ga,entryPoint:"mainVertex"},fragment:{source:ga,entryPoint:"mainFragment"}}),s=Mt.from({vertex:is,fragment:hm,name:"color-matrix-filter"});super(iS(rS({},t),{gpuProgram:i,glProgram:s,resources:{colorMatrixUniforms:e}})),this.alpha=1}_loadMatrix(t,e=!1){let i=t;e&&(this._multiply(i,this.matrix,t),i=this._colorMatrix(i)),this.resources.colorMatrixUniforms.uniforms.uColorMatrix=i,this.resources.colorMatrixUniforms.update()}_multiply(t,e,i){return t[0]=e[0]*i[0]+e[1]*i[5]+e[2]*i[10]+e[3]*i[15],t[1]=e[0]*i[1]+e[1]*i[6]+e[2]*i[11]+e[3]*i[16],t[2]=e[0]*i[2]+e[1]*i[7]+e[2]*i[12]+e[3]*i[17],t[3]=e[0]*i[3]+e[1]*i[8]+e[2]*i[13]+e[3]*i[18],t[4]=e[0]*i[4]+e[1]*i[9]+e[2]*i[14]+e[3]*i[19]+e[4],t[5]=e[5]*i[0]+e[6]*i[5]+e[7]*i[10]+e[8]*i[15],t[6]=e[5]*i[1]+e[6]*i[6]+e[7]*i[11]+e[8]*i[16],t[7]=e[5]*i[2]+e[6]*i[7]+e[7]*i[12]+e[8]*i[17],t[8]=e[5]*i[3]+e[6]*i[8]+e[7]*i[13]+e[8]*i[18],t[9]=e[5]*i[4]+e[6]*i[9]+e[7]*i[14]+e[8]*i[19]+e[9],t[10]=e[10]*i[0]+e[11]*i[5]+e[12]*i[10]+e[13]*i[15],t[11]=e[10]*i[1]+e[11]*i[6]+e[12]*i[11]+e[13]*i[16],t[12]=e[10]*i[2]+e[11]*i[7]+e[12]*i[12]+e[13]*i[17],t[13]=e[10]*i[3]+e[11]*i[8]+e[12]*i[13]+e[13]*i[18],t[14]=e[10]*i[4]+e[11]*i[9]+e[12]*i[14]+e[13]*i[19]+e[14],t[15]=e[15]*i[0]+e[16]*i[5]+e[17]*i[10]+e[18]*i[15],t[16]=e[15]*i[1]+e[16]*i[6]+e[17]*i[11]+e[18]*i[16],t[17]=e[15]*i[2]+e[16]*i[7]+e[17]*i[12]+e[18]*i[17],t[18]=e[15]*i[3]+e[16]*i[8]+e[17]*i[13]+e[18]*i[18],t[19]=e[15]*i[4]+e[16]*i[9]+e[17]*i[14]+e[18]*i[19]+e[19],t}_colorMatrix(t){const e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e}brightness(t,e){const i=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(i,e)}tint(t,e){const[i,s,n]=K.shared.setValue(t).toArray(),o=[i,0,0,0,0,0,s,0,0,0,0,0,n,0,0,0,0,0,1,0];this._loadMatrix(o,e)}greyscale(t,e){const i=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(i,e)}grayscale(t,e){this.greyscale(t,e)}blackAndWhite(t){const e=[.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0];this._loadMatrix(e,t)}hue(t,e){t=(t||0)/180*Math.PI;const i=Math.cos(t),s=Math.sin(t),n=Math.sqrt,o=1/3,a=n(o),u=i+(1-i)*o,l=o*(1-i)-a*s,c=o*(1-i)+a*s,h=o*(1-i)+a*s,p=i+o*(1-i),f=o*(1-i)-a*s,m=o*(1-i)-a*s,_=o*(1-i)+a*s,g=i+o*(1-i),b=[u,l,c,0,0,h,p,f,0,0,m,_,g,0,0,0,0,0,1,0];this._loadMatrix(b,e)}contrast(t,e){const i=(t||0)+1,s=-.5*(i-1),n=[i,0,0,0,s,0,i,0,0,s,0,0,i,0,s,0,0,0,1,0];this._loadMatrix(n,e)}saturate(t=0,e){const i=t*2/3+1,s=(i-1)*-.5,n=[i,s,s,0,0,s,i,s,0,0,s,s,i,0,0,0,0,0,1,0];this._loadMatrix(n,e)}desaturate(){this.saturate(-1)}negative(t){const e=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix(e,t)}sepia(t){const e=[.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0];this._loadMatrix(e,t)}technicolor(t){const e=[1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0];this._loadMatrix(e,t)}polaroid(t){const e=[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0];this._loadMatrix(e,t)}toBGR(t){const e=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix(e,t)}kodachrome(t){const e=[1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0];this._loadMatrix(e,t)}browni(t){const e=[.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix(e,t)}vintage(t){const e=[.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix(e,t)}colorTone(t,e,i,s,n){t=t||.2,e=e||.15,i=i||16770432,s=s||3375104;const o=K.shared,[a,u,l]=o.setValue(i).toArray(),[c,h,p]=o.setValue(s).toArray(),f=[.3,.59,.11,0,0,a,u,l,t,0,c,h,p,e,0,a-c,u-h,l-p,0,0];this._loadMatrix(f,n)}night(t,e){t=t||.1;const i=[t*-2,-t,0,0,0,-t,0,t,0,0,0,t,t*2,0,0,0,0,0,1,0];this._loadMatrix(i,e)}predator(t,e){const i=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(i,e)}lsd(t){const e=[2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0];this._loadMatrix(e,t)}reset(){const t=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];this._loadMatrix(t,!1)}get matrix(){return this.resources.colorMatrixUniforms.uniforms.uColorMatrix}set matrix(t){this.resources.colorMatrixUniforms.uniforms.uColorMatrix=t}get alpha(){return this.resources.colorMatrixUniforms.uniforms.uAlpha}set alpha(t){this.resources.colorMatrixUniforms.uniforms.uAlpha=t}}var fm=` -in vec2 vTextureCoord; -in vec2 vFilterUv; - -out vec4 finalColor; - -uniform sampler2D uTexture; -uniform sampler2D uMapTexture; - -uniform vec4 uInputClamp; -uniform highp vec4 uInputSize; -uniform mat2 uRotation; -uniform vec2 uScale; - -void main() -{ - vec4 map = texture(uMapTexture, vFilterUv); - - vec2 offset = uInputSize.zw * (uRotation * (map.xy - 0.5)) * uScale; - - finalColor = texture(uTexture, clamp(vTextureCoord + offset, uInputClamp.xy, uInputClamp.zw)); -} -`,mm=`in vec2 aPosition; -out vec2 vTextureCoord; -out vec2 vFilterUv; - - -uniform vec4 uInputSize; -uniform vec4 uOutputFrame; -uniform vec4 uOutputTexture; - -uniform mat3 uFilterMatrix; - -vec4 filterVertexPosition( void ) -{ - vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; - - position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -vec2 filterTextureCoord( void ) -{ - return aPosition * (uOutputFrame.zw * uInputSize.zw); -} - -vec2 getFilterCoord( void ) -{ - return ( uFilterMatrix * vec3( filterTextureCoord(), 1.0) ).xy; -} - - -void main(void) -{ - gl_Position = filterVertexPosition(); - vTextureCoord = filterTextureCoord(); - vFilterUv = getFilterCoord(); -} -`,_a=` -struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct DisplacementUniforms { - uFilterMatrix:mat3x3, - uScale:vec2, - uRotation:mat2x2 -}; - - - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; - -@group(1) @binding(0) var filterUniforms : DisplacementUniforms; -@group(1) @binding(1) var uMapTexture: texture_2d; -@group(1) @binding(2) var uMapSampler : sampler; - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2, - @location(1) filterUv : vec2, - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -fn getFilterCoord(aPosition:vec2 ) -> vec2 -{ - return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy; -} - -fn getSize() -> vec2 -{ - - - return gfu.uGlobalFrame.zw; -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition), - getFilterCoord(aPosition) - ); -} - -@fragment -fn mainFragment( - @location(0) uv: vec2, - @location(1) filterUv: vec2, - @builtin(position) position: vec4 -) -> @location(0) vec4 { - - var map = textureSample(uMapTexture, uMapSampler, filterUv); - - var offset = gfu.uInputSize.zw * (filterUniforms.uRotation * (map.xy - 0.5)) * filterUniforms.uScale; - - return textureSample(uTexture, uSampler, clamp(uv + offset, gfu.uInputClamp.xy, gfu.uInputClamp.zw)); -}`,nS=Object.defineProperty,oS=Object.defineProperties,aS=Object.getOwnPropertyDescriptors,as=Object.getOwnPropertySymbols,gm=Object.prototype.hasOwnProperty,_m=Object.prototype.propertyIsEnumerable,bm=(r,t,e)=>t in r?nS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,uS=(r,t)=>{for(var e in t||(t={}))gm.call(t,e)&&bm(r,e,t[e]);if(as)for(var e of as(t))_m.call(t,e)&&bm(r,e,t[e]);return r},lS=(r,t)=>oS(r,aS(t)),cS=(r,t)=>{var e={};for(var i in r)gm.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&as)for(var i of as(r))t.indexOf(i)<0&&_m.call(r,i)&&(e[i]=r[i]);return e};class hS extends Kt{constructor(...t){let e=t[0];e instanceof Gt&&(e={sprite:e,scale:t[1]});const i=e,{sprite:s,scale:n}=i,o=cS(i,["sprite","scale"]);let a=n!=null?n:20;typeof a=="number"&&(a=new V(a,a));const u=new nt({uFilterMatrix:{value:new G,type:"mat3x3"},uScale:{value:a,type:"vec2"},uRotation:{value:new Float32Array([0,0,0,0]),type:"mat2x2"}}),l=Mt.from({vertex:mm,fragment:fm,name:"displacement-filter"}),c=vt.from({vertex:{source:_a,entryPoint:"mainVertex"},fragment:{source:_a,entryPoint:"mainFragment"}}),h=s.texture.source;super(lS(uS({},o),{gpuProgram:c,glProgram:l,resources:{filterUniforms:u,uMapTexture:h,uMapSampler:h.style}})),this._sprite=e.sprite,this._sprite.renderable=!1}apply(t,e,i,s){const n=this.resources.filterUniforms.uniforms;t.calculateSpriteMatrix(n.uFilterMatrix,this._sprite);const o=this._sprite.worldTransform,a=Math.sqrt(o.a*o.a+o.b*o.b),u=Math.sqrt(o.c*o.c+o.d*o.d);a!==0&&u!==0&&(n.uRotation[0]=o.a/a,n.uRotation[1]=o.b/a,n.uRotation[2]=o.c/u,n.uRotation[3]=o.d/u),this.resources.uMapTexture=this._sprite.texture.source,t.applyFilter(this,e,i,s)}get scale(){return this.resources.filterUniforms.uniforms.uScale}}var vm=` -in vec2 vTextureCoord; -in vec4 vColor; - -out vec4 finalColor; - -uniform float uNoise; -uniform float uSeed; -uniform sampler2D uTexture; - -float rand(vec2 co) -{ - return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); -} - -void main() -{ - vec4 color = texture(uTexture, vTextureCoord); - float randomValue = rand(gl_FragCoord.xy * uSeed); - float diff = (randomValue - 0.5) * uNoise; - - // Un-premultiply alpha before applying the color matrix. See issue #3539. - if (color.a > 0.0) { - color.rgb /= color.a; - } - - color.r += diff; - color.g += diff; - color.b += diff; - - // Premultiply alpha again. - color.rgb *= color.a; - - finalColor = color; -} -`,ba=` - -struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct NoiseUniforms { - uNoise:f32, - uSeed:f32, -}; - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; - -@group(1) @binding(0) var noiseUniforms : NoiseUniforms; - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2 - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -fn getSize() -> vec2 -{ - return gfu.uGlobalFrame.zw; -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition) - ); -} - -fn rand(co:vec2) -> f32 -{ - return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453); -} - - - -@fragment -fn mainFragment( - @location(0) uv: vec2, - @builtin(position) position: vec4 -) -> @location(0) vec4 { - - var pixelPosition = globalTextureCoord(position.xy);// / (getSize());//- gfu.uOutputFrame.xy); - - - var sample = textureSample(uTexture, uSampler, uv); - var randomValue = rand(pixelPosition.xy * noiseUniforms.uSeed); - var diff = (randomValue - 0.5) * noiseUniforms.uNoise; - - // Un-premultiply alpha before applying the color matrix. See issue #3539. - if (sample.a > 0.0) { - sample.r /= sample.a; - sample.g /= sample.a; - sample.b /= sample.a; - } - - sample.r += diff; - sample.g += diff; - sample.b += diff; - - // Premultiply alpha again. - sample.r *= sample.a; - sample.g *= sample.a; - sample.b *= sample.a; - - return sample; -}`,dS=Object.defineProperty,pS=Object.defineProperties,fS=Object.getOwnPropertyDescriptors,us=Object.getOwnPropertySymbols,ym=Object.prototype.hasOwnProperty,xm=Object.prototype.propertyIsEnumerable,Tm=(r,t,e)=>t in r?dS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,va=(r,t)=>{for(var e in t||(t={}))ym.call(t,e)&&Tm(r,e,t[e]);if(us)for(var e of us(t))xm.call(t,e)&&Tm(r,e,t[e]);return r},mS=(r,t)=>pS(r,fS(t)),gS=(r,t)=>{var e={};for(var i in r)ym.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&us)for(var i of us(r))t.indexOf(i)<0&&xm.call(r,i)&&(e[i]=r[i]);return e};const Sm=class Ub extends Kt{constructor(t={}){t=va(va({},Ub.defaultOptions),t);const e=vt.from({vertex:{source:ba,entryPoint:"mainVertex"},fragment:{source:ba,entryPoint:"mainFragment"}}),i=Mt.from({vertex:is,fragment:vm,name:"noise-filter"}),s=t,{noise:n,seed:o}=s,a=gS(s,["noise","seed"]);super(mS(va({},a),{gpuProgram:e,glProgram:i,resources:{noiseUniforms:new nt({uNoise:{value:1,type:"f32"},uSeed:{value:1,type:"f32"}})}})),this.noise=n,this.seed=o!=null?o:Math.random()}get noise(){return this.resources.noiseUniforms.uniforms.uNoise}set noise(t){this.resources.noiseUniforms.uniforms.uNoise=t}get seed(){return this.resources.noiseUniforms.uniforms.uSeed}set seed(t){this.resources.noiseUniforms.uniforms.uSeed=t}};Sm.defaultOptions={noise:.5};let _S=Sm;var Em=`in vec2 vMaskCoord; -in vec2 vTextureCoord; - -uniform sampler2D uTexture; -uniform sampler2D uMaskTexture; - -uniform float uAlpha; -uniform vec4 uMaskClamp; - -out vec4 finalColor; - -void main(void) -{ - float clip = step(3.5, - step(uMaskClamp.x, vMaskCoord.x) + - step(uMaskClamp.y, vMaskCoord.y) + - step(vMaskCoord.x, uMaskClamp.z) + - step(vMaskCoord.y, uMaskClamp.w)); - - // TODO look into why this is needed - float npmAlpha = uAlpha; - vec4 original = texture(uTexture, vTextureCoord); - vec4 masky = texture(uMaskTexture, vMaskCoord); - float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a); - - original *= (alphaMul * masky.r * uAlpha * clip); - - finalColor = original; -} -`,Am=`in vec2 aPosition; - -out vec2 vTextureCoord; -out vec2 vMaskCoord; - - -uniform vec4 uInputSize; -uniform vec4 uOutputFrame; -uniform vec4 uOutputTexture; -uniform mat3 uFilterMatrix; - -vec4 filterVertexPosition( vec2 aPosition ) -{ - vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; - - position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -vec2 filterTextureCoord( vec2 aPosition ) -{ - return aPosition * (uOutputFrame.zw * uInputSize.zw); -} - -vec2 getFilterCoord( vec2 aPosition ) -{ - return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy; -} - -void main(void) -{ - gl_Position = filterVertexPosition(aPosition); - vTextureCoord = filterTextureCoord(aPosition); - vMaskCoord = getFilterCoord(aPosition); -} -`,ya=`struct GlobalFilterUniforms { - uInputSize:vec4, - uInputPixel:vec4, - uInputClamp:vec4, - uOutputFrame:vec4, - uGlobalFrame:vec4, - uOutputTexture:vec4, -}; - -struct MaskUniforms { - uFilterMatrix:mat3x3, - uMaskClamp:vec4, - uAlpha:f32, -}; - - -@group(0) @binding(0) var gfu: GlobalFilterUniforms; -@group(0) @binding(1) var uTexture: texture_2d; -@group(0) @binding(2) var uSampler : sampler; - -@group(1) @binding(0) var filterUniforms : MaskUniforms; -@group(1) @binding(1) var uMaskTexture: texture_2d; - -struct VSOutput { - @builtin(position) position: vec4, - @location(0) uv : vec2, - @location(1) filterUv : vec2, - }; - -fn filterVertexPosition(aPosition:vec2) -> vec4 -{ - var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy; - - position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0; - position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z; - - return vec4(position, 0.0, 1.0); -} - -fn filterTextureCoord( aPosition:vec2 ) -> vec2 -{ - return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw); -} - -fn globalTextureCoord( aPosition:vec2 ) -> vec2 -{ - return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); -} - -fn getFilterCoord(aPosition:vec2 ) -> vec2 -{ - return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy; -} - -fn getSize() -> vec2 -{ - - - return gfu.uGlobalFrame.zw; -} - -@vertex -fn mainVertex( - @location(0) aPosition : vec2, -) -> VSOutput { - return VSOutput( - filterVertexPosition(aPosition), - filterTextureCoord(aPosition), - getFilterCoord(aPosition) - ); -} - -@fragment -fn mainFragment( - @location(0) uv: vec2, - @location(1) filterUv: vec2, - @builtin(position) position: vec4 -) -> @location(0) vec4 { - - var maskClamp = filterUniforms.uMaskClamp; - - var clip = step(3.5, - step(maskClamp.x, filterUv.x) + - step(maskClamp.y, filterUv.y) + - step(filterUv.x, maskClamp.z) + - step(filterUv.y, maskClamp.w)); - - var mask = textureSample(uMaskTexture, uSampler, filterUv); - var source = textureSample(uTexture, uSampler, uv); - - var npmAlpha = 0.0; - - var alphaMul = 1.0 - npmAlpha * (1.0 - mask.a); - - var a = (alphaMul * mask.r) * clip; - - return vec4(source.rgb, source.a) * a; -}`,bS=Object.defineProperty,vS=Object.defineProperties,yS=Object.getOwnPropertyDescriptors,ls=Object.getOwnPropertySymbols,Pm=Object.prototype.hasOwnProperty,wm=Object.prototype.propertyIsEnumerable,Rm=(r,t,e)=>t in r?bS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,xS=(r,t)=>{for(var e in t||(t={}))Pm.call(t,e)&&Rm(r,e,t[e]);if(ls)for(var e of ls(t))wm.call(t,e)&&Rm(r,e,t[e]);return r},TS=(r,t)=>vS(r,yS(t)),SS=(r,t)=>{var e={};for(var i in r)Pm.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&ls)for(var i of ls(r))t.indexOf(i)<0&&wm.call(r,i)&&(e[i]=r[i]);return e};class Mm extends Kt{constructor(t){const e=t,{sprite:i}=e,s=SS(e,["sprite"]),n=new ln(i.texture),o=new nt({uFilterMatrix:{value:new G,type:"mat3x3"},uMaskClamp:{value:n.uClampFrame,type:"vec4"},uAlpha:{value:1,type:"f32"}}),a=vt.from({vertex:{source:ya,entryPoint:"mainVertex"},fragment:{source:ya,entryPoint:"mainFragment"}}),u=Mt.from({vertex:Am,fragment:Em,name:"mask-filter"});super(TS(xS({},s),{gpuProgram:a,glProgram:u,resources:{filterUniforms:o,uMaskTexture:i.texture.source}})),this.sprite=i,this._textureMatrix=n}apply(t,e,i,s){this._textureMatrix.texture=this.sprite.texture,t.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,t.applyFilter(this,e,i,s)}}var ES=`fn getLuminosity(c: vec3) -> f32 { - return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b; -} - -fn setLuminosity(c: vec3, lum: f32) -> vec3 { - let d: f32 = lum - getLuminosity(c); - let newColor: vec3 = c.rgb + vec3(d, d, d); - - // clip back into legal range - let newLum: f32 = getLuminosity(newColor); - let cMin: f32 = min(newColor.r, min(newColor.g, newColor.b)); - let cMax: f32 = max(newColor.r, max(newColor.g, newColor.b)); - - let t1: f32 = newLum / (newLum - cMin); - let t2: f32 = (1.0 - newLum) / (cMax - newLum); - - let finalColor = mix(vec3(newLum, newLum, newLum), newColor, select(select(1.0, t2, cMax > 1.0), t1, cMin < 0.0)); - - return finalColor; -} - -fn getSaturation(c: vec3) -> f32 { - return max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b)); -} - -// Set saturation if color components are sorted in ascending order. -fn setSaturationMinMidMax(cSorted: vec3, s: f32) -> vec3 { - var result: vec3; - if (cSorted.z > cSorted.x) { - let newY = (((cSorted.y - cSorted.x) * s) / (cSorted.z - cSorted.x)); - result = vec3(0.0, newY, s); - } else { - result = vec3(0.0, 0.0, 0.0); - } - return vec3(result.x, result.y, result.z); -} - -fn setSaturation(c: vec3, s: f32) -> vec3 { - var result: vec3 = c; - - if (c.r <= c.g && c.r <= c.b) { - if (c.g <= c.b) { - result = setSaturationMinMidMax(result, s); - } else { - var temp: vec3 = vec3(result.r, result.b, result.g); - temp = setSaturationMinMidMax(temp, s); - result = vec3(temp.r, temp.b, temp.g); - } - } else if (c.g <= c.r && c.g <= c.b) { - if (c.r <= c.b) { - var temp: vec3 = vec3(result.g, result.r, result.b); - temp = setSaturationMinMidMax(temp, s); - result = vec3(temp.g, temp.r, temp.b); - } else { - var temp: vec3 = vec3(result.g, result.b, result.r); - temp = setSaturationMinMidMax(temp, s); - result = vec3(temp.g, temp.b, temp.r); - } - } else { - if (c.r <= c.g) { - var temp: vec3 = vec3(result.b, result.r, result.g); - temp = setSaturationMinMidMax(temp, s); - result = vec3(temp.b, temp.r, temp.g); - } else { - var temp: vec3 = vec3(result.b, result.g, result.r); - temp = setSaturationMinMidMax(temp, s); - result = vec3(temp.b, temp.g, temp.r); - } - } - - return result; -}`;function xa(r,t,e,i,s,n,o,a){const u=o-e,l=a-i,c=s-e,h=n-i,p=r-e,f=t-i,m=u*u+l*l,_=u*c+l*h,g=u*p+l*f,b=c*c+h*h,v=c*p+h*f,y=1/(m*b-_*_),T=(b*g-_*v)*y,E=(m*v-_*g)*y;return T>=0&&E>=0&&T+E<1}class Ta{constructor(t=0,e=0,i=0,s=0,n=0,o=0){this.type="triangle",this.x=t,this.y=e,this.x2=i,this.y2=s,this.x3=n,this.y3=o}contains(t,e){const i=(this.x-this.x3)*(e-this.y3)-(this.y-this.y3)*(t-this.x3),s=(this.x2-this.x)*(e-this.y)-(this.y2-this.y)*(t-this.x);if(i<0!=s<0&&i!==0&&s!==0)return!1;const n=(this.x3-this.x2)*(e-this.y2)-(this.y3-this.y2)*(t-this.x2);return n===0||n<0==i+s<=0}strokeContains(t,e,i){const s=i/2,n=s*s,{x:o,x2:a,x3:u,y:l,y2:c,y3:h}=this;return br(t,e,o,l,a,h)<=n||br(t,e,a,c,u,h)<=n||br(t,e,u,h,o,l)<=n}clone(){return new Ta(this.x,this.y,this.x2,this.y2,this.x3,this.y3)}copyFrom(t){return this.x=t.x,this.y=t.y,this.x2=t.x2,this.y2=t.y2,this.x3=t.x3,this.y3=t.y3,this}copyTo(t){return t.copyFrom(this),t}getBounds(t){t=t||new j;const e=Math.min(this.x,this.x2,this.x3),i=Math.max(this.x,this.x2,this.x3),s=Math.min(this.y,this.y2,this.y3),n=Math.max(this.y,this.y2,this.y3);return t.x=e,t.y=s,t.width=i-e,t.height=n-s,t}}const Cm=class kb{constructor(t){this._tick=()=>{this.timeout=setTimeout(this._processQueue,0)},this._processQueue=()=>{const{queue:e}=this;let i=0;for(;e.length&&i{this.queue.length?(this.resolves.push(e),this.dedupeQueue(),ht.system.addOnce(this._tick,this,Vt.UTILITY)):e()})}dedupeQueue(){const t=Object.create(null);let e=0;for(let i=0;it in r?AS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,PS=(r,t)=>{for(var e in t||(t={}))Gm.call(t,e)&&Im(r,e,t[e]);if(cs)for(var e of cs(t))Bm.call(t,e)&&Im(r,e,t[e]);return r},wS=(r,t)=>{var e={};for(var i in r)Gm.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&cs)for(var i of cs(r))t.indexOf(i)<0&&Bm.call(r,i)&&(e[i]=r[i]);return e};class Ur extends Y{constructor(...t){var e;let i=t[0];i instanceof Oe&&(i={geometry:i,shader:t[1]},t[3]&&(i.geometry.topology=t[3]));const s=i,{geometry:n,shader:o,texture:a,roundPixels:u,state:l}=s,c=wS(s,["geometry","shader","texture","roundPixels","state"]);super(PS({label:"Mesh"},c)),this.renderPipeId="mesh",this.canBundle=!0,this._roundPixels=0,this.allowChildren=!1,this.shader=o,this.texture=(e=a!=null?a:o==null?void 0:o.texture)!=null?e:P.WHITE,this.state=l!=null?l:Bt.for2d(),this._geometry=n,this._geometry.on("update",this.onViewUpdate,this),this.roundPixels=u!=null?u:!1}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}get material(){return this._shader}set shader(t){this._shader!==t&&(this._shader=t,this.onViewUpdate())}get shader(){return this._shader}set geometry(t){var e;this._geometry!==t&&((e=this._geometry)==null||e.off("update",this.onViewUpdate,this),t.on("update",this.onViewUpdate,this),this._geometry=t,this.onViewUpdate())}get geometry(){return this._geometry}set texture(t){t||(t=P.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this.shader&&(this.shader.texture=t),this._texture=t,this.onViewUpdate())}get texture(){return this._texture}get batched(){return this._shader?!1:this._geometry instanceof Jt?this._geometry.batchMode==="auto"?this._geometry.positions.length/2<=100:this._geometry.batchMode==="batch":!1}get bounds(){return this._geometry.bounds}addBounds(t){t.addBounds(this.geometry.bounds)}containsPoint(t){const{x:e,y:i}=t;if(!this.bounds.containsPoint(e,i))return!1;const s=this.geometry.getBuffer("aPosition").data,n=this.geometry.topology==="triangle-strip"?3:1;if(this.geometry.getIndex()){const o=this.geometry.getIndex().data,a=o.length;for(let u=0;u+2=this._durations[this.currentFrame];)n-=this._durations[this.currentFrame]*o,this._currentTime+=o;this._currentTime+=n/this._durations[this.currentFrame]}else this._currentTime+=i;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):s!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrames)&&this.onLoop(),this._updateTexture())}_updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this.texture=this._textures[t],this.updateAnchor&&this.anchor.copyFrom(this.texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(){this.stop(),super.destroy(),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){const e=[];for(let i=0;ithis.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this._updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(ht.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(ht.shared.add(this.update,this),this._isConnectedToTicker=!0))}}class Fm{constructor({matrix:t,observer:e}={}){this.dirty=!0,this._matrix=t!=null?t:new G,this.observer=e,this.position=new it(this,0,0),this.scale=new it(this,1,1),this.pivot=new it(this,0,0),this.skew=new it(this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1}get matrix(){const t=this._matrix;return this.dirty&&(t.a=this._cx*this.scale.x,t.b=this._sx*this.scale.x,t.c=this._cy*this.scale.y,t.d=this._sy*this.scale.y,t.tx=this.position.x-(this.pivot.x*t.a+this.pivot.y*t.c),t.ty=this.position.y-(this.pivot.x*t.b+this.pivot.y*t.d),this.dirty=!1),t}_onUpdate(t){var e;this.dirty=!0,t===this.skew&&this.updateSkew(),(e=this.observer)==null||e._onUpdate(this)}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this.dirty=!0}setFromMatrix(t){t.decompose(this),this.dirty=!0}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this.skew))}}var RS=Object.defineProperty,hs=Object.getOwnPropertySymbols,Dm=Object.prototype.hasOwnProperty,Um=Object.prototype.propertyIsEnumerable,km=(r,t,e)=>t in r?RS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Lr=(r,t)=>{for(var e in t||(t={}))Dm.call(t,e)&&km(r,e,t[e]);if(hs)for(var e of hs(t))Um.call(t,e)&&km(r,e,t[e]);return r},MS=(r,t)=>{var e={};for(var i in r)Dm.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&hs)for(var i of hs(r))t.indexOf(i)<0&&Um.call(r,i)&&(e[i]=r[i]);return e};const Lm=class Fs extends Y{constructor(...t){let e=t[0]||{};e instanceof P&&(e={texture:e}),t.length>1&&(e.width=t[1],e.height=t[2]),e=Lr(Lr({},Fs.defaultOptions),e);const i=e!=null?e:{},{texture:s,anchor:n,tilePosition:o,tileScale:a,tileRotation:u,width:l,height:c,applyAnchorToTexture:h,roundPixels:p}=i,f=MS(i,["texture","anchor","tilePosition","tileScale","tileRotation","width","height","applyAnchorToTexture","roundPixels"]);super(Lr({label:"TilingSprite"},f)),this.renderPipeId="tilingSprite",this.canBundle=!0,this.batched=!0,this._roundPixels=0,this._bounds={minX:0,maxX:1,minY:0,maxY:0},this._boundsDirty=!0,this.allowChildren=!1,this._anchor=new it({_onUpdate:()=>{this.onViewUpdate()}}),this._applyAnchorToTexture=h,this.texture=s,this._width=l!=null?l:s.width,this._height=c!=null?c:s.height,this._tileTransform=new Fm({observer:{_onUpdate:()=>this.onViewUpdate()}}),n&&(this.anchor=n),this.tilePosition=o,this.tileScale=a,this.tileRotation=u,this.roundPixels=p!=null?p:!1}static from(t,e={}){return typeof t=="string"?new Fs(Lr({texture:q.get(t)},e)):new Fs(Lr({texture:t},e))}get clampMargin(){return this._texture.textureMatrix.clampMargin}set clampMargin(t){this._texture.textureMatrix.clampMargin=t}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get tilePosition(){return this._tileTransform.position}set tilePosition(t){this._tileTransform.position.copyFrom(t)}get tileScale(){return this._tileTransform.scale}set tileScale(t){typeof t=="number"?this._tileTransform.scale.set(t):this._tileTransform.scale.copyFrom(t)}set tileRotation(t){this._tileTransform.rotation=t}get tileRotation(){return this._tileTransform.rotation}get tileTransform(){return this._tileTransform}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}set texture(t){t||(t=P.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get texture(){return this._texture}set width(t){this._width=t,this.onViewUpdate()}get width(){return this._width}set height(t){this._height=t,this.onViewUpdate()}get height(){return this._height}_updateBounds(){const t=this._bounds,e=this._anchor,i=this._width,s=this._height;t.maxX=-e._x*i,t.minX=t.maxX+i,t.maxY=-e._y*s,t.minY=t.maxY+s}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds.minX,i=this.bounds.minY,s=-e*this._anchor._x;let n=0;return t.x>=s&&t.x<=s+e&&(n=-i*this._anchor._y,t.y>=n&&t.y<=n+i)}onViewUpdate(){if(this._boundsDirty=!0,this._didTilingSpriteUpdate=!0,this._didChangeId+=4096,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}destroy(t=!1){if(super.destroy(t),this._anchor=null,this._tileTransform=null,this._bounds=null,typeof t=="boolean"?t:t==null?void 0:t.texture){const e=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(e)}this._texture=null}};Lm.defaultOptions={texture:P.EMPTY,anchor:{x:0,y:0},tilePosition:{x:0,y:0},tileScale:{x:1,y:1},tileRotation:0,applyAnchorToTexture:!1};let $m=Lm;var CS=Object.defineProperty,ds=Object.getOwnPropertySymbols,Nm=Object.prototype.hasOwnProperty,Hm=Object.prototype.propertyIsEnumerable,Xm=(r,t,e)=>t in r?CS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,OS=(r,t)=>{for(var e in t||(t={}))Nm.call(t,e)&&Xm(r,e,t[e]);if(ds)for(var e of ds(t))Hm.call(t,e)&&Xm(r,e,t[e]);return r},GS=(r,t)=>{var e={};for(var i in r)Nm.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&ds)for(var i of ds(r))t.indexOf(i)<0&&Hm.call(r,i)&&(e[i]=r[i]);return e};class ps extends Y{constructor(t,e){const i=t,{text:s,resolution:n,style:o,anchor:a,width:u,height:l,roundPixels:c}=i,h=GS(i,["text","resolution","style","anchor","width","height","roundPixels"]);super(OS({},h)),this.batched=!0,this.resolution=null,this._didTextUpdate=!0,this._roundPixels=0,this._bounds=new lt,this._boundsDirty=!0,this._styleClass=e,this.text=s!=null?s:"",this.style=o,this.resolution=n!=null?n:null,this.allowChildren=!1,this._anchor=new it({_onUpdate:()=>{this.onViewUpdate()}}),a&&(this.anchor=a),this.roundPixels=c!=null?c:!1,u&&(this.width=u),l&&(this.height=l)}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}get style(){return this._style}set style(t){var e;t=t||{},(e=this._style)==null||e.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,e){var i;let s,n;typeof t!="object"?(s=t,n=e!=null?e:t):(s=t.width,n=(i=t.height)!=null?i:t.width),s!==void 0&&this._setWidth(s,this.bounds.width),n!==void 0&&this._setHeight(n,this.bounds.height)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds.maxX,i=this.bounds.maxY,s=-e*this.anchor.x;let n=0;return t.x>=s&&t.x<=s+e&&(n=-i*this.anchor.y,t.y>=n&&t.y<=n+i)}onViewUpdate(){if(this._didChangeId+=4096,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0,this._didTextUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}_getKey(){return`${this.text}:${this._style.styleKey}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,(typeof t=="boolean"?t:t!=null&&t.style)&&this._style.destroy(t),this._style=null,this._text=null}}function fs(r,t){var e;let i=(e=r[0])!=null?e:{};return(typeof i=="string"||r[1])&&(i={text:i,style:r[1]}),i}class Sa extends ps{constructor(...t){const e=fs(t,"Text");super(e,Ft),this.renderPipeId="text"}_updateBounds(){const t=this._bounds,e=this._style.padding,i=this._anchor,s=Ut.measureText(this._text,this._style),{width:n,height:o}=s;t.minX=-i._x*n-e,t.maxX=t.minX+n+e*2,t.minY=-i._y*o-e,t.maxY=t.minY+o+e*2}}class zm extends Om{resolveQueueItem(t,e){return t instanceof Y?this.resolveContainerQueueItem(t,e):t instanceof rt||t instanceof P?e.push(t.source):t instanceof It&&e.push(t),null}resolveContainerQueueItem(t,e){t instanceof Gt||t instanceof $m||t instanceof Ur?e.push(t.texture.source):t instanceof Sa?e.push(t):t instanceof De?e.push(t.context):t instanceof kr&&t.textures.forEach(i=>{i.source?e.push(i.source):e.push(i.texture.source)})}resolveGraphicsContextQueueItem(t){this.renderer.graphicsContext.getContextRenderData(t);const{instructions:e}=t;for(const i of e)if(i.action==="texture"){const{image:s}=i.data;return s.source}else if(i.action==="fill"){const{texture:s}=i.data.style;return s.source}return null}}class jm extends ps{constructor(...t){var e,i,s;const n=fs(t,"BitmapText");(e=n.style)!=null||(n.style=n.style||{}),(s=(i=n.style).fill)!=null||(i.fill=16777215),super(n,Ft),this.renderPipeId="bitmapText"}_updateBounds(){const t=this._bounds,e=this._style.padding,i=this._anchor,s=Er.measureText(this.text,this._style),n=s.scale,o=s.offsetY*n,a=s.width*n,u=s.height*n;t.minX=-i._x*a-e,t.maxX=t.minX+a,t.minY=-i._y*(u+o)-e,t.maxY=t.minY+u}}class Vm extends ps{constructor(...t){const e=fs(t,"HtmlText");super(e,ye),this.renderPipeId="htmlText"}_updateBounds(){const t=this._bounds,e=this._style.padding,i=this._anchor,s=Uo(this.text,this._style),{width:n,height:o}=s;t.minX=-i._x*n-e,t.maxX=t.minX+n,t.minY=-i._y*o-e,t.maxY=t.minY+o}}class Wm extends zm{uploadQueueItem(t){t instanceof rt?this.uploadTextureSource(t):t instanceof Sa?this.uploadText(t):t instanceof Vm?this.uploadHTMLText(t):t instanceof jm?this.uploadBitmapText(t):t instanceof It&&this.uploadGraphicsContext(t)}uploadTextureSource(t){this.renderer.texture.initSource(t)}uploadText(t){this.renderer.renderPipes.text.initGpuText(t)}uploadBitmapText(t){this.renderer.renderPipes.bitmapText.initGpuText(t)}uploadHTMLText(t){this.renderer.renderPipes.htmlText.initGpuText(t)}uploadGraphicsContext(t){this.renderer.graphicsContext.getContextRenderData(t);const{instructions:e}=t;for(const i of e)if(i.action==="texture"){const{image:s}=i.data;this.uploadTextureSource(s.source)}else if(i.action==="fill"){const{texture:s}=i.data.style;this.uploadTextureSource(s.source)}return null}}class Ym extends Wm{destroy(){clearTimeout(this.timeout),this.renderer=null,this.queue=null,this.resolves=null}}Ym.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"prepare"};class Ea{constructor(){this._didUpload=!1,this._tempState=Bt.for2d()}init(t){const e=$e({name:"batch",bits:[Ui,Li(dt),He]});this._shader=new xt({glProgram:e,resources:{batchSamplers:$i}}),t.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(t,e){const i=t.renderer;i.shader.bind(this._shader,this._didUpload),i.shader.updateUniformGroup(i.globalUniforms.uniformGroup),i.geometry.bind(e,this._shader.glProgram)}execute(t,e){const i=t.renderer;this._didUpload=!0,this._tempState.blendMode=e.blendMode,i.state.set(this._tempState);const s=e.textures.textures;for(let n=0;ni.trim()).filter(i=>i.length);let e="";return t.map(i=>{let s=e+i;return i==="{"?e+=" ":i==="}"&&(e=e.substr(0,e.length-4),s=e+i),s}).join(` -`)}const Km={name:"texture-bit",vertex:{header:` - - struct TextureUniforms { - uTextureMatrix:mat3x3, - } - - @group(2) @binding(2) var textureUniforms : TextureUniforms; - `,main:` - uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy; - `},fragment:{header:` - @group(2) @binding(0) var uTexture: texture_2d; - @group(2) @binding(1) var uSampler: sampler; - - - `,main:` - outColor = textureSample(uTexture, uSampler, vUV); - `}},qm={name:"texture-bit",vertex:{header:` - uniform mat3 uTextureMatrix; - `,main:` - uv = (uTextureMatrix * vec3(uv, 1.0)).xy; - `},fragment:{header:` - uniform sampler2D uTexture; - - - `,main:` - outColor = texture(uTexture, vUV); - `}};function Zm(r,t){const e=r.root,i=r.instructionSet;i.reset(),t.batch.buildStart(i),t.blendMode.buildStart(),t.colorMask.buildStart(),e.sortableChildren&&e.sortChildren(),Qm(e,i,t,!0),t.batch.buildEnd(i),t.blendMode.buildEnd(i)}function $r(r,t,e){r.globalDisplayStatus<7||!r.includeInBuild||(r.sortableChildren&&r.sortChildren(),r.isSimple?DS(r,t,e):Qm(r,t,e,!1))}function DS(r,t,e){if(r.renderPipeId&&(e.blendMode.setBlendMode(r,r.groupBlendMode,t),r.didViewUpdate=!1,e[r.renderPipeId].addRenderable(r,t)),!r.renderGroup){const i=r.children,s=i.length;for(let n=0;n=0;o--){const a=r.effects[o];e[a.pipe].pop(a,r,t)}}}const US=new lt;class kS extends er{constructor(){super(),this.filters=[new Mm({sprite:new Gt(P.EMPTY)})]}get sprite(){return this.filters[0].sprite}set sprite(t){this.filters[0].sprite=t}}class wa{constructor(t){this._activeMaskStage=[],this._renderer=t}push(t,e,i){const s=this._renderer;if(s.renderPipes.batch.break(i),i.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:t,canBundle:!1,maskedContainer:e}),t.renderMaskToTexture){const n=t.mask;n.includeInBuild=!0,$r(n,i,s.renderPipes),n.includeInBuild=!1}s.renderPipes.batch.break(i),i.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:t,maskedContainer:e,canBundle:!1})}pop(t,e,i){this._renderer.renderPipes.batch.break(i),i.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:t,canBundle:!1})}execute(t){const e=this._renderer,i=t.mask.renderMaskToTexture;if(t.action==="pushMaskBegin"){const s=W.get(kS);if(i){t.mask.mask.measurable=!0;const n=rr(t.mask.mask,!0,US);t.mask.mask.measurable=!1,n.ceil();const o=ct.getOptimalTexture(n.width,n.height,1,!1);e.renderTarget.push(o,!0),e.globalUniforms.push({offset:n,worldColor:4294967295});const a=s.sprite;a.texture=o,a.worldTransform.tx=n.minX,a.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:s,maskedContainer:t.maskedContainer,filterTexture:o})}else s.sprite=t.mask.mask,this._activeMaskStage.push({filterEffect:s,maskedContainer:t.maskedContainer})}else if(t.action==="pushMaskEnd"){const s=this._activeMaskStage[this._activeMaskStage.length-1];i&&(e.renderTarget.pop(),e.globalUniforms.pop()),e.filter.push({renderPipeId:"filter",action:"pushFilter",container:s.maskedContainer,filterEffect:s.filterEffect,canBundle:!1})}else if(t.action==="popMaskEnd"){e.filter.pop();const s=this._activeMaskStage.pop();i&&ct.returnTexture(s.filterTexture),W.return(s.filterEffect)}}destroy(){this._renderer=null,this._activeMaskStage=null}}wa.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"alphaMask"};class Ra{constructor(t){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=t}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(t,e,i){this._renderer.renderPipes.batch.break(i);const s=this._colorStack;s[this._colorStackIndex]=s[this._colorStackIndex-1]&t.mask;const n=this._colorStack[this._colorStackIndex];n!==this._currentColor&&(this._currentColor=n,i.add({renderPipeId:"colorMask",colorMask:n,canBundle:!1})),this._colorStackIndex++}pop(t,e,i){this._renderer.renderPipes.batch.break(i);const s=this._colorStack;this._colorStackIndex--;const n=s[this._colorStackIndex-1];n!==this._currentColor&&(this._currentColor=n,i.add({renderPipeId:"colorMask",colorMask:n,canBundle:!1}))}execute(t){this._renderer.colorMask.setMask(t.colorMask)}destroy(){this._colorStack=null}}Ra.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"colorMask"};class LS{constructor(t){this.priority=0,this.pipe="scissorMask",this.mask=t,this.mask.renderable=!1,this.mask.measurable=!1}addBounds(t,e){ci(this.mask,t,e)}addLocalBounds(t,e){hi(this.mask,t,e)}containsPoint(t,e){const i=this.mask;return e(i,t)}reset(){this.mask.measurable=!0,this.mask=null}destroy(){this.reset()}}class Ma{constructor(t){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=t}push(t,e,i){var s,n;const o=t,a=this._renderer;a.renderPipes.batch.break(i),a.renderPipes.blendMode.setBlendMode(o.mask,"none",i),i.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:t,canBundle:!1});const u=o.mask;u.includeInBuild=!0,this._maskHash.has(o)||this._maskHash.set(o,{instructionsStart:0,instructionsLength:0});const l=this._maskHash.get(o);l.instructionsStart=i.instructionSize,$r(u,i,a.renderPipes),u.includeInBuild=!1,a.renderPipes.batch.break(i),i.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:t,canBundle:!1});const c=i.instructionSize-l.instructionsStart-1;l.instructionsLength=c;const h=a.renderTarget.renderTarget.uid;(n=(s=this._maskStackHash)[h])!=null||(s[h]=0)}pop(t,e,i){const s=t,n=this._renderer;n.renderPipes.batch.break(i),n.renderPipes.blendMode.setBlendMode(s.mask,"none",i),i.add({renderPipeId:"stencilMask",action:"popMaskBegin",canBundle:!1});const o=this._maskHash.get(t);for(let a=0;a(r[r.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",r[r.ARRAY_BUFFER=34962]="ARRAY_BUFFER",r[r.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",r))(Nr||{});class Jm{constructor(t,e){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.type=e}}class Ca{constructor(t){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=t}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(t){return this._gpuBuffers[t.uid]||this.createGLBuffer(t)}bind(t){const{_gl:e}=this,i=this.getGlBuffer(t);e.bindBuffer(i.type,i.buffer)}bindBufferBase(t,e){const{_gl:i}=this;if(this._boundBufferBases[e]!==t){const s=this.getGlBuffer(t);this._boundBufferBases[e]=t,i.bindBufferBase(i.UNIFORM_BUFFER,e,s.buffer)}}bindBufferRange(t,e,i){const{_gl:s}=this;i=i||0;const n=this.getGlBuffer(t);s.bindBufferRange(s.UNIFORM_BUFFER,e||0,n.buffer,i*256,256)}updateBuffer(t){const{_gl:e}=this,i=this.getGlBuffer(t);if(t._updateID===i.updateID)return i;i.updateID=t._updateID,e.bindBuffer(i.type,i.buffer);const s=t.data;if(i.byteLength>=t.data.byteLength)e.bufferSubData(i.type,0,s,0,t._updateSize/s.BYTES_PER_ELEMENT);else{const n=t.descriptor.usage&H.STATIC?e.STATIC_DRAW:e.DYNAMIC_DRAW;i.byteLength=s.byteLength,e.bufferData(i.type,s,n)}return i}destroyAll(){const t=this._gl;for(const e in this._gpuBuffers)t.deleteBuffer(this._gpuBuffers[e].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(t,e){const i=this._gpuBuffers[t.uid],s=this._gl;e||s.deleteBuffer(i.buffer),this._gpuBuffers[t.uid]=null}createGLBuffer(t){const{_gl:e}=this;let i=Nr.ARRAY_BUFFER;t.descriptor.usage&H.INDEX?i=Nr.ELEMENT_ARRAY_BUFFER:t.descriptor.usage&H.UNIFORM&&(i=Nr.UNIFORM_BUFFER);const s=new Jm(e.createBuffer(),i);return this._gpuBuffers[t.uid]=s,t.on("destroy",this.onBufferDestroy,this),s}}Ca.extension={type:[x.WebGLSystem],name:"buffer"};var $S=Object.defineProperty,NS=Object.defineProperties,HS=Object.getOwnPropertyDescriptors,tg=Object.getOwnPropertySymbols,XS=Object.prototype.hasOwnProperty,zS=Object.prototype.propertyIsEnumerable,eg=(r,t,e)=>t in r?$S(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,gs=(r,t)=>{for(var e in t||(t={}))XS.call(t,e)&&eg(r,e,t[e]);if(tg)for(var e of tg(t))zS.call(t,e)&&eg(r,e,t[e]);return r},rg=(r,t)=>NS(r,HS(t));const Oa=class Lb{constructor(t){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=t,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(t){this.gl=t,this._renderer.gl=t}init(t){var e,i;if(t=gs(gs({},Lb.defaultOptions),t),t.context)this.initFromContext(t.context);else{const s=this._renderer.background.alpha<1,n=(e=t.premultipliedAlpha)!=null?e:!0,o=t.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(t.preferWebGLVersion,{alpha:s,premultipliedAlpha:n,antialias:o,stencil:!0,preserveDrawingBuffer:t.preserveDrawingBuffer,powerPreference:(i=t.powerPreference)!=null?i:"default"})}}initFromContext(t){this.gl=t,this.webGLVersion=t instanceof z.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(t),this._renderer.runners.contextChange.emit(t);const e=this._renderer.view.canvas;e.addEventListener("webglcontextlost",this.handleContextLost,!1),e.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(t,e){let i;const s=this._renderer.view.canvas;if(t===2&&(i=s.getContext("webgl2",e)),!i&&(i=s.getContext("webgl",e),!i))throw new Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=i,this.initFromContext(this.gl)}getExtensions(){const{gl:t}=this,e={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc"),bptc:t.getExtension("EXT_texture_compression_bptc"),rgtc:t.getExtension("EXT_texture_compression_rgtc"),loseContext:t.getExtension("WEBGL_lose_context")};if(this.webGLVersion===1)this.extensions=rg(gs({},e),{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:t.getExtension("ANGLE_instanced_arrays"),srgb:t.getExtension("EXT_sRGB")});else{this.extensions=rg(gs({},e),{colorBufferFloat:t.getExtension("EXT_color_buffer_float")});const i=t.getExtension("WEBGL_provoking_vertex");i&&i.provokingVertexWEBGL(i.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(t){t.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{var e;this.gl.isContextLost()&&((e=this.extensions.loseContext)==null||e.restoreContext())},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){var t;const e=this._renderer.view.canvas;this._renderer=null,e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),(t=this.extensions.loseContext)==null||t.loseContext()}forceContextLoss(){var t;(t=this.extensions.loseContext)==null||t.loseContext(),this._contextLossForced=!0}validateContext(t){const e=t.getContextAttributes();e&&e.stencil;const i=this.supports,s=this.webGLVersion===2,n=this.extensions;i.uint32Indices=s||!!n.uint32ElementIndex,i.uniformBufferObject=s,i.vertexArrayObject=s||!!n.vertexArrayObject,i.srgbTextures=s||!!n.srgb,i.nonPowOf2wrapping=s,i.nonPowOf2mipmaps=s,i.msaa=s,i.uint32Indices}};Oa.extension={type:[x.WebGLSystem],name:"context"},Oa.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2};let ig=Oa,Ga=0;const sg=500;function _s(...r){Ga!==sg&&(Ga++,Ga===sg?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...r))}function Ba(r,t){var e,i,s,n;for(const o in r.attributes){const a=r.attributes[o],u=t[o];u?((e=a.location)!=null||(a.location=u.location),(i=a.format)!=null||(a.format=u.format),(s=a.offset)!=null||(a.offset=u.offset),(n=a.instance)!=null||(a.instance=u.instance)):_s(`Attribute ${o} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}jS(r)}function jS(r){var t,e;const{buffers:i,attributes:s}=r,n={},o={};for(const a in i){const u=i[a];n[u.uid]=0,o[u.uid]=0}for(const a in s){const u=s[a];n[u.buffer.uid]+=Ue(u.format).stride}for(const a in s){const u=s[a];(t=u.stride)!=null||(u.stride=n[u.buffer.uid]),(e=u.start)!=null||(u.start=o[u.buffer.uid]),o[u.buffer.uid]+=Ue(u.format).stride}}var bs=(r=>(r[r.RGBA=6408]="RGBA",r[r.RGB=6407]="RGB",r[r.RG=33319]="RG",r[r.RED=6403]="RED",r[r.RGBA_INTEGER=36249]="RGBA_INTEGER",r[r.RGB_INTEGER=36248]="RGB_INTEGER",r[r.RG_INTEGER=33320]="RG_INTEGER",r[r.RED_INTEGER=36244]="RED_INTEGER",r[r.ALPHA=6406]="ALPHA",r[r.LUMINANCE=6409]="LUMINANCE",r[r.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",r[r.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",r[r.DEPTH_STENCIL=34041]="DEPTH_STENCIL",r))(bs||{}),Ia=(r=>(r[r.TEXTURE_2D=3553]="TEXTURE_2D",r[r.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",r[r.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",r[r.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",r[r.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",r[r.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",r[r.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",r))(Ia||{}),ng=(r=>(r[r.CLAMP=33071]="CLAMP",r[r.REPEAT=10497]="REPEAT",r[r.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",r))(ng||{}),X=(r=>(r[r.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",r[r.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",r[r.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",r[r.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",r[r.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",r[r.UNSIGNED_INT=5125]="UNSIGNED_INT",r[r.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",r[r.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",r[r.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",r[r.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",r[r.BYTE=5120]="BYTE",r[r.SHORT=5122]="SHORT",r[r.INT=5124]="INT",r[r.FLOAT=5126]="FLOAT",r[r.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",r[r.HALF_FLOAT=36193]="HALF_FLOAT",r))(X||{});const og={uint8x2:X.UNSIGNED_BYTE,uint8x4:X.UNSIGNED_BYTE,sint8x2:X.BYTE,sint8x4:X.BYTE,unorm8x2:X.UNSIGNED_BYTE,unorm8x4:X.UNSIGNED_BYTE,snorm8x2:X.BYTE,snorm8x4:X.BYTE,uint16x2:X.UNSIGNED_SHORT,uint16x4:X.UNSIGNED_SHORT,sint16x2:X.SHORT,sint16x4:X.SHORT,unorm16x2:X.UNSIGNED_SHORT,unorm16x4:X.UNSIGNED_SHORT,snorm16x2:X.SHORT,snorm16x4:X.SHORT,float16x2:X.HALF_FLOAT,float16x4:X.HALF_FLOAT,float32:X.FLOAT,float32x2:X.FLOAT,float32x3:X.FLOAT,float32x4:X.FLOAT,uint32:X.UNSIGNED_INT,uint32x2:X.UNSIGNED_INT,uint32x3:X.UNSIGNED_INT,uint32x4:X.UNSIGNED_INT,sint32:X.INT,sint32x2:X.INT,sint32x3:X.INT,sint32x4:X.INT};function ag(r){var t;return(t=og[r])!=null?t:og.float32}const VS={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5};class Fa{constructor(t){this._geometryVaoHash=Object.create(null),this._renderer=t,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){const t=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw new Error("[PixiJS] Vertex Array Objects are not supported on this device");const e=this._renderer.context.extensions.vertexArrayObject;e&&(t.createVertexArray=()=>e.createVertexArrayOES(),t.bindVertexArray=s=>e.bindVertexArrayOES(s),t.deleteVertexArray=s=>e.deleteVertexArrayOES(s));const i=this._renderer.context.extensions.vertexAttribDivisorANGLE;i&&(t.drawArraysInstanced=(s,n,o,a)=>{i.drawArraysInstancedANGLE(s,n,o,a)},t.drawElementsInstanced=(s,n,o,a,u)=>{i.drawElementsInstancedANGLE(s,n,o,a,u)},t.vertexAttribDivisor=(s,n)=>i.vertexAttribDivisorANGLE(s,n)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(t,e){const i=this.gl;this._activeGeometry=t;const s=this.getVao(t,e);this._activeVao!==s&&(this._activeVao=s,i.bindVertexArray(s)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const t=this._activeGeometry,e=this._renderer.buffer;for(let i=0;i1?n.drawElementsInstanced(a,e||o.indexBuffer.data.length,l,(i||0)*u,s):n.drawElements(a,e||o.indexBuffer.data.length,l,(i||0)*u)}else s>1?n.drawArraysInstanced(a,i||0,e||o.getSize(),s):n.drawArrays(a,i||0,e||o.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}Fa.extension={type:[x.WebGLSystem],name:"geometry"};var WS=Object.defineProperty,ug=Object.getOwnPropertySymbols,YS=Object.prototype.hasOwnProperty,KS=Object.prototype.propertyIsEnumerable,lg=(r,t,e)=>t in r?WS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,cg=(r,t)=>{for(var e in t||(t={}))YS.call(t,e)&&lg(r,e,t[e]);if(ug)for(var e of ug(t))KS.call(t,e)&&lg(r,e,t[e]);return r};const qS=new Oe({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),Da=class $b{constructor(t){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=t}init(t={}){const{useBackBuffer:e,antialias:i}=cg(cg({},$b.defaultOptions),t);this.useBackBuffer=e,this._antialias=i,this._renderer.context.supports.msaa||(_s("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=Bt.for2d();const s=new Mt({vertex:` - attribute vec2 aPosition; - out vec2 vUv; - - void main() { - gl_Position = vec4(aPosition, 0.0, 1.0); - - vUv = (aPosition + 1.0) / 2.0; - - // flip dem UVs - vUv.y = 1.0 - vUv.y; - }`,fragment:` - in vec2 vUv; - out vec4 finalColor; - - uniform sampler2D uTexture; - - void main() { - finalColor = texture(uTexture, vUv); - }`,name:"big-triangle"});this._bigTriangleShader=new xt({glProgram:s,resources:{uTexture:P.WHITE.source}})}renderStart(t){const e=this._renderer.renderTarget.getRenderTarget(t.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!e.isRoot,this._useBackBufferThisRender){const i=this._renderer.renderTarget.getRenderTarget(t.target);this._targetTexture=i.colorTexture,t.target=this._getBackBufferTexture(i.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){const t=this._renderer;t.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(t.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,t.encoder.draw({geometry:qS,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(t){return this._backBufferTexture=this._backBufferTexture||new P({source:new rt({width:t.width,height:t.height,resolution:t._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(t.width,t.height,t._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}};Da.extension={type:[x.WebGLSystem],name:"backBuffer",priority:1},Da.defaultOptions={useBackBuffer:!1};let hg=Da;class Ua{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.gl.colorMask(!!(t&8),!!(t&4),!!(t&2),!!(t&1)))}}Ua.extension={type:[x.WebGLSystem],name:"colorMask"};class ka{constructor(t){this.commandFinished=Promise.resolve(),this._renderer=t}setGeometry(t,e){this._renderer.geometry.bind(t,e.glProgram)}finishRenderPass(){}draw(t){const e=this._renderer,{geometry:i,shader:s,state:n,skipSync:o,topology:a,size:u,start:l,instanceCount:c}=t;e.shader.bind(s,o),e.geometry.bind(i,e.shader._activeProgram),n&&e.state.set(n),e.geometry.draw(a,u,l,c!=null?c:i.instanceCount)}destroy(){this._renderer=null}}ka.extension={type:[x.WebGLSystem],name:"encoder"};class dg{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this.msaaRenderBuffer=[]}}const re=[];re[st.NONE]=void 0,re[st.DISABLED]={stencilWriteMask:0,stencilReadMask:0},re[st.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},re[st.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},re[st.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}};class La{constructor(t){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:st.NONE},this._renderTargetStencilState=Object.create(null),t.renderTarget.onRenderTargetChange.add(this)}contextChange(t){this._gl=t,this._comparisonFuncMapping={always:t.ALWAYS,never:t.NEVER,equal:t.EQUAL,"not-equal":t.NOTEQUAL,less:t.LESS,"less-equal":t.LEQUAL,greater:t.GREATER,"greater-equal":t.GEQUAL},this._stencilOpsMapping={keep:t.KEEP,zero:t.ZERO,replace:t.REPLACE,invert:t.INVERT,"increment-clamp":t.INCR,"decrement-clamp":t.DECR,"increment-wrap":t.INCR_WRAP,"decrement-wrap":t.DECR_WRAP},this._stencilCache.enabled=!1,this._stencilCache.stencilMode=st.NONE,this._stencilCache.stencilReference=0}onRenderTargetChange(t){if(this._activeRenderTarget===t)return;this._activeRenderTarget=t;let e=this._renderTargetStencilState[t.uid];e||(e=this._renderTargetStencilState[t.uid]={stencilMode:st.DISABLED,stencilReference:0}),this.setStencilMode(e.stencilMode,e.stencilReference)}setStencilMode(t,e){const i=this._renderTargetStencilState[this._activeRenderTarget.uid],s=this._gl,n=re[t],o=this._stencilCache;if(i.stencilMode=t,i.stencilReference=e,t===st.DISABLED){this._stencilCache.enabled&&(this._stencilCache.enabled=!1,s.disable(s.STENCIL_TEST));return}this._stencilCache.enabled||(this._stencilCache.enabled=!0,s.enable(s.STENCIL_TEST)),(t!==o.stencilMode||o.stencilReference!==e)&&(o.stencilMode=t,o.stencilReference=e,s.stencilFunc(this._comparisonFuncMapping[n.stencilBack.compare],e,255),s.stencilOp(s.KEEP,s.KEEP,this._stencilOpsMapping[n.stencilBack.passOp]))}}La.extension={type:[x.WebGLSystem],name:"stencil"};class $a{constructor(t){this._syncFunctionHash=Object.create(null),this._adaptor=t,this._systemCheck()}_systemCheck(){if(!Wo())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}ensureUniformGroup(t){const e=this.getUniformGroupData(t);t.buffer||(t.buffer=new bt({data:new Float32Array(e.layout.size/4),usage:H.UNIFORM|H.COPY_DST}))}getUniformGroupData(t){return this._syncFunctionHash[t._signature]||this._initUniformGroup(t)}_initUniformGroup(t){const e=t._signature;let i=this._syncFunctionHash[e];if(!i){const s=Object.keys(t.uniformStructures).map(a=>t.uniformStructures[a]),n=this._adaptor.createUboElements(s),o=this._generateUboSync(n.uboElements);i=this._syncFunctionHash[e]={layout:n,syncFunction:o}}return this._syncFunctionHash[e]}_generateUboSync(t){return this._adaptor.generateUboSync(t)}syncUniformGroup(t,e,i){const s=this.getUniformGroupData(t);return t.buffer||(t.buffer=new bt({data:new Float32Array(s.layout.size/4),usage:H.UNIFORM|H.COPY_DST})),e||(e=t.buffer.data),i||(i=0),s.syncFunction(t.uniforms,e,i),!0}updateUniformGroup(t){if(t.isStatic&&!t._dirtyId)return!1;t._dirtyId=0;const e=this.syncUniformGroup(t);return t.buffer.update(),e}destroy(){this._syncFunctionHash=null}}const Na={f32:4,"vec2":8,"vec3":12,"vec4":16,"mat2x2":32,"mat3x3":48,"mat4x4":64};function pg(r){const t=r.map(n=>({data:n,offset:0,size:0}));let e=0,i=0,s=0;for(let n=0;n1&&(e=Math.max(e,16)*o.data.size),o.size=e,i%e!==0&&i<16){const a=i%e%16;i+=a,s+=a}i+e>16?(s=Math.ceil(s/16)*16,o.offset=s,s+=e,i=e):(o.offset=s,i+=e,s+=e)}return s=Math.ceil(s/16)*16,{uboElements:t,size:s}}const ie=[{type:"mat3x3",test:r=>r.value.a!==void 0,ubo:` - var matrix = uv[name].toArray(true); - data[offset] = matrix[0]; - data[offset + 1] = matrix[1]; - data[offset + 2] = matrix[2]; - data[offset + 4] = matrix[3]; - data[offset + 5] = matrix[4]; - data[offset + 6] = matrix[5]; - data[offset + 8] = matrix[6]; - data[offset + 9] = matrix[7]; - data[offset + 10] = matrix[8]; - `,uniform:` - gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true)); - `},{type:"vec4",test:r=>r.type==="vec4"&&r.size===1&&r.value.width!==void 0,ubo:` - v = uv[name]; - data[offset] = v.x; - data[offset + 1] = v.y; - data[offset + 2] = v.width; - data[offset + 3] = v.height; - `,uniform:` - cv = ud[name].value; - v = uv[name]; - if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) { - cv[0] = v.x; - cv[1] = v.y; - cv[2] = v.width; - cv[3] = v.height; - gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height); - } - `},{type:"vec2",test:r=>r.type==="vec2"&&r.size===1&&r.value.x!==void 0,ubo:` - v = uv[name]; - data[offset] = v.x; - data[offset + 1] = v.y; - `,uniform:` - cv = ud[name].value; - v = uv[name]; - if (cv[0] !== v.x || cv[1] !== v.y) { - cv[0] = v.x; - cv[1] = v.y; - gl.uniform2f(ud[name].location, v.x, v.y); - } - `},{type:"vec4",test:r=>r.type==="vec4"&&r.size===1&&r.value.red!==void 0,ubo:` - v = uv[name]; - data[offset] = v.red; - data[offset + 1] = v.green; - data[offset + 2] = v.blue; - data[offset + 3] = v.alpha; - `,uniform:` - cv = ud[name].value; - v = uv[name]; - if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) { - cv[0] = v.red; - cv[1] = v.green; - cv[2] = v.blue; - cv[3] = v.alpha; - gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha); - } - `},{type:"vec3",test:r=>r.type==="vec3"&&r.size===1&&r.value.red!==void 0,ubo:` - v = uv[name]; - data[offset] = v.red; - data[offset + 1] = v.green; - data[offset + 2] = v.blue; - `,uniform:` - cv = ud[name].value; - v = uv[name]; - if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) { - cv[0] = v.red; - cv[1] = v.green; - cv[2] = v.blue; - gl.uniform3f(ud[name].location, v.red, v.green, v.blue); - } - `}];function Ha(r,t,e,i){const s=[` - var v = null; - var v2 = null; - var t = 0; - var index = 0; - var name = null; - var arrayOffset = null; - `];let n=0;for(let a=0;a1)h=u.offset/4,s.push(e(u,h-n));else{const p=i[u.data.type];h=u.offset/4,s.push(` - v = uv.${l}; - offset += ${h-n}; - ${p}; - `)}n=h}const o=s.join(` -`);return new Function("uv","data","offset",o)}var ZS=Object.defineProperty,QS=Object.defineProperties,JS=Object.getOwnPropertyDescriptors,fg=Object.getOwnPropertySymbols,t2=Object.prototype.hasOwnProperty,e2=Object.prototype.propertyIsEnumerable,mg=(r,t,e)=>t in r?ZS(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,r2=(r,t)=>{for(var e in t||(t={}))t2.call(t,e)&&mg(r,e,t[e]);if(fg)for(var e of fg(t))e2.call(t,e)&&mg(r,e,t[e]);return r},i2=(r,t)=>QS(r,JS(t));function Ye(r,t){return` - for (let i = 0; i < ${r*t}; i++) { - data[offset + (((i / ${r})|0) * 4) + (i % ${r})] = v[i]; - } - `}const Xa={f32:` - data[offset] = v;`,i32:` - data[offset] = v;`,"vec2":` - data[offset] = v[0]; - data[offset + 1] = v[1];`,"vec3":` - data[offset] = v[0]; - data[offset + 1] = v[1]; - data[offset + 2] = v[2];`,"vec4":` - data[offset] = v[0]; - data[offset + 1] = v[1]; - data[offset + 2] = v[2]; - data[offset + 3] = v[3];`,"mat2x2":` - data[offset] = v[0]; - data[offset + 1] = v[1]; - data[offset + 4] = v[2]; - data[offset + 5] = v[3];`,"mat3x3":` - data[offset] = v[0]; - data[offset + 1] = v[1]; - data[offset + 2] = v[2]; - data[offset + 4] = v[3]; - data[offset + 5] = v[4]; - data[offset + 6] = v[5]; - data[offset + 8] = v[6]; - data[offset + 9] = v[7]; - data[offset + 10] = v[8];`,"mat4x4":` - for (let i = 0; i < 16; i++) { - data[offset + i] = v[i]; - }`,"mat3x2":Ye(3,2),"mat4x2":Ye(4,2),"mat2x3":Ye(2,3),"mat4x3":Ye(4,3),"mat2x4":Ye(2,4),"mat3x4":Ye(3,4)},gg=i2(r2({},Xa),{"mat2x2":` - data[offset] = v[0]; - data[offset + 1] = v[1]; - data[offset + 2] = v[2]; - data[offset + 3] = v[3]; - `});function _g(r,t){const e=Math.max(Na[r.data.type]/16,1),i=r.data.value.length/r.data.size,s=(4-i%4)%4;return` - v = uv.${r.data.name}; - offset += ${t}; - - arrayOffset = offset; - - t = 0; - - for(var i=0; i < ${r.data.size*e}; i++) - { - for(var j = 0; j < ${i}; j++) - { - data[arrayOffset++] = v[t++]; - } - ${s!==0?`arrayOffset += ${s};`:""} - } - `}function bg(r){return Ha(r,"uboStd40",_g,Xa)}class za extends $a{constructor(){super({createUboElements:pg,generateUboSync:bg})}}za.extension={type:[x.WebGLSystem],name:"ubo"};class vg{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new j}init(t,e){this._renderer=t,this._renderTargetSystem=e,t.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new j}copyToTexture(t,e,i,s,n){const o=this._renderTargetSystem,a=this._renderer,u=o.getGpuRenderTarget(t),l=a.gl;return this.finishRenderPass(t),l.bindFramebuffer(l.FRAMEBUFFER,u.resolveTargetFramebuffer),a.texture.bind(e,0),l.copyTexSubImage2D(l.TEXTURE_2D,0,n.x,n.y,i.x,i.y,s.width,s.height),e}startRenderPass(t,e=!0,i,s){const n=this._renderTargetSystem,o=t.colorTexture,a=n.getGpuRenderTarget(t);let u=s.y;t.isRoot&&(u=o.pixelHeight-s.height),t.colorTextures.forEach(h=>{this._renderer.texture.unbind(h)});const l=this._renderer.gl;l.bindFramebuffer(l.FRAMEBUFFER,a.framebuffer);const c=this._viewPortCache;(c.x!==s.x||c.y!==u||c.width!==s.width||c.height!==s.height)&&(c.x=s.x,c.y=u,c.width=s.width,c.height=s.height,l.viewport(s.x,u,s.width,s.height)),!a.depthStencilRenderBuffer&&(t.stencil||t.depth)&&this._initStencil(a),this.clear(t,e,i)}finishRenderPass(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);if(!e.msaa)return;const i=this._renderer.gl;i.bindFramebuffer(i.FRAMEBUFFER,e.resolveTargetFramebuffer),i.bindFramebuffer(i.READ_FRAMEBUFFER,e.framebuffer),i.blitFramebuffer(0,0,e.width,e.height,0,0,e.width,e.height,i.COLOR_BUFFER_BIT,i.NEAREST),i.bindFramebuffer(i.FRAMEBUFFER,e.framebuffer)}initGpuRenderTarget(t){const e=this._renderer,i=e.gl,s=new dg;return t.colorTexture.resource===e.gl.canvas?(s.framebuffer=null,s):(this._initColor(t,s),i.bindFramebuffer(i.FRAMEBUFFER,null),s)}destroyGpuRenderTarget(t){const e=this._renderer.gl;t.framebuffer&&(e.deleteFramebuffer(t.framebuffer),t.framebuffer=null),t.resolveTargetFramebuffer&&(e.deleteFramebuffer(t.resolveTargetFramebuffer),t.resolveTargetFramebuffer=null),t.depthStencilRenderBuffer&&(e.deleteRenderbuffer(t.depthStencilRenderBuffer),t.depthStencilRenderBuffer=null),t.msaaRenderBuffer.forEach(i=>{e.deleteRenderbuffer(i)}),t.msaaRenderBuffer=null}clear(t,e,i){if(!e)return;const s=this._renderTargetSystem;typeof e=="boolean"&&(e=e?mt.ALL:mt.NONE);const n=this._renderer.gl;if(e&mt.COLOR){i!=null||(i=s.defaultClearColor);const o=this._clearColorCache,a=i;(o[0]!==a[0]||o[1]!==a[1]||o[2]!==a[2]||o[3]!==a[3])&&(o[0]=a[0],o[1]=a[1],o[2]=a[2],o[3]=a[3],n.clearColor(a[0],a[1],a[2],a[3]))}n.clear(e)}resizeGpuRenderTarget(t){if(t.isRoot)return;const e=this._renderTargetSystem.getGpuRenderTarget(t);this._resizeColor(t,e),t.stencil&&this._resizeStencil(e)}_initColor(t,e){const i=this._renderer,s=i.gl,n=s.createFramebuffer();if(e.resolveTargetFramebuffer=n,s.bindFramebuffer(s.FRAMEBUFFER,n),e.width=t.colorTexture.source.pixelWidth,e.height=t.colorTexture.source.pixelHeight,t.colorTextures.forEach((o,a)=>{const u=o.source;u.antialias&&(i.context.supports.msaa?e.msaa=!0:_s("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),i.texture.bindSource(u,0);const l=i.texture.getGlSource(u).texture;s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0+a,3553,l,0)}),e.msaa){const o=s.createFramebuffer();e.framebuffer=o,s.bindFramebuffer(s.FRAMEBUFFER,o),t.colorTextures.forEach((a,u)=>{const l=s.createRenderbuffer();e.msaaRenderBuffer[u]=l})}else e.framebuffer=n;this._resizeColor(t,e)}_resizeColor(t,e){const i=t.colorTexture.source;if(e.width=i.pixelWidth,e.height=i.pixelHeight,t.colorTextures.forEach((s,n)=>{n!==0&&s.source.resize(i.width,i.height,i._resolution)}),e.msaa){const s=this._renderer,n=s.gl,o=e.framebuffer;n.bindFramebuffer(n.FRAMEBUFFER,o),t.colorTextures.forEach((a,u)=>{const l=a.source;s.texture.bindSource(l,0);const c=s.texture.getGlSource(l).internalFormat,h=e.msaaRenderBuffer[u];n.bindRenderbuffer(n.RENDERBUFFER,h),n.renderbufferStorageMultisample(n.RENDERBUFFER,4,c,l.pixelWidth,l.pixelHeight),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+u,n.RENDERBUFFER,h)})}}_initStencil(t){if(t.framebuffer===null)return;const e=this._renderer.gl,i=e.createRenderbuffer();t.depthStencilRenderBuffer=i,e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,i),this._resizeStencil(t)}_resizeStencil(t){const e=this._renderer.gl;e.bindRenderbuffer(e.RENDERBUFFER,t.depthStencilRenderBuffer),t.msaa?e.renderbufferStorageMultisample(e.RENDERBUFFER,4,e.DEPTH24_STENCIL8,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,this._renderer.context.webGLVersion===2?e.DEPTH24_STENCIL8:e.DEPTH_STENCIL,t.width,t.height)}}function yg(r,t,e,i,s,n){const o=n?1:-1;return r.identity(),r.a=1/i*2,r.d=o*(1/s*2),r.tx=-1-t*r.a,r.ty=-o-e*r.d,r}var s2=Object.defineProperty,xg=Object.getOwnPropertySymbols,n2=Object.prototype.hasOwnProperty,o2=Object.prototype.propertyIsEnumerable,Tg=(r,t,e)=>t in r?s2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,a2=(r,t)=>{for(var e in t||(t={}))n2.call(t,e)&&Tg(r,e,t[e]);if(xg)for(var e of xg(t))o2.call(t,e)&&Tg(r,e,t[e]);return r};const Ke=new Map;function ja(r,t){if(!Ke.has(r)){const e=new P({source:new de(a2({resource:r},t))}),i=()=>{Ke.get(r)===e&&Ke.delete(r)};e.once("destroy",i),e.source.once("destroy",i),Ke.set(r,e)}return Ke.get(r)}function u2(r){return Ke.has(r)}function Sg(r){const t=r.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement&&document.body.contains(t)}var l2=Object.defineProperty,Eg=Object.getOwnPropertySymbols,c2=Object.prototype.hasOwnProperty,h2=Object.prototype.propertyIsEnumerable,Ag=(r,t,e)=>t in r?l2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Pg=(r,t)=>{for(var e in t||(t={}))c2.call(t,e)&&Ag(r,e,t[e]);if(Eg)for(var e of Eg(t))h2.call(t,e)&&Ag(r,e,t[e]);return r};const wg=class Nb{constructor(t={}){if(this.uid=J("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,t=Pg(Pg({},Nb.defaultOptions),t),this.stencil=t.stencil,this.depth=t.depth,this.isRoot=t.isRoot,typeof t.colorTextures=="number"){this._managedColorTextures=!0;for(let e=0;ei.source)];const e=this.colorTexture.source;this.resize(e.width,e.height,e._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(t.depthStencilTexture||this.stencil)&&(t.depthStencilTexture instanceof P||t.depthStencilTexture instanceof rt?this.depthStencilTexture=t.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){const t=this._size;return t[0]=this.pixelWidth,t[1]=this.pixelHeight,t}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(t){this.resize(t.width,t.height,t._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new rt({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(t,e,i=this.resolution,s=!1){this.dirtyId++,this.colorTextures.forEach((n,o)=>{s&&o===0||n.source.resize(t,e,i)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(t,e,i)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(t=>{t.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}};wg.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let vs=wg;class Va{constructor(t){this.rootViewPort=new j,this.viewport=new j,this.onRenderTargetChange=new Yo("onRenderTargetChange"),this.projectionMatrix=new G,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=t}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:t,clear:e,clearColor:i,frame:s}){this._renderTargetStack.length=0,this.push(t,e,i,s),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=Sg(this.rootRenderTarget)}bind(t,e=!0,i,s){const n=this.getRenderTarget(t),o=this.renderTarget!==n;this.renderTarget=n,this.renderSurface=t;const a=this.getGpuRenderTarget(n);(n.pixelWidth!==a.width||n.pixelHeight!==a.height)&&(this.adaptor.resizeGpuRenderTarget(n),a.width=n.pixelWidth,a.height=n.pixelHeight);const u=n.colorTexture,l=this.viewport,c=u.pixelWidth,h=u.pixelHeight;if(!s&&t instanceof P&&(s=t.frame),s){const p=u._resolution;l.x=s.x*p+.5|0,l.y=s.y*p+.5|0,l.width=s.width*p+.5|0,l.height=s.height*p+.5|0}else l.x=0,l.y=0,l.width=c,l.height=h;return yg(this.projectionMatrix,0,0,l.width/u.resolution,l.height/u.resolution,!n.isRoot),this.adaptor.startRenderPass(n,e,i,l),o&&this.onRenderTargetChange.emit(n),n}clear(t,e=mt.ALL,i){e&&(t&&(t=this.getRenderTarget(t)),this.adaptor.clear(t||this.renderTarget,e,i,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(t,e=mt.ALL,i,s){const n=this.bind(t,e,i,s);return this._renderTargetStack.push({renderTarget:n,frame:s}),n}pop(){this._renderTargetStack.pop();const t=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(t.renderTarget,!1,null,t.frame)}getRenderTarget(t){var e;return t.isTexture&&(t=t.source),(e=this._renderSurfaceToRenderTargetHash.get(t))!=null?e:this._initRenderTarget(t)}copyToTexture(t,e,i,s,n){i.x<0&&(s.width+=i.x,n.x-=i.x,i.x=0),i.y<0&&(s.height+=i.y,n.y-=i.y,i.y=0);const{pixelWidth:o,pixelHeight:a}=t;return s.width=Math.min(s.width,o-i.x),s.height=Math.min(s.height,a-i.y),this.adaptor.copyToTexture(t,e,i,s,n)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((t,e)=>{t!==e&&t.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(t){let e=null;return de.test(t)&&(t=ja(t).source),t instanceof vs?e=t:t instanceof rt&&(e=new vs({colorTextures:[t]}),de.test(t.source.resource)&&(e.isRoot=!0),t.once("destroy",()=>{e.destroy();const i=this._gpuRenderTargetHash[e.uid];i&&(this._gpuRenderTargetHash[e.uid]=null,this.adaptor.destroyGpuRenderTarget(i))})),this._renderSurfaceToRenderTargetHash.set(t,e),e}getGpuRenderTarget(t){return this._gpuRenderTargetHash[t.uid]||(this._gpuRenderTargetHash[t.uid]=this.adaptor.initGpuRenderTarget(t))}}class Wa extends Va{constructor(t){super(t),this.adaptor=new vg,this.adaptor.init(t,this)}}Wa.extension={type:[x.WebGLSystem],name:"renderTarget"};class ys extends pt{constructor({buffer:t,offset:e,size:i}){super(),this.uid=J("buffer"),this._resourceType="bufferResource",this._touched=0,this._resourceId=J("resource"),this._bufferResource=!0,this.destroyed=!1,this.buffer=t,this.offset=e|0,this.size=i,this.buffer.on("change",this.onBufferChange,this)}onBufferChange(){this._resourceId=J("resource"),this.emit("change",this)}destroy(t=!1){this.destroyed=!0,t&&this.buffer.destroy(),this.emit("change",this),this.buffer=null}}function Rg(r,t){const e=[],i=[` - var g = s.groups; - var sS = r.shader; - var p = s.glProgram; - var ugS = r.uniformGroup; - var resources; - `];let s=!1,n=0,o=0;const a=t._getProgramData(r.glProgram);for(const l in r.groups){const c=r.groups[l];e.push(` - resources = g[${l}].resources; - `);for(const h in c.resources){const p=c.resources[h];if(p instanceof nt)p.ubo?e.push(` - sS.bindUniformBlock( - resources[${h}], - sS._uniformBindMap[${l}[${h}], - ${n++} - ); - `):e.push(` - ugS.updateUniformGroup(resources[${h}], p, sD); - `);else if(p instanceof ys)e.push(` - sS.bindUniformBlock( - resources[${h}], - sS._uniformBindMap[${l}[${h}], - ${n++} - ); - `);else if(p instanceof rt){const f=r._uniformBindMap[l][h],m=a.uniformData[f];m&&(s||(s=!0,i.push(` - var tS = r.texture; - `)),t._gl.uniform1i(m.location,o),e.push(` - tS.bind(resources[${h}], ${o}); - `),o++)}}}const u=[...i,...e].join(` -`);return new Function("r","s","sD",u)}class d2{}class Mg{constructor(t,e){this.program=t,this.uniformData=e,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBlockBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBlockBindings=null,this.program=null}}function Ya(r,t,e){const i=r.createShader(t);return r.shaderSource(i,e),r.compileShader(i),i}function Ka(r){const t=new Array(r);for(let e=0;eo>a?1:-1);for(let o=0;o`${c}: ${l}`),i=r.getShaderInfoLog(t),s=i.split(` -`),n={},o=s.map(l=>parseFloat(l.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(l=>l&&!n[l]?(n[l]=!0,!0):!1),a=[""];o.forEach(l=>{e[l-1]=`%c${e[l-1]}%c`,a.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});const u=e.join(` -`);a[0]=u,console.error(i),console.groupCollapsed("click to view full shader code"),console.warn(...a),console.groupEnd()}function Dg(r,t,e,i){r.getProgramParameter(t,r.LINK_STATUS)||(r.getShaderParameter(e,r.COMPILE_STATUS)||Fg(r,e),r.getShaderParameter(i,r.COMPILE_STATUS)||Fg(r,i),console.error("PixiJS Error: Could not initialize shader."),r.getProgramInfoLog(t)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",r.getProgramInfoLog(t)))}function Ug(r,t){const e=Ya(r,r.VERTEX_SHADER,t.vertex),i=Ya(r,r.FRAGMENT_SHADER,t.fragment),s=r.createProgram();r.attachShader(s,e),r.attachShader(s,i);const n=t.transformFeedbackVaryings;n&&(typeof r.transformFeedbackVaryings!="function"||r.transformFeedbackVaryings(s,n.names,n.bufferMode==="separate"?r.SEPARATE_ATTRIBS:r.INTERLEAVED_ATTRIBS)),r.linkProgram(s),r.getProgramParameter(s,r.LINK_STATUS)||Dg(r,s,e,i),t._attributeData=Gg(s,r,!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(t.vertex)),t._uniformData=Ig(s,r),t._uniformBlockData=Bg(s,r),r.deleteShader(e),r.deleteShader(i);const o={};for(const a in t._uniformData){const u=t._uniformData[a];o[a]={location:r.getUniformLocation(s,a),value:qa(u.type,u.size)}}return new Mg(s,o)}const Ts={textureCount:0,blockIndex:0};class Qa{constructor(t){this._activeProgram=null,this._programDataHash=Object.create(null),this._nextIndex=0,this._boundUniformsIdsToIndexHash=Object.create(null),this._boundIndexToUniformsHash=Object.create(null),this._shaderSyncFunctions=Object.create(null),this._renderer=t}contextChange(t){this._gl=t,this._maxBindings=t.MAX_UNIFORM_BUFFER_BINDINGS?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0,this._programDataHash=Object.create(null),this._boundUniformsIdsToIndexHash=Object.create(null),this._boundIndexToUniformsHash=Object.create(null),this._activeProgram=null}bind(t,e){if(this._setProgram(t.glProgram),e)return;Ts.textureCount=0,Ts.blockIndex=0;let i=this._shaderSyncFunctions[t.glProgram._key];i||(i=this._shaderSyncFunctions[t.glProgram._key]=this._generateShaderSync(t,this)),i(this._renderer,t,Ts)}updateUniformGroup(t){this._renderer.uniformGroup.updateUniformGroup(t,this._activeProgram,Ts)}bindUniformBlock(t,e,i=0){const s=this._renderer.buffer,n=this._getProgramData(this._activeProgram),o=t._bufferResource;o&&this._renderer.ubo.updateUniformGroup(t),s.updateBuffer(t.buffer);let a=this._boundUniformsIdsToIndexHash[t.uid];if(a===void 0){const c=this._nextIndex++%this._maxBindings,h=this._boundIndexToUniformsHash[c];h&&(this._boundUniformsIdsToIndexHash[h.uid]=void 0),a=this._boundUniformsIdsToIndexHash[t.uid]=c,this._boundIndexToUniformsHash[c]=t,o?s.bindBufferRange(t.buffer,c,t.offset):s.bindBufferBase(t.buffer,c)}const u=this._gl,l=this._activeProgram._uniformBlockData[e].index;n.uniformBlockBindings[i]!==a&&(n.uniformBlockBindings[i]=a,u.uniformBlockBinding(n.program,l,a))}_setProgram(t){if(this._activeProgram===t)return;this._activeProgram=t;const e=this._getProgramData(t);this._gl.useProgram(e.program)}_getProgramData(t){return this._programDataHash[t._key]||this._createProgramData(t)}_createProgramData(t){const e=t._key;return this._programDataHash[e]=Ug(this._gl,t),this._programDataHash[e]}destroy(){for(const t of Object.keys(this._programDataHash))this._programDataHash[t].destroy(),this._programDataHash[t]=null;this._programDataHash=null,this._boundUniformsIdsToIndexHash=null}_generateShaderSync(t,e){return Rg(t,e)}}Qa.extension={type:[x.WebGLSystem],name:"shader"};const kg={f32:`if (cv !== v) { - cu.value = v; - gl.uniform1f(location, v); - }`,"vec2":`if (cv[0] !== v[0] || cv[1] !== v[1]) { - cv[0] = v[0]; - cv[1] = v[1]; - gl.uniform2f(location, v[0], v[1]); - }`,"vec3":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - gl.uniform3f(location, v[0], v[1], v[2]); - }`,"vec4":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - cv[3] = v[3]; - gl.uniform4f(location, v[0], v[1], v[2], v[3]); - }`,i32:`if (cv !== v) { - cu.value = v; - gl.uniform1i(location, v); - }`,"vec2":`if (cv[0] !== v[0] || cv[1] !== v[1]) { - cv[0] = v[0]; - cv[1] = v[1]; - gl.uniform2i(location, v[0], v[1]); - }`,"vec3":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - gl.uniform3i(location, v[0], v[1], v[2]); - }`,"vec4":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - cv[3] = v[3]; - gl.uniform4i(location, v[0], v[1], v[2], v[3]); - }`,u32:`if (cv !== v) { - cu.value = v; - gl.uniform1ui(location, v); - }`,"vec2":`if (cv[0] !== v[0] || cv[1] !== v[1]) { - cv[0] = v[0]; - cv[1] = v[1]; - gl.uniform2ui(location, v[0], v[1]); - }`,"vec3":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - gl.uniform3ui(location, v[0], v[1], v[2]); - }`,"vec4":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - cv[3] = v[3]; - gl.uniform4ui(location, v[0], v[1], v[2], v[3]); - }`,bool:`if (cv !== v) { - cu.value = v; - gl.uniform1i(location, v); - }`,"vec2":`if (cv[0] !== v[0] || cv[1] !== v[1]) { - cv[0] = v[0]; - cv[1] = v[1]; - gl.uniform2i(location, v[0], v[1]); - }`,"vec3":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - gl.uniform3i(location, v[0], v[1], v[2]); - }`,"vec4":`if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) { - cv[0] = v[0]; - cv[1] = v[1]; - cv[2] = v[2]; - cv[3] = v[3]; - gl.uniform4i(location, v[0], v[1], v[2], v[3]); - }`,"mat2x2":"gl.uniformMatrix2fv(location, false, v);","mat3x3":"gl.uniformMatrix3fv(location, false, v);","mat4x4":"gl.uniformMatrix4fv(location, false, v);"},Lg={f32:"gl.uniform1fv(location, v);","vec2":"gl.uniform2fv(location, v);","vec3":"gl.uniform3fv(location, v);","vec4":"gl.uniform4fv(location, v);","mat2x2":"gl.uniformMatrix2fv(location, false, v);","mat3x3":"gl.uniformMatrix3fv(location, false, v);","mat4x4":"gl.uniformMatrix4fv(location, false, v);",i32:"gl.uniform1iv(location, v);","vec2":"gl.uniform2iv(location, v);","vec3":"gl.uniform3iv(location, v);","vec4":"gl.uniform4iv(location, v);",u32:"gl.uniform1iv(location, v);","vec2":"gl.uniform2iv(location, v);","vec3":"gl.uniform3iv(location, v);","vec4":"gl.uniform4iv(location, v);",bool:"gl.uniform1iv(location, v);","vec2":"gl.uniform2iv(location, v);","vec3":"gl.uniform3iv(location, v);","vec4":"gl.uniform4iv(location, v);"};function $g(r,t){const e=[` - var v = null; - var cv = null; - var cu = null; - var t = 0; - var gl = renderer.gl; - var name = null; - `];for(const i in r.uniforms){if(!t[i]){r.uniforms[i]instanceof nt?r.uniforms[i].ubo?e.push(` - renderer.shader.bindUniformBlock(uv.${i}, "${i}"); - `):e.push(` - renderer.shader.updateUniformGroup(uv.${i}); - `):r.uniforms[i]instanceof ys&&e.push(` - renderer.shader.bindBufferResource(uv.${i}, "${i}"); - `);continue}const s=r.uniformStructures[i];let n=!1;for(let o=0;o>1,i++;this.stateId=t.data}for(let e=0;e>1,1),s=Math.max(s>>1,1)}}},tu={id:"image",upload(r,t,e,i){const s=r.alphaMode==="premultiply-alpha-on-upload";e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s);const n=t.width,o=t.height,a=r.pixelWidth,u=r.pixelHeight,l=r.resourceWidth,c=r.resourceHeight;l1){const l=Math.min(r.maxAnisotropy,t.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT));t[s](u,i.TEXTURE_MAX_ANISOTROPY_EXT,l)}r.compare&&t[s](u,t.TEXTURE_COMPARE_FUNC,Kg[r.compare])}function qg(r){return{r8unorm:r.RED,r8snorm:r.RED,r8uint:r.RED,r8sint:r.RED,r16uint:r.RED,r16sint:r.RED,r16float:r.RED,rg8unorm:r.RG,rg8snorm:r.RG,rg8uint:r.RG,rg8sint:r.RG,r32uint:r.RED,r32sint:r.RED,r32float:r.RED,rg16uint:r.RG,rg16sint:r.RG,rg16float:r.RG,rgba8unorm:r.RGBA,"rgba8unorm-srgb":r.RGBA,rgba8snorm:r.RGBA,rgba8uint:r.RGBA,rgba8sint:r.RGBA,bgra8unorm:r.RGBA,"bgra8unorm-srgb":r.RGBA,rgb9e5ufloat:r.RGB,rgb10a2unorm:r.RGBA,rg11b10ufloat:r.RGB,rg32uint:r.RG,rg32sint:r.RG,rg32float:r.RG,rgba16uint:r.RGBA,rgba16sint:r.RGBA,rgba16float:r.RGBA,rgba32uint:r.RGBA,rgba32sint:r.RGBA,rgba32float:r.RGBA,stencil8:r.STENCIL_INDEX8,depth16unorm:r.DEPTH_COMPONENT,depth24plus:r.DEPTH_COMPONENT,"depth24plus-stencil8":r.DEPTH_STENCIL,depth32float:r.DEPTH_COMPONENT,"depth32float-stencil8":r.DEPTH_STENCIL}}var E2=Object.defineProperty,A2=Object.defineProperties,P2=Object.getOwnPropertyDescriptors,Zg=Object.getOwnPropertySymbols,w2=Object.prototype.hasOwnProperty,R2=Object.prototype.propertyIsEnumerable,Qg=(r,t,e)=>t in r?E2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Te=(r,t)=>{for(var e in t||(t={}))w2.call(t,e)&&Qg(r,e,t[e]);if(Zg)for(var e of Zg(t))R2.call(t,e)&&Qg(r,e,t[e]);return r},M2=(r,t)=>A2(r,P2(t));function Jg(r,t){let e={},i=r.RGBA;return r instanceof z.get().getWebGLRenderingContext()?t.srgb&&(e={"rgba8unorm-srgb":t.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":t.srgb.SRGB8_ALPHA8_EXT}):(e={"rgba8unorm-srgb":r.SRGB8_ALPHA8,"bgra8unorm-srgb":r.SRGB8_ALPHA8},i=r.RGBA8),Te(Te(Te(Te(Te(Te(M2(Te({r8unorm:r.R8,r8snorm:r.R8_SNORM,r8uint:r.R8UI,r8sint:r.R8I,r16uint:r.R16UI,r16sint:r.R16I,r16float:r.R16F,rg8unorm:r.RG8,rg8snorm:r.RG8_SNORM,rg8uint:r.RG8UI,rg8sint:r.RG8I,r32uint:r.R32UI,r32sint:r.R32I,r32float:r.R32F,rg16uint:r.RG16UI,rg16sint:r.RG16I,rg16float:r.RG16F,rgba8unorm:r.RGBA},e),{rgba8snorm:r.RGBA8_SNORM,rgba8uint:r.RGBA8UI,rgba8sint:r.RGBA8I,bgra8unorm:i,rgb9e5ufloat:r.RGB9_E5,rgb10a2unorm:r.RGB10_A2,rg11b10ufloat:r.R11F_G11F_B10F,rg32uint:r.RG32UI,rg32sint:r.RG32I,rg32float:r.RG32F,rgba16uint:r.RGBA16UI,rgba16sint:r.RGBA16I,rgba16float:r.RGBA16F,rgba32uint:r.RGBA32UI,rgba32sint:r.RGBA32I,rgba32float:r.RGBA32F,stencil8:r.STENCIL_INDEX8,depth16unorm:r.DEPTH_COMPONENT16,depth24plus:r.DEPTH_COMPONENT24,"depth24plus-stencil8":r.DEPTH24_STENCIL8,depth32float:r.DEPTH_COMPONENT32F,"depth32float-stencil8":r.DEPTH32F_STENCIL8}),t.s3tc?{"bc1-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":t.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{}),t.s3tc_sRGB?{"bc1-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":t.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{}),t.rgtc?{"bc4-r-unorm":t.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":t.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":t.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":t.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{}),t.bptc?{"bc6h-rgb-float":t.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":t.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":t.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":t.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{}),t.etc?{"etc2-rgb8unorm":t.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":t.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":t.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":t.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":t.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":t.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":t.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":t.etc.COMPRESSED_SIGNED_RG11_EAC}:{}),t.astc?{"astc-4x4-unorm":t.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":t.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":t.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":t.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":t.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":t.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":t.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{})}function t_(r){return{r8unorm:r.UNSIGNED_BYTE,r8snorm:r.BYTE,r8uint:r.UNSIGNED_BYTE,r8sint:r.BYTE,r16uint:r.UNSIGNED_SHORT,r16sint:r.SHORT,r16float:r.HALF_FLOAT,rg8unorm:r.UNSIGNED_BYTE,rg8snorm:r.BYTE,rg8uint:r.UNSIGNED_BYTE,rg8sint:r.BYTE,r32uint:r.UNSIGNED_INT,r32sint:r.INT,r32float:r.FLOAT,rg16uint:r.UNSIGNED_SHORT,rg16sint:r.SHORT,rg16float:r.HALF_FLOAT,rgba8unorm:r.UNSIGNED_BYTE,"rgba8unorm-srgb":r.UNSIGNED_BYTE,rgba8snorm:r.BYTE,rgba8uint:r.UNSIGNED_BYTE,rgba8sint:r.BYTE,bgra8unorm:r.UNSIGNED_BYTE,"bgra8unorm-srgb":r.UNSIGNED_BYTE,rgb9e5ufloat:r.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:r.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:r.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:r.UNSIGNED_INT,rg32sint:r.INT,rg32float:r.FLOAT,rgba16uint:r.UNSIGNED_SHORT,rgba16sint:r.SHORT,rgba16float:r.HALF_FLOAT,rgba32uint:r.UNSIGNED_INT,rgba32sint:r.INT,rgba32float:r.FLOAT,stencil8:r.UNSIGNED_BYTE,depth16unorm:r.UNSIGNED_SHORT,depth24plus:r.UNSIGNED_INT,"depth24plus-stencil8":r.UNSIGNED_INT_24_8,depth32float:r.FLOAT,"depth32float-stencil8":r.FLOAT_32_UNSIGNED_INT_24_8_REV}}function C2(r){r instanceof Uint8ClampedArray&&(r=new Uint8Array(r.buffer));const t=r.length;for(let e=0;e1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",i.TEXTURE_2D,!this._renderer.context.supports.nonPowOf2wrapping&&!t.isPowerOfTwo,e)}onSourceUnload(t){const e=this._glTextures[t.uid];e&&(this.unbind(t),this._glTextures[t.uid]=null,this._gl.deleteTexture(e.texture))}onSourceUpdate(t){const e=this._gl,i=this.getGlSource(t);e.bindTexture(e.TEXTURE_2D,i.texture),this._boundTextures[this._activeTextureLocation]=t,this._uploads[t.uploadMethodId]?this._uploads[t.uploadMethodId].upload(t,i,e,this._renderer.context.webGLVersion):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t.pixelWidth,t.pixelHeight,0,e.RGBA,e.UNSIGNED_BYTE,null),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t,!1)}onUpdateMipmaps(t,e=!0){e&&this.bindSource(t,0);const i=this.getGlSource(t);this._gl.generateMipmap(i.target)}onSourceDestroy(t){t.off("destroy",this.onSourceDestroy,this),t.off("update",this.onSourceUpdate,this),t.off("resize",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("styleChange",this.onStyleChange,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}_initSampler(t){const e=this._gl,i=this._gl.createSampler();return this._glSamplers[t._resourceId]=i,ru(t,e,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",i,!1,!0),this._glSamplers[t._resourceId]}_getGlSampler(t){return this._glSamplers[t._resourceId]||this._initSampler(t)}getGlSource(t){return this._glTextures[t.uid]||this._initSource(t)}generateCanvas(t){const{pixels:e,width:i,height:s}=this.getPixels(t),n=z.get().createCanvas();n.width=i,n.height=s;const o=n.getContext("2d");if(o){const a=o.createImageData(i,s);a.data.set(e),o.putImageData(a,0,0)}return n}getPixels(t){const e=t.source.resolution,i=t.frame,s=Math.max(Math.round(i.width*e),1),n=Math.max(Math.round(i.height*e),1),o=new Uint8Array(O2*s*n),a=this._renderer,u=a.renderTarget.getRenderTarget(t),l=a.renderTarget.getGpuRenderTarget(u),c=a.gl;return c.bindFramebuffer(c.FRAMEBUFFER,l.resolveTargetFramebuffer),c.readPixels(Math.round(i.x*e),Math.round(i.y*e),s,n,c.RGBA,c.UNSIGNED_BYTE,o),{pixels:new Uint8ClampedArray(o.buffer),width:s,height:n}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,this._renderer=null}}iu.extension={type:[x.WebGLSystem],name:"texture"};class su{init(){const t=new nt({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uTransformMatrix:{value:new G,type:"mat3x3"},uRound:{value:0,type:"f32"}}),e=$e({name:"graphics",bits:[Ui,Li(dt),Xi,He]});this.shader=new xt({glProgram:e,resources:{localUniforms:t,batchSamplers:$i}})}execute(t,e){const i=e.context,s=i.customShader||this.shader,n=t.renderer,o=n.graphicsContext,{geometry:a,instructions:u}=o.getContextRenderData(i);s.groups[0]=n.globalUniforms.bindGroup,n.state.set(t.state),n.shader.bind(s),n.geometry.bind(a,s.glProgram);const l=u.instructions;for(let c=0;c",value:new G}}}})}execute(t,e){const i=t.renderer;let s=e._shader;if(s){if(!s.glProgram)return}else{s=this._shader;const n=e.texture,o=n.source;s.resources.uTexture=o,s.resources.uSampler=o.style,s.resources.textureUniforms.uniforms.uTextureMatrix=n.textureMatrix.mapCoord}s.groups[100]=i.globalUniforms.bindGroup,s.groups[101]=t.localUniformsBindGroup,i.encoder.draw({geometry:e._geometry,shader:s,state:e.state})}destroy(){this._shader.destroy(!0),this._shader=null}}nu.extension={type:[x.WebGLPipesAdaptor],name:"mesh"};class ou{constructor(t){this._renderer=t}addRenderable(t,e){this._renderer.renderPipes.batch.break(e),e.add(t)}execute(t){t.isRenderable&&t.render(this._renderer)}destroy(){this._renderer=null}}ou.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"customRender"};function au(r,t){const e=r.instructionSet,i=e.instructions;for(let s=0;s>16&255,s=r>>8&255,n=r&255,o=t>>16&255,a=t>>8&255,u=t&255,l=i+(o-i)*e,c=s+(a-s)*e,h=n+(u-n)*e;return(l<<16)+(c<<8)+h}const qe=16777215;function hu(r,t){return r===qe||t===qe?r+t-qe:cu(r,t,.5)}function G2(r,t,e){const i=(e>>24&255)/255,s=t*i*255,n=((r&255)<<16)+(r&65280)+(r>>16&255),o=e&16777215;let a;return n===qe||o===qe?a=n+o-qe:a=cu(n,o,.5),a+(s<<24)}const B2=new Y;function du(r,t=!1){e_(r);const e=r.childrenToUpdate,i=r.updateTick++;for(const s in e){const n=e[s],o=n.list,a=n.index;for(let u=0;u1?1:e,r.worldAlpha=e,r.worldColorAlpha=r.worldColor+((e*255|0)<<24)}function pu(r,t,e){if(t===r.updateTick)return;r.updateTick=t,r.didChange=!1;const i=r.localTransform;r.updateLocalTransform();const s=r.parent;if(s&&!s.renderGroup?(e=e|r._updateFlags,r.relativeGroupTransform.appendFrom(i,s.relativeGroupTransform),e&&r_(r,s,e)):(e=r._updateFlags,r.relativeGroupTransform.copyFrom(i),e&&r_(r,B2,e)),!r.renderGroup){const n=r.children,o=n.length;for(let u=0;u1?1:i,r.groupAlpha=i,r.groupColorAlpha=r.groupColor+((i*255|0)<<24)}e&Zs&&(r.groupBlendMode=r.localBlendMode==="inherit"?t.groupBlendMode:r.localBlendMode),e&sr&&(r.globalDisplayStatus=r.localDisplayStatus&t.globalDisplayStatus),r._updateFlags=0}function i_(r,t){const{list:e,index:i}=r.childrenRenderablesToUpdate;let s=!1;for(let n=0;n{this.destroyRenderable(t)}),e}destroy(){for(const t in this._gpuSpriteHash)W.return(this._gpuSpriteHash[t]);this._gpuSpriteHash=null,this._renderer=null}}mu.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"sprite"};var D2=Object.defineProperty,s_=Object.getOwnPropertySymbols,U2=Object.prototype.hasOwnProperty,k2=Object.prototype.propertyIsEnumerable,n_=(r,t,e)=>t in r?D2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,o_=(r,t)=>{for(var e in t||(t={}))U2.call(t,e)&&n_(r,e,t[e]);if(s_)for(var e of s_(t))k2.call(t,e)&&n_(r,e,t[e]);return r};const gu=class Hb{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new K(0),this.color=this._backgroundColor,this.alpha=1}init(t){t=o_(o_({},Hb.defaultOptions),t),this.clearBeforeRender=t.clearBeforeRender,this.color=t.background||t.backgroundColor||this._backgroundColor,this.alpha=t.backgroundAlpha,this._backgroundColor.setAlpha(t.backgroundAlpha)}get color(){return this._backgroundColor}set color(t){this._backgroundColor.setValue(t)}get alpha(){return this._backgroundColor.alpha}set alpha(t){this._backgroundColor.setAlpha(t)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}};gu.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"background",priority:0},gu.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};let a_=gu;const Hr={};U.handle(x.BlendMode,r=>{if(!r.name)throw new Error("BlendMode extension must have a name property");Hr[r.name]=r.ref},r=>{delete Hr[r.name]});class _u{constructor(t){this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=t}setBlendMode(t,e,i){if(this._activeBlendMode===e){this._isAdvanced&&this._renderableList.push(t);return}this._activeBlendMode=e,this._isAdvanced&&this._endAdvancedBlendMode(i),this._isAdvanced=!!Hr[e],this._isAdvanced&&(this._beginAdvancedBlendMode(i),this._renderableList.push(t))}_beginAdvancedBlendMode(t){this._renderer.renderPipes.batch.break(t);const e=this._activeBlendMode;if(!Hr[e])return;let i=this._filterHash[e];i||(i=this._filterHash[e]=new er,i.filters=[new Hr[e]]);const s={renderPipeId:"filter",action:"pushFilter",renderables:[],filterEffect:i,canBundle:!1};this._renderableList=s.renderables,t.add(s)}_endAdvancedBlendMode(t){this._renderableList=null,this._renderer.renderPipes.batch.break(t),t.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(t){this._isAdvanced&&this._endAdvancedBlendMode(t)}destroy(){this._renderer=null,this._renderableList=null;for(const t in this._filterHash)this._filterHash[t].destroy();this._filterHash=null}}_u.extension={type:[x.WebGLPipes,x.WebGPUPipes,x.CanvasPipes],name:"blendMode"};var L2=Object.defineProperty,u_=Object.getOwnPropertySymbols,$2=Object.prototype.hasOwnProperty,N2=Object.prototype.propertyIsEnumerable,l_=(r,t,e)=>t in r?L2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,bu=(r,t)=>{for(var e in t||(t={}))$2.call(t,e)&&l_(r,e,t[e]);if(u_)for(var e of u_(t))N2.call(t,e)&&l_(r,e,t[e]);return r};const vu={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},yu=class Xb{constructor(t){this._renderer=t}_normalizeOptions(t,e={}){return t instanceof Y||t instanceof P?bu({target:t},e):bu(bu({},e),t)}async image(t){const e=new Image;return e.src=await this.base64(t),e}async base64(t){t=this._normalizeOptions(t,Xb.defaultImageOptions);const{format:e,quality:i}=t,s=this.canvas(t);if(s.toBlob!==void 0)return new Promise((n,o)=>{s.toBlob(a=>{if(!a){o(new Error("ICanvas.toBlob failed!"));return}const u=new FileReader;u.onload=()=>n(u.result),u.onerror=o,u.readAsDataURL(a)},vu[e],i)});if(s.toDataURL!==void 0)return s.toDataURL(vu[e],i);if(s.convertToBlob!==void 0){const n=await s.convertToBlob({type:vu[e],quality:i});return new Promise((o,a)=>{const u=new FileReader;u.onload=()=>o(u.result),u.onerror=a,u.readAsDataURL(n)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(t){t=this._normalizeOptions(t);const e=t.target,i=this._renderer;if(e instanceof P)return i.texture.generateCanvas(e);const s=i.textureGenerator.generateTexture(t),n=i.texture.generateCanvas(s);return s.destroy(),n}pixels(t){t=this._normalizeOptions(t);const e=t.target,i=this._renderer,s=e instanceof P?e:i.textureGenerator.generateTexture(t),n=i.texture.getPixels(s);return e instanceof Y&&s.destroy(),n}texture(t){return t=this._normalizeOptions(t),t.target instanceof P?t.target:this._renderer.textureGenerator.generateTexture(t)}download(t){var e;t=this._normalizeOptions(t);const i=this.canvas(t),s=document.createElement("a");s.download=(e=t.filename)!=null?e:"image.png",s.href=i.toDataURL("image/png"),document.body.appendChild(s),s.click(),document.body.removeChild(s)}log(t){var e;const i=(e=t.width)!=null?e:200;t=this._normalizeOptions(t);const s=this.canvas(t),n=s.toDataURL();console.log(`[Pixi Texture] ${s.width}px ${s.height}px`);const o=["font-size: 1px;",`padding: ${i}px 300px;`,`background: url(${n}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",o)}destroy(){this._renderer=null}};yu.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"extract"},yu.defaultImageOptions={format:"png",quality:1};let c_=yu;class h_ extends P{static create(t){return new P({source:new rt(t)})}resize(t,e,i){return this.source.resize(t,e,i),this}}var H2=Object.defineProperty,X2=Object.defineProperties,z2=Object.getOwnPropertyDescriptors,d_=Object.getOwnPropertySymbols,j2=Object.prototype.hasOwnProperty,V2=Object.prototype.propertyIsEnumerable,p_=(r,t,e)=>t in r?H2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,W2=(r,t)=>{for(var e in t||(t={}))j2.call(t,e)&&p_(r,e,t[e]);if(d_)for(var e of d_(t))V2.call(t,e)&&p_(r,e,t[e]);return r},Y2=(r,t)=>X2(r,z2(t));const K2=new j,q2=new lt,Z2=[0,0,0,0];class xu{constructor(t){this._renderer=t}generateTexture(t){var e;t instanceof Y&&(t={target:t,frame:void 0,textureSourceOptions:{},resolution:void 0});const i=t.resolution||this._renderer.resolution,s=t.antialias||this._renderer.view.antialias,n=t.target;let o=t.clearColor;o?o=Array.isArray(o)&&o.length===4?o:K.shared.setValue(o).toArray():o=Z2;const a=((e=t.frame)==null?void 0:e.copyTo(K2))||ei(n,q2).rectangle;a.width=Math.max(a.width,1/i)|0,a.height=Math.max(a.height,1/i)|0;const u=h_.create(Y2(W2({},t.textureSourceOptions),{width:a.width,height:a.height,resolution:i,antialias:s})),l=G.shared.translate(-a.x,-a.y);return this._renderer.render({container:n,transform:l,target:u,clearColor:o}),u}destroy(){this._renderer=null}}xu.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"textureGenerator"};class Tu{constructor(t){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=t}reset(){this._stackIndex=0;for(let t=0;t"},uWorldTransformMatrix:{value:new G,type:"mat3x3"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4"},uResolution:{value:[0,0],type:"vec2"}},{isStatic:!0})}destroy(){this._renderer=null}}Tu.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"globalUniforms"};let f_=!1;const Su="8.1.4";function m_(r){if(!f_){if(z.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){const t=[`%c %c %c %c %c PixiJS %c v${Su} (${r}) http://www.pixijs.com/ - -`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...t)}else globalThis.console&&globalThis.console.log(`PixiJS ${Su} - ${r} - http://www.pixijs.com/`);f_=!0}}class Es{constructor(t){this._renderer=t}init(t){if(t.hello){let e=this._renderer.name;this._renderer.type===yt.WEBGL&&(e+=` ${this._renderer.context.webGLVersion}`),m_(e)}}}Es.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"hello",priority:-2},Es.defaultOptions={hello:!1};var Q2=Object.defineProperty,g_=Object.getOwnPropertySymbols,J2=Object.prototype.hasOwnProperty,tE=Object.prototype.propertyIsEnumerable,__=(r,t,e)=>t in r?Q2(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,b_=(r,t)=>{for(var e in t||(t={}))J2.call(t,e)&&__(r,e,t[e]);if(g_)for(var e of g_(t))tE.call(t,e)&&__(r,e,t[e]);return r};const Eu=class zb{constructor(t){this._renderer=t,this.count=0,this.checkCount=0}init(t){t=b_(b_({},zb.defaultOptions),t),this.checkCountMax=t.textureGCCheckCountMax,this.maxIdle=t.textureGCAMaxIdle,this.active=t.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const t=this._renderer.texture.managedTextures;for(let e=0;e-1&&this.count-i._touched>this.maxIdle&&(i._touched=-1,i.unload())}}destroy(){this._renderer=null}};Eu.extension={type:[x.WebGLSystem,x.WebGPUSystem],name:"textureGC"},Eu.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:3600,textureGCCheckCountMax:600};let Au=Eu;U.add(Au);var eE=Object.defineProperty,v_=Object.getOwnPropertySymbols,rE=Object.prototype.hasOwnProperty,iE=Object.prototype.propertyIsEnumerable,y_=(r,t,e)=>t in r?eE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,x_=(r,t)=>{for(var e in t||(t={}))rE.call(t,e)&&y_(r,e,t[e]);if(v_)for(var e of v_(t))iE.call(t,e)&&y_(r,e,t[e]);return r};const Pu=class jb{get resolution(){return this.texture.source._resolution}set resolution(t){this.texture.source.resize(this.texture.source.width,this.texture.source.height,t)}init(t){t=x_(x_({},jb.defaultOptions),t),t.view&&(t.canvas=t.view),this.screen=new j(0,0,t.width,t.height),this.canvas=t.canvas||z.get().createCanvas(),this.antialias=!!t.antialias,this.texture=ja(this.canvas,t),this.renderTarget=new vs({colorTextures:[this.texture],depth:!!t.depth,isRoot:!0}),this.texture.source.transparent=t.backgroundAlpha<1,this.multiView=!!t.multiView,this.autoDensity&&(this.canvas.style.width=`${this.texture.width}px`,this.canvas.style.height=`${this.texture.height}px`),this.resolution=t.resolution}resize(t,e,i){this.texture.source.resize(t,e,i),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height,this.autoDensity&&(this.canvas.style.width=`${t}px`,this.canvas.style.height=`${e}px`)}destroy(t=!1){(typeof t=="boolean"?t:t!=null&&t.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}};Pu.extension={type:[x.WebGLSystem,x.WebGPUSystem,x.CanvasSystem],name:"view",priority:0},Pu.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};let T_=Pu;const wu=[a_,Tu,Es,T_,fu,Au,xu,c_],Ru=[_u,Pa,mu,uu,wa,Ma,Ra,ou],sE=[...wu,za,hg,ig,Ca,iu,Wa,Fa,Ja,Qa,ka,Xg,La,Ua],nE=[...Ru],oE=[Ea,nu,su],S_=[],E_=[],A_=[];U.handleByNamedList(x.WebGLSystem,S_),U.handleByNamedList(x.WebGLPipes,E_),U.handleByNamedList(x.WebGLPipesAdaptor,A_),U.add(...sE,...nE,...oE);class P_ extends wr{constructor(){const t={name:"webgl",type:yt.WEBGL,systems:S_,renderPipes:E_,renderPipeAdaptors:A_};super(t)}}var aE={__proto__:null,WebGLRenderer:P_};class Mu{constructor(t){this._hash=Object.create(null),this._renderer=t}contextChange(t){this._gpu=t}getBindGroup(t,e,i){return t._updateKey(),this._hash[t._key]||this._createBindGroup(t,e,i)}_createBindGroup(t,e,i){var s;const n=this._gpu.device,o=e.layout[i],a=[],u=this._renderer;for(const h in o){const p=(s=t.resources[h])!=null?s:t.resources[o[h]];let f;if(p._resourceType==="uniformGroup"){const m=p;u.ubo.updateUniformGroup(m);const _=m.buffer;f={buffer:u.buffer.getGPUBuffer(_),offset:0,size:_.descriptor.size}}else if(p._resourceType==="buffer"){const m=p;f={buffer:u.buffer.getGPUBuffer(m),offset:0,size:m.descriptor.size}}else if(p._resourceType==="bufferResource"){const m=p;f={buffer:u.buffer.getGPUBuffer(m.buffer),offset:m.offset,size:m.size}}else if(p._resourceType==="textureSampler"){const m=p;f=u.texture.getGpuSampler(m)}else if(p._resourceType==="textureSource"){const m=p;f=u.texture.getGpuSource(m).createView({})}a.push({binding:o[h],resource:f})}const l=u.shader.getProgramData(e).bindGroups[i],c=n.createBindGroup({layout:l,entries:a});return this._hash[t._key]=c,c}destroy(){for(const t of Object.keys(this._hash))this._hash[t]=null;this._hash=null,this._renderer=null}}Mu.extension={type:[x.WebGPUSystem],name:"bindGroup"};class Cu{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(t){this._gpu=t}getGPUBuffer(t){return this._gpuBuffers[t.uid]||this.createGPUBuffer(t)}updateBuffer(t){const e=this._gpuBuffers[t.uid]||this.createGPUBuffer(t),i=t.data;return t._updateID&&i&&(t._updateID=0,this._gpu.device.queue.writeBuffer(e,0,i.buffer,0,(t._updateSize||i.byteLength)+3&-4)),e}destroyAll(){for(const t in this._gpuBuffers)this._gpuBuffers[t].destroy();this._gpuBuffers={}}createGPUBuffer(t){this._gpuBuffers[t.uid]||(t.on("update",this.updateBuffer,this),t.on("change",this.onBufferChange,this),t.on("destroy",this.onBufferDestroy,this));const e=this._gpu.device.createBuffer(t.descriptor);return t._updateID=0,t.data&&(fi(t.data.buffer,e.getMappedRange()),e.unmap()),this._gpuBuffers[t.uid]=e,this._managedBuffers.push(t),e}onBufferChange(t){this._gpuBuffers[t.uid].destroy(),t._updateID=0,this._gpuBuffers[t.uid]=this.createGPUBuffer(t)}onBufferDestroy(t){this._managedBuffers.splice(this._managedBuffers.indexOf(t),1),this._destroyBuffer(t)}destroy(){this._managedBuffers.forEach(t=>this._destroyBuffer(t)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(t){this._gpuBuffers[t.uid].destroy(),t.off("update",this.updateBuffer,this),t.off("change",this.onBufferChange,this),t.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[t.uid]=null}}Cu.extension={type:[x.WebGPUSystem],name:"buffer"};function uE(r,t){const e=r.descriptor.size,i=t.gpu.device,s=new bt({data:new Float32Array(24e5),usage:H.MAP_READ|H.COPY_DST}),n=t.buffer.createGPUBuffer(s),o=i.createCommandEncoder();o.copyBufferToBuffer(t.buffer.getGPUBuffer(r),0,n,0,e),i.queue.submit([o.finish()]),n.mapAsync(GPUMapMode.READ,0,e).then(()=>{n.getMappedRange(0,e),n.unmap()})}class w_{constructor({minUniformOffsetAlignment:t}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=t,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(t){if(t>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${t*4}`);const e=this.byteIndex;let i=e+t*4;if(i=Math.ceil(i/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,i>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=i,e}addGroup(t){const e=this.addEmptyGroup(t.length);for(let i=0;i{this.gpu=e,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(t){this._renderer.gpu=t}async _createDeviceAndAdaptor(t){const e=await navigator.gpu.requestAdapter({powerPreference:t.powerPreference,forceFallbackAdapter:t.forceFallbackAdapter}),i=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(n=>e.features.has(n)),s=await e.requestDevice({requiredFeatures:i});return{adapter:e,device:s}}destroy(){this.gpu=null,this._renderer=null}}As.extension={type:[x.WebGPUSystem],name:"device"},As.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};var lE=Object.defineProperty,R_=Object.getOwnPropertySymbols,cE=Object.prototype.hasOwnProperty,hE=Object.prototype.propertyIsEnumerable,M_=(r,t,e)=>t in r?lE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,C_=(r,t)=>{for(var e in t||(t={}))cE.call(t,e)&&M_(r,e,t[e]);if(R_)for(var e of R_(t))hE.call(t,e)&&M_(r,e,t[e]);return r};class Gu{constructor(t){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=t}renderStart(){this.commandFinished=new Promise(t=>{this._resolveCommandFinished=t}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(t){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(t.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(t){this.renderPassEncoder.setViewport(t.x,t.y,t.width,t.height,0,1)}setPipelineFromGeometryProgramAndState(t,e,i,s){const n=this._renderer.pipeline.getPipeline(t,e,i,s);this.setPipeline(n)}setPipeline(t){this._boundPipeline!==t&&(this._boundPipeline=t,this.renderPassEncoder.setPipeline(t))}_setVertexBuffer(t,e){this._boundVertexBuffer[t]!==e&&(this._boundVertexBuffer[t]=e,this.renderPassEncoder.setVertexBuffer(t,this._renderer.buffer.updateBuffer(e)))}_setIndexBuffer(t){if(this._boundIndexBuffer===t)return;this._boundIndexBuffer=t;const e=t.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(t),e)}resetBindGroup(t){this._boundBindGroup[t]=null}setBindGroup(t,e,i){if(this._boundBindGroup[t]===e)return;this._boundBindGroup[t]=e,e._touch(this._renderer.textureGC.count);const s=this._renderer.bindGroup.getBindGroup(e,i,t);this.renderPassEncoder.setBindGroup(t,s)}setGeometry(t){for(const e in t.attributes){const i=t.attributes[e];this._setVertexBuffer(i.location,i.buffer)}t.indexBuffer&&this._setIndexBuffer(t.indexBuffer)}_setShaderBindGroups(t,e){for(const i in t.groups){const s=t.groups[i];e||this._syncBindGroup(s),this.setBindGroup(i,s,t.gpuProgram)}}_syncBindGroup(t){for(const e in t.resources){const i=t.resources[e];i.isUniformGroup&&this._renderer.ubo.updateUniformGroup(i)}}draw(t){const{geometry:e,shader:i,state:s,topology:n,size:o,start:a,instanceCount:u,skipSync:l}=t;this.setPipelineFromGeometryProgramAndState(e,i.gpuProgram,s,n),this.setGeometry(e),this._setShaderBindGroups(i,l),e.indexBuffer?this.renderPassEncoder.drawIndexed(o||e.indexBuffer.data.length,u||e.instanceCount,a||0):this.renderPassEncoder.draw(o||e.getSize(),u||e.instanceCount,a||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const t=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(t);const e=this._boundPipeline,i=C_({},this._boundVertexBuffer),s=this._boundIndexBuffer,n=C_({},this._boundBindGroup);this._clearCache();const o=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(e);for(const a in i)this._setVertexBuffer(a,i[a]);for(const a in n)this.setBindGroup(a,n[a],null);this._setIndexBuffer(s)}_clearCache(){for(let t=0;t<16;t++)this._boundBindGroup[t]=null,this._boundVertexBuffer[t]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(t){this._gpu=t}}Gu.extension={type:[x.WebGPUSystem],name:"encoder",priority:1};class Bu{constructor(t){this._renderTargetStencilState=Object.create(null),this._renderer=t,t.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(t){let e=this._renderTargetStencilState[t.uid];e||(e=this._renderTargetStencilState[t.uid]={stencilMode:st.DISABLED,stencilReference:0}),this._activeRenderTarget=t,this.setStencilMode(e.stencilMode,e.stencilReference)}setStencilMode(t,e){const i=this._renderTargetStencilState[this._activeRenderTarget.uid];i.stencilMode=t,i.stencilReference=e;const s=this._renderer;s.pipeline.setStencilMode(t),s.encoder.renderPassEncoder.setStencilReference(e)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}Bu.extension={type:[x.WebGPUSystem],name:"stencil"};const Xr={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:8,size:8},"vec2":{align:4,size:4},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:16,size:12},"vec3":{align:8,size:6},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:16,size:16},"vec4":{align:8,size:8},"mat2x2":{align:8,size:16},"mat2x2":{align:4,size:8},"mat3x2":{align:8,size:24},"mat3x2":{align:4,size:12},"mat4x2":{align:8,size:32},"mat4x2":{align:4,size:16},"mat2x3":{align:16,size:32},"mat2x3":{align:8,size:16},"mat3x3":{align:16,size:48},"mat3x3":{align:8,size:24},"mat4x3":{align:16,size:64},"mat4x3":{align:8,size:32},"mat2x4":{align:16,size:32},"mat2x4":{align:8,size:16},"mat3x4":{align:16,size:48},"mat3x4":{align:8,size:24},"mat4x4":{align:16,size:64},"mat4x4":{align:8,size:32}};function O_(r){const t=r.map(i=>({data:i,offset:0,size:0}));let e=0;for(let i=0;i1&&(n=Math.max(n,o)*s.data.size),e=Math.ceil(e/o)*o,s.size=n,s.offset=e,e+=n}return e=Math.ceil(e/16)*16,{uboElements:t,size:e}}function G_(r,t){const{size:e,align:i}=Xr[r.data.type],s=(i-e)/4;return` - v = uv.${r.data.name}; - ${t!==0?`offset += ${t};`:""} - - arrayOffset = offset; - - t = 0; - - for(var i=0; i < ${r.data.size*(e/4)}; i++) - { - for(var j = 0; j < ${e/4}; j++) - { - data[arrayOffset++] = v[t++]; - } - ${s!==0?`arrayOffset += ${s};`:""} - } - `}function B_(r){return Ha(r,"uboWgsl",G_,gg)}class Iu extends $a{constructor(){super({createUboElements:O_,generateUboSync:B_})}}Iu.extension={type:[x.WebGPUSystem],name:"ubo"};const se=128;class Fu{constructor(t){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=t,this._batchBuffer=new w_({minUniformOffsetAlignment:se});const e=256/se;for(let i=0;it in r?dE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,_E=(r,t)=>{for(var e in t||(t={}))mE.call(t,e)&&F_(r,e,t[e]);if(I_)for(var e of I_(t))gE.call(t,e)&&F_(r,e,t[e]);return r},bE=(r,t)=>pE(r,fE(t));const vE={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};function yE(r,t,e,i,s){return r<<24|t<<16|e<<10|i<<5|s}function xE(r,t,e,i){return e<<6|r<<3|i<<1|t}class Du{constructor(t){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=t}contextChange(t){this._gpu=t,this.setStencilMode(st.DISABLED),this._updatePipeHash()}setMultisampleCount(t){this._multisampleCount!==t&&(this._multisampleCount=t,this._updatePipeHash())}setRenderTarget(t){this._multisampleCount=t.msaaSamples,this._depthStencilAttachment=t.descriptor.depthStencilAttachment?1:0,this._updatePipeHash()}setColorMask(t){this._colorMask!==t&&(this._colorMask=t,this._updatePipeHash())}setStencilMode(t){this._stencilMode!==t&&(this._stencilMode=t,this._stencilState=re[t],this._updatePipeHash())}setPipeline(t,e,i,s){const n=this.getPipeline(t,e,i);s.setPipeline(n)}getPipeline(t,e,i,s){t._layoutKey||(Ba(t,e.attributeData),this._generateBufferKey(t)),s=s||t.topology;const n=yE(t._layoutKey,e._layoutKey,i.data,i._blendModeId,vE[s]);return this._pipeCache[n]?this._pipeCache[n]:(this._pipeCache[n]=this._createPipeline(t,e,i,s),this._pipeCache[n])}_createPipeline(t,e,i,s){const n=this._gpu.device,o=this._createVertexBufferLayouts(t),a=this._renderer.state.getColorTargets(i);a[0].writeMask=this._stencilMode===st.RENDERING_MASK_ADD?0:this._colorMask;const u=this._renderer.shader.getProgramData(e).pipeline,l={vertex:{module:this._getModule(e.vertex.source),entryPoint:e.vertex.entryPoint,buffers:o},fragment:{module:this._getModule(e.fragment.source),entryPoint:e.fragment.entryPoint,targets:a},primitive:{topology:s,cullMode:i.cullMode},layout:u,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(l.depthStencil=bE(_E({},this._stencilState),{format:"depth24plus-stencil8",depthWriteEnabled:i.depthTest,depthCompare:i.depthTest?"less":"always"})),n.createRenderPipeline(l)}_getModule(t){return this._moduleCache[t]||this._createModule(t)}_createModule(t){const e=this._gpu.device;return this._moduleCache[t]=e.createShaderModule({code:t}),this._moduleCache[t]}_generateBufferKey(t){const e=[];let i=0;const s=Object.keys(t.attributes).sort();for(let o=0;o{const s={arrayStride:0,stepMode:"vertex",attributes:[]},n=s.attributes;for(const o in t.attributes){const a=t.attributes[o];a.buffer===i&&(s.arrayStride=a.stride,s.stepMode=a.instance?"instance":"vertex",n.push({shaderLocation:a.location,offset:a.offset,format:a.format}))}n.length&&e.push(s)}),this._bufferLayoutsCache[t._layoutKey]=e,e}_updatePipeHash(){const t=xE(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment);this._pipeStateCaches[t]||(this._pipeStateCaches[t]=Object.create(null)),this._pipeCache=this._pipeStateCaches[t]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}Du.extension={type:[x.WebGPUSystem],name:"pipeline"};class D_{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class U_{init(t,e){this._renderer=t,this._renderTargetSystem=e}copyToTexture(t,e,i,s,n){const o=this._renderer,a=this._getGpuColorTexture(t),u=o.texture.getGpuSource(e.source);return o.encoder.commandEncoder.copyTextureToTexture({texture:a,origin:i},{texture:u,origin:n},s),e}startRenderPass(t,e=!0,i,s){const n=this._renderTargetSystem.getGpuRenderTarget(t),o=this.getDescriptor(t,e,i);n.descriptor=o,this._renderer.pipeline.setRenderTarget(n),this._renderer.encoder.beginRenderPass(n),this._renderer.encoder.setViewport(s)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);return e.contexts[0]?e.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(t.colorTextures[0].source)}getDescriptor(t,e,i){typeof e=="boolean"&&(e=e?mt.ALL:mt.NONE);const s=this._renderTargetSystem,n=s.getGpuRenderTarget(t),o=t.colorTextures.map((u,l)=>{const c=n.contexts[l];let h,p;c?h=c.getCurrentTexture().createView():h=this._renderer.texture.getGpuSource(u).createView({mipLevelCount:1}),n.msaaTextures[l]&&(p=h,h=this._renderer.texture.getTextureView(n.msaaTextures[l]));const f=e&mt.COLOR?"clear":"load";return i!=null||(i=s.defaultClearColor),{view:h,resolveTarget:p,clearValue:i,storeOp:"store",loadOp:f}});let a;if((t.stencil||t.depth)&&!t.depthStencilTexture&&(t.ensureDepthStencilTexture(),t.depthStencilTexture.source.sampleCount=n.msaa?4:1),t.depthStencilTexture){const u=e&mt.STENCIL?"clear":"load",l=e&mt.DEPTH?"clear":"load";a={view:this._renderer.texture.getGpuSource(t.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:u,depthClearValue:1,depthLoadOp:l,depthStoreOp:"store"}}return{colorAttachments:o,depthStencilAttachment:a}}clear(t,e=!0,i,s){if(!e)return;const{gpu:n,encoder:o}=this._renderer,a=n.device;if(o.commandEncoder===null){const u=a.createCommandEncoder(),l=this.getDescriptor(t,e,i),c=u.beginRenderPass(l);c.setViewport(s.x,s.y,s.width,s.height,0,1),c.end();const h=u.finish();a.queue.submit([h])}else this.startRenderPass(t,e,i,s)}initGpuRenderTarget(t){t.isRoot=!0;const e=new D_;return t.colorTextures.forEach((i,s)=>{if(de.test(i.resource)){const n=i.resource.getContext("webgpu"),o=i.transparent?"premultiplied":"opaque";try{n.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:o})}catch(a){console.error(a)}e.contexts[s]=n}if(e.msaa=i.source.antialias,i.source.antialias){const n=new rt({width:0,height:0,sampleCount:4});e.msaaTextures[s]=n}}),e.msaa&&(e.msaaSamples=4,t.depthStencilTexture&&(t.depthStencilTexture.source.sampleCount=4)),e}destroyGpuRenderTarget(t){t.contexts.forEach(e=>{e.unconfigure()}),t.msaaTextures.forEach(e=>{e.destroy()}),t.msaaTextures.length=0,t.contexts.length=0}ensureDepthStencilTexture(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);t.depthStencilTexture&&e.msaa&&(t.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);e.width=t.width,e.height=t.height,e.msaa&&t.colorTextures.forEach((i,s)=>{const n=e.msaaTextures[s];n==null||n.resize(i.source.width,i.source.height,i.source._resolution)})}}class Uu extends Va{constructor(t){super(t),this.adaptor=new U_,this.adaptor.init(t,this)}}Uu.extension={type:[x.WebGPUSystem],name:"renderTarget"};class ku{constructor(){this._gpuProgramData=Object.create(null)}contextChange(t){this._gpu=t}getProgramData(t){return this._gpuProgramData[t._layoutKey]||this._createGPUProgramData(t)}_createGPUProgramData(t){const e=this._gpu.device,i=t.gpuLayout.map(n=>e.createBindGroupLayout({entries:n})),s={bindGroupLayouts:i};return this._gpuProgramData[t._layoutKey]={bindGroups:i,pipeline:e.createPipelineLayout(s)},this._gpuProgramData[t._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}ku.extension={type:[x.WebGPUSystem],name:"shader"};const St={};St.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},St.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},St.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},St.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},St.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},St.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},St["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},St["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},St["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},St.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}};class Lu{constructor(){this.defaultState=new Bt,this.defaultState.blend=!0}contextChange(t){this.gpu=t}getColorTargets(t){return[{format:"bgra8unorm",writeMask:0,blend:St[t.blendMode]||St.normal}]}destroy(){this.gpu=null}}Lu.extension={type:[x.WebGPUSystem],name:"state"};const k_={type:"image",upload(r,t,e){const i=r.resource,s=(r.pixelWidth|0)*(r.pixelHeight|0),n=i.byteLength/s;e.device.queue.writeTexture({texture:t},i,{offset:0,rowsPerImage:r.pixelHeight,bytesPerRow:r.pixelHeight*n},{width:r.pixelWidth,height:r.pixelHeight,depthOrArrayLayers:1})}},$u={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},TE={blockBytes:4,blockWidth:1,blockHeight:1},L_={type:"compressed",upload(r,t,e){let i=r.pixelWidth,s=r.pixelHeight;const n=$u[r.format]||TE;for(let o=0;o>1,1),s=Math.max(s>>1,1)}}},Nu={type:"image",upload(r,t,e){const i=r.resource;if(!i)return;const s=Math.min(t.width,r.resourceWidth||r.pixelWidth),n=Math.min(t.height,r.resourceHeight||r.pixelHeight),o=r.alphaMode==="premultiply-alpha-on-upload";e.device.queue.copyExternalImageToTexture({source:i},{texture:t,premultipliedAlpha:o},{width:s,height:n})}},$_={type:"video",upload(r,t,e){Nu.upload(r,t,e)}};class N_{constructor(t){this.device=t,this.sampler=t.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(t){let e=this.pipelines[t];return e||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:` - var pos : array, 3> = array, 3>( - vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0)); - - struct VertexOutput { - @builtin(position) position : vec4, - @location(0) texCoord : vec2, - }; - - @vertex - fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput { - var output : VertexOutput; - output.texCoord = pos[vertexIndex] * vec2(0.5, -0.5) + vec2(0.5); - output.position = vec4(pos[vertexIndex], 0.0, 1.0); - return output; - } - - @group(0) @binding(0) var imgSampler : sampler; - @group(0) @binding(1) var img : texture_2d; - - @fragment - fn fragmentMain(@location(0) texCoord : vec2) -> @location(0) vec4 { - return textureSample(img, imgSampler, texCoord); - } - `})),e=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:t}]}}),this.pipelines[t]=e),e}generateMipmap(t){const e=this._getMipmapPipeline(t.format);if(t.dimension==="3d"||t.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let i=t;const s=t.depthOrArrayLayers||1,n=t.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!n){const u={size:{width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:s},format:t.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:t.mipLevelCount-1};i=this.device.createTexture(u)}const o=this.device.createCommandEncoder({}),a=e.getBindGroupLayout(0);for(let u=0;u1&&this.onUpdateMipmaps(t))}onSourceUnload(t){const e=this._gpuSources[t.uid];e&&(this._gpuSources[t.uid]=null,e.destroy())}onUpdateMipmaps(t){this._mipmapGenerator||(this._mipmapGenerator=new N_(this._gpu.device));const e=this.getGpuSource(t);this._mipmapGenerator.generateMipmap(e)}onSourceDestroy(t){t.off("update",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("destroy",this.onSourceDestroy,this),t.off("resize",this.onSourceResize,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}onSourceResize(t){const e=this._gpuSources[t.uid];e?(e.width!==t.pixelWidth||e.height!==t.pixelHeight)&&(this._textureViewHash[t.uid]=null,this._bindGroupHash[t.uid]=null,this.onSourceUnload(t),this.initSource(t)):this.initSource(t)}_initSampler(t){return this._gpuSamplers[t._resourceId]=this._gpu.device.createSampler(t),this._gpuSamplers[t._resourceId]}getGpuSampler(t){return this._gpuSamplers[t._resourceId]||this._initSampler(t)}getGpuSource(t){return this._gpuSources[t.uid]||this.initSource(t)}getTextureBindGroup(t){var e;return(e=this._bindGroupHash[t.uid])!=null?e:this._createTextureBindGroup(t)}_createTextureBindGroup(t){const e=t.source,i=e.uid;return this._bindGroupHash[i]=new Nt({0:e,1:e.style}),this._bindGroupHash[i]}getTextureView(t){var e;const i=t.source;return(e=this._textureViewHash[i.uid])!=null?e:this._createTextureView(i)}_createTextureView(t){return this._textureViewHash[t.uid]=this.getGpuSource(t).createView(),this._textureViewHash[t.uid]}generateCanvas(t){const e=this._renderer,i=e.gpu.device.createCommandEncoder(),s=z.get().createCanvas();s.width=t.source.pixelWidth,s.height=t.source.pixelHeight;const n=s.getContext("webgpu");return n.configure({device:e.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),i.copyTextureToTexture({texture:e.texture.getGpuSource(t.source),origin:{x:0,y:0}},{texture:n.getCurrentTexture()},{width:s.width,height:s.height}),e.gpu.device.queue.submit([i.finish()]),s}getPixels(t){const e=this.generateCanvas(t),i=Ht.getOptimalCanvasAndContext(e.width,e.height),s=i.context;s.drawImage(e,0,0);const{width:n,height:o}=e,a=s.getImageData(0,0,n,o),u=new Uint8ClampedArray(a.data.buffer);return Ht.returnCanvasAndContext(i),{pixels:u,width:n,height:o}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null;for(const t of Object.keys(this._bindGroupHash)){const e=Number(t),i=this._bindGroupHash[e];i==null||i.destroy(),this._bindGroupHash[e]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}Hu.extension={type:[x.WebGPUSystem],name:"texture"};class Xu{init(){const t=new nt({uTransformMatrix:{value:new G,type:"mat3x3"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4"},uRound:{value:0,type:"f32"}}),e=Le({name:"graphics",bits:[Di,ki(dt),sp,Ne]});this.shader=new xt({gpuProgram:e,resources:{localUniforms:t}})}execute(t,e){const i=e.context,s=i.customShader||this.shader,n=t.renderer,o=n.graphicsContext,{geometry:a,instructions:u}=o.getContextRenderData(i),l=n.encoder;l.setPipelineFromGeometryProgramAndState(a,s.gpuProgram,t.state),l.setGeometry(a);const c=n.globalUniforms.bindGroup;l.setBindGroup(0,c,s.gpuProgram);const h=n.renderPipes.uniformBatch.getUniformBindGroup(s.resources.localUniforms,!0);l.setBindGroup(2,h,s.gpuProgram);const p=u.instructions;for(let f=0;f",value:new G}}}})}execute(t,e){const i=t.renderer;let s=e._shader;if(!s)s=this._shader,s.resources.uTexture=e.texture.source,s.resources.uSampler=e.texture.source.style,s.resources.textureUniforms.uniforms.uTextureMatrix=e.texture.textureMatrix.mapCoord;else if(!s.gpuProgram)return;const n=s.gpuProgram;if(n.autoAssignGlobalUniforms&&(s.groups[0]=i.globalUniforms.bindGroup),n.autoAssignLocalUniforms){const o=t.localUniforms;s.groups[1]=i.renderPipes.uniformBatch.getUniformBindGroup(o,!0)}i.encoder.draw({geometry:e._geometry,shader:s,state:e.state})}destroy(){this._shader.destroy(!0),this._shader=null}}zu.extension={type:[x.WebGPUPipesAdaptor],name:"mesh"};const SE=[...wu,Iu,Gu,As,Cu,Hu,Uu,ku,Lu,Du,Ou,Bu,Mu],EE=[...Ru,Fu],AE=[Aa,zu,Xu],H_=[],X_=[],z_=[];U.handleByNamedList(x.WebGPUSystem,H_),U.handleByNamedList(x.WebGPUPipes,X_),U.handleByNamedList(x.WebGPUPipesAdaptor,z_),U.add(...SE,...EE,...AE);class j_ extends wr{constructor(){const t={name:"webgpu",type:yt.WEBGPU,systems:H_,renderPipes:X_,renderPipeAdaptors:z_};super(t)}}var PE={__proto__:null,WebGPURenderer:j_};const wE={POINTS:"point-list",LINES:"line-list",LINE_STRIP:"line-strip",TRIANGLES:"triangle-list",TRIANGLE_STRIP:"triangle-strip"},RE=new Proxy(wE,{get(r,t){return r[t]}}),ME=new j(0,0,1,1);function CE(r,t,e){e||(e=ME);const i=t.pixelWidth,s=t.pixelHeight;return r.x=e.x*i|0,r.y=e.y*s|0,r.width=e.width*i|0,r.height=e.height*s|0,r}var V_=(r=>(r[r.NONE=0]="NONE",r[r.LOW=2]="LOW",r[r.MEDIUM=4]="MEDIUM",r[r.HIGH=8]="HIGH",r))(V_||{}),ju=(r=>(r.CLAMP="clamp-to-edge",r.REPEAT="repeat",r.MIRRORED_REPEAT="mirror-repeat",r))(ju||{});const OE=new Proxy(ju,{get(r,t){return r[t]}});var Vu=(r=>(r.NEAREST="nearest",r.LINEAR="linear",r))(Vu||{});const GE=new Proxy(Vu,{get(r,t){return r[t]}});class BE{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(t,e,i){const s=e.width,n=e.height;if(i){const o=t.width/2/s,a=t.height/2/n,u=t.x/s+o,l=t.y/n+a;i=k.add(i,k.NW),this.x0=u+o*k.uX(i),this.y0=l+a*k.uY(i),i=k.add(i,2),this.x1=u+o*k.uX(i),this.y1=l+a*k.uY(i),i=k.add(i,2),this.x2=u+o*k.uX(i),this.y2=l+a*k.uY(i),i=k.add(i,2),this.x3=u+o*k.uX(i),this.y3=l+a*k.uY(i)}else this.x0=t.x/s,this.y0=t.y/n,this.x1=(t.x+t.width)/s,this.y1=t.y/n,this.x2=(t.x+t.width)/s,this.y2=(t.y+t.height)/n,this.x3=t.x/s,this.y3=(t.y+t.height)/n;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}let IE=0;function FE(){return IE++}function DE(r){const t=r.toString(),e=t.indexOf("{"),i=t.lastIndexOf("}");if(e===-1||i===-1)throw new Error("getFunctionBody: No body found in function definition");return t.slice(e+1,i).trim()}var UE=Object.defineProperty,Ps=Object.getOwnPropertySymbols,W_=Object.prototype.hasOwnProperty,Y_=Object.prototype.propertyIsEnumerable,K_=(r,t,e)=>t in r?UE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,kE=(r,t)=>{for(var e in t||(t={}))W_.call(t,e)&&K_(r,e,t[e]);if(Ps)for(var e of Ps(t))Y_.call(t,e)&&K_(r,e,t[e]);return r},LE=(r,t)=>{var e={};for(var i in r)W_.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Ps)for(var i of Ps(r))t.indexOf(i)<0&&Y_.call(r,i)&&(e[i]=r[i]);return e};class $E extends Y{constructor(t){var e,i;typeof t=="function"&&(t={render:t});const s=t,{render:n}=s,o=LE(s,["render"]);super(kE({label:"RenderContainer"},o)),this.batched=!1,this.bounds=new lt,this.canBundle=!1,this.renderPipeId="customRender",n&&(this.render=n),this.containsPoint=(e=t.containsPoint)!=null?e:()=>!1,this.addBounds=(i=t.addBounds)!=null?i:()=>!1}render(t){}}function NE(r,t){const e=t._scale,i=t._pivot,s=t._position,n=e._x,o=e._y,a=i._x,u=i._y;r.a=t._cx*n,r.b=t._sx*n,r.c=t._cy*o,r.d=t._sy*o,r.tx=s._x-(a*r.a+u*r.c),r.ty=s._y-(a*r.b+u*r.d)}function HE(r,t,e){const i=r.a,s=r.b,n=r.c,o=r.d,a=r.tx,u=r.ty,l=t.a,c=t.b,h=t.c,p=t.d;e.a=i*l+s*h,e.b=i*c+s*p,e.c=n*l+o*h,e.d=n*c+o*p,e.tx=a*l+u*h+t.tx,e.ty=a*c+u*p+t.ty}const XE={rectangle:Fn,polygon:In,triangle:Dn,circle:fe,ellipse:fe,roundedRectangle:fe};function zE(r){r instanceof Qt&&(r={path:r,textureMatrix:null,out:null});const t=[],e=[],i=[],s=r.path.shapePath,n=r.textureMatrix;s.shapePrimitives.forEach(({shape:a,transform:u})=>{const l=i.length,c=t.length/2,h=[],p=XE[a.type];p.build(a,h),u&&mi(h,u),p.triangulate(h,t,2,c,i,l);const f=e.length/2;n?(u&&n.append(u.clone().invert()),wn(t,2,c,e,f,2,t.length/2-c,n)):Rn(e,f,2,t.length/2-c)});const o=r.out;return o?(o.positions=new Float32Array(t),o.uvs=new Float32Array(e),o.indices=new Uint32Array(i),o):new Jt({positions:new Float32Array(t),uvs:new Float32Array(e),indices:new Uint32Array(i)})}var jE=Object.defineProperty,VE=Object.defineProperties,WE=Object.getOwnPropertyDescriptors,ws=Object.getOwnPropertySymbols,q_=Object.prototype.hasOwnProperty,Z_=Object.prototype.propertyIsEnumerable,Q_=(r,t,e)=>t in r?jE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,YE=(r,t)=>{for(var e in t||(t={}))q_.call(t,e)&&Q_(r,e,t[e]);if(ws)for(var e of ws(t))Z_.call(t,e)&&Q_(r,e,t[e]);return r},KE=(r,t)=>VE(r,WE(t)),qE=(r,t)=>{var e={};for(var i in r)q_.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&ws)for(var i of ws(r))t.indexOf(i)<0&&Z_.call(r,i)&&(e[i]=r[i]);return e};class ZE extends Ur{constructor(t){const e=t,{texture:i,verticesX:s,verticesY:n}=e,o=qE(e,["texture","verticesX","verticesY"]),a=new No(Zt({width:i.width,height:i.height,verticesX:s,verticesY:n}));super(Zt(KE(YE({},o),{geometry:a,texture:i}))),this.texture=i,this.autoResize=!0}textureUpdated(){const t=this.geometry,{width:e,height:i}=this.texture;this.autoResize&&(t.width!==e||t.height!==i)&&(t.width=e,t.height=i,t.build({}))}set texture(t){var e;(e=this._texture)==null||e.off("update",this.textureUpdated,this),super.texture=t,t.on("update",this.textureUpdated,this),this.textureUpdated()}get texture(){return this._texture}destroy(t){this.texture.off("update",this.textureUpdated,this),super.destroy(t)}}var QE=Object.defineProperty,J_=Object.getOwnPropertySymbols,JE=Object.prototype.hasOwnProperty,tA=Object.prototype.propertyIsEnumerable,tb=(r,t,e)=>t in r?QE(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,eb=(r,t)=>{for(var e in t||(t={}))JE.call(t,e)&&tb(r,e,t[e]);if(J_)for(var e of J_(t))tA.call(t,e)&&tb(r,e,t[e]);return r};const rb=class Vb extends Jt{constructor(t){const{width:e,points:i,textureScale:s}=eb(eb({},Vb.defaultOptions),t);super({positions:new Float32Array(i.length*4),uvs:new Float32Array(i.length*4),indices:new Uint32Array((i.length-1)*6)}),this.points=i,this._width=e,this.textureScale=s,this._build()}get width(){return this._width}_build(){const t=this.points;if(!t)return;const e=this.getBuffer("aPosition"),i=this.getBuffer("aUV"),s=this.getIndex();if(t.length<1)return;e.data.length/4!==t.length&&(e.data=new Float32Array(t.length*4),i.data=new Float32Array(t.length*4),s.data=new Uint16Array((t.length-1)*6));const n=i.data,o=s.data;n[0]=0,n[1]=0,n[2]=0,n[3]=1;let a=0,u=t[0];const l=this._width*this.textureScale,c=t.length;for(let p=0;p0){const m=u.x-t[p].x,_=u.y-t[p].y,g=Math.sqrt(m*m+_*_);u=t[p],a+=g/l}else a=p/(c-1);n[f]=a,n[f+1]=0,n[f+2]=a,n[f+3]=1}let h=0;for(let p=0;p0?this.textureScale*this._width/2:this._width/2;for(let l=0;l1&&(p=1);const f=Math.sqrt(s*s+n*n);f<1e-6?(s=0,n=0):(s/=f,n/=f,s*=u,n*=u),o[h]=c.x+s,o[h+1]=c.y+n,o[h+2]=c.x-s,o[h+3]=c.y-n,e=c}this.buffers[0].update()}update(){this.textureScale>0?this._build():this.updateVertices()}};rb.defaultOptions={width:200,points:[],textureScale:0};let ib=rb;var eA=Object.defineProperty,rA=Object.defineProperties,iA=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,sb=Object.prototype.hasOwnProperty,nb=Object.prototype.propertyIsEnumerable,ob=(r,t,e)=>t in r?eA(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Wu=(r,t)=>{for(var e in t||(t={}))sb.call(t,e)&&ob(r,e,t[e]);if(Rs)for(var e of Rs(t))nb.call(t,e)&&ob(r,e,t[e]);return r},sA=(r,t)=>rA(r,iA(t)),nA=(r,t)=>{var e={};for(var i in r)sb.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Rs)for(var i of Rs(r))t.indexOf(i)<0&&nb.call(r,i)&&(e[i]=r[i]);return e};const ab=class Wb extends Ur{constructor(t){const e=Wu(Wu({},Wb.defaultOptions),t),{texture:i,points:s,textureScale:n}=e,o=nA(e,["texture","points","textureScale"]),a=new ib(Zt({width:i.height,points:s,textureScale:n}));n>0&&(i.source.style.addressMode="repeat"),super(Zt(sA(Wu({},o),{texture:i,geometry:a}))),this.autoUpdate=!0,this.onRender=this._render}_render(){const t=this.geometry;(this.autoUpdate||t._width!==this.texture.height)&&(t._width=this.texture.height,t.update())}};ab.defaultOptions={textureScale:0};let oA=ab;var aA=Object.defineProperty,uA=Object.defineProperties,lA=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,ub=Object.prototype.hasOwnProperty,lb=Object.prototype.propertyIsEnumerable,cb=(r,t,e)=>t in r?aA(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,cA=(r,t)=>{for(var e in t||(t={}))ub.call(t,e)&&cb(r,e,t[e]);if(Ms)for(var e of Ms(t))lb.call(t,e)&&cb(r,e,t[e]);return r},hA=(r,t)=>uA(r,lA(t)),dA=(r,t)=>{var e={};for(var i in r)ub.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Ms)for(var i of Ms(r))t.indexOf(i)<0&&lb.call(r,i)&&(e[i]=r[i]);return e};class pA extends Ur{constructor(t){const e=t,{texture:i,vertices:s,uvs:n,indices:o,topology:a}=e,u=dA(e,["texture","vertices","uvs","indices","topology"]),l=new Jt(Zt({positions:s,uvs:n,indices:o,topology:a}));super(Zt(hA(cA({},u),{texture:i,geometry:l}))),this.autoUpdate=!0,this.onRender=this._render}get vertices(){return this.geometry.getBuffer("aPosition").data}set vertices(t){this.geometry.getBuffer("aPosition").data=t}_render(){this.autoUpdate&&this.geometry.getBuffer("aPosition").update()}}function fA(r,t){const{width:e,height:i}=r.frame;return t.scale(1/e,1/i),t}var mA=Object.defineProperty,Cs=Object.getOwnPropertySymbols,hb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,pb=(r,t,e)=>t in r?mA(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,gA=(r,t)=>{for(var e in t||(t={}))hb.call(t,e)&&pb(r,e,t[e]);if(Cs)for(var e of Cs(t))db.call(t,e)&&pb(r,e,t[e]);return r},_A=(r,t)=>{var e={};for(var i in r)hb.call(r,i)&&t.indexOf(i)<0&&(e[i]=r[i]);if(r!=null&&Cs)for(var i of Cs(r))t.indexOf(i)<0&&db.call(r,i)&&(e[i]=r[i]);return e};const fb=class Yb extends Y{constructor(t){var e,i,s,n,o,a,u,l,c,h;t instanceof P&&(t={texture:t});const p=t,{width:f,height:m,leftWidth:_,rightWidth:g,topHeight:b,bottomHeight:v,texture:y,roundPixels:T}=p,E=_A(p,["width","height","leftWidth","rightWidth","topHeight","bottomHeight","texture","roundPixels"]);super(gA({label:"NineSliceSprite"},E)),this._roundPixels=0,this.renderPipeId="nineSliceSprite",this.batched=!0,this._didSpriteUpdate=!0,this.bounds={minX:0,minY:0,maxX:0,maxY:0},this._leftWidth=(i=_!=null?_:(e=y==null?void 0:y.defaultBorders)==null?void 0:e.left)!=null?i:te.defaultOptions.leftWidth,this._topHeight=(n=b!=null?b:(s=y==null?void 0:y.defaultBorders)==null?void 0:s.top)!=null?n:te.defaultOptions.topHeight,this._rightWidth=(a=g!=null?g:(o=y==null?void 0:y.defaultBorders)==null?void 0:o.right)!=null?a:te.defaultOptions.rightWidth,this._bottomHeight=(l=v!=null?v:(u=y==null?void 0:y.defaultBorders)==null?void 0:u.bottom)!=null?l:te.defaultOptions.bottomHeight,this.bounds.maxX=this._width=(c=f!=null?f:y.width)!=null?c:te.defaultOptions.width,this.bounds.maxY=this._height=(h=m!=null?m:y.height)!=null?h:te.defaultOptions.height,this.allowChildren=!1,this.texture=y!=null?y:Yb.defaultOptions.texture,this.roundPixels=T!=null?T:!1}get width(){return this._width}set width(t){this.bounds.maxX=this._width=t,this.onViewUpdate()}get height(){return this._height}set height(t){this.bounds.maxY=this._height=t,this.onViewUpdate()}get leftWidth(){return this._leftWidth}set leftWidth(t){this._leftWidth=t,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(t){this._topHeight=t,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(t){this._rightWidth=t,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(t){this._bottomHeight=t,this.onViewUpdate()}get texture(){return this._texture}set texture(t){t||(t=P.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}onViewUpdate(){if(this._didChangeId+=4096,this._didSpriteUpdate=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds;return t.x>=e.minX&&t.x<=e.maxX&&t.y>=e.minY&&t.y<=e.maxY}destroy(t){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const e=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(e)}this._texture=null,this.bounds=null}};fb.defaultOptions={texture:P.EMPTY};let mb=fb;class bA extends mb{constructor(...t){let e=t[0];e instanceof P&&(e={texture:e,leftWidth:t[1],topHeight:t[2],rightWidth:t[3],bottomHeight:t[4]}),super(e)}}function vA(r,t){return t instanceof Ft||t instanceof ye?t:r==="html"?new ye(t):new Ft(t)}const yA=/^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i;async function xA(r,t,e=200){const i=await t.extract.base64(r);await t.encoder.commandFinished;const s=e;console.log(`logging texture ${r.source.width}px ${r.source.height}px`);const n=["font-size: 1px;",`padding: ${s}px 300px;`,`background: url(${i}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",n)}var TA=Object.defineProperty,SA=Object.defineProperties,EA=Object.getOwnPropertyDescriptors,gb=Object.getOwnPropertySymbols,AA=Object.prototype.hasOwnProperty,PA=Object.prototype.propertyIsEnumerable,_b=(r,t,e)=>t in r?TA(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,bb=(r,t)=>{for(var e in t||(t={}))AA.call(t,e)&&_b(r,e,t[e]);if(gb)for(var e of gb(t))PA.call(t,e)&&_b(r,e,t[e]);return r},wA=(r,t)=>SA(r,EA(t));const RA=["#000080","#228B22","#8B0000","#4169E1","#008080","#800000","#9400D3","#FF8C00","#556B2F","#8B008B"];let MA=0;function vb(r,t=0,e={color:"#000000"}){r.renderGroup&&(e.color=RA[MA++]);let i="";for(let o=0;o void;\n\n/**\n * Convert input into extension format data.\n * @ignore\n */\nconst normalizeExtension = (ext: ExtensionFormat | any): StrictExtensionFormat =>\n{\n // Class/Object submission, use extension object\n if (typeof ext === 'function' || (typeof ext === 'object' && ext.extension))\n {\n // #if _DEBUG\n if (!ext.extension)\n {\n throw new Error('Extension class must have an extension object');\n }\n // #endif\n const metadata: ExtensionMetadataDetails = (typeof ext.extension !== 'object')\n ? { type: ext.extension }\n : ext.extension;\n\n ext = { ...metadata, ref: ext };\n }\n if (typeof ext === 'object')\n {\n ext = { ...ext };\n }\n else\n {\n throw new Error('Invalid extension type');\n }\n\n if (typeof ext.type === 'string')\n {\n ext.type = [ext.type];\n }\n\n return ext;\n};\n\n/**\n * Get the priority for an extension.\n * @ignore\n * @param ext - Any extension\n * @param defaultPriority - Fallback priority if none is defined.\n * @returns The priority for the extension.\n * @memberof extensions\n */\nexport const normalizeExtensionPriority = (ext: ExtensionFormat | any, defaultPriority: number): number =>\n normalizeExtension(ext).priority ?? defaultPriority;\n\n/**\n * Global registration of all PixiJS extensions. One-stop-shop for extensibility.\n *\n * Import the `extensions` object and use it to register new functionality via the described methods below.\n * ```js\n * import { extensions } from 'pixi.js';\n *\n * // register a new extension\n * extensions.add(myExtension);\n * ```\n * @property {Function} remove - Remove extensions from PixiJS.\n * @property {Function} add - Register new extensions with PixiJS.\n * @property {Function} handle - Internal method to handle extensions by name.\n * @property {Function} handleByMap - Handle a type, but using a map by `name` property.\n * @property {Function} handleByNamedList - Handle a type, but using a list of extensions with a `name` property.\n * @property {Function} handleByList - Handle a type, but using a list of extensions.\n * @memberof extensions\n */\nconst extensions = {\n\n /** @ignore */\n _addHandlers: {} as Partial>,\n\n /** @ignore */\n _removeHandlers: {} as Partial>,\n\n /** @ignore */\n _queue: {} as Partial>,\n\n /**\n * Remove extensions from PixiJS.\n * @param extensions - Extensions to be removed.\n * @returns {extensions} For chaining.\n */\n remove(...extensions: Array)\n {\n extensions.map(normalizeExtension).forEach((ext) =>\n {\n ext.type.forEach((type) => this._removeHandlers[type]?.(ext));\n });\n\n return this;\n },\n\n /**\n * Register new extensions with PixiJS.\n * @param extensions - The spread of extensions to add to PixiJS.\n * @returns {extensions} For chaining.\n */\n add(...extensions: Array)\n {\n // Handle any extensions either passed as class w/ data or as data\n extensions.map(normalizeExtension).forEach((ext) =>\n {\n ext.type.forEach((type) =>\n {\n const handlers = this._addHandlers;\n const queue = this._queue;\n\n if (!handlers[type])\n {\n queue[type] = queue[type] || [];\n queue[type]?.push(ext);\n }\n else\n {\n handlers[type]?.(ext);\n }\n });\n });\n\n return this;\n },\n\n /**\n * Internal method to handle extensions by name.\n * @param type - The extension type.\n * @param onAdd - Function handler when extensions are added/registered {@link StrictExtensionFormat}.\n * @param onRemove - Function handler when extensions are removed/unregistered {@link StrictExtensionFormat}.\n * @returns {extensions} For chaining.\n */\n handle(type: ExtensionType, onAdd: ExtensionHandler, onRemove: ExtensionHandler)\n {\n const addHandlers = this._addHandlers;\n const removeHandlers = this._removeHandlers;\n\n // #if _DEBUG\n if (addHandlers[type] || removeHandlers[type])\n {\n throw new Error(`Extension type ${type} already has a handler`);\n }\n // #endif\n\n addHandlers[type] = onAdd;\n removeHandlers[type] = onRemove;\n\n // Process the queue\n const queue = this._queue;\n\n // Process any plugins that have been registered before the handler\n if (queue[type])\n {\n queue[type]?.forEach((ext) => onAdd(ext));\n delete queue[type];\n }\n\n return this;\n },\n\n /**\n * Handle a type, but using a map by `name` property.\n * @param type - Type of extension to handle.\n * @param map - The object map of named extensions.\n * @returns {extensions} For chaining.\n */\n handleByMap(type: ExtensionType, map: Record)\n {\n return this.handle(type,\n (extension) =>\n {\n if (extension.name)\n {\n map[extension.name] = extension.ref;\n }\n },\n (extension) =>\n {\n if (extension.name)\n {\n delete map[extension.name];\n }\n }\n );\n },\n\n /**\n * Handle a type, but using a list of extensions with a `name` property.\n * @param type - Type of extension to handle.\n * @param map - The array of named extensions.\n * @param defaultPriority - Fallback priority if none is defined.\n * @returns {extensions} For chaining.\n */\n handleByNamedList(type: ExtensionType, map: {name: string, value: any}[], defaultPriority = -1)\n {\n return this.handle(\n type,\n (extension) =>\n {\n const index = map.findIndex((item) => item.name === extension.name);\n\n if (index >= 0) return;\n\n map.push({ name: extension.name, value: extension.ref });\n map.sort((a, b) =>\n normalizeExtensionPriority(b.value, defaultPriority)\n - normalizeExtensionPriority(a.value, defaultPriority));\n },\n (extension) =>\n {\n const index = map.findIndex((item) => item.name === extension.name);\n\n if (index !== -1)\n {\n map.splice(index, 1);\n }\n }\n );\n },\n\n /**\n * Handle a type, but using a list of extensions.\n * @param type - Type of extension to handle.\n * @param list - The list of extensions.\n * @param defaultPriority - The default priority to use if none is specified.\n * @returns {extensions} For chaining.\n */\n handleByList(type: ExtensionType, list: any[], defaultPriority = -1)\n {\n return this.handle(\n type,\n (extension) =>\n {\n if (list.includes(extension.ref))\n {\n return;\n }\n\n list.push(extension.ref);\n list.sort((a, b) =>\n normalizeExtensionPriority(b, defaultPriority) - normalizeExtensionPriority(a, defaultPriority));\n },\n (extension) =>\n {\n const index = list.indexOf(extension.ref);\n\n if (index !== -1)\n {\n list.splice(index, 1);\n }\n }\n );\n },\n};\n\nexport {\n extensions,\n ExtensionType,\n};\nexport type {\n StrictExtensionFormat as ExtensionFormat,\n ExtensionFormat as ExtensionFormatLoose,\n ExtensionHandler,\n ExtensionMetadata,\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u | null;\n\n /** Normalized rgba component, floats from 0-1 */\n private _components: Float32Array;\n\n /** Cache color as number */\n private _int: number;\n\n /** An array of the current Color. Only populated when `toArray` functions are called */\n private _arrayRgba: number[] | null;\n private _arrayRgb: number[] | null;\n\n /**\n * @param {ColorSource} value - Optional value to use, if not provided, white is used.\n */\n constructor(value: ColorSource = 0xffffff)\n {\n this._value = null;\n this._components = new Float32Array(4);\n this._components.fill(1);\n this._int = 0xffffff;\n this.value = value;\n }\n\n /** Get red component (0 - 1) */\n get red(): number\n {\n return this._components[0];\n }\n\n /** Get green component (0 - 1) */\n get green(): number\n {\n return this._components[1];\n }\n\n /** Get blue component (0 - 1) */\n get blue(): number\n {\n return this._components[2];\n }\n\n /** Get alpha component (0 - 1) */\n get alpha(): number\n {\n return this._components[3];\n }\n\n /**\n * Set the value, suitable for chaining\n * @param value\n * @see Color.value\n */\n public setValue(value: ColorSource): this\n {\n this.value = value;\n\n return this;\n }\n\n /**\n * The current color source.\n *\n * When setting:\n * - Setting to an instance of `Color` will copy its color source and components.\n * - Otherwise, `Color` will try to normalize the color source and set the components.\n * If the color source is invalid, an `Error` will be thrown and the `Color` will left unchanged.\n *\n * Note: The `null` in the setter's parameter type is added to match the TypeScript rule: return type of getter\n * must be assignable to its setter's parameter type. Setting `value` to `null` will throw an `Error`.\n *\n * When getting:\n * - A return value of `null` means the previous value was overridden (e.g., {@link Color.multiply multiply},\n * {@link Color.premultiply premultiply} or {@link Color.round round}).\n * - Otherwise, the color source used when setting is returned.\n */\n set value(value: ColorSource | null)\n {\n // Support copying from other Color objects\n if (value instanceof Color)\n {\n this._value = this._cloneSource(value._value);\n this._int = value._int;\n this._components.set(value._components);\n }\n else if (value === null)\n {\n throw new Error('Cannot set Color#value to null');\n }\n else if (this._value === null || !this._isSourceEqual(this._value, value))\n {\n this._normalize(value);\n this._value = this._cloneSource(value);\n }\n }\n get value(): Exclude | null\n {\n return this._value;\n }\n\n /**\n * Copy a color source internally.\n * @param value - Color source\n */\n private _cloneSource(value: Exclude | null): Exclude | null\n {\n if (typeof value === 'string' || typeof value === 'number' || value instanceof Number || value === null)\n {\n return value;\n }\n else if (Array.isArray(value) || ArrayBuffer.isView(value))\n {\n return value.slice(0);\n }\n else if (typeof value === 'object' && value !== null)\n {\n return { ...value };\n }\n\n return value;\n }\n\n /**\n * Equality check for color sources.\n * @param value1 - First color source\n * @param value2 - Second color source\n * @returns `true` if the color sources are equal, `false` otherwise.\n */\n private _isSourceEqual(value1: Exclude, value2: Exclude): boolean\n {\n const type1 = typeof value1;\n const type2 = typeof value2;\n\n // Mismatched types\n if (type1 !== type2)\n {\n return false;\n }\n // Handle numbers/strings and things that extend Number\n // important to do the instanceof Number first, as this is \"object\" type\n else if (type1 === 'number' || type1 === 'string' || value1 instanceof Number)\n {\n return value1 === value2;\n }\n // Handle Arrays and TypedArrays\n else if (\n (Array.isArray(value1) && Array.isArray(value2))\n || (ArrayBuffer.isView(value1) && ArrayBuffer.isView(value2))\n )\n {\n if (value1.length !== value2.length)\n {\n return false;\n }\n\n return value1.every((v, i) => v === value2[i]);\n }\n // Handle Objects\n else if (value1 !== null && value2 !== null)\n {\n const keys1 = Object.keys(value1) as (keyof typeof value1)[];\n const keys2 = Object.keys(value2) as (keyof typeof value2)[];\n\n if (keys1.length !== keys2.length)\n {\n return false;\n }\n\n return keys1.every((key) => value1[key] === value2[key]);\n }\n\n return value1 === value2;\n }\n\n /**\n * Convert to a RGBA color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1, a: 1 }\n */\n public toRgba(): RgbaColor\n {\n const [r, g, b, a] = this._components;\n\n return { r, g, b, a };\n }\n\n /**\n * Convert to a RGB color object.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgb(); // returns { r: 1, g: 1, b: 1 }\n */\n public toRgb(): RgbColor\n {\n const [r, g, b] = this._components;\n\n return { r, g, b };\n }\n\n /** Convert to a CSS-style rgba string: `rgba(255,255,255,1.0)`. */\n public toRgbaString(): string\n {\n const [r, g, b] = this.toUint8RgbArray();\n\n return `rgba(${r},${g},${b},${this.alpha})`;\n }\n\n /**\n * Convert to an [R, G, B] array of clamped uint8 values (0 to 255).\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toUint8RgbArray(); // returns [255, 255, 255]\n * @param {number[]|Uint8Array|Uint8ClampedArray} [out] - Output array\n */\n public toUint8RgbArray(): number[];\n public toUint8RgbArray(out: T): T;\n public toUint8RgbArray(out?: T): T\n {\n const [r, g, b] = this._components;\n\n if (!this._arrayRgb)\n {\n this._arrayRgb = [];\n }\n\n out = out || this._arrayRgb as T;\n\n out[0] = Math.round(r * 255);\n out[1] = Math.round(g * 255);\n out[2] = Math.round(b * 255);\n\n return out;\n }\n\n /**\n * Convert to an [R, G, B, A] array of normalized floats (numbers from 0.0 to 1.0).\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toArray(); // returns [1, 1, 1, 1]\n * @param {number[]|Float32Array} [out] - Output array\n */\n public toArray(): number[];\n public toArray(out: T): T;\n public toArray(out?: T): T\n {\n if (!this._arrayRgba)\n {\n this._arrayRgba = [];\n }\n\n out = out || this._arrayRgba as T;\n const [r, g, b, a] = this._components;\n\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n\n return out;\n }\n\n /**\n * Convert to an [R, G, B] array of normalized floats (numbers from 0.0 to 1.0).\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toRgbArray(); // returns [1, 1, 1]\n * @param {number[]|Float32Array} [out] - Output array\n */\n public toRgbArray(): number[];\n public toRgbArray(out: T): T;\n public toRgbArray(out?: T): T\n {\n if (!this._arrayRgb)\n {\n this._arrayRgb = [];\n }\n\n out = out || this._arrayRgb as T;\n const [r, g, b] = this._components;\n\n out[0] = r;\n out[1] = g;\n out[2] = b;\n\n return out;\n }\n\n /**\n * Convert to a hexadecimal number.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toNumber(); // returns 16777215\n */\n public toNumber(): number\n {\n return this._int;\n }\n\n /**\n * Convert to a BGR number\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toBgrNumber(); // returns 0x99ccff\n */\n public toBgrNumber(): number\n {\n const [r, g, b] = this.toUint8RgbArray();\n\n return (b << 16) + (g << 8) + r;\n }\n\n /**\n * Convert to a hexadecimal number in little endian format (e.g., BBGGRR).\n * @example\n * import { Color } from 'pixi.js';\n * new Color(0xffcc99).toLittleEndianNumber(); // returns 0x99ccff\n * @returns {number} - The color as a number in little endian format.\n */\n public toLittleEndianNumber(): number\n {\n const value = this._int;\n\n return (value >> 16) + (value & 0xff00) + ((value & 0xff) << 16);\n }\n\n /**\n * Multiply with another color. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param {ColorSource} value - The color to multiply by.\n */\n public multiply(value: ColorSource): this\n {\n const [r, g, b, a] = Color._temp.setValue(value)._components;\n\n this._components[0] *= r;\n this._components[1] *= g;\n this._components[2] *= b;\n this._components[3] *= a;\n\n this._refreshInt();\n this._value = null;\n\n return this;\n }\n\n /**\n * Converts color to a premultiplied alpha format. This action is destructive, and will\n * override the previous `value` property to be `null`.\n * @param alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {Color} - Itself.\n */\n public premultiply(alpha: number, applyToRGB = true): this\n {\n if (applyToRGB)\n {\n this._components[0] *= alpha;\n this._components[1] *= alpha;\n this._components[2] *= alpha;\n }\n this._components[3] = alpha;\n\n this._refreshInt();\n this._value = null;\n\n return this;\n }\n\n /**\n * Premultiplies alpha with current color.\n * @param {number} alpha - The alpha to multiply by.\n * @param {boolean} [applyToRGB=true] - Whether to premultiply RGB channels.\n * @returns {number} tint multiplied by alpha\n */\n public toPremultiplied(alpha: number, applyToRGB = true): number\n {\n if (alpha === 1.0)\n {\n return (0xff << 24) + this._int;\n }\n if (alpha === 0.0)\n {\n return applyToRGB ? 0 : this._int;\n }\n let r = (this._int >> 16) & 0xff;\n let g = (this._int >> 8) & 0xff;\n let b = this._int & 0xff;\n\n if (applyToRGB)\n {\n r = ((r * alpha) + 0.5) | 0;\n g = ((g * alpha) + 0.5) | 0;\n b = ((b * alpha) + 0.5) | 0;\n }\n\n return ((alpha * 255) << 24) + (r << 16) + (g << 8) + b;\n }\n\n /**\n * Convert to a hexidecimal string.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHex(); // returns \"#ffffff\"\n */\n public toHex(): string\n {\n const hexString = this._int.toString(16);\n\n return `#${'000000'.substring(0, 6 - hexString.length) + hexString}`;\n }\n\n /**\n * Convert to a hexidecimal string with alpha.\n * @example\n * import { Color } from 'pixi.js';\n * new Color('white').toHexa(); // returns \"#ffffffff\"\n */\n public toHexa(): string\n {\n const alphaValue = Math.round(this._components[3] * 255);\n const alphaString = alphaValue.toString(16);\n\n return this.toHex() + '00'.substring(0, 2 - alphaString.length) + alphaString;\n }\n\n /**\n * Set alpha, suitable for chaining.\n * @param alpha\n */\n public setAlpha(alpha: number): this\n {\n this._components[3] = this._clamp(alpha);\n\n return this;\n }\n\n /**\n * Normalize the input value into rgba\n * @param value - Input value\n */\n private _normalize(value: Exclude): void\n {\n let r: number | undefined;\n let g: number | undefined;\n let b: number | undefined;\n let a: number | undefined;\n\n // Number is a primative so typeof works fine, but in the case\n // that someone creates a class that extends Number, we also\n // need to check for instanceof Number\n if (\n (typeof value === 'number' || value instanceof Number)\n && (value as number) >= 0\n && (value as number) <= 0xffffff\n )\n {\n const int = value as number; // cast required because instanceof Number is ambiguous for TS\n\n r = ((int >> 16) & 0xff) / 255;\n g = ((int >> 8) & 0xff) / 255;\n b = (int & 0xff) / 255;\n a = 1.0;\n }\n else if (\n (Array.isArray(value) || value instanceof Float32Array)\n // Can be rgb or rgba\n && value.length >= 3\n && value.length <= 4\n )\n {\n // make sure all values are 0 - 1\n value = this._clamp(value);\n [r, g, b, a = 1.0] = value;\n }\n else if (\n (value instanceof Uint8Array || value instanceof Uint8ClampedArray)\n // Can be rgb or rgba\n && value.length >= 3\n && value.length <= 4\n )\n {\n // make sure all values are 0 - 255\n value = this._clamp(value, 0, 255);\n [r, g, b, a = 255] = value;\n r /= 255;\n g /= 255;\n b /= 255;\n a /= 255;\n }\n else if (typeof value === 'string' || typeof value === 'object')\n {\n if (typeof value === 'string')\n {\n const match = Color.HEX_PATTERN.exec(value);\n\n if (match)\n {\n // Normalize hex string, remove 0x or # prefix\n value = `#${match[2]}`;\n }\n }\n\n const color = colord(value as AnyColor);\n\n if (color.isValid())\n {\n ({ r, g, b, a } = color.rgba);\n r /= 255;\n g /= 255;\n b /= 255;\n }\n }\n\n // Cache normalized values for rgba and hex integer\n if (r !== undefined)\n {\n this._components[0] = r as number;\n this._components[1] = g as number;\n this._components[2] = b as number;\n this._components[3] = a as number;\n this._refreshInt();\n }\n else\n {\n throw new Error(`Unable to convert color ${value}`);\n }\n }\n\n /** Refresh the internal color rgb number */\n private _refreshInt(): void\n {\n // Clamp values to 0 - 1\n this._clamp(this._components);\n\n const [r, g, b] = this._components;\n\n this._int = ((r * 255) << 16) + ((g * 255) << 8) + ((b * 255) | 0);\n }\n\n /**\n * Clamps values to a range. Will override original values\n * @param value - Value(s) to clamp\n * @param min - Minimum value\n * @param max - Maximum value\n */\n private _clamp(value: T, min = 0, max = 1): T\n {\n if (typeof value === 'number')\n {\n return Math.min(Math.max(value, min), max) as T;\n }\n\n value.forEach((v, i) =>\n {\n value[i] = Math.min(Math.max(v, min), max);\n });\n\n return value;\n }\n\n /**\n * Check if the value is a color-like object\n * @param value - Value to check\n * @returns True if the value is a color-like object\n * @static\n * @example\n * import { Color } from 'pixi.js';\n * Color.isColorLike('white'); // returns true\n * Color.isColorLike(0xffffff); // returns true\n * Color.isColorLike([1, 1, 1]); // returns true\n */\n public static isColorLike(value: ColorSource): value is ColorSource\n {\n return (\n typeof value === 'number'\n || typeof value === 'string'\n || value instanceof Number\n || value instanceof Color\n || Array.isArray(value)\n || value instanceof Uint8Array\n || value instanceof Uint8ClampedArray\n || value instanceof Float32Array\n || ((value as RgbColor).r !== undefined\n && (value as RgbColor).g !== undefined\n && (value as RgbColor).b !== undefined)\n || ((value as RgbaColor).r !== undefined\n && (value as RgbaColor).g !== undefined\n && (value as RgbaColor).b !== undefined\n && (value as RgbaColor).a !== undefined)\n || ((value as HslColor).h !== undefined\n && (value as HslColor).s !== undefined\n && (value as HslColor).l !== undefined)\n || ((value as HslaColor).h !== undefined\n && (value as HslaColor).s !== undefined\n && (value as HslaColor).l !== undefined\n && (value as HslaColor).a !== undefined)\n || ((value as HsvColor).h !== undefined\n && (value as HsvColor).s !== undefined\n && (value as HsvColor).v !== undefined)\n || ((value as HsvaColor).h !== undefined\n && (value as HsvaColor).s !== undefined\n && (value as HsvaColor).v !== undefined\n && (value as HsvaColor).a !== undefined)\n );\n }\n}\n","import type { Rectangle } from '../maths/shapes/Rectangle';\n\nexport interface CullingMixinConstructor\n{\n /**\n * If set, this shape is used for culling instead of the bounds of this object.\n * It can improve the culling performance of objects with many children.\n * The culling area is defined in local space.\n * @memberof scene.Container#\n */\n cullArea: Rectangle,\n /**\n * Should this object be rendered if the bounds of this object are out of frame?\n *\n * Culling has no effect on whether updateTransform is called.\n * @default false\n * @memberof scene.Container#\n */\n cullable: boolean,\n /**\n * Determines if the children to the container can be culled\n * Setting this to false allows PixiJS to bypass a recursive culling function\n * Which can help to optimize very complex scenes\n * @default true\n * @memberof scene.Container#\n */\n cullableChildren: boolean,\n}\n\nexport const cullingMixin: CullingMixinConstructor = {\n cullArea: null,\n cullable: false,\n cullableChildren: true,\n};\n","/**\n * Two Pi.\n * @static\n * @member {number}\n * @memberof maths\n */\nexport const PI_2 = Math.PI * 2;\n\n/**\n * Conversion factor for converting radians to degrees.\n * @static\n * @member {number} RAD_TO_DEG\n * @memberof maths\n */\nexport const RAD_TO_DEG = 180 / Math.PI;\n\n/**\n * Conversion factor for converting degrees to radians.\n * @static\n * @member {number}\n * @memberof maths\n */\nexport const DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Constants that identify shapes, mainly to prevent `instanceof` calls.\n * @memberof maths\n */\nexport type SHAPE_PRIMITIVE =\n | 'polygon'\n | 'rectangle'\n | 'circle'\n | 'ellipse'\n | 'triangle'\n | 'roundedRectangle';\n\n/**\n * The `maths` folder contains utility classes and functions for mathematical operations used throughout the project.\n * This includes constants such as conversion factors for radians and degrees, as well as shapes such as polygons,\n * rectangles, circles, ellipses, triangles, and rounded rectangles.\n * ```js\n * import { RAD_TO_DEG, Circle } from 'pixi.js';\n *\n * // Convert 180 degrees to radians\n * const radians = 180 * RAD_TO_DEG;\n *\n * // test if a point is inside a circle\n * const isPointInCircle = new Circle(0, 0, 10).contains(0, 0); // true\n * ```\n * @namespace maths\n */\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { PointData } from './PointData';\nimport type { PointLike } from './PointLike';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Point extends PixiMixins.Point { }\n\n/**\n * The Point object represents a location in a two-dimensional coordinate system, where `x` represents\n * the position on the horizontal axis and `y` represents the position on the vertical axis.\n *
\n * Many Pixi functions accept the `PointData` type as an alternative to `Point`,\n * which only requires `x` and `y` properties.\n * @class\n * @implements {PointLike}\n * @memberof maths\n */\nexport class Point implements PointLike\n{\n /** Position of the point on the x axis */\n public x = 0;\n /** Position of the point on the y axis */\n public y = 0;\n\n /**\n * Creates a new `Point`\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(x = 0, y = 0)\n {\n this.x = x;\n this.y = y;\n }\n\n /**\n * Creates a clone of this point\n * @returns A clone of this point\n */\n public clone(): Point\n {\n return new Point(this.x, this.y);\n }\n\n /**\n * Copies `x` and `y` from the given point into this point\n * @param p - The point to copy from\n * @returns The point instance itself\n */\n public copyFrom(p: PointData): this\n {\n this.set(p.x, p.y);\n\n return this;\n }\n\n /**\n * Copies this point's x and y into the given point (`p`).\n * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n * @returns The point (`p`) with values updated\n */\n public copyTo(p: T): T\n {\n p.set(this.x, this.y);\n\n return p;\n }\n\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n public equals(p: PointData): boolean\n {\n return (p.x === this.x) && (p.y === this.y);\n }\n\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the `x` axis\n * @param {number} [y=x] - position of the point on the `y` axis\n * @returns The point instance itself\n */\n public set(x = 0, y: number = x): this\n {\n this.x = x;\n this.y = y;\n\n return this;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Point x=${this.x} y=${this.y}]`;\n }\n // #endif\n\n /**\n * A static Point object with `x` and `y` values of `0`. Can be used to avoid creating new objects multiple times.\n * @readonly\n */\n static get shared(): Point\n {\n tempPoint.x = 0;\n tempPoint.y = 0;\n\n return tempPoint;\n }\n}\n\nconst tempPoint = new Point();\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { PI_2 } from '../misc/const';\nimport { Point } from '../point/Point';\n\nimport type { PointData } from '../point/PointData';\n\ninterface TransformableObject\n{\n position: PointData;\n scale: PointData;\n pivot: PointData;\n skew: PointData;\n rotation: number;\n}\n\n/**\n * A fast matrix for 2D transformations.\n * ```js\n * | a | c | tx|\n * | b | d | ty|\n * | 0 | 0 | 1 |\n * ```\n * @memberof maths\n */\nexport class Matrix\n{\n /** @default 1 */\n public a: number;\n\n /** @default 0 */\n public b: number;\n\n /** @default 0 */\n public c: number;\n\n /** @default 1 */\n public d: number;\n\n /** @default 0 */\n public tx: number;\n\n /** @default 0 */\n public ty: number;\n\n /** An array of the current matrix. Only populated when `toArray` is called */\n public array: Float32Array | null = null;\n\n /**\n * @param a - x scale\n * @param b - y skew\n * @param c - x skew\n * @param d - y scale\n * @param tx - x translation\n * @param ty - y translation\n */\n constructor(a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0)\n {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n\n /**\n * Creates a Matrix object based on the given array. The Element to Matrix mapping order is as follows:\n *\n * a = array[0]\n * b = array[1]\n * c = array[3]\n * d = array[4]\n * tx = array[2]\n * ty = array[5]\n * @param array - The array that the matrix will be populated from.\n */\n public fromArray(array: number[]): void\n {\n this.a = array[0];\n this.b = array[1];\n this.c = array[3];\n this.d = array[4];\n this.tx = array[2];\n this.ty = array[5];\n }\n\n /**\n * Sets the matrix properties.\n * @param a - Matrix component\n * @param b - Matrix component\n * @param c - Matrix component\n * @param d - Matrix component\n * @param tx - Matrix component\n * @param ty - Matrix component\n * @returns This matrix. Good for chaining method calls.\n */\n public set(a: number, b: number, c: number, d: number, tx: number, ty: number): this\n {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n\n return this;\n }\n\n /**\n * Creates an array from the current Matrix object.\n * @param transpose - Whether we need to transpose the matrix or not\n * @param [out=new Float32Array(9)] - If provided the array will be assigned to out\n * @returns The newly created array which contains the matrix\n */\n public toArray(transpose?: boolean, out?: Float32Array): Float32Array\n {\n if (!this.array)\n {\n this.array = new Float32Array(9);\n }\n\n const array = out || this.array;\n\n if (transpose)\n {\n array[0] = this.a;\n array[1] = this.b;\n array[2] = 0;\n array[3] = this.c;\n array[4] = this.d;\n array[5] = 0;\n array[6] = this.tx;\n array[7] = this.ty;\n array[8] = 1;\n }\n else\n {\n array[0] = this.a;\n array[1] = this.c;\n array[2] = this.tx;\n array[3] = this.b;\n array[4] = this.d;\n array[5] = this.ty;\n array[6] = 0;\n array[7] = 0;\n array[8] = 1;\n }\n\n return array;\n }\n\n /**\n * Get a new position with the current transformation applied.\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\n * @param pos - The origin\n * @param {Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {Point} The new point, transformed through this matrix\n */\n public apply

(pos: PointData, newPos?: P): P\n {\n newPos = (newPos || new Point()) as P;\n\n const x = pos.x;\n const y = pos.y;\n\n newPos.x = (this.a * x) + (this.c * y) + this.tx;\n newPos.y = (this.b * x) + (this.d * y) + this.ty;\n\n return newPos;\n }\n\n /**\n * Get a new position with the inverse of the current transformation applied.\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\n * @param pos - The origin\n * @param {Point} [newPos] - The point that the new position is assigned to (allowed to be same as input)\n * @returns {Point} The new point, inverse-transformed through this matrix\n */\n public applyInverse

(pos: PointData, newPos?: P): P\n {\n newPos = (newPos || new Point()) as P;\n\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const tx = this.tx;\n const ty = this.ty;\n\n const id = 1 / ((a * d) + (c * -b));\n\n const x = pos.x;\n const y = pos.y;\n\n newPos.x = (d * id * x) + (-c * id * y) + (((ty * c) - (tx * d)) * id);\n newPos.y = (a * id * y) + (-b * id * x) + (((-ty * a) + (tx * b)) * id);\n\n return newPos;\n }\n\n /**\n * Translates the matrix on the x and y.\n * @param x - How much to translate x by\n * @param y - How much to translate y by\n * @returns This matrix. Good for chaining method calls.\n */\n public translate(x: number, y: number): this\n {\n this.tx += x;\n this.ty += y;\n\n return this;\n }\n\n /**\n * Applies a scale transformation to the matrix.\n * @param x - The amount to scale horizontally\n * @param y - The amount to scale vertically\n * @returns This matrix. Good for chaining method calls.\n */\n public scale(x: number, y: number): this\n {\n this.a *= x;\n this.d *= y;\n this.c *= x;\n this.b *= y;\n this.tx *= x;\n this.ty *= y;\n\n return this;\n }\n\n /**\n * Applies a rotation transformation to the matrix.\n * @param angle - The angle in radians.\n * @returns This matrix. Good for chaining method calls.\n */\n public rotate(angle: number): this\n {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n\n const a1 = this.a;\n const c1 = this.c;\n const tx1 = this.tx;\n\n this.a = (a1 * cos) - (this.b * sin);\n this.b = (a1 * sin) + (this.b * cos);\n this.c = (c1 * cos) - (this.d * sin);\n this.d = (c1 * sin) + (this.d * cos);\n this.tx = (tx1 * cos) - (this.ty * sin);\n this.ty = (tx1 * sin) + (this.ty * cos);\n\n return this;\n }\n\n /**\n * Appends the given Matrix to this Matrix.\n * @param matrix - The matrix to append.\n * @returns This matrix. Good for chaining method calls.\n */\n public append(matrix: Matrix): this\n {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n\n this.a = (matrix.a * a1) + (matrix.b * c1);\n this.b = (matrix.a * b1) + (matrix.b * d1);\n this.c = (matrix.c * a1) + (matrix.d * c1);\n this.d = (matrix.c * b1) + (matrix.d * d1);\n\n this.tx = (matrix.tx * a1) + (matrix.ty * c1) + this.tx;\n this.ty = (matrix.tx * b1) + (matrix.ty * d1) + this.ty;\n\n return this;\n }\n\n /**\n * Appends two matrix's and sets the result to this matrix. AB = A * B\n * @param a - The matrix to append.\n * @param b - The matrix to append.\n * @returns This matrix. Good for chaining method calls.\n */\n public appendFrom(a: Matrix, b: Matrix): this\n {\n const a1 = a.a;\n const b1 = a.b;\n const c1 = a.c;\n const d1 = a.d;\n const tx = a.tx;\n const ty = a.ty;\n\n const a2 = b.a;\n const b2 = b.b;\n const c2 = b.c;\n const d2 = b.d;\n\n this.a = (a1 * a2) + (b1 * c2);\n this.b = (a1 * b2) + (b1 * d2);\n this.c = (c1 * a2) + (d1 * c2);\n this.d = (c1 * b2) + (d1 * d2);\n this.tx = (tx * a2) + (ty * c2) + b.tx;\n this.ty = (tx * b2) + (ty * d2) + b.ty;\n\n return this;\n }\n\n /**\n * Sets the matrix based on all the available properties\n * @param x - Position on the x axis\n * @param y - Position on the y axis\n * @param pivotX - Pivot on the x axis\n * @param pivotY - Pivot on the y axis\n * @param scaleX - Scale on the x axis\n * @param scaleY - Scale on the y axis\n * @param rotation - Rotation in radians\n * @param skewX - Skew on the x axis\n * @param skewY - Skew on the y axis\n * @returns This matrix. Good for chaining method calls.\n */\n public setTransform(x: number, y: number, pivotX: number, pivotY: number, scaleX: number,\n scaleY: number, rotation: number, skewX: number, skewY: number): this\n {\n this.a = Math.cos(rotation + skewY) * scaleX;\n this.b = Math.sin(rotation + skewY) * scaleX;\n this.c = -Math.sin(rotation - skewX) * scaleY;\n this.d = Math.cos(rotation - skewX) * scaleY;\n\n this.tx = x - ((pivotX * this.a) + (pivotY * this.c));\n this.ty = y - ((pivotX * this.b) + (pivotY * this.d));\n\n return this;\n }\n\n /**\n * Prepends the given Matrix to this Matrix.\n * @param matrix - The matrix to prepend\n * @returns This matrix. Good for chaining method calls.\n */\n public prepend(matrix: Matrix): this\n {\n const tx1 = this.tx;\n\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1)\n {\n const a1 = this.a;\n const c1 = this.c;\n\n this.a = (a1 * matrix.a) + (this.b * matrix.c);\n this.b = (a1 * matrix.b) + (this.b * matrix.d);\n this.c = (c1 * matrix.a) + (this.d * matrix.c);\n this.d = (c1 * matrix.b) + (this.d * matrix.d);\n }\n\n this.tx = (tx1 * matrix.a) + (this.ty * matrix.c) + matrix.tx;\n this.ty = (tx1 * matrix.b) + (this.ty * matrix.d) + matrix.ty;\n\n return this;\n }\n\n /**\n * Decomposes the matrix (x, y, scaleX, scaleY, and rotation) and sets the properties on to a transform.\n * @param transform - The transform to apply the properties to.\n * @returns The transform with the newly applied properties\n */\n public decompose(transform: TransformableObject): TransformableObject\n {\n // sort out rotation / skew..\n const a = this.a;\n const b = this.b;\n const c = this.c;\n const d = this.d;\n const pivot = transform.pivot;\n\n const skewX = -Math.atan2(-c, d);\n const skewY = Math.atan2(b, a);\n\n const delta = Math.abs(skewX + skewY);\n\n if (delta < 0.00001 || Math.abs(PI_2 - delta) < 0.00001)\n {\n transform.rotation = skewY;\n transform.skew.x = transform.skew.y = 0;\n }\n else\n {\n transform.rotation = 0;\n transform.skew.x = skewX;\n transform.skew.y = skewY;\n }\n\n // next set scale\n transform.scale.x = Math.sqrt((a * a) + (b * b));\n transform.scale.y = Math.sqrt((c * c) + (d * d));\n\n // next set position\n transform.position.x = this.tx + ((pivot.x * a) + (pivot.y * c));\n transform.position.y = this.ty + ((pivot.x * b) + (pivot.y * d));\n\n return transform;\n }\n\n /**\n * Inverts this matrix\n * @returns This matrix. Good for chaining method calls.\n */\n public invert(): this\n {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n const tx1 = this.tx;\n const n = (a1 * d1) - (b1 * c1);\n\n this.a = d1 / n;\n this.b = -b1 / n;\n this.c = -c1 / n;\n this.d = a1 / n;\n this.tx = ((c1 * this.ty) - (d1 * tx1)) / n;\n this.ty = -((a1 * this.ty) - (b1 * tx1)) / n;\n\n return this;\n }\n\n /** Checks if this matrix is an identity matrix */\n public isIdentity(): boolean\n {\n return this.a === 1 && this.b === 0 && this.c === 0 && this.d === 1 && this.tx === 0 && this.ty === 0;\n }\n\n /**\n * Resets this Matrix to an identity (default) matrix.\n * @returns This matrix. Good for chaining method calls.\n */\n public identity(): this\n {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.tx = 0;\n this.ty = 0;\n\n return this;\n }\n\n /**\n * Creates a new Matrix object with the same values as this one.\n * @returns A copy of this matrix. Good for chaining method calls.\n */\n public clone(): Matrix\n {\n const matrix = new Matrix();\n\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n\n return matrix;\n }\n\n /**\n * Changes the values of the given matrix to be the same as the ones in this matrix\n * @param matrix - The matrix to copy to.\n * @returns The matrix given in parameter with its values updated.\n */\n public copyTo(matrix: Matrix): Matrix\n {\n matrix.a = this.a;\n matrix.b = this.b;\n matrix.c = this.c;\n matrix.d = this.d;\n matrix.tx = this.tx;\n matrix.ty = this.ty;\n\n return matrix;\n }\n\n /**\n * Changes the values of the matrix to be the same as the ones in given matrix\n * @param matrix - The matrix to copy from.\n * @returns this\n */\n public copyFrom(matrix: Matrix): this\n {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n\n return this;\n }\n\n /**\n * check to see if two matrices are the same\n * @param matrix - The matrix to compare to.\n */\n public equals(matrix: Matrix)\n {\n return matrix.a === this.a && matrix.b === this.b\n && matrix.c === this.c && matrix.d === this.d\n && matrix.tx === this.tx && matrix.ty === this.ty;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`;\n }\n // #endif\n\n /**\n * A default (identity) matrix.\n *\n * This is a shared object, if you want to modify it consider creating a new `Matrix`\n * @readonly\n */\n static get IDENTITY(): Readonly\n {\n return identityMatrix.identity();\n }\n\n /**\n * A static Matrix that can be used to avoid creating new objects.\n * Will always ensure the matrix is reset to identity when requested.\n * Use this object for fast but temporary calculations, as it may be mutated later on.\n * This is a different object to the `IDENTITY` object and so can be modified without changing `IDENTITY`.\n * @readonly\n */\n static get shared(): Matrix\n {\n return tempMatrix.identity();\n }\n}\n\nconst tempMatrix = new Matrix();\nconst identityMatrix = new Matrix();\n","import type { PointData } from './PointData';\nimport type { PointLike } from './PointLike';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ObservablePoint extends PixiMixins.ObservablePoint { }\n\n/**\n * Observer used to listen for observable point changes.\n * @memberof maths\n */\nexport interface Observer\n{\n /** Callback to call when the point has updated. */\n _onUpdate: (point?: T) => void;\n}\n\n/**\n * The ObservablePoint object represents a location in a two-dimensional coordinate system, where `x` represents\n * the position on the horizontal axis and `y` represents the position on the vertical axis.\n *\n * An `ObservablePoint` is a point that triggers the `onUpdate` method on an observer when the point's position is changed.\n * @memberof maths\n */\nexport class ObservablePoint implements PointLike\n{\n /** @ignore */\n public _x: number;\n /** @ignore */\n public _y: number;\n\n /** This object used to call the `onUpdate` callback when the point changes. */\n private readonly _observer: Observer;\n\n /**\n * Creates a new `ObservablePoint`\n * @param observer - Observer to pass to listen for change events.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=0] - position of the point on the y axis\n */\n constructor(observer: Observer, x?: number, y?: number)\n {\n this._x = x || 0;\n this._y = y || 0;\n\n this._observer = observer;\n }\n\n /**\n * Creates a clone of this point.\n * @param observer - Optional observer to pass to the new observable point.\n * @returns a copy of this observable point\n */\n public clone(observer?: Observer): ObservablePoint\n {\n return new ObservablePoint(observer ?? this._observer, this._x, this._y);\n }\n\n /**\n * Sets the point to a new `x` and `y` position.\n * If `y` is omitted, both `x` and `y` will be set to `x`.\n * @param {number} [x=0] - position of the point on the x axis\n * @param {number} [y=x] - position of the point on the y axis\n * @returns The observable point instance itself\n */\n public set(x = 0, y = x): this\n {\n if (this._x !== x || this._y !== y)\n {\n this._x = x;\n this._y = y;\n this._observer._onUpdate(this);\n }\n\n return this;\n }\n\n /**\n * Copies x and y from the given point (`p`)\n * @param p - The point to copy from. Can be any of type that is or extends `PointData`\n * @returns The observable point instance itself\n */\n public copyFrom(p: PointData): this\n {\n if (this._x !== p.x || this._y !== p.y)\n {\n this._x = p.x;\n this._y = p.y;\n this._observer._onUpdate(this);\n }\n\n return this;\n }\n\n /**\n * Copies this point's x and y into that of the given point (`p`)\n * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n * @returns The point (`p`) with values updated\n */\n public copyTo(p: T): T\n {\n p.set(this._x, this._y);\n\n return p;\n }\n\n /**\n * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n * @param p - The point to check\n * @returns Returns `true` if both `x` and `y` are equal\n */\n public equals(p: PointData): boolean\n {\n return (p.x === this._x) && (p.y === this._y);\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:ObservablePoint x=${0} y=${0} scope=${this._observer}]`;\n }\n // #endif\n\n /** Position of the observable point on the x axis. */\n get x(): number\n {\n return this._x;\n }\n\n set x(value: number)\n {\n if (this._x !== value)\n {\n this._x = value;\n this._observer._onUpdate(this);\n }\n }\n\n /** Position of the observable point on the y axis. */\n get y(): number\n {\n return this._y;\n }\n\n set y(value: number)\n {\n if (this._y !== value)\n {\n this._y = value;\n this._observer._onUpdate(this);\n }\n }\n}\n","const uidCache: Record = {\n default: -1,\n};\n\ntype UIDNames =\n | 'default'\n | 'resource'\n | 'texture'\n | 'textureSource'\n | 'textureResource'\n | 'batcher' //\n | 'graphicsContext' //\n | 'graphicsView' //\n | 'graphicsPath' //\n | 'fillGradient' //\n | 'fillPattern' //\n | 'meshView' //\n | 'renderable' //\n | 'buffer' //\n | 'bufferResource' //\n | 'geometry'\n | 'instructionSet' //\n | 'renderTarget' //\n | 'uniform' //\n | 'spriteView' //\n | 'textView' //\n | 'tilingSpriteView'; // ;\n\n/**\n * Gets the next unique identifier\n * @param name - The name of the identifier.\n * @function uid\n * @returns {number} The next unique identifier to use.\n * @memberof utils\n */\nexport function uid(name: UIDNames = 'default'): number\n{\n if (uidCache[name] === undefined)\n {\n uidCache[name] = -1;\n }\n\n return ++uidCache[name];\n}\n\n/** Resets the next unique identifier to 0. This is used for some tests, dont touch or things WILL explode :) */\nexport function resetUids(): void\n{\n for (const key in uidCache)\n {\n delete uidCache[key];\n }\n}\n","/**\n * Remove items from a javascript array without generating garbage\n * @function removeItems\n * @memberof utils\n * @param {Array} arr - Array to remove elements from\n * @param {number} startIdx - starting index\n * @param {number} removeCount - how many to remove\n */\nexport function removeItems(arr: any[], startIdx: number, removeCount: number): void\n{\n const length = arr.length;\n let i;\n\n if (startIdx >= length || removeCount === 0)\n {\n return;\n }\n\n removeCount = (startIdx + removeCount > length ? length - startIdx : removeCount);\n\n const len = length - removeCount;\n\n for (i = startIdx; i < len; ++i)\n {\n arr[i] = arr[i + removeCount];\n }\n\n arr.length = len;\n}\n","import { removeItems } from '../../../utils/data/removeItems';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\n\nimport type { Container, ContainerChild } from '../Container';\n\nexport interface ChildrenHelperMixin\n{\n allowChildren: boolean;\n addChild(...children: U): U[0];\n removeChild(...children: U): U[0];\n removeChildren(beginIndex?: number, endIndex?: number): C[];\n removeChildAt(index: number): U;\n getChildAt(index: number): U;\n setChildIndex(child: C, index: number): void;\n getChildIndex(child: C): number;\n addChildAt(child: U, index: number): U;\n swapChildren(child: U, child2: U): void;\n removeFromParent(): void;\n}\n\nexport const childrenHelperMixin: Partial = {\n\n allowChildren: true,\n\n /**\n * Removes all children from this container that are within the begin and end indexes.\n * @param beginIndex - The beginning position.\n * @param endIndex - The ending position. Default value is size of the container.\n * @returns - List of removed children\n * @memberof scene.Container#\n */\n removeChildren(beginIndex = 0, endIndex?: number): ContainerChild[]\n {\n const end = endIndex ?? this.children.length;\n const range = end - beginIndex;\n const removed: ContainerChild[] = [];\n\n if (range > 0 && range <= end)\n {\n for (let i = end - 1; i >= beginIndex; i--)\n {\n const child = this.children[i];\n\n if (!child) continue;\n\n if (this.renderGroup)\n {\n this.renderGroup.removeChild(child);\n }\n\n removed.push(child);\n child.parent = null;\n }\n\n removeItems(this.children, beginIndex, end);\n\n for (let i = 0; i < removed.length; ++i)\n {\n this.emit('childRemoved', removed[i], this, i);\n removed[i].emit('removed', this);\n }\n\n return removed;\n }\n else if (range === 0 && this.children.length === 0)\n {\n return removed;\n }\n\n throw new RangeError('removeChildren: numeric values are outside the acceptable range.');\n },\n\n /**\n * Removes a child from the specified index position.\n * @param index - The index to get the child from\n * @returns The child that was removed.\n * @memberof scene.Container#\n */\n removeChildAt(index: number): U\n {\n const child = this.getChildAt(index);\n\n return this.removeChild(child);\n },\n\n /**\n * Returns the child at the specified index\n * @param index - The index to get the child at\n * @returns - The child at the given index, if any.\n * @memberof scene.Container#\n */\n getChildAt(index: number): U\n {\n if (index < 0 || index >= this.children.length)\n {\n throw new Error(`getChildAt: Index (${index}) does not exist.`);\n }\n\n return this.children[index] as U;\n },\n\n /**\n * Changes the position of an existing child in the container container\n * @param child - The child Container instance for which you want to change the index number\n * @param index - The resulting index number for the child container\n * @memberof scene.Container#\n */\n setChildIndex(child: ContainerChild, index: number): void\n {\n if (index < 0 || index >= this.children.length)\n {\n throw new Error(`The index ${index} supplied is out of bounds ${this.children.length}`);\n }\n\n this.getChildIndex(child); // check if child exists\n this.addChildAt(child, index);\n },\n\n /**\n * Returns the index position of a child Container instance\n * @param child - The Container instance to identify\n * @returns - The index position of the child container to identify\n * @memberof scene.Container#\n */\n getChildIndex(child: ContainerChild): number\n {\n const index = this.children.indexOf(child);\n\n if (index === -1)\n {\n throw new Error('The supplied Container must be a child of the caller');\n }\n\n return index;\n },\n\n /**\n * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown.\n * If the child is already in this container, it will be moved to the specified index.\n * @param {Container} child - The child to add.\n * @param {number} index - The absolute index where the child will be positioned at the end of the operation.\n * @returns {Container} The child that was added.\n * @memberof scene.Container#\n */\n addChildAt(child: U, index: number): U\n {\n // #if _DEBUG\n if (!this.allowChildren)\n {\n deprecation(v8_0_0, 'addChildAt: Only Containers will be allowed to add children in v8.0.0');\n }\n // #endif\n\n const { children } = this;\n\n if (index < 0 || index > children.length)\n {\n throw new Error(`${child}addChildAt: The index ${index} supplied is out of bounds ${children.length}`);\n }\n\n // TODO - check if child is already in the list?\n // we should be able to optimise this!\n\n if (child.parent)\n {\n const currentIndex = child.parent.children.indexOf(child);\n\n // If this child is in the container and in the same position, do nothing\n if (child.parent === this && currentIndex === index)\n {\n return child;\n }\n\n if (currentIndex !== -1)\n {\n child.parent.children.splice(currentIndex, 1);\n }\n }\n\n if (index === children.length)\n {\n children.push(child);\n }\n else\n {\n children.splice(index, 0, child);\n }\n\n child.parent = this;\n child.didChange = true;\n child.didViewUpdate = false;\n child._updateFlags = 0b1111;\n\n if (this.renderGroup)\n {\n this.renderGroup.addChild(child);\n }\n\n if (this.sortableChildren) this.sortDirty = true;\n\n this.emit('childAdded', child, this, index);\n child.emit('added', this);\n\n return child;\n },\n /**\n * Swaps the position of 2 Containers within this container.\n * @param child - First container to swap\n * @param child2 - Second container to swap\n */\n swapChildren(child: U, child2: U): void\n {\n if (child === child2)\n {\n return;\n }\n\n const index1 = this.getChildIndex(child);\n const index2 = this.getChildIndex(child2);\n\n this.children[index1] = child2;\n this.children[index2] = child;\n },\n /**\n * Remove the Container from its parent Container. If the Container has no parent, do nothing.\n * @memberof scene.Container#\n */\n removeFromParent()\n {\n this.parent?.removeChild(this);\n }\n} as Container;\n","import type { Rectangle } from '../maths/shapes/Rectangle';\nimport type { Effect } from '../scene/container/Effect';\nimport type { Filter } from './Filter';\n\nexport class FilterEffect implements Effect\n{\n public filters: Filter[];\n public filterArea?: Rectangle;\n\n public pipe = 'filter';\n public priority = 1;\n\n constructor(options?: {filters: Filter[], filterArea?: Rectangle})\n {\n this.filters = options?.filters;\n this.filterArea = options?.filterArea;\n }\n\n public destroy(): void\n {\n for (let i = 0; i < this.filters.length; i++)\n {\n this.filters[i].destroy();\n }\n\n this.filters = null;\n this.filterArea = null;\n }\n}\n","/**\n * A generic class for managing a pool of items.\n * @template T The type of items in the pool. Must implement {@link utils.PoolItem}.\n * @memberof utils\n */\nexport class Pool\n{\n public readonly _classType: PoolItemConstructor;\n private readonly _pool: T[] = [];\n private _count = 0;\n private _index = 0;\n\n /**\n * Constructs a new Pool.\n * @param ClassType - The constructor of the items in the pool.\n * @param {number} [initialSize] - The initial size of the pool.\n */\n constructor(ClassType: PoolItemConstructor, initialSize?: number)\n {\n this._classType = ClassType;\n\n if (initialSize)\n {\n this.prepopulate(initialSize);\n }\n }\n\n /**\n * Prepopulates the pool with a given number of items.\n * @param total - The number of items to add to the pool.\n */\n public prepopulate(total: number): void\n {\n for (let i = 0; i < total; i++)\n {\n this._pool[this._index++] = new this._classType();\n }\n\n this._count += total;\n }\n\n /**\n * Gets an item from the pool. Calls the item's `init` method if it exists.\n * If there are no items left in the pool, a new one will be created.\n * @param {unknown} [data] - Optional data to pass to the item's constructor.\n * @returns {T} The item from the pool.\n */\n public get(data?: unknown): T\n {\n let item;\n\n if (this._index > 0)\n {\n item = this._pool[--this._index];\n }\n else\n {\n item = new this._classType();\n }\n\n item.init?.(data);\n\n return item;\n }\n\n /**\n * Returns an item to the pool. Calls the item's `reset` method if it exists.\n * @param {T} item - The item to return to the pool.\n */\n public return(item: T): void\n {\n item.reset?.();\n\n this._pool[this._index++] = item;\n }\n\n /**\n * Gets the number of items in the pool.\n * @readonly\n * @member {number}\n */\n get totalSize(): number\n {\n return this._count;\n }\n\n /**\n * Gets the number of items in the pool that are free to use without needing to create more.\n * @readonly\n * @member {number}\n */\n get totalFree(): number\n {\n return this._index;\n }\n\n /**\n * Gets the number of items in the pool that are currently in use.\n * @readonly\n * @member {number}\n */\n get totalUsed(): number\n {\n return this._count - this._index;\n }\n}\n\n/**\n * An object that can be stored in a {@link utils.Pool}.\n * @memberof utils\n */\nexport type PoolItem = {\n init?: (data?: any) => void;\n reset?: () => void;\n [key: string]: any;\n};\n\n/**\n * The constructor of an object that can be stored in a {@link utils.Pool}.\n * @typeParam K - The type of the object that can be stored in a {@link utils.Pool}.\n * @memberof utils\n */\nexport type PoolItemConstructor = new () => K;\n","import { Pool } from './Pool';\n\nimport type { PoolItem, PoolItemConstructor } from './Pool';\n\n/**\n * A type alias for a constructor of a Pool.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @memberof utils\n */\nexport type PoolConstructor = new () => Pool;\n\n/**\n * A group of pools that can be used to store objects of different types.\n * @memberof utils\n */\nexport class PoolGroupClass\n{\n /**\n * A map to store the pools by their class type.\n * @private\n */\n private readonly _poolsByClass: Map, Pool> = new Map();\n\n /**\n * Prepopulates a specific pool with a given number of items.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor} Class - The constructor of the items in the pool.\n * @param {number} total - The number of items to add to the pool.\n */\n public prepopulate(Class: PoolItemConstructor, total: number): void\n {\n const classPool = this.getPool(Class);\n\n classPool.prepopulate(total);\n }\n\n /**\n * Gets an item from a specific pool.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor} Class - The constructor of the items in the pool.\n * @param {unknown} [data] - Optional data to pass to the item's constructor.\n * @returns {T} The item from the pool.\n */\n public get(Class: PoolItemConstructor, data?: unknown): T\n {\n const pool = this.getPool(Class);\n\n return pool.get(data) as T;\n }\n\n /**\n * Returns an item to its respective pool.\n * @param {PoolItem} item - The item to return to the pool.\n */\n public return(item: PoolItem): void\n {\n const pool = this.getPool(item.constructor as PoolItemConstructor);\n\n pool.return(item);\n }\n\n /**\n * Gets a specific pool based on the class type.\n * @template T The type of items in the pool. Must extend PoolItem.\n * @param {PoolItemConstructor} ClassType - The constructor of the items in the pool.\n * @returns {Pool} The pool of the given class type.\n */\n public getPool(ClassType: PoolItemConstructor): Pool\n {\n if (!this._poolsByClass.has(ClassType))\n {\n this._poolsByClass.set(ClassType, new Pool(ClassType));\n }\n\n return this._poolsByClass.get(ClassType) as Pool;\n }\n\n /** gets the usage stats of each pool in the system */\n public stats(): Record\n {\n const stats = {} as Record;\n\n this._poolsByClass.forEach((pool) =>\n {\n // TODO: maybe we should allow the name to be set when `createEntity` is called\n const name = stats[pool._classType.name]\n ? pool._classType.name + (pool._classType as any).ID : pool._classType.name;\n\n stats[name] = {\n free: pool.totalFree,\n used: pool.totalUsed,\n size: pool.totalSize,\n };\n });\n\n return stats;\n }\n}\n\nexport const BigPool = new PoolGroupClass();\n","import { extensions, ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\n\nimport type { Effect, EffectConstructor } from '../../scene/container/Effect';\nimport type { PoolItem, PoolItemConstructor } from '../../utils/pool/Pool';\n\ninterface MaskConversionTest\n{\n test: (item: any) => boolean;\n maskClass: new (item: any) => Effect & PoolItem;\n}\n\n/**\n * A class that manages the conversion of masks to mask effects.\n * @memberof rendering\n * @ignore\n */\nexport class MaskEffectManagerClass\n{\n /**\n * @private\n */\n public readonly _effectClasses: EffectConstructor[] = [];\n private readonly _tests: MaskConversionTest[] = [];\n private _initialized = false;\n\n public init()\n {\n if (this._initialized) return;\n\n this._initialized = true;\n\n this._effectClasses.forEach((test) =>\n {\n this.add({\n test: test.test,\n maskClass: test\n });\n });\n }\n\n public add(test: MaskConversionTest)\n {\n this._tests.push(test);\n }\n\n public getMaskEffect(item: any): Effect\n {\n if (!this._initialized) this.init();\n\n for (let i = 0; i < this._tests.length; i++)\n {\n const test = this._tests[i];\n\n if (test.test(item))\n {\n return BigPool.get(test.maskClass as PoolItemConstructor, item);\n }\n }\n\n return item;\n }\n\n public returnMaskEffect(effect: Effect & PoolItem)\n {\n BigPool.return(effect);\n }\n}\n\nexport const MaskEffectManager = new MaskEffectManagerClass();\n\n// Handle registration of extensions\nextensions\n .handleByList(ExtensionType.MaskEffect, MaskEffectManager._effectClasses);\n","import { FilterEffect } from '../../../filters/FilterEffect';\nimport { MaskEffectManager } from '../../../rendering/mask/MaskEffectManager';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\n\nimport type { Filter } from '../../../filters/Filter';\nimport type { Rectangle } from '../../../maths/shapes/Rectangle';\nimport type { PoolItem } from '../../../utils/pool/Pool';\nimport type { Container } from '../Container';\nimport type { Effect } from '../Effect';\n\nexport interface EffectsMixinConstructor\n{\n mask?: number | Container | null;\n filters?: Filter | Filter[];\n}\nexport interface EffectsMixin extends Required\n{\n _mask?: {mask: unknown, effect: Effect};\n _filters?: {\n filters: readonly Filter[],\n effect: FilterEffect\n filterArea?: Rectangle,\n },\n filterArea?: Rectangle,\n effects?: Effect[];\n addEffect(effect: Effect): void;\n removeEffect(effect: Effect): void;\n}\n\nexport const effectsMixin: Partial = {\n _mask: null,\n _filters: null,\n\n /**\n * @todo Needs docs.\n * @memberof scene.Container#\n * @type {Array}\n */\n effects: [],\n\n /**\n * @todo Needs docs.\n * @param effect - The effect to add.\n * @memberof scene.Container#\n * @ignore\n */\n addEffect(effect: Effect)\n {\n const index = this.effects.indexOf(effect);\n\n if (index !== -1) return; // already exists!\n\n this.effects.push(effect);\n\n this.effects.sort((a, b) => a.priority - b.priority);\n\n if (this.renderGroup)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._updateIsSimple();\n },\n /**\n * @todo Needs docs.\n * @param effect - The effect to remove.\n * @memberof scene.Container#\n * @ignore\n */\n removeEffect(effect: Effect)\n {\n const index = this.effects.indexOf(effect);\n\n if (index === -1) return; // already exists!\n\n this.effects.splice(index, 1);\n\n if (!this.isRenderGroupRoot && this.renderGroup)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._updateIsSimple();\n },\n\n set mask(value: number | Container | null)\n {\n this._mask ||= { mask: null, effect: null };\n\n if (this._mask.mask === value) return;\n\n if (this._mask.effect)\n {\n this.removeEffect(this._mask.effect);\n\n MaskEffectManager.returnMaskEffect(this._mask.effect);\n\n this._mask.effect = null;\n }\n\n this._mask.mask = value;\n\n if (value === null || value === undefined) return;\n\n const effect = MaskEffectManager.getMaskEffect(value);\n\n this._mask.effect = effect;\n\n this.addEffect(effect);\n },\n\n /**\n * Sets a mask for the displayObject. A mask is an object that limits the visibility of an\n * object to the shape of the mask applied to it. In PixiJS a regular mask must be a\n * {@link Graphics} or a {@link Sprite} object. This allows for much faster masking in canvas as it\n * utilities shape clipping. Furthermore, a mask of an object must be in the subtree of its parent.\n * Otherwise, `getLocalBounds` may calculate incorrect bounds, which makes the container's width and height wrong.\n * To remove a mask, set this property to `null`.\n *\n * For sprite mask both alpha and red channel are used. Black mask is the same as transparent mask.\n * @example\n * import { Graphics, Sprite } from 'pixi.js';\n *\n * const graphics = new Graphics();\n * graphics.beginFill(0xFF3300);\n * graphics.drawRect(50, 250, 100, 100);\n * graphics.endFill();\n *\n * const sprite = new Sprite(texture);\n * sprite.mask = graphics;\n * @memberof scene.Container#\n */\n get mask(): unknown\n {\n return this._mask?.mask;\n },\n\n set filters(value: Filter | Filter[] | null | undefined)\n {\n if (!Array.isArray(value) && value) value = [value];\n\n // Ignore the Filter type\n value = value as Filter[] | null | undefined;\n\n // by reusing the same effect.. rather than adding and removing from the pool!\n this._filters ||= { filters: null, effect: null, filterArea: null };\n\n const hasFilters = value?.length > 0;\n const didChange = (this._filters.effect && !hasFilters) || (!this._filters.effect && hasFilters);\n\n // Clone the filters array so we don't freeze the user-input\n value = Array.isArray(value) ? value.slice(0) : value;\n\n // Ensure filters are immutable via filters getter\n this._filters.filters = Object.freeze(value);\n\n if (didChange)\n {\n if (hasFilters)\n {\n const effect = BigPool.get(FilterEffect);\n\n this._filters.effect = effect;\n this.addEffect(effect);\n }\n else\n {\n const effect = this._filters.effect;\n\n this.removeEffect(effect);\n\n effect.filterArea = null;\n effect.filters = null;\n\n this._filters.effect = null;\n BigPool.return(effect as PoolItem);\n }\n }\n\n if (hasFilters)\n {\n this._filters.effect.filters = value as Filter[];\n this._filters.effect.filterArea = this.filterArea;\n }\n },\n\n /**\n * Sets the filters for the displayObject.\n * IMPORTANT: This is a WebGL only feature and will be ignored by the canvas renderer.\n * To remove filters simply set this property to `'null'`.\n * @memberof scene.Container#\n */\n get filters(): readonly Filter[]\n {\n return this._filters?.filters;\n },\n\n set filterArea(value: Rectangle)\n {\n this._filters ||= { filters: null, effect: null, filterArea: null };\n\n this._filters.filterArea = value;\n },\n\n /**\n * The area the filter is applied to. This is used as more of an optimization\n * rather than figuring out the dimensions of the displayObject each frame you can set this rectangle.\n *\n * Also works as an interaction mask.\n * @memberof scene.Container#\n */\n get filterArea(): Rectangle\n {\n return this._filters?.filterArea;\n },\n\n} as Container;\n","import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\n\nimport type { Container } from '../Container';\n\nexport interface FindMixinConstructor\n{\n label?: string;\n}\nexport interface FindMixin extends Required\n{\n /**\n * @deprecated since 8.0.0\n * @see Container#label\n */\n name: string;\n getChildByName(label: RegExp | string, deep?: boolean): Container | null;\n getChildByLabel(label: RegExp | string, deep?: boolean): Container | null;\n getChildrenByLabel(label: RegExp | string, deep?: boolean, out?: Container[]): Container[];\n}\n\nexport const findMixin: Partial = {\n /**\n * The instance label of the object.\n * @memberof scene.Container#\n * @member {string} label\n */\n label: null,\n\n /**\n * The instance name of the object.\n * @deprecated since 8.0.0\n * @see scene.Container#label\n * @member {string} name\n * @memberof scene.Container#\n */\n get name(): string\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Container.name property has been removed, use Container.label instead');\n // #endif\n\n return this.label;\n },\n set name(value: string)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Container.name property has been removed, use Container.label instead');\n // #endif\n\n this.label = value;\n },\n\n /**\n * @method getChildByName\n * @deprecated since 8.0.0\n * @param {string} name - Instance name.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @returns {Container} The child with the specified name.\n * @see scene.Container#getChildByLabel\n * @memberof scene.Container#\n */\n getChildByName(name: string, deep = false): Container | null\n {\n return this.getChildByLabel(name, deep);\n },\n /**\n * Returns the first child in the container with the specified label.\n *\n * Recursive searches are done in a pre-order traversal.\n * @memberof scene.Container#\n * @param {string|RegExp} label - Instance label.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @returns {Container} The child with the specified label.\n */\n getChildByLabel(label: string | RegExp, deep = false): Container | null\n {\n const children = this.children;\n\n for (let i = 0; i < children.length; i++)\n {\n const child = children[i];\n\n if (child.label === label || (label instanceof RegExp && label.test(child.label))) return child;\n }\n\n if (deep)\n {\n for (let i = 0; i < children.length; i++)\n {\n const child = children[i];\n const found = child.getChildByLabel(label, true);\n\n if (found)\n {\n return found;\n }\n }\n }\n\n return null;\n },\n\n /**\n * Returns all children in the container with the specified label.\n * @memberof scene.Container#\n * @param {string|RegExp} label - Instance label.\n * @param {boolean}[deep=false] - Whether to search recursively\n * @param {Container[]} [out=[]] - The array to store matching children in.\n * @returns {Container[]} An array of children with the specified label.\n */\n getChildrenByLabel(label: string | RegExp, deep = false, out = []): Container[]\n {\n const children = this.children;\n\n for (let i = 0; i < children.length; i++)\n {\n const child = children[i];\n\n if (child.label === label || (label instanceof RegExp && label.test(child.label)))\n {\n out.push(child);\n }\n }\n\n if (deep)\n {\n for (let i = 0; i < children.length; i++)\n {\n children[i].getChildrenByLabel(label, true, out);\n }\n }\n\n return out;\n },\n} as Container;\n","// import { SHAPES } from '../const';\nimport { Point } from '../point/Point';\n\nimport type { Bounds } from '../../scene/container/bounds/Bounds';\nimport type { Matrix } from '../matrix/Matrix';\nimport type { SHAPE_PRIMITIVE } from '../misc/const';\nimport type { ShapePrimitive } from './ShapePrimitive';\n\nconst tempPoints = [new Point(), new Point(), new Point(), new Point()];\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Rectangle extends PixiMixins.Rectangle { }\n\n/**\n * The `Rectangle` object is an area defined by its position, as indicated by its top-left corner\n * point (`x`, `y`) and by its `width` and its `height`.\n *\n * It also provides convenience methods to get and set the position and size of the rectangle such as\n * {@link maths.Rectangle#bottom|bottom}, {@link maths.Rectangle#right|right} and {@link maths.Rectangle#isEmpty|isEmpty}.\n * @memberof maths\n */\nexport class Rectangle implements ShapePrimitive\n{\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'rectangle'\n */\n public readonly type: SHAPE_PRIMITIVE = 'rectangle';\n\n /**\n * The X coordinate of the upper-left corner of the rectangle\n * @default 0\n */\n public x: number;\n\n /**\n * The Y coordinate of the upper-left corner of the rectangle\n * @default 0\n */\n public y: number;\n\n /**\n * The overall width of this rectangle\n * @default 0\n */\n public width: number;\n\n /**\n * The overall height of this rectangle\n * @default 0\n */\n public height: number;\n\n /**\n * @param x - The X coordinate of the upper-left corner of the rectangle\n * @param y - The Y coordinate of the upper-left corner of the rectangle\n * @param width - The overall width of the rectangle\n * @param height - The overall height of the rectangle\n */\n constructor(x: string | number = 0, y: string | number = 0, width: string | number = 0, height: string | number = 0)\n {\n this.x = Number(x);\n this.y = Number(y);\n this.width = Number(width);\n this.height = Number(height);\n }\n\n /** Returns the left edge of the rectangle. */\n get left(): number\n {\n return this.x;\n }\n\n /** Returns the right edge of the rectangle. */\n get right(): number\n {\n return this.x + this.width;\n }\n\n /** Returns the top edge of the rectangle. */\n get top(): number\n {\n return this.y;\n }\n\n /** Returns the bottom edge of the rectangle. */\n get bottom(): number\n {\n return this.y + this.height;\n }\n\n /** Determines whether the Rectangle is empty. */\n public isEmpty(): boolean\n {\n return this.left === this.right || this.top === this.bottom;\n }\n\n /** A constant empty rectangle. This is a new object every time the property is accessed */\n static get EMPTY(): Rectangle\n {\n return new Rectangle(0, 0, 0, 0);\n }\n\n /**\n * Creates a clone of this Rectangle\n * @returns a copy of the rectangle\n */\n public clone(): Rectangle\n {\n return new Rectangle(this.x, this.y, this.width, this.height);\n }\n\n /**\n * Converts a Bounds object to a Rectangle object.\n * @param bounds - The bounds to copy and convert to a rectangle.\n * @returns Returns itself.\n */\n public copyFromBounds(bounds: Bounds): this\n {\n this.x = bounds.minX;\n this.y = bounds.minY;\n this.width = bounds.maxX - bounds.minX;\n this.height = bounds.maxY - bounds.minY;\n\n return this;\n }\n\n /**\n * Copies another rectangle to this one.\n * @param rectangle - The rectangle to copy from.\n * @returns Returns itself.\n */\n public copyFrom(rectangle: Rectangle): Rectangle\n {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n\n return this;\n }\n\n /**\n * Copies this rectangle to another one.\n * @param rectangle - The rectangle to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(rectangle: Rectangle): Rectangle\n {\n rectangle.copyFrom(this);\n\n return rectangle;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this Rectangle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Rectangle\n */\n public contains(x: number, y: number): boolean\n {\n if (this.width <= 0 || this.height <= 0)\n {\n return false;\n }\n\n if (x >= this.x && x < this.x + this.width)\n {\n if (y >= this.y && y < this.y + this.height)\n {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this rectangle including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @returns Whether the x/y coordinates are within this rectangle\n */\n public strokeContains(x: number, y: number, strokeWidth: number): boolean\n {\n const { width, height } = this;\n\n if (width <= 0 || height <= 0) return false;\n\n const _x = this.x;\n const _y = this.y;\n\n const outerLeft = _x - (strokeWidth / 2);\n const outerRight = _x + width + (strokeWidth / 2);\n const outerTop = _y - (strokeWidth / 2);\n const outerBottom = _y + height + (strokeWidth / 2);\n const innerLeft = _x + (strokeWidth / 2);\n const innerRight = _x + width - (strokeWidth / 2);\n const innerTop = _y + (strokeWidth / 2);\n const innerBottom = _y + height - (strokeWidth / 2);\n\n return (x >= outerLeft && x <= outerRight && y >= outerTop && y <= outerBottom)\n && !(x > innerLeft && x < innerRight && y > innerTop && y < innerBottom);\n }\n /**\n * Determines whether the `other` Rectangle transformed by `transform` intersects with `this` Rectangle object.\n * Returns true only if the area of the intersection is >0, this means that Rectangles\n * sharing a side are not overlapping. Another side effect is that an arealess rectangle\n * (width or height equal to zero) can't intersect any other rectangle.\n * @param {Rectangle} other - The Rectangle to intersect with `this`.\n * @param {Matrix} transform - The transformation matrix of `other`.\n * @returns {boolean} A value of `true` if the transformed `other` Rectangle intersects with `this`; otherwise `false`.\n */\n public intersects(other: Rectangle, transform?: Matrix): boolean\n {\n if (!transform)\n {\n const x0 = this.x < other.x ? other.x : this.x;\n const x1 = this.right > other.right ? other.right : this.right;\n\n if (x1 <= x0)\n {\n return false;\n }\n\n const y0 = this.y < other.y ? other.y : this.y;\n const y1 = this.bottom > other.bottom ? other.bottom : this.bottom;\n\n return y1 > y0;\n }\n\n const x0 = this.left;\n const x1 = this.right;\n const y0 = this.top;\n const y1 = this.bottom;\n\n if (x1 <= x0 || y1 <= y0)\n {\n return false;\n }\n\n const lt = tempPoints[0].set(other.left, other.top);\n const lb = tempPoints[1].set(other.left, other.bottom);\n const rt = tempPoints[2].set(other.right, other.top);\n const rb = tempPoints[3].set(other.right, other.bottom);\n\n if (rt.x <= lt.x || lb.y <= lt.y)\n {\n return false;\n }\n\n const s = Math.sign((transform.a * transform.d) - (transform.b * transform.c));\n\n if (s === 0)\n {\n return false;\n }\n\n transform.apply(lt, lt);\n transform.apply(lb, lb);\n transform.apply(rt, rt);\n transform.apply(rb, rb);\n\n if (Math.max(lt.x, lb.x, rt.x, rb.x) <= x0\n || Math.min(lt.x, lb.x, rt.x, rb.x) >= x1\n || Math.max(lt.y, lb.y, rt.y, rb.y) <= y0\n || Math.min(lt.y, lb.y, rt.y, rb.y) >= y1)\n {\n return false;\n }\n\n const nx = s * (lb.y - lt.y);\n const ny = s * (lt.x - lb.x);\n const n00 = (nx * x0) + (ny * y0);\n const n10 = (nx * x1) + (ny * y0);\n const n01 = (nx * x0) + (ny * y1);\n const n11 = (nx * x1) + (ny * y1);\n\n if (Math.max(n00, n10, n01, n11) <= (nx * lt.x) + (ny * lt.y)\n || Math.min(n00, n10, n01, n11) >= (nx * rb.x) + (ny * rb.y))\n {\n return false;\n }\n\n const mx = s * (lt.y - rt.y);\n const my = s * (rt.x - lt.x);\n const m00 = (mx * x0) + (my * y0);\n const m10 = (mx * x1) + (my * y0);\n const m01 = (mx * x0) + (my * y1);\n const m11 = (mx * x1) + (my * y1);\n\n if (Math.max(m00, m10, m01, m11) <= (mx * lt.x) + (my * lt.y)\n || Math.min(m00, m10, m01, m11) >= (mx * rb.x) + (my * rb.y))\n {\n return false;\n }\n\n return true;\n }\n\n /**\n * Pads the rectangle making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n * @returns Returns itself.\n */\n public pad(paddingX = 0, paddingY = paddingX): this\n {\n this.x -= paddingX;\n this.y -= paddingY;\n\n this.width += paddingX * 2;\n this.height += paddingY * 2;\n\n return this;\n }\n\n /**\n * Fits this rectangle around the passed one.\n * @param rectangle - The rectangle to fit.\n * @returns Returns itself.\n */\n public fit(rectangle: Rectangle): this\n {\n const x1 = Math.max(this.x, rectangle.x);\n const x2 = Math.min(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.max(this.y, rectangle.y);\n const y2 = Math.min(this.y + this.height, rectangle.y + rectangle.height);\n\n this.x = x1;\n this.width = Math.max(x2 - x1, 0);\n this.y = y1;\n this.height = Math.max(y2 - y1, 0);\n\n return this;\n }\n\n /**\n * Enlarges rectangle that way its corners lie on grid\n * @param resolution - resolution\n * @param eps - precision\n * @returns Returns itself.\n */\n public ceil(resolution = 1, eps = 0.001): this\n {\n const x2 = Math.ceil((this.x + this.width - eps) * resolution) / resolution;\n const y2 = Math.ceil((this.y + this.height - eps) * resolution) / resolution;\n\n this.x = Math.floor((this.x + eps) * resolution) / resolution;\n this.y = Math.floor((this.y + eps) * resolution) / resolution;\n\n this.width = x2 - this.x;\n this.height = y2 - this.y;\n\n return this;\n }\n\n /**\n * Enlarges this rectangle to include the passed rectangle.\n * @param rectangle - The rectangle to include.\n * @returns Returns itself.\n */\n public enlarge(rectangle: Rectangle): this\n {\n const x1 = Math.min(this.x, rectangle.x);\n const x2 = Math.max(this.x + this.width, rectangle.x + rectangle.width);\n const y1 = Math.min(this.y, rectangle.y);\n const y2 = Math.max(this.y + this.height, rectangle.y + rectangle.height);\n\n this.x = x1;\n this.width = x2 - x1;\n this.y = y1;\n this.height = y2 - y1;\n\n return this;\n }\n\n /**\n * Returns the framing rectangle of the rectangle as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n public getBounds(out?: Rectangle): Rectangle\n {\n out = out || new Rectangle();\n out.copyFrom(this);\n\n return out;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`;\n }\n // #endif\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { Rectangle } from '../../../maths/shapes/Rectangle';\n\n/**\n * Simple bounds implementation instead of more ambiguous [number, number, number, number]\n * @memberof rendering\n */\nexport interface BoundsData\n{\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n}\n\nconst defaultMatrix = new Matrix();\n\n// TODO optimisations\n// 1 - get rectangle could use a dirty flag, rather than setting the data each time is called\n// 2- getFrame ALWAYS assumes a matrix, could be optimised to avoid the matrix calculation if not needed\n\n/**\n * A representation of an AABB bounding box.\n * @memberof rendering\n */\nexport class Bounds\n{\n /** @default Infinity */\n public minX = Infinity;\n\n /** @default Infinity */\n public minY = Infinity;\n\n /** @default -Infinity */\n public maxX = -Infinity;\n\n /** @default -Infinity */\n public maxY = -Infinity;\n\n public matrix = defaultMatrix;\n\n private _rectangle: Rectangle;\n\n constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity)\n {\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n\n /**\n * Checks if bounds are empty.\n * @returns - True if empty.\n */\n public isEmpty(): boolean\n {\n return this.minX > this.maxX || this.minY > this.maxY;\n }\n\n /** The bounding rectangle of the bounds. */\n get rectangle(): Rectangle\n {\n if (!this._rectangle)\n {\n this._rectangle = new Rectangle();\n }\n\n const rectangle = this._rectangle;\n\n if (this.minX > this.maxX || this.minY > this.maxY)\n {\n rectangle.x = 0;\n rectangle.y = 0;\n rectangle.width = 0;\n rectangle.height = 0;\n }\n else\n {\n rectangle.copyFromBounds(this);\n }\n\n return rectangle;\n }\n\n /** Clears the bounds and resets. */\n public clear(): this\n {\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = -Infinity;\n this.maxY = -Infinity;\n\n this.matrix = defaultMatrix;\n\n return this;\n }\n\n /**\n * Sets the bounds.\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n */\n public set(x0: number, y0: number, x1: number, y1: number)\n {\n this.minX = x0;\n this.minY = y0;\n this.maxX = x1;\n this.maxY = y1;\n }\n\n /**\n * Adds sprite frame\n * @param x0 - left X of frame\n * @param y0 - top Y of frame\n * @param x1 - right X of frame\n * @param y1 - bottom Y of frame\n * @param matrix\n */\n public addFrame(x0: number, y0: number, x1: number, y1: number, matrix?: Matrix): void\n {\n matrix ||= this.matrix;\n\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n\n let x = (a * x0) + (c * y0) + tx;\n let y = (b * x0) + (d * y0) + ty;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n\n x = (a * x1) + (c * y0) + tx;\n y = (b * x1) + (d * y0) + ty;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n\n x = (a * x0) + (c * y1) + tx;\n y = (b * x0) + (d * y1) + ty;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n\n x = (a * x1) + (c * y1) + tx;\n y = (b * x1) + (d * y1) + ty;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n\n /**\n * Adds a rectangle to the bounds.\n * @param rect - The rectangle to be added.\n * @param matrix - The matrix to apply to the bounds.\n */\n public addRect(rect: Rectangle, matrix?: Matrix)\n {\n this.addFrame(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height, matrix);\n }\n\n /**\n * Adds other {@link Bounds}.\n * @param bounds - The Bounds to be added\n * @param matrix\n */\n public addBounds(bounds: BoundsData, matrix?: Matrix)\n {\n this.addFrame(bounds.minX, bounds.minY, bounds.maxX, bounds.maxY, matrix);\n }\n\n /**\n * Adds other Bounds, masked with Bounds.\n * @param mask - The Bounds to be added.\n */\n public addBoundsMask(mask: Bounds): void\n {\n this.minX = this.minX > mask.minX ? this.minX : mask.minX;\n this.minY = this.minY > mask.minY ? this.minY : mask.minY;\n this.maxX = this.maxX < mask.maxX ? this.maxX : mask.maxX;\n this.maxY = this.maxY < mask.maxY ? this.maxY : mask.maxY;\n }\n\n /**\n * Adds other Bounds, multiplied with matrix.\n * @param matrix - The matrix to apply to the bounds.\n */\n public applyMatrix(matrix: Matrix): void\n {\n const minX = this.minX;\n const minY = this.minY;\n const maxX = this.maxX;\n const maxY = this.maxY;\n\n // multiple bounds by matrix\n const { a, b, c, d, tx, ty } = matrix;\n\n let x = (a * minX) + (c * minY) + tx;\n let y = (b * minX) + (d * minY) + ty;\n\n this.minX = x;\n this.minY = y;\n this.maxX = x;\n this.maxY = y;\n\n x = (a * maxX) + (c * minY) + tx;\n y = (b * maxX) + (d * minY) + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n\n x = (a * minX) + (c * maxY) + tx;\n y = (b * minX) + (d * maxY) + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n\n x = (a * maxX) + (c * maxY) + tx;\n y = (b * maxX) + (d * maxY) + ty;\n this.minX = x < this.minX ? x : this.minX;\n this.minY = y < this.minY ? y : this.minY;\n this.maxX = x > this.maxX ? x : this.maxX;\n this.maxY = y > this.maxY ? y : this.maxY;\n }\n\n /**\n * Resizes the bounds object to include the given rectangle.\n * @param rect - The rectangle to be included.\n */\n public fit(rect: Rectangle): this\n {\n if (this.minX < rect.left) this.minX = rect.left;\n if (this.maxX > rect.right) this.maxX = rect.right;\n\n if (this.minY < rect.top) this.minY = rect.top;\n if (this.maxY > rect.bottom) this.maxY = rect.bottom;\n\n return this;\n }\n\n /**\n * Resizes the bounds object to include the given bounds.\n * @param left - The left value of the bounds.\n * @param right - The right value of the bounds.\n * @param top - The top value of the bounds.\n * @param bottom - The bottom value of the bounds.\n */\n public fitBounds(left: number, right: number, top: number, bottom: number): this\n {\n if (this.minX < left) this.minX = left;\n if (this.maxX > right) this.maxX = right;\n\n if (this.minY < top) this.minY = top;\n if (this.maxY > bottom) this.maxY = bottom;\n\n return this;\n }\n\n /**\n * Pads bounds object, making it grow in all directions.\n * If paddingY is omitted, both paddingX and paddingY will be set to paddingX.\n * @param paddingX - The horizontal padding amount.\n * @param paddingY - The vertical padding amount.\n */\n public pad(paddingX: number, paddingY: number = paddingX): this\n {\n this.minX -= paddingX;\n this.maxX += paddingX;\n\n this.minY -= paddingY;\n this.maxY += paddingY;\n\n return this;\n }\n\n /** Ceils the bounds. */\n public ceil(): this\n {\n this.minX = Math.floor(this.minX);\n this.minY = Math.floor(this.minY);\n this.maxX = Math.ceil(this.maxX);\n this.maxY = Math.ceil(this.maxY);\n\n return this;\n }\n\n /** Clones the bounds. */\n public clone(): Bounds\n {\n return new Bounds(this.minX, this.minY, this.maxX, this.maxY);\n }\n\n /**\n * Scales the bounds by the given values\n * @param x - The X value to scale by.\n * @param y - The Y value to scale by.\n */\n public scale(x: number, y: number = x): this\n {\n this.minX *= x;\n this.minY *= y;\n this.maxX *= x;\n this.maxY *= y;\n\n return this;\n }\n\n /** the x value of the bounds. */\n get x(): number\n {\n return this.minX;\n }\n set x(value: number)\n {\n const width = this.maxX - this.minX;\n\n this.minX = value;\n this.maxX = value + width;\n }\n\n /** the y value of the bounds. */\n get y(): number\n {\n return this.minY;\n }\n\n set y(value: number)\n {\n const height = this.maxY - this.minY;\n\n this.minY = value;\n this.maxY = value + height;\n }\n\n /** the width value of the bounds. */\n get width(): number\n {\n return this.maxX - this.minX;\n }\n\n set width(value: number)\n {\n this.maxX = this.minX + value;\n }\n\n /** the height value of the bounds. */\n get height(): number\n {\n return this.maxY - this.minY;\n }\n\n set height(value: number)\n {\n this.maxY = this.minY + value;\n }\n\n /** the left value of the bounds. */\n get left(): number\n {\n return this.minX;\n }\n\n /** the right value of the bounds. */\n get right(): number\n {\n return this.maxX;\n }\n\n /** the top value of the bounds. */\n get top(): number\n {\n return this.minY;\n }\n\n /** the bottom value of the bounds. */\n get bottom(): number\n {\n return this.maxY;\n }\n\n /** Is the bounds positive. */\n get isPositive(): boolean\n {\n return (this.maxX - this.minX > 0) && (this.maxY - this.minY > 0);\n }\n\n get isValid(): boolean\n {\n return (this.minX + this.minY !== Infinity);\n }\n\n /**\n * Adds screen vertices from array\n * @param vertexData - calculated vertices\n * @param beginOffset - begin offset\n * @param endOffset - end offset, excluded\n * @param matrix\n */\n public addVertexData(vertexData: Float32Array, beginOffset: number, endOffset: number, matrix?: Matrix): void\n {\n let minX = this.minX;\n let minY = this.minY;\n let maxX = this.maxX;\n let maxY = this.maxY;\n\n matrix ||= this.matrix;\n\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n\n for (let i = beginOffset; i < endOffset; i += 2)\n {\n const localX = vertexData[i];\n const localY = vertexData[i + 1];\n\n const x = (a * localX) + (c * localY) + tx;\n const y = (b * localX) + (d * localY) + ty;\n\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n }\n\n this.minX = minX;\n this.minY = minY;\n this.maxX = maxX;\n this.maxY = maxY;\n }\n\n /**\n * Checks if the point is contained within the bounds.\n * @param x - x coordinate\n * @param y - y coordinate\n */\n public containsPoint(x: number, y: number): boolean\n {\n if (this.minX <= x && this.minY <= y && this.maxX >= x && this.maxY >= y)\n {\n return true;\n }\n\n return false;\n }\n\n public toString(): string\n {\n // eslint-disable-next-line max-len\n return `[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`;\n }\n}\n\n","import { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Pool } from '../../../../utils/pool/Pool';\nimport { Bounds } from '../Bounds';\n\nimport type { PoolItem } from '../../../../utils/pool/Pool';\n\ntype MatrixPoolItem = Matrix & PoolItem;\ntype BoundsPoolItem = Bounds & PoolItem;\nexport const matrixPool = new Pool(Matrix);\nexport const boundsPool = new Pool(Bounds);\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { boundsPool, matrixPool } from './utils/matrixAndBoundsPool';\n\nimport type { Renderable } from '../../../rendering/renderers/shared/Renderable';\nimport type { Container } from '../Container';\nimport type { Bounds } from './Bounds';\n\nexport function getGlobalBounds(target: Container, skipUpdateTransform: boolean, bounds: Bounds): Bounds\n{\n bounds.clear();\n\n let parentTransform;\n let pooledMatrix;\n\n if (target.parent)\n {\n if (!skipUpdateTransform)\n {\n pooledMatrix = matrixPool.get().identity();\n parentTransform = updateTransformBackwards(target, pooledMatrix);\n }\n else\n {\n parentTransform = target.parent.worldTransform;\n }\n }\n else\n {\n parentTransform = Matrix.IDENTITY;\n }\n\n // then collect them...\n\n _getGlobalBounds(target, bounds, parentTransform, skipUpdateTransform);\n\n if (pooledMatrix)\n {\n matrixPool.return(pooledMatrix);\n }\n\n if (!bounds.isValid)\n {\n bounds.set(0, 0, 0, 0);\n }\n\n return bounds;\n}\n\nexport function _getGlobalBounds(\n target: Container,\n bounds: Bounds,\n parentTransform: Matrix,\n skipUpdateTransform: boolean,\n): void\n{\n if (!target.visible || !target.measurable) return;\n\n let worldTransform: Matrix;\n\n if (!skipUpdateTransform)\n {\n target.updateLocalTransform();\n\n worldTransform = matrixPool.get();\n\n worldTransform.appendFrom(target.localTransform, parentTransform);\n }\n else\n {\n worldTransform = target.worldTransform;\n }\n\n const parentBounds = bounds;\n const preserveBounds = !!target.effects.length;\n\n if (preserveBounds)\n {\n bounds = boundsPool.get().clear();\n }\n\n if (target.boundsArea)\n {\n bounds.addRect(target.boundsArea, worldTransform);\n }\n else\n {\n if ((target as Renderable).addBounds)\n {\n // save a copy\n bounds.matrix = worldTransform;\n\n (target as Renderable).addBounds(bounds);\n }\n\n for (let i = 0; i < target.children.length; i++)\n {\n _getGlobalBounds(target.children[i], bounds, worldTransform, skipUpdateTransform);\n }\n }\n\n if (preserveBounds)\n {\n for (let i = 0; i < target.effects.length; i++)\n {\n target.effects[i].addBounds?.(bounds);\n }\n\n parentBounds.addBounds(bounds, Matrix.IDENTITY);\n\n boundsPool.return(bounds);\n }\n\n if (!skipUpdateTransform)\n {\n matrixPool.return(worldTransform);\n }\n}\n\nexport function updateTransformBackwards(target: Container, parentTransform: Matrix)\n{\n const parent = target.parent;\n\n if (parent)\n {\n updateTransformBackwards(parent, parentTransform);\n\n parent.updateLocalTransform();\n\n parentTransform.append(parent.localTransform);\n }\n\n return parentTransform;\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { warn } from '../../../utils/logging/warn';\nimport { boundsPool, matrixPool } from './utils/matrixAndBoundsPool';\n\nimport type { Renderable } from '../../../rendering/renderers/shared/Renderable';\nimport type { Container } from '../Container';\nimport type { Bounds } from './Bounds';\n\nexport function getLocalBounds(target: Container, bounds: Bounds, relativeMatrix?: Matrix): Bounds\n{\n bounds.clear();\n\n relativeMatrix ||= Matrix.IDENTITY;\n\n _getLocalBounds(target, bounds, relativeMatrix, target, true);\n\n if (!bounds.isValid)\n {\n bounds.set(0, 0, 0, 0);\n }\n\n return bounds;\n}\n\nfunction _getLocalBounds(\n target: Container,\n bounds: Bounds,\n parentTransform: Matrix,\n rootContainer: Container,\n isRoot: boolean\n): void\n{\n let relativeTransform: Matrix;\n\n if (!isRoot)\n {\n if (!target.visible || !target.measurable) return;\n\n target.updateLocalTransform();\n\n const localTransform = target.localTransform;\n\n relativeTransform = matrixPool.get();\n relativeTransform.appendFrom(localTransform, parentTransform);\n }\n else\n {\n relativeTransform = matrixPool.get();\n relativeTransform = parentTransform.copyTo(relativeTransform);\n }\n\n const parentBounds = bounds;\n const preserveBounds = !!target.effects.length;\n\n if (preserveBounds)\n {\n bounds = boundsPool.get().clear();\n }\n\n if (target.boundsArea)\n {\n bounds.addRect(target.boundsArea, relativeTransform);\n }\n else\n {\n if (target.renderPipeId)\n {\n bounds.matrix = relativeTransform;\n (target as Renderable).addBounds(bounds);\n }\n\n const children = target.children;\n\n for (let i = 0; i < children.length; i++)\n {\n _getLocalBounds(children[i], bounds, relativeTransform, rootContainer, false);\n }\n }\n\n if (preserveBounds)\n {\n for (let i = 0; i < target.effects.length; i++)\n {\n target.effects[i].addLocalBounds?.(bounds, rootContainer);\n }\n\n // TODO - make a add transformed bounds?\n parentBounds.addBounds(bounds, Matrix.IDENTITY);\n\n boundsPool.return(bounds);\n }\n\n matrixPool.return(relativeTransform);\n}\n\nexport function getParent(target: Container, root: Container, matrix: Matrix)\n{\n const parent = target.parent;\n\n if (!parent)\n {\n // we have reach the top of the tree!\n // #if _DEBUG\n warn('Item is not inside the root container');\n // #endif\n\n return;\n }\n\n if (parent !== root)\n {\n getParent(parent, root, matrix);\n\n parent.updateLocalTransform();\n matrix.append(parent.localTransform);\n }\n}\n\n","import type { Container } from '../Container';\n\n/**\n * This function will crawl through the container essentially check if the children have changed.\n *\n * This function checkChildrenDidChange recursively checks if any child in a Container\n * or its children has changed. It does this by comparing a generated changeId for each\n * child against a stored value in previousData.\n * The changeId is a combination of the child's uid and _didChangeId, bitwise manipulated for uniqueness.\n * If a change is detected, it updates previousData and sets didChange to true.\n * The function returns a boolean indicating if any change was detected in the entire hierarchy of children.\n * @param container - the container to check for changes\n * @param previousData - the previous data from the last check made\n * @param previousData.data - the data array\n * @param previousData.index - the index of the data array\n * @param previousData.didChange - did the data change\n */\nexport function checkChildrenDidChange(\n container: Container,\n previousData: {\n data: number[];\n index: number;\n didChange: boolean;\n })\n{\n const children = container.children;\n\n for (let i = 0; i < children.length; i++)\n {\n const child = children[i];\n\n const changeId = ((child.uid & 255) << 24)\n | (child._didChangeId & 16777215);\n\n if (previousData.data[previousData.index] !== changeId)\n {\n previousData.data[previousData.index] = changeId;\n\n previousData.didChange = true;\n }\n\n previousData.index++;\n\n if (child.children.length)\n {\n checkChildrenDidChange(child, previousData);\n }\n }\n\n return previousData.didChange;\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { Bounds } from '../bounds/Bounds';\nimport { getGlobalBounds } from '../bounds/getGlobalBounds';\nimport { getLocalBounds } from '../bounds/getLocalBounds';\nimport { checkChildrenDidChange } from '../utils/checkChildrenDidChange';\n\nimport type { Size } from '../../../maths/misc/Size';\nimport type { Container } from '../Container';\n\nexport type Optional = Omit & Partial>;\n\nexport interface MeasureMixinConstructor\n{\n width?: number;\n height?: number;\n}\nexport interface MeasureMixin extends Required\n{\n getSize(out?: Size): Size;\n setSize(width: number, height?: number): void;\n setSize(value: Optional): void;\n getLocalBounds(bounds?: Bounds): Bounds;\n getBounds(skipUpdate?: boolean, bounds?: Bounds): Bounds;\n _localBoundsCacheData: LocalBoundsCacheData;\n _localBoundsCacheId: number;\n _setWidth(width: number, localWidth: number): void;\n _setHeight(height: number, localHeight: number): void;\n}\n\ninterface LocalBoundsCacheData\n{\n data: number[];\n index: number;\n didChange: boolean;\n localBounds: Bounds;\n}\n\nconst tempMatrix = new Matrix();\n\nexport const measureMixin: Partial = {\n\n _localBoundsCacheId: -1,\n _localBoundsCacheData: null,\n\n _setWidth(value: number, localWidth: number)\n {\n const sign = Math.sign(this.scale.x) || 1;\n\n if (localWidth !== 0)\n {\n this.scale.x = (value / localWidth) * sign;\n }\n else\n {\n this.scale.x = sign;\n }\n },\n\n _setHeight(value: number, localHeight: number)\n {\n const sign = Math.sign(this.scale.y) || 1;\n\n if (localHeight !== 0)\n {\n this.scale.y = (value / localHeight) * sign;\n }\n else\n {\n this.scale.y = sign;\n }\n },\n\n /**\n * Retrieves the local bounds of the container as a Bounds object.\n * @returns - The bounding area.\n * @memberof scene.Container#\n */\n getLocalBounds(): Bounds\n {\n if (!this._localBoundsCacheData)\n {\n this._localBoundsCacheData = {\n data: [],\n index: 1,\n didChange: false,\n localBounds: new Bounds()\n };\n }\n\n const localBoundsCacheData = this._localBoundsCacheData;\n\n localBoundsCacheData.index = 1;\n localBoundsCacheData.didChange = false;\n\n if (localBoundsCacheData.data[0] !== this._didChangeId >> 12)\n {\n localBoundsCacheData.didChange = true;\n localBoundsCacheData.data[0] = this._didChangeId >> 12;\n }\n\n checkChildrenDidChange(this, localBoundsCacheData);\n\n if (localBoundsCacheData.didChange)\n {\n getLocalBounds(this, localBoundsCacheData.localBounds, tempMatrix);\n }\n\n return localBoundsCacheData.localBounds;\n },\n\n /**\n * Calculates and returns the (world) bounds of the display object as a [Rectangle]{@link Rectangle}.\n * @param skipUpdate - Setting to `true` will stop the transforms of the scene graph from\n * being updated. This means the calculation returned MAY be out of date BUT will give you a\n * nice performance boost.\n * @param bounds - Optional bounds to store the result of the bounds calculation.\n * @returns - The minimum axis-aligned rectangle in world space that fits around this object.\n * @memberof scene.Container#\n */\n getBounds(skipUpdate?: boolean, bounds?: Bounds): Bounds\n {\n return getGlobalBounds(this, skipUpdate, bounds || new Bounds());\n },\n} as Container;\n","import type { Container } from '../Container';\n\nexport interface OnRenderMixinConstructor\n{\n onRender?: (() => void | null);\n}\nexport interface OnRenderMixin extends Required\n{\n _onRender: (() => void) | null;\n}\n\nexport const onRenderMixin: Partial = {\n _onRender: null,\n\n set onRender(func: () => void)\n {\n const renderGroup = this.renderGroup;\n\n if (!func)\n {\n if (this._onRender)\n {\n renderGroup?.removeOnRender(this);\n }\n\n this._onRender = null;\n\n return;\n }\n\n if (!this._onRender)\n {\n renderGroup?.addOnRender(this);\n }\n\n this._onRender = func;\n },\n\n /**\n * This callback is used when the container is rendered. This is where you should add your custom\n * logic that is needed to be run every frame.\n *\n * In v7 many users used `updateTransform` for this, however the way v8 renders objects is different\n * and \"updateTransform\" is no longer called every frame\n * @example\n * const container = new Container();\n * container.onRender = () => {\n * container.rotation += 0.01;\n * };\n * @memberof scene.Container#\n */\n get onRender(): () => void\n {\n return this._onRender;\n }\n} as Container;\n","import type { Container } from '../Container';\n\nexport interface SortMixinConstructor\n{\n zIndex?: number;\n sortDirty?: boolean;\n sortableChildren?: boolean;\n}\nexport interface SortMixin extends Required\n{\n _zIndex: number;\n\n sortChildren: () => void;\n depthOfChildModified: () => void;\n}\n\nexport const sortMixin: Partial = {\n _zIndex: 0,\n /**\n * Should children be sorted by zIndex at the next render call.\n *\n * Will get automatically set to true if a new child is added, or if a child's zIndex changes.\n * @type {boolean}\n * @memberof scene.Container#\n */\n sortDirty: false,\n /**\n * If set to true, the container will sort its children by `zIndex` value\n * when the next render is called, or manually if `sortChildren()` is called.\n *\n * This actually changes the order of elements in the array, so should be treated\n * as a basic solution that is not performant compared to other solutions,\n * such as {@link https://github.com/pixijs/layers PixiJS Layers}\n *\n * Also be aware of that this may not work nicely with the `addChildAt()` function,\n * as the `zIndex` sorting may cause the child to automatically sorted to another position.\n * @type {boolean}\n * @memberof scene.Container#\n */\n sortableChildren: false,\n\n /**\n * The zIndex of the container.\n *\n * Setting this value, will automatically set the parent to be sortable. Children will be automatically\n * sorted by zIndex value; a higher value will mean it will be moved towards the end of the array,\n * and thus rendered on top of other display objects within the same container.\n * @see scene.Container#sortableChildren\n * @memberof scene.Container#\n */\n get zIndex()\n {\n return this._zIndex;\n },\n\n set zIndex(value: number)\n {\n if (this._zIndex === value) return;\n\n this._zIndex = value;\n\n this.depthOfChildModified();\n },\n\n depthOfChildModified()\n {\n if (this.parent)\n {\n this.parent.sortableChildren = true;\n this.parent.sortDirty = true;\n }\n\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n },\n\n /**\n * Sorts children by zIndex.\n * @memberof scene.Container#\n */\n sortChildren()\n {\n if (!this.sortDirty) return;\n\n this.sortDirty = false;\n\n this.children.sort(sortChildren);\n },\n} as Container;\n\nfunction sortChildren(a: Container, b: Container): number\n{\n return a._zIndex - b._zIndex;\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { Point } from '../../../maths/point/Point';\nimport { updateTransformBackwards } from '../bounds/getGlobalBounds';\n\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Container } from '../Container';\n\nexport interface ToLocalGlobalMixin\n{\n getGlobalPosition(point?: Point, skipUpdate?: boolean): Point;\n toGlobal

(position: PointData, point?: P, skipUpdate?: boolean): P;\n toLocal

(position: PointData, from?: Container, point?: P, skipUpdate?: boolean): P;\n}\n\nexport const toLocalGlobalMixin: Partial = {\n /**\n * Returns the global position of the container.\n * @param point - The optional point to write the global value to.\n * @param skipUpdate - Should we skip the update transform.\n * @returns - The updated point.\n * @memberof scene.Container#\n */\n getGlobalPosition(point: Point = new Point(), skipUpdate = false): Point\n {\n if (this.parent)\n {\n this.parent.toGlobal(this._position, point, skipUpdate);\n }\n else\n {\n point.x = this._position.x;\n point.y = this._position.y;\n }\n\n return point;\n },\n\n /**\n * Calculates the global position of the container.\n * @param position - The world origin to calculate from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform.\n * @returns - A point object representing the position of this object.\n * @memberof scene.Container#\n */\n toGlobal

(position: PointData, point?: P, skipUpdate = false): P\n {\n if (!skipUpdate)\n {\n this.updateLocalTransform();\n\n const globalMatrix = updateTransformBackwards(this, new Matrix());\n\n globalMatrix.append(this.localTransform);\n\n return globalMatrix.apply

(position, point);\n }\n\n // simply apply the matrix..\n return this.worldTransform.apply

(position, point);\n },\n\n /**\n * Calculates the local position of the container relative to another point.\n * @param position - The world origin to calculate from.\n * @param from - The Container to calculate the global position from.\n * @param point - A Point object in which to store the value, optional\n * (otherwise will create a new Point).\n * @param skipUpdate - Should we skip the update transform\n * @returns - A point object representing the position of this object\n * @memberof scene.Container#\n */\n toLocal

(position: PointData, from?: Container, point?: P, skipUpdate?: boolean): P\n {\n if (from)\n {\n position = from.toGlobal(position, point, skipUpdate);\n }\n\n if (!skipUpdate)\n {\n this.updateLocalTransform();\n\n const globalMatrix = updateTransformBackwards(this, new Matrix());\n\n globalMatrix.append(this.localTransform);\n\n return globalMatrix.applyInverse

(position, point);\n }\n\n // simply apply the matrix..\n return this.worldTransform.applyInverse

(position, point);\n }\n} as Container;\n","import { uid } from '../../../../utils/data/uid';\n\nimport type { Instruction } from './Instruction';\n\n/**\n * A set of instructions that can be executed by the renderer.\n * Basically wraps an array, but with some extra properties that help the renderer\n * to keep things nice and optimised.\n *\n * Note:\n * InstructionSet.instructions contains all the instructions, but does not resize (for performance).\n * So for the true length of the instructions you need to use InstructionSet.instructionSize\n * @memberof rendering\n */\nexport class InstructionSet\n{\n /** a unique id for this instruction set used through the renderer */\n public readonly uid = uid('instructionSet');\n /** the array of instructions */\n public readonly instructions: Instruction[] = [];\n /** the actual size of the array (any instructions passed this should be ignored) */\n public instructionSize = 0;\n /** allows for access to the render pipes of the renderer */\n public renderPipes: any;\n\n /** reset the instruction set so it can be reused set size back to 0 */\n public reset()\n {\n this.instructionSize = 0;\n }\n\n /**\n * Add an instruction to the set\n * @param instruction - add an instruction to the set\n */\n public add(instruction: Instruction)\n {\n this.instructions[this.instructionSize++] = instruction;\n }\n\n /**\n * Log the instructions to the console (for debugging)\n * @internal\n * @ignore\n */\n public log()\n {\n this.instructions.length = this.instructionSize;\n // eslint-disable-next-line no-console\n console.table(this.instructions, ['type', 'action']);\n }\n}\n","import { Matrix } from '../../maths/matrix/Matrix';\nimport { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\n\nimport type { Instruction } from '../../rendering/renderers/shared/instructions/Instruction';\nimport type { Container } from './Container';\n\n/**\n * The render group is the base class for all render groups\n * It is used to render a group of containers together\n * @memberof rendering\n */\nexport class RenderGroup implements Instruction\n{\n public renderPipeId = 'renderGroup';\n public root: Container = null;\n\n public canBundle = false;\n\n public renderGroupParent: RenderGroup = null;\n public renderGroupChildren: RenderGroup[] = [];\n\n private readonly _children: Container[] = [];\n\n public worldTransform: Matrix = new Matrix();\n public worldColorAlpha = 0xffffffff;\n public worldColor = 0xffffff;\n public worldAlpha = 1;\n\n // these updates are transform changes..\n public readonly childrenToUpdate: Record = Object.create(null);\n public updateTick = 0;\n\n // these update are renderable changes..\n public readonly childrenRenderablesToUpdate: { list: Container[]; index: number; } = { list: [], index: 0 };\n\n // other\n public structureDidChange = true;\n\n public instructionSet: InstructionSet = new InstructionSet();\n\n private readonly _onRenderContainers: Container[] = [];\n\n constructor(root: Container)\n {\n this.root = root;\n\n this.addChild(root);\n }\n\n get localTransform()\n {\n return this.root.localTransform;\n }\n\n public addRenderGroupChild(renderGroupChild: RenderGroup)\n {\n if (renderGroupChild.renderGroupParent)\n {\n renderGroupChild.renderGroupParent._removeRenderGroupChild(renderGroupChild);\n }\n\n renderGroupChild.renderGroupParent = this;\n\n this.onChildUpdate(renderGroupChild.root);\n\n this.renderGroupChildren.push(renderGroupChild);\n }\n\n private _removeRenderGroupChild(renderGroupChild: RenderGroup)\n {\n if (renderGroupChild.root.didChange)\n {\n this._removeChildFromUpdate(renderGroupChild.root);\n }\n\n const index = this.renderGroupChildren.indexOf(renderGroupChild);\n\n if (index > -1)\n {\n this.renderGroupChildren.splice(index, 1);\n }\n\n renderGroupChild.renderGroupParent = null;\n }\n\n public addChild(child: Container)\n {\n this.structureDidChange = true;\n\n // TODO this can be optimized..\n if (child !== this.root)\n {\n this._children.push(child);\n\n child.updateTick = -1;\n\n if (child.parent === this.root)\n {\n child.relativeRenderGroupDepth = 1;\n }\n\n else\n {\n child.relativeRenderGroupDepth = child.parent.relativeRenderGroupDepth + 1;\n }\n }\n\n if (child.renderGroup)\n {\n if (child.renderGroup.root === child)\n {\n // its already its own render group..\n this.addRenderGroupChild(child.renderGroup);\n\n return;\n }\n }\n else\n {\n child.renderGroup = this;\n child.didChange = true;\n }\n\n if (child._onRender)\n {\n // Add the child to the onRender list under the following conditions:\n // 1. If the child is not a render group.\n // 2. If the child is a render group root of this render group\n\n if (!child.isRenderGroupRoot)\n {\n this.addOnRender(child);\n }\n else if (child.renderGroup.root === child)\n {\n this.addOnRender(child);\n }\n }\n\n const children = child.children;\n\n if (!child.isRenderGroupRoot)\n {\n this.onChildUpdate(child);\n }\n\n for (let i = 0; i < children.length; i++)\n {\n this.addChild(children[i]);\n }\n }\n\n public removeChild(child: Container)\n {\n // remove all the children...\n this.structureDidChange = true;\n\n if (child._onRender)\n {\n // Remove the child to the onRender list under the following conditions:\n // 1. If the child is not a render group.\n // 2. If the child is a render group root of this render group\n\n if (!child.isRenderGroupRoot)\n {\n this.removeOnRender(child);\n }\n else if (child.renderGroup.root === child)\n {\n this.removeOnRender(child);\n }\n }\n\n if (child.renderGroup.root !== child)\n {\n const children = child.children;\n\n for (let i = 0; i < children.length; i++)\n {\n this.removeChild(children[i]);\n }\n\n if (child.didChange)\n {\n child.renderGroup._removeChildFromUpdate(child);\n }\n\n child.renderGroup = null;\n }\n\n else\n {\n this._removeRenderGroupChild(child.renderGroup);\n }\n\n const index = this._children.indexOf(child);\n\n if (index > -1)\n {\n this._children.splice(index, 1);\n }\n }\n\n public onChildUpdate(child: Container)\n {\n let childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth];\n\n if (!childrenToUpdate)\n {\n childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth] = {\n index: 0,\n list: [],\n };\n }\n\n childrenToUpdate.list[childrenToUpdate.index++] = child;\n }\n\n // SHOULD THIS BE HERE?\n public updateRenderable(container: Container)\n {\n // only update if its visible!\n if (container.globalDisplayStatus < 0b111) return;\n\n container.didViewUpdate = false;\n // actually updates the renderable..\n this.instructionSet.renderPipes[container.renderPipeId].updateRenderable(container);\n }\n\n public onChildViewUpdate(child: Container)\n {\n this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++] = child;\n }\n\n private _removeChildFromUpdate(child: Container)\n {\n const childrenToUpdate = this.childrenToUpdate[child.relativeRenderGroupDepth];\n\n if (!childrenToUpdate)\n { return; }\n\n const index = childrenToUpdate.list.indexOf(child);\n\n // TODO this should be optimized - don't really want to change array size on the fly if we can avoid!\n if (index > -1)\n {\n childrenToUpdate.list.splice(index, 1);\n }\n\n childrenToUpdate.index--;\n }\n\n get isRenderable(): boolean\n {\n return (this.root.localDisplayStatus === 0b111 && this.worldAlpha > 0);\n }\n\n /**\n * adding a container to the onRender list will make sure the user function\n * passed in to the user defined 'onRender` callBack\n * @param container - the container to add to the onRender list\n */\n public addOnRender(container: Container)\n {\n this._onRenderContainers.push(container);\n }\n\n public removeOnRender(container: Container)\n {\n this._onRenderContainers.splice(this._onRenderContainers.indexOf(container), 1);\n }\n\n public runOnRender()\n {\n for (let i = 0; i < this._onRenderContainers.length; i++)\n {\n this._onRenderContainers[i]._onRender();\n }\n }\n}\n","/**\n * Assigns properties from one object to another, using an optional array of property names to ignore.\n * @param target - The target object to assign properties to.\n * @param options - The object to assign properties from.\n * @param ignore - An object of property names to ignore ({ propToIgnore: true }).\n */\nexport function assignWithIgnore>(\n target: T,\n options: T,\n ignore: Record = {}\n)\n{\n for (const key in options)\n {\n if (!ignore[key] && options[key] !== undefined)\n {\n target[key] = options[key];\n }\n }\n}\n","import EventEmitter from 'eventemitter3';\nimport { Color, type ColorSource } from '../../color/Color';\nimport { cullingMixin } from '../../culling/cullingMixin';\nimport { Matrix } from '../../maths/matrix/Matrix';\nimport { DEG_TO_RAD, RAD_TO_DEG } from '../../maths/misc/const';\nimport { ObservablePoint } from '../../maths/point/ObservablePoint';\nimport { uid } from '../../utils/data/uid';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { childrenHelperMixin } from './container-mixins/childrenHelperMixin';\nimport { effectsMixin } from './container-mixins/effectsMixin';\nimport { findMixin } from './container-mixins/findMixin';\nimport { measureMixin } from './container-mixins/measureMixin';\nimport { onRenderMixin } from './container-mixins/onRenderMixin';\nimport { sortMixin } from './container-mixins/sortMixin';\nimport { toLocalGlobalMixin } from './container-mixins/toLocalGlobalMixin';\nimport { RenderGroup } from './RenderGroup';\nimport { assignWithIgnore } from './utils/assignWithIgnore';\n\nimport type { Size } from '../../maths/misc/Size';\nimport type { PointData } from '../../maths/point/PointData';\nimport type { Rectangle } from '../../maths/shapes/Rectangle';\nimport type { BLEND_MODES } from '../../rendering/renderers/shared/state/const';\nimport type { Dict } from '../../utils/types';\nimport type { Optional } from './container-mixins/measureMixin';\nimport type { DestroyOptions } from './destroyTypes';\n\nexport type ContainerChild = Container;\n\n/**\n * This is where you'll find all the display objects available in Pixi.\n *\n * All display objects inherit from the {@link scene.Container} class. You can use a `Container` for simple grouping of\n * other display objects. Here's all the available display object classes.\n *\n * - {@link scene.Container} is the base class for all display objects that act as a container for other objects.\n * - {@link scene.Sprite} is a display object that uses a texture\n * - {@link scene.AnimatedSprite} is a sprite that can play animations\n * - {@link scene.TilingSprite} a fast way of rendering a tiling image\n * - {@link scene.NineSliceSprite} allows you to stretch a texture using 9-slice scaling\n * - {@link scene.Graphics} is a graphic object that can be drawn to the screen.\n * - {@link scene.Mesh} empowers you to have maximum flexibility to render any kind of visuals you can think of\n * - {@link scene.MeshSimple} mimics Mesh, providing easy-to-use constructor arguments\n * - {@link scene.MeshPlane} allows you to draw a texture across several points and then manipulate these points\n * - {@link scene.MeshRope} allows you to draw a texture across several points and then manipulate these points\n * - {@link scene.Text} render text using custom fonts\n * - {@link scene.BitmapText} render text using a bitmap font\n * - {@link scene.HTMLText} render text using HTML and CSS\n * @namespace scene\n */\n\n// as pivot and skew are the least used properties of a container, we can use this optimisation\n// to avoid allocating lots of unnecessary objects for them.\nconst defaultSkew = new ObservablePoint(null);\nconst defaultPivot = new ObservablePoint(null);\nconst defaultScale = new ObservablePoint(null, 1, 1);\n\nexport interface ContainerEvents extends PixiMixins.ContainerEvents\n{\n added: [container: Container];\n childAdded: [child: C, container: Container, index: number];\n removed: [container: Container];\n childRemoved: [child: C, container: Container, index: number];\n destroyed: [container: Container];\n}\n\ntype AnyEvent = {\n // The following is a hack to allow any custom event while maintaining type safety.\n // For some reason, the tsc compiler gets angry about error TS1023\n // \"An index signature parameter type must be either 'string' or 'number'.\"\n // This is really odd since ({}&string) should interpret as string, but then again\n // there is some black magic behind why this works in the first place.\n // Closest thing to an explanation:\n // https://stackoverflow.com/questions/70144348/why-does-a-union-of-type-literals-and-string-cause-ide-code-completion-wh\n //\n // Side note, we disable @typescript-eslint/ban-types since {}&string is the only syntax that works.\n // Nor of the Record/unknown/never alternatives work.\n // eslint-disable-next-line @typescript-eslint/ban-types\n [K: ({} & string) | ({} & symbol)]: any;\n};\n\nexport const UPDATE_COLOR = 0b0001;\nexport const UPDATE_BLEND = 0b0010;\nexport const UPDATE_VISIBLE = 0b0100;\nexport const UPDATE_TRANSFORM = 0b1000;\n\nexport interface UpdateTransformOptions\n{\n x: number;\n y: number;\n scaleX: number;\n scaleY: number;\n rotation: number;\n skewX: number;\n skewY: number;\n pivotX: number;\n pivotY: number;\n}\n\n/**\n * Constructor options used for `Container` instances.\n * ```js\n * const container = new Container({\n * position: new Point(100, 200),\n * scale: new Point(2, 2),\n * rotation: Math.PI / 2,\n * });\n * ```\n * @memberof scene\n * @see scene.Container\n */\nexport interface ContainerOptions extends PixiMixins.ContainerOptions\n{\n /** @see scene.Container#isRenderGroup */\n isRenderGroup?: boolean;\n\n /** @see scene.Container#blendMode */\n blendMode?: BLEND_MODES;\n /** @see scene.Container#tint */\n tint?: ColorSource;\n\n /** @see scene.Container#alpha */\n alpha?: number;\n /** @see scene.Container#angle */\n angle?: number;\n /** @see scene.Container#children */\n children?: C[];\n /** @see scene.Container#parent */\n parent?: Container;\n /** @see scene.Container#renderable */\n renderable?: boolean;\n /** @see scene.Container#rotation */\n rotation?: number;\n /** @see scene.Container#scale */\n scale?: PointData | number;\n /** @see scene.Container#pivot */\n pivot?: PointData | number;\n /** @see scene.Container#position */\n position?: PointData;\n /** @see scene.Container#skew */\n skew?: PointData;\n /** @see scene.Container#visible */\n visible?: boolean;\n /** @see scene.Container#culled */\n culled?: boolean;\n /** @see scene.Container#x */\n x?: number;\n /** @see scene.Container#y */\n y?: number;\n /** @see scene.Container#boundArea */\n boundsArea?: Rectangle;\n}\n\nexport interface Container\n extends Omit, keyof EventEmitter & AnyEvent>>,\n EventEmitter & AnyEvent> { }\n\n/**\n * Container is a general-purpose display object that holds children. It also adds built-in support for advanced\n * rendering features like masking and filtering.\n *\n * It is the base class of all display objects that act as a container for other objects, including Graphics\n * and Sprite.\n *\n *

\n *\n * Transforms\n *\n * The [transform]{@link scene.Container#transform} of a display object describes the projection from its\n * local coordinate space to its parent's local coordinate space. The following properties are derived\n * from the transform:\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 *
PropertyDescription
[pivot]{@link scene.Container#pivot}\n * Invariant under rotation, scaling, and skewing. The projection of into the parent's space of the pivot\n * is equal to position, regardless of the other three transformations. In other words, It is the center of\n * rotation, scaling, and skewing.\n *
[position]{@link scene.Container#position}\n * Translation. This is the position of the [pivot]{@link scene.Container#pivot} in the parent's local\n * space. The default value of the pivot is the origin (0,0). If the top-left corner of your display object\n * is (0,0) in its local space, then the position will be its top-left corner in the parent's local space.\n *
[scale]{@link scene.Container#scale}\n * Scaling. This will stretch (or compress) the display object's projection. The scale factors are along the\n * local coordinate axes. In other words, the display object is scaled before rotated or skewed. The center\n * of scaling is the [pivot]{@link scene.Container#pivot}.\n *
[rotation]{@link scene.Container#rotation}\n * Rotation. This will rotate the display object's projection by this angle (in radians).\n *
[skew]{@link scene.Container#skew}\n *

Skewing. This can be used to deform a rectangular display object into a parallelogram.

\n *

\n * In PixiJS, skew has a slightly different behaviour than the conventional meaning. It can be\n * thought of the net rotation applied to the coordinate axes (separately). For example, if \"skew.x\" is\n * ⍺ and \"skew.y\" is β, then the line x = 0 will be rotated by ⍺ (y = -x*cot⍺) and the line y = 0 will be\n * rotated by β (y = x*tanβ). A line y = x*tanϴ (i.e. a line at angle ϴ to the x-axis in local-space) will\n * be rotated by an angle between ⍺ and β.\n *

\n *

\n * It can be observed that if skew is applied equally to both axes, then it will be equivalent to applying\n * a rotation. Indeed, if \"skew.x\" = -ϴ and \"skew.y\" = ϴ, it will produce an equivalent of \"rotation\" = ϴ.\n *

\n *

\n * Another quite interesting observation is that \"skew.x\", \"skew.y\", rotation are commutative operations. Indeed,\n * because rotation is essentially a careful combination of the two.\n *

\n *
[angle]{@link scene.Container#angle}Rotation. This is an alias for [rotation]{@link scene.Container#rotation}, but in degrees.
[x]{@link scene.Container#x}Translation. This is an alias for position.x!
[y]{@link scene.Container#y}Translation. This is an alias for position.y!
[width]{@link scene.Container#width}\n * Implemented in [Container]{@link scene.Container}. Scaling. The width property calculates scale.x by dividing\n * the \"requested\" width by the local bounding box width. It is indirectly an abstraction over scale.x, and there\n * is no concept of user-defined width.\n *
[height]{@link scene.Container#height}\n * Implemented in [Container]{@link scene.Container}. Scaling. The height property calculates scale.y by dividing\n * the \"requested\" height by the local bounding box height. It is indirectly an abstraction over scale.y, and there\n * is no concept of user-defined height.\n *
\n *
\n *\n *
\n * Alpha\n *\n * This alpha sets a display object's **relative opacity** w.r.t its parent. For example, if the alpha of a display\n * object is 0.5 and its parent's alpha is 0.5, then it will be rendered with 25% opacity (assuming alpha is not\n * applied on any ancestor further up the chain).\n *
\n *\n *
\n * Renderable vs Visible\n *\n * The `renderable` and `visible` properties can be used to prevent a display object from being rendered to the\n * screen. However, there is a subtle difference between the two. When using `renderable`, the transforms of the display\n * object (and its children subtree) will continue to be calculated. When using `visible`, the transforms will not\n * be calculated.\n * ```ts\n * import { BlurFilter, Container, Graphics, Sprite } from 'pixi.js';\n *\n * const container = new Container();\n * const sprite = Sprite.from('https://s3-us-west-2.amazonaws.com/s.cdpn.io/693612/IaUrttj.png');\n *\n * sprite.width = 512;\n * sprite.height = 512;\n *\n * // Adds a sprite as a child to this container. As a result, the sprite will be rendered whenever the container\n * // is rendered.\n * container.addChild(sprite);\n *\n * // Blurs whatever is rendered by the container\n * container.filters = [new BlurFilter()];\n *\n * // Only the contents within a circle at the center should be rendered onto the screen.\n * container.mask = new Graphics()\n * .beginFill(0xffffff)\n * .drawCircle(sprite.width / 2, sprite.height / 2, Math.min(sprite.width, sprite.height) / 2)\n * .endFill();\n * ```\n *\n *
\n *\n *
\n * RenderGroup\n *\n * In PixiJS v8, containers can be set to operate in 'render group mode',\n * transforming them into entities akin to a stage in traditional rendering paradigms.\n * A render group is a root renderable entity, similar to a container,\n * but it's rendered in a separate pass with its own unique set of rendering instructions.\n * This approach enhances rendering efficiency and organization, particularly in complex scenes.\n *\n * You can enable render group mode on any container using container.enableRenderGroup()\n * or by initializing a new container with the render group property set to true (new Container({isRenderGroup: true})).\n * The method you choose depends on your specific use case and setup requirements.\n *\n * An important aspect of PixiJS’s rendering process is the automatic treatment of rendered scenes as render groups.\n * This conversion streamlines the rendering process, but understanding when and how this happens is crucial\n * to fully leverage its benefits.\n *\n * One of the key advantages of using render groups is the performance efficiency in moving them. Since transformations\n * are applied at the GPU level, moving a render group, even one with complex and numerous children,\n * doesn't require recalculating the rendering instructions or performing transformations on each child.\n * This makes operations like panning a large game world incredibly efficient.\n *\n * However, it's crucial to note that render groups do not batch together.\n * This means that turning every container into a render group could actually slow things down,\n * as each render group is processed separately. It's best to use render groups judiciously, at a broader level,\n * rather than on a per-child basis.\n * This approach ensures you get the performance benefits without overburdening the rendering process.\n *\n * RenderGroups maintain their own set of rendering instructions,\n * ensuring that changes or updates within a render group don't affect the rendering\n * instructions of its parent or other render groups.\n * This isolation ensures more stable and predictable rendering behavior.\n *\n * Additionally, renderGroups can be nested, allowing for powerful options in organizing different aspects of your scene.\n * This feature is particularly beneficial for separating complex game graphics from UI elements,\n * enabling intricate and efficient scene management in complex applications.\n *\n * This means that Containers have 3 levels of matrix to be mindful of:\n *\n * 1. localTransform, this is the transform of the container based on its own properties\n * 2. groupTransform, this it the transform of the container relative to the renderGroup it belongs too\n * 3. worldTransform, this is the transform of the container relative to the Scene being rendered\n *
\n * @memberof scene\n */\nexport class Container extends EventEmitter & AnyEvent>\n{\n /**\n * Mixes all enumerable properties and methods from a source object to Container.\n * @param source - The source of properties and methods to mix in.\n */\n public static mixin(source: Dict): void\n {\n Object.defineProperties(Container.prototype, Object.getOwnPropertyDescriptors(source));\n }\n\n /** @private */\n public uid: number = uid('renderable');\n\n /** @private */\n public _updateFlags = 0b1111;\n\n // is this container the root of a renderGroup?\n // TODO implement this in a few more places\n /** @private */\n public isRenderGroupRoot = false;\n // the render group this container belongs to OR owns\n /** @private */\n public renderGroup: RenderGroup = null;\n\n // set to true if the container has changed. It is reset once the changes have been applied\n // by the transform system\n // its here to stop ensure that when things change, only one update gets registers with the transform system\n /** @private */\n public didChange = false;\n // same as above, but for the renderable\n /** @private */\n public didViewUpdate = false;\n // how deep is the container relative to its render group..\n // unless the element is the root render group - it will be relative to its parent\n /** @private */\n public relativeRenderGroupDepth = 0;\n\n /**\n * The array of children of this container.\n * @readonly\n */\n public children: C[] = [];\n /** The display object container that contains this display object. */\n public parent: Container = null;\n\n // used internally for changing up the render order.. mainly for masks and filters\n // TODO setting this should cause a rebuild??\n /** @private */\n public includeInBuild = true;\n /** @private */\n public measurable = true;\n /** @private */\n public isSimple = true;\n\n // / /////////////Transform related props//////////////\n\n // used by the transform system to check if a container needs to be updated that frame\n // if the tick matches the current transform system tick, it is not updated again\n /**\n * @internal\n * @ignore\n */\n public updateTick = -1;\n\n /**\n * Current transform of the object based on local factors: position, scale, other stuff.\n * @readonly\n */\n public localTransform: Matrix = new Matrix();\n /**\n * The relative group transform is a transform relative to the render group it belongs too. It will include all parent\n * transforms and up to the render group (think of it as kind of like a stage - but the stage can be nested).\n * If this container is is self a render group matrix will be relative to its parent render group\n * @readonly\n */\n public relativeGroupTransform: Matrix = new Matrix();\n /**\n * The group transform is a transform relative to the render group it belongs too.\n * If this container is render group then this will be an identity matrix. other wise it\n * will be the same as the relativeGroupTransform.\n * Use this value when actually rendering things to the screen\n * @readonly\n */\n public groupTransform: Matrix = this.relativeGroupTransform;\n\n // the global transform taking into account the render group and all parents\n private _worldTransform: Matrix;\n\n /** If the object has been destroyed via destroy(). If true, it should not be used. */\n public destroyed = false;\n\n // transform data..\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n * @internal\n * @ignore\n */\n public _position: ObservablePoint = new ObservablePoint(this, 0, 0);\n\n /**\n * The scale factor of the object.\n * @internal\n * @ignore\n */\n public _scale: ObservablePoint = defaultScale;\n\n /**\n * The pivot point of the container that it rotates around.\n * @internal\n * @ignore\n */\n public _pivot: ObservablePoint = defaultPivot;\n\n /**\n * The skew amount, on the x and y axis.\n * @internal\n * @ignore\n */\n public _skew: ObservablePoint = defaultSkew;\n\n /**\n * The X-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n public _cx = 1;\n\n /**\n * The Y-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n public _sx = 0;\n\n /**\n * The X-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n public _cy = 0;\n\n /**\n * The Y-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n * @internal\n * @ignore\n */\n public _sy = 1;\n\n /**\n * The rotation amount.\n * @internal\n * @ignore\n */\n private _rotation = 0;\n\n // / COLOR related props //////////////\n\n // color stored as ABGR\n public localColor = 0xFFFFFF;\n public localAlpha = 1;\n\n public groupAlpha = 1; // A\n public groupColor = 0xFFFFFF; // BGR\n public groupColorAlpha = 0xFFFFFFFF; // ABGR\n\n // / BLEND related props //////////////\n\n /**\n * @internal\n * @ignore\n */\n public localBlendMode: BLEND_MODES = 'inherit';\n /**\n * @internal\n * @ignore\n */\n public groupBlendMode: BLEND_MODES = 'normal';\n\n // / VISIBILITY related props //////////////\n\n // visibility\n // 0b11\n // first bit is visible, second bit is renderable\n /**\n * This property holds three bits: culled, visible, renderable\n * the third bit represents culling (0 = culled, 1 = not culled) 0b100\n * the second bit represents visibility (0 = not visible, 1 = visible) 0b010\n * the first bit represents renderable (0 = renderable, 1 = not renderable) 0b001\n * @internal\n * @ignore\n */\n public localDisplayStatus = 0b111; // 0b11 | 0b10 | 0b01 | 0b00\n /**\n * @internal\n * @ignore\n */\n public globalDisplayStatus = 0b111; // 0b11 | 0b10 | 0b01 | 0b00\n\n public renderPipeId: string;\n\n /**\n * An optional bounds area for this container. Setting this rectangle will stop the renderer\n * from recursively measuring the bounds of each children and instead use this single boundArea.\n * This is great for optimisation! If for example you have a 1000 spinning particles and you know they all sit\n * within a specific bounds, then setting it will mean the renderer will not need to measure the\n * 1000 children to find the bounds. Instead it will just use the bounds you set.\n */\n public boundsArea: Rectangle;\n\n /**\n * A value that increments each time the container is modified\n * the first 12 bits represent the container changes (eg transform, alpha, visible etc)\n * the second 12 bits represent:\n * - for view changes (eg texture swap, geometry change etc)\n * - containers changes (eg children added, removed etc)\n *\n * view container\n * [000000000000][00000000000]\n * @ignore\n */\n public _didChangeId = 0;\n /**\n * property that tracks if the container transform has changed\n * @ignore\n */\n private _didLocalTransformChangeId = -1;\n\n constructor(options: ContainerOptions = {})\n {\n super();\n\n assignWithIgnore(this, options, {\n children: true,\n parent: true,\n effects: true,\n });\n\n options.children?.forEach((child) => this.addChild(child));\n this.effects = [];\n options.parent?.addChild(this);\n }\n\n /**\n * Adds one or more children to the container.\n *\n * Multiple items can be added like so: `myContainer.addChild(thingOne, thingTwo, thingThree)`\n * @param {...Container} children - The Container(s) to add to the container\n * @returns {Container} - The first child that was added.\n */\n public addChild(...children: U): U[0]\n {\n // #if _DEBUG\n if (!this.allowChildren)\n {\n deprecation(v8_0_0, 'addChild: Only Containers will be allowed to add children in v8.0.0');\n }\n // #endif\n\n if (children.length > 1)\n {\n // loop through the array and add all children\n for (let i = 0; i < children.length; i++)\n {\n this.addChild(children[i]);\n }\n\n return children[0];\n }\n\n const child = children[0];\n\n if (child.parent === this)\n {\n this.children.splice(this.children.indexOf(child), 1);\n this.children.push(child);\n\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n return child;\n }\n\n if (child.parent)\n {\n // TODO Optimisation...if the parent has the same render group, this does not need to change!\n child.parent.removeChild(child);\n }\n\n this.children.push(child);\n\n if (this.sortableChildren) this.sortDirty = true;\n\n child.parent = this;\n\n child.didChange = true;\n child.didViewUpdate = false;\n\n // TODO - OPtimise this? could check what the parent has set?\n child._updateFlags = 0b1111;\n\n if (this.renderGroup)\n {\n this.renderGroup.addChild(child);\n }\n\n this.emit('childAdded', child, this, this.children.length - 1);\n child.emit('added', this);\n\n this._didChangeId += 1 << 12;\n\n if (child._zIndex !== 0)\n {\n child.depthOfChildModified();\n }\n\n return child;\n }\n\n /**\n * Removes one or more children from the container.\n * @param {...Container} children - The Container(s) to remove\n * @returns {Container} The first child that was removed.\n */\n public removeChild(...children: U): U[0]\n {\n // if there is only one argument we can bypass looping through the them\n if (children.length > 1)\n {\n // loop through the arguments property and remove all children\n for (let i = 0; i < children.length; i++)\n {\n this.removeChild(children[i]);\n }\n\n return children[0];\n }\n\n const child = children[0];\n\n const index = this.children.indexOf(child);\n\n if (index > -1)\n {\n this._didChangeId += 1 << 12;\n\n this.children.splice(index, 1);\n\n if (this.renderGroup)\n {\n this.renderGroup.removeChild(child);\n }\n\n child.parent = null;\n this.emit('childRemoved', child, this, index);\n child.emit('removed', this);\n }\n\n return child;\n }\n\n /** @ignore */\n public _onUpdate(point?: ObservablePoint)\n {\n if (point)\n {\n // this.updateFlags |= UPDATE_TRANSFORM;\n\n if (point === this._skew)\n {\n this._updateSkew();\n }\n }\n\n this._didChangeId++;\n\n if (this.didChange) return;\n this.didChange = true;\n\n if (this.isRenderGroupRoot)\n {\n const renderGroupParent = this.renderGroup.renderGroupParent;\n // lets update its parent..\n\n if (renderGroupParent)\n {\n renderGroupParent.onChildUpdate(this);\n }\n }\n else if (this.renderGroup)\n {\n this.renderGroup.onChildUpdate(this);\n }\n }\n\n set isRenderGroup(value: boolean)\n {\n if (this.isRenderGroupRoot && value === false)\n {\n throw new Error('[Pixi] cannot undo a render group just yet');\n }\n\n if (value)\n {\n this.enableRenderGroup();\n }\n }\n\n /**\n * Returns true if this container is a render group.\n * This means that it will be rendered as a separate pass, with its own set of instructions\n */\n get isRenderGroup(): boolean\n {\n return this.isRenderGroupRoot;\n }\n\n /** This enables the container to be rendered as a render group. */\n public enableRenderGroup()\n {\n // does it OWN the render group..\n if (this.renderGroup && this.renderGroup.root === this) return;\n\n this.isRenderGroupRoot = true;\n\n const parentRenderGroup = this.renderGroup;\n\n if (parentRenderGroup)\n {\n parentRenderGroup.removeChild(this);\n }\n\n this.renderGroup = new RenderGroup(this);\n\n // find children render groups and move them out..\n if (parentRenderGroup)\n {\n for (let i = 0; i < parentRenderGroup.renderGroupChildren.length; i++)\n {\n const childRenderGroup = parentRenderGroup.renderGroupChildren[i];\n let parent = childRenderGroup.root;\n\n while (parent)\n {\n if (parent === this)\n {\n this.renderGroup.addRenderGroupChild(childRenderGroup);\n\n break;\n }\n parent = parent.parent;\n }\n }\n\n parentRenderGroup.addRenderGroupChild(this.renderGroup);\n }\n\n this._updateIsSimple();\n\n // this group matrix will now forever be an identity matrix,\n // as its own transform will be passed to the GPU\n this.groupTransform = Matrix.IDENTITY;\n }\n\n /** @ignore */\n public _updateIsSimple()\n {\n this.isSimple = !(this.isRenderGroupRoot) && (this.effects.length === 0);\n }\n\n /**\n * Current transform of the object based on world (parent) factors.\n * @readonly\n */\n get worldTransform()\n {\n this._worldTransform ||= new Matrix();\n\n if (this.renderGroup)\n {\n if (this.isRenderGroupRoot)\n {\n this._worldTransform.copyFrom(this.renderGroup.worldTransform);\n }\n else\n {\n this._worldTransform.appendFrom(this.relativeGroupTransform, this.renderGroup.worldTransform);\n }\n }\n\n return this._worldTransform;\n }\n\n // / ////// transform related stuff\n\n /**\n * The position of the container on the x axis relative to the local coordinates of the parent.\n * An alias to position.x\n */\n get x(): number\n {\n return this._position.x;\n }\n\n set x(value: number)\n {\n this._position.x = value;\n }\n\n /**\n * The position of the container on the y axis relative to the local coordinates of the parent.\n * An alias to position.y\n */\n get y(): number\n {\n return this._position.y;\n }\n\n set y(value: number)\n {\n this._position.y = value;\n }\n\n /**\n * The coordinate of the object relative to the local coordinates of the parent.\n * @since 4.0.0\n */\n get position(): ObservablePoint\n {\n return this._position;\n }\n\n set position(value: PointData)\n {\n this._position.copyFrom(value);\n }\n\n /**\n * The rotation of the object in radians.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get rotation(): number\n {\n return this._rotation;\n }\n\n set rotation(value: number)\n {\n if (this._rotation !== value)\n {\n this._rotation = value;\n this._onUpdate(this._skew);\n }\n }\n\n /**\n * The angle of the object in degrees.\n * 'rotation' and 'angle' have the same effect on a display object; rotation is in radians, angle is in degrees.\n */\n get angle(): number\n {\n return this.rotation * RAD_TO_DEG;\n }\n\n set angle(value: number)\n {\n this.rotation = value * DEG_TO_RAD;\n }\n\n /**\n * The center of rotation, scaling, and skewing for this display object in its local space. The `position`\n * is the projection of `pivot` in the parent's local space.\n *\n * By default, the pivot is the origin (0, 0).\n * @since 4.0.0\n */\n get pivot(): ObservablePoint\n {\n if (this._pivot === defaultPivot)\n {\n this._pivot = new ObservablePoint(this, 0, 0);\n }\n\n return this._pivot;\n }\n\n set pivot(value: PointData | number)\n {\n if (this._pivot === defaultPivot)\n {\n this._pivot = new ObservablePoint(this, 0, 0);\n }\n\n typeof value === 'number' ? this._pivot.set(value) : this._pivot.copyFrom(value);\n }\n\n /**\n * The skew factor for the object in radians.\n * @since 4.0.0\n */\n get skew(): ObservablePoint\n {\n if (this._skew === defaultSkew)\n {\n this._skew = new ObservablePoint(this, 0, 0);\n }\n\n return this._skew;\n }\n\n set skew(value: PointData)\n {\n if (this._skew === defaultSkew)\n {\n this._skew = new ObservablePoint(this, 0, 0);\n }\n\n this._skew.copyFrom(value);\n }\n\n /**\n * The scale factors of this object along the local coordinate axes.\n *\n * The default scale is (1, 1).\n * @since 4.0.0\n */\n get scale(): ObservablePoint\n {\n if (this._scale === defaultScale)\n {\n this._scale = new ObservablePoint(this, 1, 1);\n }\n\n return this._scale;\n }\n\n set scale(value: PointData | number)\n {\n if (this._scale === defaultScale)\n {\n this._scale = new ObservablePoint(this, 0, 0);\n }\n\n typeof value === 'number' ? this._scale.set(value) : this._scale.copyFrom(value);\n }\n\n /**\n * The width of the Container, setting this will actually modify the scale to achieve the value set.\n * @memberof scene.Container#\n */\n get width(): number\n {\n return Math.abs(this.scale.x * this.getLocalBounds().width);\n }\n\n set width(value: number)\n {\n const localWidth = this.getLocalBounds().width;\n\n this._setWidth(value, localWidth);\n }\n\n /**\n * The height of the Container, setting this will actually modify the scale to achieve the value set.\n * @memberof scene.Container#\n */\n get height(): number\n {\n return Math.abs(this.scale.y * this.getLocalBounds().height);\n }\n\n set height(value: number)\n {\n const localHeight = this.getLocalBounds().height;\n\n this._setHeight(value, localHeight);\n }\n\n /**\n * Retrieves the size of the container as a [Size]{@link Size} object.\n * This is faster than get the width and height separately.\n * @param out - Optional object to store the size in.\n * @returns - The size of the container.\n * @memberof scene.Container#\n */\n public getSize(out?: Size): Size\n {\n if (!out)\n {\n out = {} as Size;\n }\n\n const bounds = this.getLocalBounds();\n\n out.width = Math.abs(this.scale.x * bounds.width);\n out.height = Math.abs(this.scale.y * bounds.height);\n\n return out;\n }\n\n /**\n * Sets the size of the container to the specified width and height.\n * This is faster than setting the width and height separately.\n * @param value - This can be either a number or a [Size]{@link Size} object.\n * @param height - The height to set. Defaults to the value of `width` if not provided.\n * @memberof scene.Container#\n */\n public setSize(value: number | Optional, height?: number)\n {\n const size = this.getLocalBounds();\n let convertedWidth: number;\n let convertedHeight: number;\n\n if (typeof value !== 'object')\n {\n convertedWidth = value;\n convertedHeight = height ?? value;\n }\n else\n {\n convertedWidth = value.width;\n convertedHeight = value.height ?? value.width;\n }\n\n if (convertedWidth !== undefined)\n {\n this._setWidth(convertedWidth, size.width);\n }\n\n if (convertedHeight !== undefined)\n {\n this._setHeight(convertedHeight, size.height);\n }\n }\n\n /** Called when the skew or the rotation changes. */\n private _updateSkew(): void\n {\n const rotation = this._rotation;\n const skew = this._skew;\n\n this._cx = Math.cos(rotation + skew._y);\n this._sx = Math.sin(rotation + skew._y);\n this._cy = -Math.sin(rotation - skew._x); // cos, added PI/2\n this._sy = Math.cos(rotation - skew._x); // sin, added PI/2\n }\n\n /**\n * Updates the transform properties of the container (accepts partial values).\n * @param {object} opts - The options for updating the transform.\n * @param {number} opts.x - The x position of the container.\n * @param {number} opts.y - The y position of the container.\n * @param {number} opts.scaleX - The scale factor on the x-axis.\n * @param {number} opts.scaleY - The scale factor on the y-axis.\n * @param {number} opts.rotation - The rotation of the container, in radians.\n * @param {number} opts.skewX - The skew factor on the x-axis.\n * @param {number} opts.skewY - The skew factor on the y-axis.\n * @param {number} opts.pivotX - The x coordinate of the pivot point.\n * @param {number} opts.pivotY - The y coordinate of the pivot point.\n */\n public updateTransform(opts: Partial): this\n {\n this.position.set(\n typeof opts.x === 'number' ? opts.x : this.position.x,\n typeof opts.y === 'number' ? opts.y : this.position.y\n );\n this.scale.set(\n typeof opts.scaleX === 'number' ? opts.scaleX || 1 : this.scale.x,\n typeof opts.scaleY === 'number' ? opts.scaleY || 1 : this.scale.y\n );\n this.rotation = typeof opts.rotation === 'number' ? opts.rotation : this.rotation;\n this.skew.set(\n typeof opts.skewX === 'number' ? opts.skewX : this.skew.x,\n typeof opts.skewY === 'number' ? opts.skewY : this.skew.y\n );\n this.pivot.set(\n typeof opts.pivotX === 'number' ? opts.pivotX : this.pivot.x,\n typeof opts.pivotY === 'number' ? opts.pivotY : this.pivot.y\n );\n\n return this;\n }\n\n /**\n * Updates the local transform using the given matrix.\n * @param matrix - The matrix to use for updating the transform.\n */\n public setFromMatrix(matrix: Matrix): void\n {\n matrix.decompose(this);\n }\n\n /** Updates the local transform. */\n public updateLocalTransform(): void\n {\n if ((this._didLocalTransformChangeId & 0b1111) === this._didChangeId) return;\n\n this._didLocalTransformChangeId = this._didChangeId;\n // this.didChange = false;\n\n const lt = this.localTransform;\n const scale = this._scale;\n const pivot = this._pivot;\n const position = this._position;\n\n const sx = scale._x;\n const sy = scale._y;\n\n const px = pivot._x;\n const py = pivot._y;\n\n // get the matrix values of the container based on its this properties..\n lt.a = this._cx * sx;\n lt.b = this._sx * sx;\n lt.c = this._cy * sy;\n lt.d = this._sy * sy;\n\n lt.tx = position._x - ((px * lt.a) + (py * lt.c));\n lt.ty = position._y - ((px * lt.b) + (py * lt.d));\n }\n\n // / ///// color related stuff\n\n set alpha(value: number)\n {\n if (value === this.localAlpha) return;\n\n this.localAlpha = value;\n\n this._updateFlags |= UPDATE_COLOR;\n\n this._onUpdate();\n }\n\n /** The opacity of the object. */\n get alpha(): number\n {\n return this.localAlpha;\n }\n\n set tint(value: ColorSource)\n {\n const tempColor = Color.shared.setValue(value ?? 0xFFFFFF);\n const bgr = tempColor.toBgrNumber();\n\n if (bgr === this.localColor) return;\n\n this.localColor = bgr;\n\n this._updateFlags |= UPDATE_COLOR;\n\n this._onUpdate();\n }\n\n /**\n * The tint applied to the sprite. This is a hex value.\n *\n * A value of 0xFFFFFF will remove any tint effect.\n * @default 0xFFFFFF\n */\n get tint(): number\n {\n const bgr = this.localColor;\n // convert bgr to rgb..\n\n return ((bgr & 0xFF) << 16) + (bgr & 0xFF00) + ((bgr >> 16) & 0xFF);\n }\n\n // / //////////////// blend related stuff\n\n set blendMode(value: BLEND_MODES)\n {\n if (this.localBlendMode === value) return;\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._updateFlags |= UPDATE_BLEND;\n\n this.localBlendMode = value;\n\n this._onUpdate();\n }\n\n /**\n * The blend mode to be applied to the sprite. Apply a value of `'normal'` to reset the blend mode.\n * @default 'normal'\n */\n get blendMode(): BLEND_MODES\n {\n return this.localBlendMode;\n }\n\n // / ///////// VISIBILITY / RENDERABLE /////////////////\n\n /** The visibility of the object. If false the object will not be drawn, and the transform will not be updated. */\n get visible()\n {\n return !!(this.localDisplayStatus & 0b010);\n }\n\n set visible(value: boolean)\n {\n const valueNumber = value ? 1 : 0;\n\n if ((this.localDisplayStatus & 0b010) >> 1 === valueNumber) return;\n\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._updateFlags |= UPDATE_VISIBLE;\n\n this.localDisplayStatus ^= 0b010;\n\n this._onUpdate();\n }\n\n /** @ignore */\n get culled()\n {\n return !(this.localDisplayStatus & 0b100);\n }\n\n /** @ignore */\n set culled(value: boolean)\n {\n const valueNumber = value ? 1 : 0;\n\n if ((this.localDisplayStatus & 0b100) >> 2 === valueNumber) return;\n\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 0b100;\n\n this._onUpdate();\n }\n\n /** Can this object be rendered, if false the object will not be drawn but the transform will still be updated. */\n get renderable()\n {\n return !!(this.localDisplayStatus & 0b001);\n }\n\n set renderable(value: boolean)\n {\n const valueNumber = value ? 1 : 0;\n\n if ((this.localDisplayStatus & 0b001) === valueNumber) return;\n\n this._updateFlags |= UPDATE_VISIBLE;\n this.localDisplayStatus ^= 0b001;\n\n if (this.renderGroup && !this.isRenderGroupRoot)\n {\n this.renderGroup.structureDidChange = true;\n }\n\n this._onUpdate();\n }\n\n /** Whether or not the object should be rendered. */\n get isRenderable(): boolean\n {\n return (this.localDisplayStatus === 0b111 && this.groupAlpha > 0);\n }\n\n /**\n * Removes all internal references and listeners as well as removes children from the display list.\n * Do not use a Container after calling `destroy`.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.children=false] - if set to true, all the children will have their destroy\n * method called as well. 'options' will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for children with textures e.g. Sprites. If options.children\n * is set to true it should destroy the texture of the child sprite\n * @param {boolean} [options.textureSource=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true it should destroy the texture source of the child sprite\n * @param {boolean} [options.context=false] - Only used for children with graphicsContexts e.g. Graphics.\n * If options.children is set to true it should destroy the context of the child graphics\n */\n public destroy(options: DestroyOptions = false): void\n {\n if (this.destroyed) return;\n this.destroyed = true;\n\n this.removeFromParent();\n this.parent = null;\n this._mask = null;\n this._filters = null;\n this.effects = null;\n this._position = null;\n this._scale = null;\n this._pivot = null;\n this._skew = null;\n\n this.emit('destroyed', this);\n\n this.removeAllListeners();\n\n const destroyChildren = typeof options === 'boolean' ? options : options?.children;\n\n const oldChildren = this.removeChildren(0, this.children.length);\n\n if (destroyChildren)\n {\n for (let i = 0; i < oldChildren.length; ++i)\n {\n oldChildren[i].destroy(options);\n }\n }\n }\n}\n\nContainer.mixin(childrenHelperMixin);\nContainer.mixin(toLocalGlobalMixin);\nContainer.mixin(onRenderMixin);\nContainer.mixin(measureMixin);\nContainer.mixin(effectsMixin);\nContainer.mixin(findMixin);\nContainer.mixin(sortMixin);\nContainer.mixin(cullingMixin);\n","import { Point } from '../maths/point/Point';\n\nimport type { EventBoundary } from './EventBoundary';\nimport type { FederatedEventTarget } from './FederatedEventTarget';\n\n/**\n * A PixiJS compatible {@code Touch} event.\n * @memberof events\n */\nexport interface PixiTouch extends Touch\n{\n button: number;\n buttons: number;\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n layerX: number;\n layerY: number;\n offsetX: number;\n offsetY: number;\n isNormalized: boolean;\n type: string;\n}\n\n/**\n * An DOM-compatible synthetic event implementation that is \"forwarded\" on behalf of an original\n * FederatedEvent or native {@link https://dom.spec.whatwg.org/#event Event}.\n * @typeParam N - The type of native event held.\n * @memberof events\n */\nexport class FederatedEvent implements UIEvent\n{\n /** Flags whether this event bubbles. This will take effect only if it is set before propagation. */\n public bubbles = true;\n\n /** @deprecated since 7.0.0 */\n public cancelBubble = true;\n\n /**\n * Flags whether this event can be canceled using {@link FederatedEvent.preventDefault}. This is always\n * false (for now).\n */\n public readonly cancelable = false;\n\n /**\n * Flag added for compatibility with DOM {@code Event}. It is not used in the Federated Events\n * API.\n * @see https://dom.spec.whatwg.org/#dom-event-composed\n */\n public readonly composed = false;\n\n /** The listeners of the event target that are being notified. */\n public currentTarget: FederatedEventTarget;\n\n /** Flags whether the default response of the user agent was prevent through this event. */\n public defaultPrevented = false;\n\n /**\n * The propagation phase.\n * @default {@link FederatedEvent.NONE}\n */\n public eventPhase = FederatedEvent.prototype.NONE;\n\n /** Flags whether this is a user-trusted event */\n public isTrusted: boolean;\n\n /** @deprecated since 7.0.0 */\n public returnValue: boolean;\n\n /** @deprecated since 7.0.0 */\n public srcElement: EventTarget;\n\n /** The event target that this will be dispatched to. */\n public target: FederatedEventTarget;\n\n /** The timestamp of when the event was created. */\n public timeStamp: number;\n\n /** The type of event, e.g. {@code \"mouseup\"}. */\n public type: string;\n\n /** The native event that caused the foremost original event. */\n public nativeEvent: N;\n\n /** The original event that caused this event, if any. */\n public originalEvent: FederatedEvent;\n\n /** Flags whether propagation was stopped. */\n public propagationStopped = false;\n\n /** Flags whether propagation was immediately stopped. */\n public propagationImmediatelyStopped = false;\n\n /** The composed path of the event's propagation. The {@code target} is at the end. */\n public path: FederatedEventTarget[];\n\n /** The {@link EventBoundary} that manages this event. Null for root events. */\n public readonly manager: EventBoundary;\n\n /** Event-specific detail */\n public detail: number;\n\n /** The global Window object. */\n public view: WindowProxy;\n\n /**\n * Not supported.\n * @deprecated since 7.0.0\n */\n public which: number;\n\n /** The coordinates of the event relative to the nearest DOM layer. This is a non-standard property. */\n public layer: Point = new Point();\n\n /** @readonly */\n get layerX(): number { return this.layer.x; }\n\n /** @readonly */\n get layerY(): number { return this.layer.y; }\n\n /** The coordinates of the event relative to the DOM document. This is a non-standard property. */\n public page: Point = new Point();\n\n /** @readonly */\n get pageX(): number { return this.page.x; }\n\n /** @readonly */\n get pageY(): number { return this.page.y; }\n\n /**\n * @param manager - The event boundary which manages this event. Propagation can only occur\n * within the boundary's jurisdiction.\n */\n constructor(manager: EventBoundary)\n {\n this.manager = manager;\n }\n\n /**\n * Fallback for the deprecated @code{InteractionEvent.data}.\n * @deprecated since 7.0.0\n */\n get data(): this\n {\n return this;\n }\n\n /** The propagation path for this event. Alias for {@link EventBoundary.propagationPath}. */\n public composedPath(): FederatedEventTarget[]\n {\n // Find the propagation path if it isn't cached or if the target has changed since since\n // the last evaluation.\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target))\n {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n\n return this.path;\n }\n\n /**\n * Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.\n * @deprecated\n * @param _type\n * @param _bubbles\n * @param _cancelable\n */\n public initEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean): void\n {\n throw new Error('initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.');\n }\n\n /**\n * Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.\n * @deprecated\n * @param _typeArg\n * @param _bubblesArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n */\n public initUIEvent(_typeArg: string, _bubblesArg?: boolean, _cancelableArg?: boolean, _viewArg?: Window | null,\n _detailArg?: number): void\n {\n throw new Error('initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.');\n }\n\n /** Prevent default behavior of PixiJS and the user agent. */\n public preventDefault(): void\n {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable)\n {\n this.nativeEvent.preventDefault();\n }\n\n this.defaultPrevented = true;\n }\n\n /**\n * Stop this event from propagating to any addition listeners, including on the\n * {@link FederatedEventTarget.currentTarget currentTarget} and also the following\n * event targets on the propagation path.\n */\n public stopImmediatePropagation(): void\n {\n this.propagationImmediatelyStopped = true;\n }\n\n /**\n * Stop this event from propagating to the next {@link FederatedEventTarget}. The rest of the listeners\n * on the {@link FederatedEventTarget.currentTarget currentTarget} will still be notified.\n */\n public stopPropagation(): void\n {\n this.propagationStopped = true;\n }\n\n public readonly NONE = 0;\n public readonly CAPTURING_PHASE = 1;\n public readonly AT_TARGET = 2;\n public readonly BUBBLING_PHASE = 3;\n}\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","import isMobileJs from 'ismobilejs';\n\n// ismobilejs have different import behavior for CJS and ESM, so here is the hack\ntype isMobileJsType = typeof isMobileJs & { default?: typeof isMobileJs };\nconst isMobileCall = (isMobileJs as isMobileJsType).default ?? isMobileJs;\n\n/**\n * The result of the {@link utils.isMobile} function.\n * @ignore\n * @memberof utils\n */\nexport type isMobileResult = {\n /**\n * Whether the device is an Apple device.\n * @memberof utils.isMobile\n */\n apple: {\n phone: boolean;\n ipod: boolean;\n tablet: boolean;\n universal: boolean;\n device: boolean;\n };\n /**\n * Whether the device is an Amazon device.\n * @memberof utils.isMobile\n */\n amazon: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n /**\n * Whether the device is an Android device.\n * @memberof utils.isMobile\n */\n android: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n /**\n * Whether the device is a Windows device.\n * @memberof utils.isMobile\n */\n windows: {\n phone: boolean;\n tablet: boolean;\n device: boolean;\n };\n /**\n * Whether the device is a specific device.\n * @memberof utils.isMobile\n */\n other: {\n blackberry: boolean;\n blackberry10: boolean;\n opera: boolean;\n firefox: boolean;\n chrome: boolean;\n device: boolean;\n };\n /**\n * Whether the device is a phone device.\n * @memberof utils.isMobile\n */\n phone: boolean;\n /**\n * Whether the device is a tablet device.\n * @memberof utils.isMobile\n */\n tablet: boolean;\n /**\n * Whether the device is any kind of device.\n * @memberof utils.isMobile\n */\n any: boolean;\n};\n\n/**\n * Detects whether the device is mobile and what type of mobile device it is.\n * ```js\n * import { isMobile } from 'pixi.js';\n *\n * if (isMobile.apple.tablet) {\n * // The device is an Apple tablet device.\n * }\n * ```\n * @memberof utils\n */\nexport const isMobile: isMobileResult = isMobileCall(globalThis.navigator);\n","import { FederatedEvent } from '../events/FederatedEvent';\nimport { ExtensionType } from '../extensions/Extensions';\nimport { isMobile } from '../utils/browser/isMobile';\nimport { removeItems } from '../utils/data/removeItems';\nimport { type AccessibleHTMLElement } from './accessibilityTarget';\n\nimport type { Rectangle } from '../maths/shapes/Rectangle';\nimport type { System } from '../rendering/renderers/shared/system/System';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { Container } from '../scene/container/Container';\nimport type { isMobileResult } from '../utils/browser/isMobile';\n\n/**\n * The accessibility module recreates the ability to tab and have content read by screen readers.\n * This is very important as it can possibly help people with disabilities access PixiJS content.\n *\n * This module is a mixin for {@link AbstractRenderer} and will need to be imported if you are managing your own renderer.\n * Usage:\n * ```js\n * import 'pixi.js/accessibility';\n * ```\n * To make an object accessible do the following:\n * ```js\n * container.accessible = true; // object is now accessible to screen readers!\n * ```\n * See {@link accessibility.AccessibleOptions} for more accessibility related properties that can be set.\n * @namespace accessibility\n */\n\n/** @ignore */\nconst KEY_CODE_TAB = 9;\n\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\n\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1000;\nconst DIV_HOOK_POS_Y = -1000;\nconst DIV_HOOK_ZINDEX = 2;\n\n/** @ignore */\nexport interface AccessibilityOptions\n{\n /** Setting this to true will visually show the divs. */\n debug?: boolean;\n}\n\n/**\n * The Accessibility system recreates the ability to tab and have content read by screen readers.\n * This is very important as it can possibly help people with disabilities access PixiJS content.\n *\n * A Container can be made accessible just like it can be made interactive. This manager will map the\n * events as if the mouse was being used, minimizing the effort required to implement.\n *\n * An instance of this class is automatically created by default, and can be found at `renderer.accessibility`\n * @memberof accessibility\n */\nexport class AccessibilitySystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'accessibility',\n } as const;\n\n /** Setting this to true will visually show the divs. */\n public debug = false;\n\n /**\n * The renderer this accessibility manager works for.\n * @type {WebGLRenderer|WebGPURenderer}\n */\n private _renderer: Renderer;\n\n /** Internal variable, see isActive getter. */\n private _isActive = false;\n\n /** Internal variable, see isMobileAccessibility getter. */\n private _isMobileAccessibility = false;\n\n /** Button element for handling touch hooks. */\n private _hookDiv: HTMLElement | null;\n\n /** This is the dom element that will sit over the PixiJS element. This is where the div overlays will go. */\n private _div: HTMLElement;\n\n /** A simple pool for storing divs. */\n private _pool: AccessibleHTMLElement[] = [];\n\n /** This is a tick used to check if an object is no longer being rendered. */\n private _renderId = 0;\n\n /** The array of currently active accessible items. */\n private _children: Container[] = [];\n\n /** Count to throttle div updates on android devices. */\n private _androidUpdateCount = 0;\n\n /** The frequency to update the div elements. */\n private readonly _androidUpdateFrequency = 500; // 2fps\n\n // eslint-disable-next-line jsdoc/require-param\n /**\n * @param {WebGLRenderer|WebGPURenderer} renderer - A reference to the current renderer\n */\n constructor(renderer: Renderer, private readonly _mobileInfo: isMobileResult = isMobile)\n {\n this._hookDiv = null;\n\n if (_mobileInfo.tablet || _mobileInfo.phone)\n {\n this._createTouchHook();\n }\n\n // first we create a div that will sit over the PixiJS element. This is where the div overlays will go.\n const div = document.createElement('div');\n\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = 'absolute';\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n\n this._div = div;\n this._renderer = renderer;\n\n /**\n * pre-bind the functions\n * @type {Function}\n * @private\n */\n this._onKeyDown = this._onKeyDown.bind(this);\n\n /**\n * pre-bind the functions\n * @type {Function}\n * @private\n */\n this._onMouseMove = this._onMouseMove.bind(this);\n\n // let listen for tab.. once pressed we can fire up and show the accessibility layer\n globalThis.addEventListener('keydown', this._onKeyDown, false);\n }\n\n /**\n * Value of `true` if accessibility is currently active and accessibility layers are showing.\n * @member {boolean}\n * @readonly\n */\n get isActive(): boolean\n {\n return this._isActive;\n }\n\n /**\n * Value of `true` if accessibility is enabled for touch devices.\n * @member {boolean}\n * @readonly\n */\n get isMobileAccessibility(): boolean\n {\n return this._isMobileAccessibility;\n }\n\n get hookDiv()\n {\n return this._hookDiv;\n }\n\n /**\n * Creates the touch hooks.\n * @private\n */\n private _createTouchHook(): void\n {\n const hookDiv = document.createElement('button');\n\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = 'absolute';\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = '#FF0000';\n hookDiv.title = 'select to enable accessibility for this content';\n\n hookDiv.addEventListener('focus', () =>\n {\n this._isMobileAccessibility = true;\n this._activate();\n this._destroyTouchHook();\n });\n\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n\n /**\n * Destroys the touch hooks.\n * @private\n */\n private _destroyTouchHook(): void\n {\n if (!this._hookDiv)\n {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n\n /**\n * Activating will cause the Accessibility layer to be shown.\n * This is called when a user presses the tab key.\n * @private\n */\n private _activate(): void\n {\n if (this._isActive)\n {\n return;\n }\n\n this._isActive = true;\n\n globalThis.document.addEventListener('mousemove', this._onMouseMove, true);\n globalThis.removeEventListener('keydown', this._onKeyDown, false);\n\n this._renderer.runners.postrender.add(this);\n this._renderer.view.canvas.parentNode?.appendChild(this._div);\n }\n\n /**\n * Deactivating will cause the Accessibility layer to be hidden.\n * This is called when a user moves the mouse.\n * @private\n */\n private _deactivate(): void\n {\n if (!this._isActive || this._isMobileAccessibility)\n {\n return;\n }\n\n this._isActive = false;\n\n globalThis.document.removeEventListener('mousemove', this._onMouseMove, true);\n globalThis.addEventListener('keydown', this._onKeyDown, false);\n\n this._renderer.runners.postrender.remove(this);\n this._div.parentNode?.removeChild(this._div);\n }\n\n /**\n * This recursive function will run through the scene graph and add any new accessible objects to the DOM layer.\n * @private\n * @param {Container} container - The Container to check.\n */\n private _updateAccessibleObjects(container: Container): void\n {\n if (!container.visible || !container.accessibleChildren)\n {\n return;\n }\n\n if (container.accessible && container.isInteractive())\n {\n if (!container._accessibleActive)\n {\n this._addChild(container);\n }\n\n container._renderId = this._renderId;\n }\n\n const children = container.children;\n\n if (children)\n {\n for (let i = 0; i < children.length; i++)\n {\n this._updateAccessibleObjects(children[i] as Container);\n }\n }\n }\n\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n public init(options?: AccessibilityOptions)\n {\n this.debug = options?.debug ?? this.debug;\n this._renderer.runners.postrender.remove(this);\n }\n\n /**\n * Runner postrender was called, ensure that all divs are mapped correctly to their Containers.\n * Only fires while active.\n * @ignore\n */\n public postrender(): void\n {\n /* On Android default web browser, tab order seems to be calculated by position rather than tabIndex,\n * moving buttons can cause focus to flicker between two buttons making it hard/impossible to navigate,\n * so I am just running update every half a second, seems to fix it.\n */\n const now = performance.now();\n\n if (this._mobileInfo.android.device && now < this._androidUpdateCount)\n {\n return;\n }\n\n this._androidUpdateCount = now + this._androidUpdateFrequency;\n\n if (!this._renderer.renderingToScreen || !this._renderer.view.canvas)\n {\n return;\n }\n\n // update children...\n if (this._renderer.lastObjectRendered)\n {\n this._updateAccessibleObjects(this._renderer.lastObjectRendered as Container);\n }\n\n const { x, y, width, height } = this._renderer.view.canvas.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this._renderer;\n\n const sx = (width / viewWidth) * resolution;\n const sy = (height / viewHeight) * resolution;\n\n let div = this._div;\n\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n\n for (let i = 0; i < this._children.length; i++)\n {\n const child = this._children[i];\n\n if (child._renderId !== this._renderId)\n {\n child._accessibleActive = false;\n\n removeItems(this._children, i, 1);\n this._div.removeChild(child._accessibleDiv);\n this._pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n\n i--;\n }\n else\n {\n // map div to display..\n div = child._accessibleDiv;\n let hitArea = child.hitArea as Rectangle;\n const wt = child.worldTransform;\n\n if (child.hitArea)\n {\n div.style.left = `${(wt.tx + (hitArea.x * wt.a)) * sx}px`;\n div.style.top = `${(wt.ty + (hitArea.y * wt.d)) * sy}px`;\n\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n }\n else\n {\n hitArea = child.getBounds().rectangle;\n\n this._capHitArea(hitArea);\n\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n\n // update button titles and hints if they exist and they've changed\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null)\n {\n div.title = child.accessibleTitle || '';\n }\n if (div.getAttribute('aria-label') !== child.accessibleHint\n && child.accessibleHint !== null)\n {\n div.setAttribute('aria-label', child.accessibleHint || '');\n }\n }\n\n // the title or index may have changed, if so lets update it!\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex)\n {\n div.title = child.accessibleTitle || '';\n div.tabIndex = child.tabIndex;\n if (this.debug)\n {\n this._updateDebugHTML(div);\n }\n }\n }\n }\n\n // increment the render id..\n this._renderId++;\n }\n\n /**\n * private function that will visually add the information to the\n * accessibility div\n * @param {HTMLElement} div -\n */\n private _updateDebugHTML(div: AccessibleHTMLElement): void\n {\n div.innerHTML = `type: ${div.type}
title : ${div.title}
tabIndex: ${div.tabIndex}`;\n }\n\n /**\n * Adjust the hit area based on the bounds of a display object\n * @param {Rectangle} hitArea - Bounds of the child\n */\n private _capHitArea(hitArea: Rectangle): void\n {\n if (hitArea.x < 0)\n {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n\n if (hitArea.y < 0)\n {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n\n const { width: viewWidth, height: viewHeight } = this._renderer;\n\n if (hitArea.x + hitArea.width > viewWidth)\n {\n hitArea.width = viewWidth - hitArea.x;\n }\n\n if (hitArea.y + hitArea.height > viewHeight)\n {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n\n /**\n * Adds a Container to the accessibility manager\n * @private\n * @param {Container} container - The child to make accessible.\n */\n private _addChild(container: T): void\n {\n // this.activate();\n\n let div = this._pool.pop();\n\n if (!div)\n {\n div = document.createElement('button');\n\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? 'rgba(255,255,255,0.5)' : 'transparent';\n div.style.position = 'absolute';\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = 'none';\n\n // ARIA attributes ensure that button title and hint updates are announced properly\n if (navigator.userAgent.toLowerCase().includes('chrome'))\n {\n // Chrome doesn't need aria-live to work as intended; in fact it just gets more confused.\n div.setAttribute('aria-live', 'off');\n }\n else\n {\n div.setAttribute('aria-live', 'polite');\n }\n\n if (navigator.userAgent.match(/rv:.*Gecko\\//))\n {\n // FireFox needs this to announce only the new button name\n div.setAttribute('aria-relevant', 'additions');\n }\n else\n {\n // required by IE, other browsers don't much care\n div.setAttribute('aria-relevant', 'text');\n }\n\n div.addEventListener('click', this._onClick.bind(this));\n div.addEventListener('focus', this._onFocus.bind(this));\n div.addEventListener('focusout', this._onFocusOut.bind(this));\n }\n\n // set pointer events\n div.style.pointerEvents = container.accessiblePointerEvents;\n // set the type, this defaults to button!\n div.type = container.accessibleType;\n\n if (container.accessibleTitle && container.accessibleTitle !== null)\n {\n div.title = container.accessibleTitle;\n }\n else if (!container.accessibleHint\n || container.accessibleHint === null)\n {\n div.title = `container ${container.tabIndex}`;\n }\n\n if (container.accessibleHint\n && container.accessibleHint !== null)\n {\n div.setAttribute('aria-label', container.accessibleHint);\n }\n\n if (this.debug)\n {\n this._updateDebugHTML(div);\n }\n\n container._accessibleActive = true;\n container._accessibleDiv = div;\n div.container = container;\n\n this._children.push(container);\n this._div.appendChild(container._accessibleDiv);\n container._accessibleDiv.tabIndex = container.tabIndex;\n }\n\n /**\n * Dispatch events with the EventSystem.\n * @param e\n * @param type\n * @private\n */\n private _dispatchEvent(e: UIEvent, type: string[]): void\n {\n const { container: target } = e.target as AccessibleHTMLElement;\n const boundary = this._renderer.events.rootBoundary;\n const event: FederatedEvent = Object.assign(new FederatedEvent(boundary), { target });\n\n boundary.rootTarget = this._renderer.lastObjectRendered as Container;\n type.forEach((type) => boundary.dispatchEvent(event, type));\n }\n\n /**\n * Maps the div button press to pixi's EventSystem (click)\n * @private\n * @param {MouseEvent} e - The click event.\n */\n private _onClick(e: MouseEvent): void\n {\n this._dispatchEvent(e, ['click', 'pointertap', 'tap']);\n }\n\n /**\n * Maps the div focus events to pixi's EventSystem (mouseover)\n * @private\n * @param {FocusEvent} e - The focus event.\n */\n private _onFocus(e: FocusEvent): void\n {\n if (!(e.target as Element).getAttribute('aria-live'))\n {\n (e.target as Element).setAttribute('aria-live', 'assertive');\n }\n\n this._dispatchEvent(e, ['mouseover']);\n }\n\n /**\n * Maps the div focus events to pixi's EventSystem (mouseout)\n * @private\n * @param {FocusEvent} e - The focusout event.\n */\n private _onFocusOut(e: FocusEvent): void\n {\n if (!(e.target as Element).getAttribute('aria-live'))\n {\n (e.target as Element).setAttribute('aria-live', 'polite');\n }\n\n this._dispatchEvent(e, ['mouseout']);\n }\n\n /**\n * Is called when a key is pressed\n * @private\n * @param {KeyboardEvent} e - The keydown event.\n */\n private _onKeyDown(e: KeyboardEvent): void\n {\n if (e.keyCode !== KEY_CODE_TAB)\n {\n return;\n }\n\n this._activate();\n }\n\n /**\n * Is called when the mouse moves across the renderer element\n * @private\n * @param {MouseEvent} e - The mouse event.\n */\n private _onMouseMove(e: MouseEvent): void\n {\n if (e.movementX === 0 && e.movementY === 0)\n {\n return;\n }\n\n this._deactivate();\n }\n\n /** Destroys the accessibility manager */\n public destroy(): void\n {\n this._destroyTouchHook();\n this._div = null;\n\n globalThis.document.removeEventListener('mousemove', this._onMouseMove, true);\n globalThis.removeEventListener('keydown', this._onKeyDown);\n\n this._pool = null;\n this._children = null;\n this._renderer = null;\n }\n}\n","import type { Container } from '../scene/container/Container';\n\n/**\n * The type of the pointer event to listen for.\n * Can be any of the following:\n * - `auto`\n * - `none`\n * - `visiblePainted`\n * - `visibleFill`\n * - `visibleStroke`\n * - `visible`\n * - `painted`\n * - `fill`\n * - `stroke`\n * - `all`\n * - `inherit`\n * @memberof accessibility\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events\n */\nexport type PointerEvents = 'auto'\n| 'none'\n| 'visiblePainted'\n| 'visibleFill'\n| 'visibleStroke'\n| 'visible'\n| 'painted'\n| 'fill'\n| 'stroke'\n| 'all'\n| 'inherit';\n\n/**\n * When `accessible` is enabled on any display object, these properties will affect its accessibility.\n * @memberof accessibility\n */\nexport interface AccessibleOptions\n{\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @default false\n */\n accessible: boolean;\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'container [tabIndex]'\n * @member {string}\n */\n accessibleTitle: string | null;\n /** Sets the aria-label attribute of the shadow div */\n accessibleHint: string | null;\n /**\n * @default 0\n */\n tabIndex: number;\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @default 'button'\n */\n accessibleType: string;\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @default 'auto'\n * @type {accessibility.PointerEvents}\n */\n accessiblePointerEvents: PointerEvents;\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @default true\n */\n accessibleChildren: boolean;\n}\n\n/**\n * The Accessibility object is attached to the {@link Container}.\n * @private\n */\nexport interface AccessibleTarget extends AccessibleOptions\n{\n _accessibleActive: boolean;\n _accessibleDiv: AccessibleHTMLElement | null;\n _renderId: number;\n}\n\nexport interface AccessibleHTMLElement extends HTMLElement\n{\n type?: string;\n container?: Container;\n}\n\n/**\n * Default property values of accessible objects\n * used by {@link AccessibilitySystem}.\n * @private\n * @example\n * import { accessibleTarget } from 'pixi.js';\n *\n * function MyObject() {}\n * Object.assign(MyObject.prototype, accessibleTarget);\n */\nexport const accessibilityTarget: AccessibleTarget = {\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @member {boolean}\n * @memberof scene.Container#\n */\n accessible: false,\n\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'container [tabIndex]'\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleTitle: null,\n\n /**\n * Sets the aria-label attribute of the shadow div\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleHint: null,\n\n /**\n * @member {number}\n * @memberof scene.Container#\n * @todo Needs docs.\n */\n tabIndex: 0,\n\n /**\n * @member {boolean}\n * @memberof scene.Container#\n * @private\n */\n _accessibleActive: false,\n\n /**\n * @memberof scene.Container#\n * @private\n */\n _accessibleDiv: null,\n\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @member {string}\n * @memberof scene.Container#\n * @default 'button'\n */\n accessibleType: 'button',\n\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @type {PointerEvents}\n * @memberof scene.Container#\n * @default 'auto'\n */\n accessiblePointerEvents: 'auto',\n\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @member {boolean}\n * @memberof scene.Container#\n * @default true\n */\n accessibleChildren: true,\n\n /**\n * @member {number}\n * @memberof scene.Container#\n * @private\n */\n _renderId: -1,\n};\n","import { extensions } from '../extensions/Extensions';\nimport { Container } from '../scene/container/Container';\nimport { AccessibilitySystem } from './AccessibilitySystem';\nimport { accessibilityTarget } from './accessibilityTarget';\n\nextensions.add(AccessibilitySystem);\nContainer.mixin(accessibilityTarget);\n","import { ExtensionType } from '../extensions/Extensions';\n\nimport type { ExtensionMetadata } from '../extensions/Extensions';\nimport type { Renderer } from '../rendering/renderers/types';\n\ntype ResizeableRenderer = Pick;\n\n/**\n * Application options for the {@link app.ResizePlugin}.\n * @memberof app\n * @property {Window|HTMLElement} [resizeTo=window] - Element to automatically resize the renderer to.\n */\nexport interface ResizePluginOptions\n{\n /**\n * Element to automatically resize the renderer to.\n * @memberof app.ApplicationOptions\n */\n resizeTo?: Window | HTMLElement;\n}\n\n/**\n * Middleware for Application's resize functionality.\n *\n * Adds the following methods to {@link app.Application}:\n * * {@link app.Application#resizeTo}\n * * {@link app.Application#resize}\n * * {@link app.Application#queueResize}\n * * {@link app.Application#cancelResize}\n * @example\n * import { extensions, ResizePlugin } from 'pixi.js';\n *\n * extensions.add(ResizePlugin);\n * @memberof app\n */\nexport class ResizePlugin\n{\n /** @ignore */\n public static extension: ExtensionMetadata = ExtensionType.Application;\n\n public static resizeTo: Window | HTMLElement;\n public static resize: () => void;\n public static renderer: ResizeableRenderer;\n public static queueResize: () => void;\n public static render: () => void;\n private static _resizeId: number;\n private static _resizeTo: Window | HTMLElement;\n private static _cancelResize: () => void;\n\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n public static init(options: ResizePluginOptions): void\n {\n Object.defineProperty(this, 'resizeTo',\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof app.Application#\n */\n {\n set(dom: Window | HTMLElement)\n {\n globalThis.removeEventListener('resize', this.queueResize);\n this._resizeTo = dom;\n if (dom)\n {\n globalThis.addEventListener('resize', this.queueResize);\n this.resize();\n }\n },\n get()\n {\n return this._resizeTo;\n },\n });\n\n /**\n * Resize is throttled, so it's safe to call this multiple times per frame and it'll\n * only be called once.\n * @memberof app.Application#\n * @method queueResize\n * @private\n */\n this.queueResize = (): void =>\n {\n if (!this._resizeTo)\n {\n return;\n }\n\n this._cancelResize();\n\n // // Throttle resize events per raf\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n\n /**\n * Cancel the resize queue.\n * @memberof app.Application#\n * @method cancelResize\n * @private\n */\n this._cancelResize = (): void =>\n {\n if (this._resizeId)\n {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n\n /**\n * Execute an immediate resize on the renderer, this is not\n * throttled and can be expensive to call many times in a row.\n * Will resize only if `resizeTo` property is set.\n * @memberof app.Application#\n * @method resize\n */\n this.resize = (): void =>\n {\n if (!this._resizeTo)\n {\n return;\n }\n\n // clear queue resize\n this._cancelResize();\n\n let width: number;\n let height: number;\n\n // Resize to the window\n if (this._resizeTo === globalThis.window)\n {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n }\n // Resize to other HTML entities\n else\n {\n const { clientWidth, clientHeight } = this._resizeTo as HTMLElement;\n\n width = clientWidth;\n height = clientHeight;\n }\n\n this.renderer.resize(width, height);\n this.render();\n };\n\n // On resize\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n public static destroy(): void\n {\n globalThis.removeEventListener('resize', this.queueResize);\n this._cancelResize();\n this._cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\n","/**\n * Represents the update priorities used by internal Pixi classes when registered with\n * the {@link ticker.Ticker} object. Higher priority items are updated first and lower\n * priority items, such as render, should go later.\n * @static\n * @enum {number}\n * @memberof ticker\n */\nexport enum UPDATE_PRIORITY\n// eslint-disable-next-line @typescript-eslint/indent\n{\n /**\n * Highest priority used for interaction events in {@link EventSystem}\n * @default 50\n */\n INTERACTION = 50,\n /**\n * High priority updating, used by {@link AnimatedSprite}\n * @default 25\n */\n HIGH = 25,\n /**\n * Default priority for ticker events, see {@link Ticker#add}.\n * @default 0\n */\n NORMAL = 0,\n /**\n * Low priority used for {@link Application} rendering.\n * @default -25\n */\n LOW = -25,\n /**\n * Lowest priority used for {@link BasePrepare} utility.\n * @default -50\n */\n UTILITY = -50,\n}\n","import type { Ticker, TickerCallback } from './Ticker';\n\n/**\n * Internal class for handling the priority sorting of ticker handlers.\n * @private\n * @class\n */\nexport class TickerListener\n{\n /** The current priority. */\n public priority: number;\n /** The next item in chain. */\n public next: TickerListener = null;\n /** The previous item in chain. */\n public previous: TickerListener = null;\n\n /** The handler function to execute. */\n private _fn: TickerCallback;\n /** The calling to execute. */\n private _context: T;\n /** If this should only execute once. */\n private readonly _once: boolean;\n /** `true` if this listener has been destroyed already. */\n private _destroyed = false;\n\n /**\n * Constructor\n * @private\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param priority - The priority for emitting\n * @param once - If the handler should fire once\n */\n constructor(fn: TickerCallback, context: T = null, priority = 0, once = false)\n {\n this._fn = fn;\n this._context = context;\n this.priority = priority;\n this._once = once;\n }\n\n /**\n * Simple compare function to figure out if a function and context match.\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @returns `true` if the listener match the arguments\n */\n public match(fn: TickerCallback, context: any = null): boolean\n {\n return this._fn === fn && this._context === context;\n }\n\n /**\n * Emit by calling the current function.\n * @param ticker - The ticker emitting.\n * @returns Next ticker\n */\n public emit(ticker: Ticker): TickerListener\n {\n if (this._fn)\n {\n if (this._context)\n {\n this._fn.call(this._context, ticker);\n }\n else\n {\n (this as TickerListener)._fn(ticker);\n }\n }\n\n const redirect = this.next;\n\n if (this._once)\n {\n this.destroy(true);\n }\n\n // Soft-destroying should remove\n // the next reference\n if (this._destroyed)\n {\n this.next = null;\n }\n\n return redirect;\n }\n\n /**\n * Connect to the list.\n * @param previous - Input node, previous listener\n */\n public connect(previous: TickerListener): void\n {\n this.previous = previous;\n if (previous.next)\n {\n previous.next.previous = this;\n }\n this.next = previous.next;\n previous.next = this;\n }\n\n /**\n * Destroy and don't use after this.\n * @param hard - `true` to remove the `next` reference, this\n * is considered a hard destroy. Soft destroy maintains the next reference.\n * @returns The listener to redirect while emitting or removing.\n */\n public destroy(hard = false): TickerListener\n {\n this._destroyed = true;\n this._fn = null;\n this._context = null;\n\n // Disconnect, hook up next and previous\n if (this.previous)\n {\n this.previous.next = this.next;\n }\n\n if (this.next)\n {\n this.next.previous = this.previous;\n }\n\n // Redirect to the next item\n const redirect = this.next;\n\n // Remove references\n this.next = hard ? null : redirect;\n this.previous = null;\n\n return redirect;\n }\n}\n","import { UPDATE_PRIORITY } from './const';\nimport { TickerListener } from './TickerListener';\n\n/**\n * A callback which can be added to a ticker.\n * ```js\n * ticker.add(() => {\n * // do something every frame\n * });\n * ```\n * @memberof ticker\n */\nexport type TickerCallback = (this: T, ticker: Ticker) => any;\n\n/**\n * {@link ticker.Ticker|Tickers} provide periodic callbacks based on the system clock.\n * Your game update logic will generally be run in response to a tick once per frame.\n * You can have multiple tickers in use at one time.\n * ```js\n * import { Ticker } from 'pixi.js';\n *\n * const callback = (ticker: Ticker) => {\n * // do something on the next animation frame\n * };\n *\n * // create a ticker\n * const ticker = new Ticker();\n *\n * // register the callback and start the ticker\n * ticker.add(callback);\n * ticker.start();\n * ```\n *\n * You can always use the {@link ticker.Ticker.shared|shared} ticker that Pixi renders with by default.\n * ```js\n * Ticker.shared.add(callback);\n * ```\n * @namespace ticker\n */\n\n/**\n * A Ticker class that runs an update loop that other objects listen to.\n *\n * This class is composed around listeners meant for execution on the next requested animation frame.\n * Animation frames are requested only when necessary, e.g. When the ticker is started and the emitter has listeners.\n * @class\n * @memberof ticker\n */\nexport class Ticker\n{\n /**\n * Target frames per millisecond.\n * @static\n */\n public static targetFPMS = 0.06;\n\n /** The private shared ticker instance */\n private static _shared: Ticker;\n /** The private system ticker instance */\n private static _system: Ticker;\n\n /**\n * Whether or not this ticker should invoke the method\n * {@link ticker.Ticker#start|start} automatically when a listener is added.\n */\n public autoStart = false;\n /**\n * Scalar time value from last frame to this frame.\n * This value is capped by setting {@link ticker.Ticker#minFPS|minFPS}\n * and is scaled with {@link ticker.Ticker#speed|speed}.\n * **Note:** The cap may be exceeded by scaling.\n */\n public deltaTime = 1;\n /**\n * Scaler time elapsed in milliseconds from last frame to this frame.\n * This value is capped by setting {@link ticker.Ticker#minFPS|minFPS}\n * and is scaled with {@link ticker.Ticker#speed|speed}.\n * **Note:** The cap may be exceeded by scaling.\n * If the platform supports DOMHighResTimeStamp,\n * this value will have a precision of 1 µs.\n * Defaults to target frame time\n * @default 16.66\n */\n public deltaMS: number;\n /**\n * Time elapsed in milliseconds from last frame to this frame.\n * Opposed to what the scalar {@link ticker.Ticker#deltaTime|deltaTime}\n * is based, this value is neither capped nor scaled.\n * If the platform supports DOMHighResTimeStamp,\n * this value will have a precision of 1 µs.\n * Defaults to target frame time\n * @default 16.66\n */\n public elapsedMS: number;\n /**\n * The last time {@link ticker.Ticker#update|update} was invoked.\n * This value is also reset internally outside of invoking\n * update, but only when a new animation frame is requested.\n * If the platform supports DOMHighResTimeStamp,\n * this value will have a precision of 1 µs.\n */\n public lastTime = -1;\n /**\n * Factor of current {@link ticker.Ticker#deltaTime|deltaTime}.\n * @example\n * // Scales ticker.deltaTime to what would be\n * // the equivalent of approximately 120 FPS\n * ticker.speed = 2;\n */\n public speed = 1;\n /**\n * Whether or not this ticker has been started.\n * `true` if {@link ticker.Ticker#start|start} has been called.\n * `false` if {@link ticker.Ticker#stop|Stop} has been called.\n * While `false`, this value may change to `true` in the\n * event of {@link ticker.Ticker#autoStart|autoStart} being `true`\n * and a listener is added.\n */\n public started = false;\n\n /** The first listener. All new listeners added are chained on this. */\n private _head: TickerListener;\n /** Internal current frame request ID */\n private _requestId: number = null;\n /**\n * Internal value managed by minFPS property setter and getter.\n * This is the maximum allowed milliseconds between updates.\n */\n private _maxElapsedMS = 100;\n /**\n * Internal value managed by minFPS property setter and getter.\n * This is the minimum allowed milliseconds between updates.\n */\n private _minElapsedMS = 0;\n /** If enabled, deleting is disabled.*/\n private _protected = false;\n /** The last time keyframe was executed. Maintains a relatively fixed interval with the previous value. */\n private _lastFrame = -1;\n /**\n * Internal tick method bound to ticker instance.\n * This is because in early 2015, Function.bind\n * is still 60% slower in high performance scenarios.\n * Also separating frame requests from update method\n * so listeners may be called at any time and with\n * any animation API, just invoke ticker.update(time).\n * @param time - Time since last tick.\n */\n private readonly _tick: (time: number) => any;\n\n constructor()\n {\n this._head = new TickerListener(null, null, Infinity);\n this.deltaMS = 1 / Ticker.targetFPMS;\n this.elapsedMS = 1 / Ticker.targetFPMS;\n\n this._tick = (time: number): void =>\n {\n this._requestId = null;\n\n if (this.started)\n {\n // Invoke listeners now\n this.update(time);\n // Listener side effects may have modified ticker state.\n if (this.started && this._requestId === null && this._head.next)\n {\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n };\n }\n\n /**\n * Conditionally requests a new animation frame.\n * If a frame has not already been requested, and if the internal\n * emitter has listeners, a new frame is requested.\n * @private\n */\n private _requestIfNeeded(): void\n {\n if (this._requestId === null && this._head.next)\n {\n // ensure callbacks get correct delta\n this.lastTime = performance.now();\n this._lastFrame = this.lastTime;\n this._requestId = requestAnimationFrame(this._tick);\n }\n }\n\n /**\n * Conditionally cancels a pending animation frame.\n * @private\n */\n private _cancelIfNeeded(): void\n {\n if (this._requestId !== null)\n {\n cancelAnimationFrame(this._requestId);\n this._requestId = null;\n }\n }\n\n /**\n * Conditionally requests a new animation frame.\n * If the ticker has been started it checks if a frame has not already\n * been requested, and if the internal emitter has listeners. If these\n * conditions are met, a new frame is requested. If the ticker has not\n * been started, but autoStart is `true`, then the ticker starts now,\n * and continues with the previous conditions to request a new frame.\n * @private\n */\n private _startIfPossible(): void\n {\n if (this.started)\n {\n this._requestIfNeeded();\n }\n else if (this.autoStart)\n {\n this.start();\n }\n }\n\n /**\n * Register a handler for tick events. Calls continuously unless\n * it is removed or the ticker is stopped.\n * @param fn - The listener function to be added for updates\n * @param context - The listener context\n * @param {number} [priority=UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n public add(fn: TickerCallback, context?: T, priority: number = UPDATE_PRIORITY.NORMAL): this\n {\n return this._addListener(new TickerListener(fn, context, priority));\n }\n\n /**\n * Add a handler for the tick event which is only execute once.\n * @param fn - The listener function to be added for one update\n * @param context - The listener context\n * @param {number} [priority=UPDATE_PRIORITY.NORMAL] - The priority for emitting\n * @returns This instance of a ticker\n */\n public addOnce(fn: TickerCallback, context?: T, priority: number = UPDATE_PRIORITY.NORMAL): this\n {\n return this._addListener(new TickerListener(fn, context, priority, true));\n }\n\n /**\n * Internally adds the event handler so that it can be sorted by priority.\n * Priority allows certain handler (user, AnimatedSprite, Interaction) to be run\n * before the rendering.\n * @private\n * @param listener - Current listener being added.\n * @returns This instance of a ticker\n */\n private _addListener(listener: TickerListener): this\n {\n // For attaching to head\n let current = this._head.next;\n let previous = this._head;\n\n // Add the first item\n if (!current)\n {\n listener.connect(previous);\n }\n else\n {\n // Go from highest to lowest priority\n while (current)\n {\n if (listener.priority > current.priority)\n {\n listener.connect(previous);\n break;\n }\n previous = current;\n current = current.next;\n }\n\n // Not yet connected\n if (!listener.previous)\n {\n listener.connect(previous);\n }\n }\n\n this._startIfPossible();\n\n return this;\n }\n\n /**\n * Removes any handlers matching the function and context parameters.\n * If no handlers are left after removing, then it cancels the animation frame.\n * @param fn - The listener function to be removed\n * @param context - The listener context to be removed\n * @returns This instance of a ticker\n */\n public remove(fn: TickerCallback, context?: T): this\n {\n let listener = this._head.next;\n\n while (listener)\n {\n // We found a match, lets remove it\n // no break to delete all possible matches\n // incase a listener was added 2+ times\n if (listener.match(fn, context))\n {\n listener = listener.destroy();\n }\n else\n {\n listener = listener.next;\n }\n }\n\n if (!this._head.next)\n {\n this._cancelIfNeeded();\n }\n\n return this;\n }\n\n /**\n * The number of listeners on this ticker, calculated by walking through linked list\n * @readonly\n * @member {number}\n */\n get count(): number\n {\n if (!this._head)\n {\n return 0;\n }\n\n let count = 0;\n let current = this._head;\n\n while ((current = current.next))\n {\n count++;\n }\n\n return count;\n }\n\n /** Starts the ticker. If the ticker has listeners a new animation frame is requested at this point. */\n public start(): void\n {\n if (!this.started)\n {\n this.started = true;\n this._requestIfNeeded();\n }\n }\n\n /** Stops the ticker. If the ticker has requested an animation frame it is canceled at this point. */\n public stop(): void\n {\n if (this.started)\n {\n this.started = false;\n this._cancelIfNeeded();\n }\n }\n\n /** Destroy the ticker and don't use after this. Calling this method removes all references to internal events. */\n public destroy(): void\n {\n if (!this._protected)\n {\n this.stop();\n\n let listener = this._head.next;\n\n while (listener)\n {\n listener = listener.destroy(true);\n }\n\n this._head.destroy();\n this._head = null;\n }\n }\n\n /**\n * Triggers an update. An update entails setting the\n * current {@link ticker.Ticker#elapsedMS|elapsedMS},\n * the current {@link ticker.Ticker#deltaTime|deltaTime},\n * invoking all listeners with current deltaTime,\n * and then finally setting {@link ticker.Ticker#lastTime|lastTime}\n * with the value of currentTime that was provided.\n * This method will be called automatically by animation\n * frame callbacks if the ticker instance has been started\n * and listeners are added.\n * @param {number} [currentTime=performance.now()] - the current time of execution\n */\n public update(currentTime: number = performance.now()): void\n {\n let elapsedMS;\n\n // If the difference in time is zero or negative, we ignore most of the work done here.\n // If there is no valid difference, then should be no reason to let anyone know about it.\n // A zero delta, is exactly that, nothing should update.\n //\n // The difference in time can be negative, and no this does not mean time traveling.\n // This can be the result of a race condition between when an animation frame is requested\n // on the current JavaScript engine event loop, and when the ticker's start method is invoked\n // (which invokes the internal _requestIfNeeded method). If a frame is requested before\n // _requestIfNeeded is invoked, then the callback for the animation frame the ticker requests,\n // can receive a time argument that can be less than the lastTime value that was set within\n // _requestIfNeeded. This difference is in microseconds, but this is enough to cause problems.\n //\n // This check covers this browser engine timing issue, as well as if consumers pass an invalid\n // currentTime value. This may happen if consumers opt-out of the autoStart, and update themselves.\n\n if (currentTime > this.lastTime)\n {\n // Save uncapped elapsedMS for measurement\n elapsedMS = this.elapsedMS = currentTime - this.lastTime;\n\n // cap the milliseconds elapsed used for deltaTime\n if (elapsedMS > this._maxElapsedMS)\n {\n elapsedMS = this._maxElapsedMS;\n }\n\n elapsedMS *= this.speed;\n\n // If not enough time has passed, exit the function.\n // Get ready for next frame by setting _lastFrame, but based on _minElapsedMS\n // adjustment to ensure a relatively stable interval.\n if (this._minElapsedMS)\n {\n const delta = currentTime - this._lastFrame | 0;\n\n if (delta < this._minElapsedMS)\n {\n return;\n }\n\n this._lastFrame = currentTime - (delta % this._minElapsedMS);\n }\n\n this.deltaMS = elapsedMS;\n this.deltaTime = this.deltaMS * Ticker.targetFPMS;\n\n // Cache a local reference, in-case ticker is destroyed\n // during the emit, we can still check for head.next\n const head = this._head;\n\n // Invoke listeners added to internal emitter\n let listener = head.next;\n\n while (listener)\n {\n listener = listener.emit(this);\n }\n\n if (!head.next)\n {\n this._cancelIfNeeded();\n }\n }\n else\n {\n this.deltaTime = this.deltaMS = this.elapsedMS = 0;\n }\n\n this.lastTime = currentTime;\n }\n\n /**\n * The frames per second at which this ticker is running.\n * The default is approximately 60 in most modern browsers.\n * **Note:** This does not factor in the value of\n * {@link ticker.Ticker#speed|speed}, which is specific\n * to scaling {@link ticker.Ticker#deltaTime|deltaTime}.\n * @member {number}\n * @readonly\n */\n get FPS(): number\n {\n return 1000 / this.elapsedMS;\n }\n\n /**\n * Manages the maximum amount of milliseconds allowed to\n * elapse between invoking {@link ticker.Ticker#update|update}.\n * This value is used to cap {@link ticker.Ticker#deltaTime|deltaTime},\n * but does not effect the measured value of {@link ticker.Ticker#FPS|FPS}.\n * When setting this property it is clamped to a value between\n * `0` and `Ticker.targetFPMS * 1000`.\n * @member {number}\n * @default 10\n */\n get minFPS(): number\n {\n return 1000 / this._maxElapsedMS;\n }\n\n set minFPS(fps: number)\n {\n // Minimum must be below the maxFPS\n const minFPS = Math.min(this.maxFPS, fps);\n\n // Must be at least 0, but below 1 / Ticker.targetFPMS\n const minFPMS = Math.min(Math.max(0, minFPS) / 1000, Ticker.targetFPMS);\n\n this._maxElapsedMS = 1 / minFPMS;\n }\n\n /**\n * Manages the minimum amount of milliseconds required to\n * elapse between invoking {@link ticker.Ticker#update|update}.\n * This will effect the measured value of {@link ticker.Ticker#FPS|FPS}.\n * If it is set to `0`, then there is no limit; PixiJS will render as many frames as it can.\n * Otherwise it will be at least `minFPS`\n * @member {number}\n * @default 0\n */\n get maxFPS(): number\n {\n if (this._minElapsedMS)\n {\n return Math.round(1000 / this._minElapsedMS);\n }\n\n return 0;\n }\n\n set maxFPS(fps: number)\n {\n if (fps === 0)\n {\n this._minElapsedMS = 0;\n }\n else\n {\n // Max must be at least the minFPS\n const maxFPS = Math.max(this.minFPS, fps);\n\n this._minElapsedMS = 1 / (maxFPS / 1000);\n }\n }\n\n /**\n * The shared ticker instance used by {@link AnimatedSprite} and by\n * {@link VideoResource} to update animation frames / video textures.\n *\n * It may also be used by {@link Application} if created with the `sharedTicker` option property set to true.\n *\n * The property {@link ticker.Ticker#autoStart|autoStart} is set to `true` for this instance.\n * Please follow the examples for usage, including how to opt-out of auto-starting the shared ticker.\n * @example\n * import { Ticker } from 'pixi.js';\n *\n * const ticker = Ticker.shared;\n * // Set this to prevent starting this ticker when listeners are added.\n * // By default this is true only for the Ticker.shared instance.\n * ticker.autoStart = false;\n *\n * // FYI, call this to ensure the ticker is stopped. It should be stopped\n * // if you have not attempted to render anything yet.\n * ticker.stop();\n *\n * // Call this when you are ready for a running shared ticker.\n * ticker.start();\n * @example\n * import { autoDetectRenderer, Container } from 'pixi.js';\n *\n * // You may use the shared ticker to render...\n * const renderer = autoDetectRenderer();\n * const stage = new Container();\n * document.body.appendChild(renderer.view);\n * ticker.add((time) => renderer.render(stage));\n *\n * // Or you can just update it manually.\n * ticker.autoStart = false;\n * ticker.stop();\n * const animate = (time) => {\n * ticker.update(time);\n * renderer.render(stage);\n * requestAnimationFrame(animate);\n * };\n * animate(performance.now());\n * @member {ticker.Ticker}\n * @readonly\n * @static\n */\n static get shared(): Ticker\n {\n if (!Ticker._shared)\n {\n const shared = Ticker._shared = new Ticker();\n\n shared.autoStart = true;\n shared._protected = true;\n }\n\n return Ticker._shared;\n }\n\n /**\n * The system ticker instance used by {@link BasePrepare} for core timing\n * functionality that shouldn't usually need to be paused, unlike the `shared`\n * ticker which drives visual animations and rendering which may want to be paused.\n *\n * The property {@link ticker.Ticker#autoStart|autoStart} is set to `true` for this instance.\n * @member {ticker.Ticker}\n * @readonly\n * @static\n */\n static get system(): Ticker\n {\n if (!Ticker._system)\n {\n const system = Ticker._system = new Ticker();\n\n system.autoStart = true;\n system._protected = true;\n }\n\n return Ticker._system;\n }\n}\n","import { ExtensionType } from '../extensions/Extensions';\nimport { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\n\nimport type { ExtensionMetadata } from '../extensions/Extensions';\n\n/**\n * Application options for the {@link app.TickerPluginOptions}.\n * @memberof app\n * @property {boolean} [autoStart=true] - Automatically starts the rendering after the construction.\n * **Note**: Setting this parameter to `false` does NOT stop the shared ticker even if you set\n * `options.sharedTicker` to `true` in case that it is already started. Stop it by your own.\n * @property {boolean} [sharedTicker=false] - Set`true` to use `Ticker.shared`, `false` to create new ticker.\n * If set to `false`, you cannot register a handler to occur before anything that runs on the shared ticker.\n * The system ticker will always run before both the shared ticker and the app ticker.\n */\nexport interface TickerPluginOptions\n{\n /**\n * Automatically starts the rendering after the construction.\n * **Note**: Setting this parameter to `false` does NOT stop the shared ticker even if you set\n * `options.sharedTicker` to `true` in case that it is already started. Stop it by your own.\n * @memberof app.ApplicationOptions\n * @default true\n */\n autoStart?: boolean;\n /**\n * Set`true` to use `Ticker.shared`, `false` to create new ticker.\n * If set to `false`, you cannot register a handler to occur before anything that runs on the shared ticker.\n * The system ticker will always run before both the shared ticker and the app ticker.\n * @memberof app.ApplicationOptions\n * @default false\n */\n sharedTicker?: boolean;\n}\n\n/**\n * Middleware for Application's {@link ticker.Ticker} functionality.\n *\n * Adds the following methods to {@link app.Application}:\n * * {@link app.Application#start}\n * * {@link app.Application#stop}\n * * {@link app.Application#ticker}\n * @example\n * import { extensions, TickerPlugin } from 'pixi.js';\n *\n * extensions.add(TickerPlugin);\n * @memberof app\n */\nexport class TickerPlugin\n{\n /** @ignore */\n public static extension: ExtensionMetadata = ExtensionType.Application;\n\n public static start: () => void;\n public static stop: () => void;\n private static _ticker: Ticker;\n public static ticker: Ticker;\n\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n public static init(options?: PixiMixins.ApplicationOptions): void\n {\n // Set default\n options = Object.assign({\n autoStart: true,\n sharedTicker: false,\n }, options);\n\n // Create ticker setter\n Object.defineProperty(this, 'ticker',\n {\n set(ticker)\n {\n if (this._ticker)\n {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker)\n {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get()\n {\n return this._ticker;\n },\n });\n\n /**\n * Convenience method for stopping the render.\n * @method\n * @memberof app.Application\n * @instance\n */\n this.stop = (): void =>\n {\n this._ticker.stop();\n };\n\n /**\n * Convenience method for starting the render.\n * @method\n * @memberof app.Application\n * @instance\n */\n this.start = (): void =>\n {\n this._ticker.start();\n };\n\n /**\n * Internal reference to the ticker.\n * @type {Ticker}\n * @name _ticker\n * @memberof app.Application#\n * @private\n */\n this._ticker = null;\n\n /**\n * Ticker for doing render updates.\n * @type {ticker.Ticker}\n * @name ticker\n * @memberof app.Application#\n * @default Ticker.shared\n */\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n\n // Start the rendering\n if (options.autoStart)\n {\n this.start();\n }\n }\n\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n public static destroy(): void\n {\n if (this._ticker)\n {\n const oldTicker = this._ticker;\n\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n","import { extensions } from '../extensions/Extensions';\nimport { ResizePlugin } from './ResizePlugin';\nimport { TickerPlugin } from './TickerPlugin';\n\nextensions.add(ResizePlugin);\nextensions.add(TickerPlugin);\n","import { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\n\nimport type { EventSystem } from './EventSystem';\n\n/**\n * This class handles automatic firing of PointerEvents\n * in the case where the pointer is stationary for too long.\n * This is to ensure that hit-tests are still run on moving objects.\n * @since 7.2.0\n * @memberof events\n * @class EventsTicker\n */\nclass EventsTickerClass\n{\n /** The event system. */\n public events: EventSystem;\n /** The DOM element to listen to events on. */\n public domElement: HTMLElement;\n /** The frequency that fake events will be fired. */\n public interactionFrequency = 10;\n\n private _deltaTime = 0;\n private _didMove = false;\n private _tickerAdded = false;\n private _pauseUpdate = true;\n\n /**\n * Initializes the event ticker.\n * @param events - The event system.\n */\n public init(events: EventSystem): void\n {\n this.removeTickerListener();\n this.events = events;\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this._tickerAdded = false;\n this._pauseUpdate = true;\n }\n\n /** Whether to pause the update checks or not. */\n get pauseUpdate(): boolean\n {\n return this._pauseUpdate;\n }\n\n set pauseUpdate(paused: boolean)\n {\n this._pauseUpdate = paused;\n }\n\n /** Adds the ticker listener. */\n public addTickerListener(): void\n {\n if (this._tickerAdded || !this.domElement)\n {\n return;\n }\n\n Ticker.system.add(this._tickerUpdate, this, UPDATE_PRIORITY.INTERACTION);\n\n this._tickerAdded = true;\n }\n\n /** Removes the ticker listener. */\n public removeTickerListener(): void\n {\n if (!this._tickerAdded)\n {\n return;\n }\n\n Ticker.system.remove(this._tickerUpdate, this);\n\n this._tickerAdded = false;\n }\n\n /** Sets flag to not fire extra events when the user has already moved there mouse */\n public pointerMoved(): void\n {\n this._didMove = true;\n }\n\n /** Updates the state of interactive objects. */\n private _update(): void\n {\n if (!this.domElement || this._pauseUpdate)\n {\n return;\n }\n\n // if the user move the mouse this check has already been done using the mouse move!\n if (this._didMove)\n {\n this._didMove = false;\n\n return;\n }\n\n // eslint-disable-next-line dot-notation\n const rootPointerEvent = this.events['_rootPointerEvent'];\n\n if (this.events.supportsTouchEvents && (rootPointerEvent as PointerEvent).pointerType === 'touch')\n {\n return;\n }\n\n globalThis.document.dispatchEvent(new PointerEvent('pointermove', {\n clientX: rootPointerEvent.clientX,\n clientY: rootPointerEvent.clientY,\n }));\n }\n\n /**\n * Updates the state of interactive objects if at least {@link interactionFrequency}\n * milliseconds have passed since the last invocation.\n *\n * Invoked by a throttled ticker update from {@link Ticker.system}.\n * @param ticker - The throttled ticker.\n */\n private _tickerUpdate(ticker: Ticker): void\n {\n this._deltaTime += ticker.deltaTime;\n\n if (this._deltaTime < this.interactionFrequency)\n {\n return;\n }\n\n this._deltaTime = 0;\n\n this._update();\n }\n}\n\nexport const EventsTicker = new EventsTickerClass();\n","import { Point } from '../maths/point/Point';\nimport { FederatedEvent } from './FederatedEvent';\n\nimport type { PointData } from '../maths/point/PointData';\nimport type { Container } from '../scene/container/Container';\nimport type { PixiTouch } from './FederatedEvent';\n\n/**\n * A {@link FederatedEvent} for mouse events.\n * @memberof events\n */\nexport class FederatedMouseEvent extends FederatedEvent<\nMouseEvent | PointerEvent | PixiTouch\n> implements MouseEvent\n{\n /** Whether the \"alt\" key was pressed when this mouse event occurred. */\n public altKey: boolean;\n\n /** The specific button that was pressed in this mouse event. */\n public button: number;\n\n /** The button depressed when this event occurred. */\n public buttons: number;\n\n /** Whether the \"control\" key was pressed when this mouse event occurred. */\n public ctrlKey: boolean;\n\n /** Whether the \"meta\" key was pressed when this mouse event occurred. */\n public metaKey: boolean;\n\n /** This is currently not implemented in the Federated Events API. */\n public relatedTarget: EventTarget;\n\n /** Whether the \"shift\" key was pressed when this mouse event occurred. */\n public shiftKey: boolean;\n\n /** The coordinates of the mouse event relative to the canvas. */\n public client: Point = new Point();\n\n /** @readonly */\n public get clientX(): number { return this.client.x; }\n\n /** @readonly */\n public get clientY(): number { return this.client.y; }\n\n /**\n * Alias for {@link FederatedMouseEvent.clientX this.clientX}.\n * @readonly\n */\n get x(): number { return this.clientX; }\n\n /**\n * Alias for {@link FederatedMouseEvent.clientY this.clientY}.\n * @readonly\n */\n get y(): number { return this.clientY; }\n\n /** This is the number of clicks that occurs in 200ms/click of each other. */\n public detail: number;\n\n /** The movement in this pointer relative to the last `mousemove` event. */\n public movement: Point = new Point();\n\n /** @readonly */\n get movementX(): number { return this.movement.x; }\n\n /** @readonly */\n get movementY(): number { return this.movement.y; }\n\n /** The offset of the pointer coordinates w.r.t. target Container in world space. This is not supported at the moment. */\n public offset: Point = new Point();\n\n /** @readonly */\n get offsetX(): number { return this.offset.x; }\n\n /** @readonly */\n get offsetY(): number { return this.offset.y; }\n\n /** The pointer coordinates in world space. */\n public global: Point = new Point();\n\n /** @readonly */\n get globalX(): number { return this.global.x; }\n\n /** @readonly */\n get globalY(): number { return this.global.y; }\n\n /**\n * The pointer coordinates in the renderer's {@link Renderer.screen screen}. This has slightly\n * different semantics than native PointerEvent screenX/screenY.\n */\n public screen: Point = new Point();\n\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.x}.\n * @readonly\n */\n get screenX(): number { return this.screen.x; }\n\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.y}.\n * @readonly\n */\n get screenY(): number { return this.screen.y; }\n\n /**\n * This will return the local coordinates of the specified container for this InteractionData\n * @param {Container} container - The Container that you would like the local\n * coords off\n * @param {PointData} point - A Point object in which to store the value, optional (otherwise\n * will create a new point)\n * @param {PointData} globalPos - A Point object containing your custom global coords, optional\n * (otherwise will use the current global coords)\n * @returns - A point containing the coordinates of the InteractionData position relative\n * to the Container\n */\n public getLocalPosition

(container: Container, point?: P, globalPos?: PointData): P\n {\n return container.worldTransform.applyInverse

(globalPos || this.global, point);\n }\n\n /**\n * Whether the modifier key was pressed when this event natively occurred.\n * @param key - The modifier key.\n */\n public getModifierState(key: string): boolean\n {\n return 'getModifierState' in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n\n /**\n * Not supported.\n * @param _typeArg\n * @param _canBubbleArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n * @param _screenXArg\n * @param _screenYArg\n * @param _clientXArg\n * @param _clientYArg\n * @param _ctrlKeyArg\n * @param _altKeyArg\n * @param _shiftKeyArg\n * @param _metaKeyArg\n * @param _buttonArg\n * @param _relatedTargetArg\n * @deprecated since 7.0.0\n */\n // eslint-disable-next-line max-params\n public initMouseEvent(\n _typeArg: string,\n _canBubbleArg: boolean,\n _cancelableArg: boolean,\n _viewArg: Window,\n _detailArg: number,\n _screenXArg: number,\n _screenYArg: number,\n _clientXArg: number,\n _clientYArg: number,\n _ctrlKeyArg: boolean,\n _altKeyArg: boolean,\n _shiftKeyArg: boolean,\n _metaKeyArg: boolean,\n _buttonArg: number,\n _relatedTargetArg: EventTarget\n ): void\n {\n throw new Error('Method not implemented.');\n }\n}\n","import { FederatedMouseEvent } from './FederatedMouseEvent';\n\n/**\n * A {@link FederatedEvent} for pointer events.\n * @memberof events\n */\nexport class FederatedPointerEvent extends FederatedMouseEvent implements PointerEvent\n{\n /**\n * The unique identifier of the pointer.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId}\n */\n public pointerId: number;\n\n /**\n * The width of the pointer's contact along the x-axis, measured in CSS pixels.\n * radiusX of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width\n */\n public width = 0;\n\n /**\n * The height of the pointer's contact along the y-axis, measured in CSS pixels.\n * radiusY of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height\n */\n public height = 0;\n\n /**\n * Indicates whether or not the pointer device that created the event is the primary pointer.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary\n */\n public isPrimary = false;\n\n /**\n * The type of pointer that triggered the event.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType\n */\n public pointerType: string;\n\n /**\n * Pressure applied by the pointing device during the event.\n *s\n * A Touch's force property will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure\n */\n public pressure: number;\n\n /**\n * Barrel pressure on a stylus pointer.\n * @see https://w3c.github.io/pointerevents/#pointerevent-interface\n */\n public tangentialPressure: number;\n\n /**\n * The angle, in degrees, between the pointer device and the screen.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltX\n */\n public tiltX: number;\n\n /**\n * The angle, in degrees, between the pointer device and the screen.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltY\n */\n public tiltY: number;\n\n /**\n * Twist of a stylus pointer.\n * @see https://w3c.github.io/pointerevents/#pointerevent-interface\n */\n public twist: number;\n\n /** This is the number of clicks that occurs in 200ms/click of each other. */\n public detail: number;\n\n // Only included for completeness for now\n public getCoalescedEvents(): PointerEvent[]\n {\n if (this.type === 'pointermove' || this.type === 'mousemove' || this.type === 'touchmove')\n {\n return [this];\n }\n\n return [];\n }\n\n // Only included for completeness for now\n public getPredictedEvents(): PointerEvent[]\n {\n throw new Error('getPredictedEvents is not supported!');\n }\n}\n","import { FederatedMouseEvent } from './FederatedMouseEvent';\n\n/**\n * A {@link FederatedEvent} for wheel events.\n * @memberof events\n */\nexport class FederatedWheelEvent extends FederatedMouseEvent implements WheelEvent\n{\n /**\n * The units of `deltaX`, `deltaY`, and `deltaZ`. This is one of `DOM_DELTA_LINE`,\n * `DOM_DELTA_PAGE`, `DOM_DELTA_PIXEL`.\n */\n public deltaMode: number;\n\n /** Horizontal scroll amount */\n public deltaX: number;\n\n /** Vertical scroll amount */\n public deltaY: number;\n\n /** z-axis scroll amount. */\n public deltaZ: number;\n\n /** Units specified in pixels. */\n public static readonly DOM_DELTA_PIXEL = 0;\n\n /** Units specified in pixels. */\n public readonly DOM_DELTA_PIXEL = 0;\n\n /** Units specified in lines. */\n public static readonly DOM_DELTA_LINE = 1;\n\n /** Units specified in lines. */\n public readonly DOM_DELTA_LINE = 1;\n\n /** Units specified in pages. */\n public static readonly DOM_DELTA_PAGE = 2;\n\n /** Units specified in pages. */\n public readonly DOM_DELTA_PAGE = 2;\n}\n","import EventEmitter from 'eventemitter3';\nimport { Point } from '../maths/point/Point';\nimport { warn } from '../utils/logging/warn';\nimport { EventsTicker } from './EventTicker';\nimport { FederatedMouseEvent } from './FederatedMouseEvent';\nimport { FederatedPointerEvent } from './FederatedPointerEvent';\nimport { FederatedWheelEvent } from './FederatedWheelEvent';\n\nimport type { Renderable } from '../rendering/renderers/shared/Renderable';\nimport type { Container } from '../scene/container/Container';\nimport type { EmitterListeners, TrackingData } from './EventBoundaryTypes';\nimport type { FederatedEvent } from './FederatedEvent';\nimport type {\n Cursor, EventMode, FederatedEventHandler,\n FederatedEventTarget,\n IFederatedContainer\n} from './FederatedEventTarget';\n\n// The maximum iterations used in propagation. This prevent infinite loops.\nconst PROPAGATION_LIMIT = 2048;\n\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\n\n/**\n * Event boundaries are \"barriers\" where events coming from an upstream scene are modified before downstream propagation.\n *\n * ## Root event boundary\n *\n * The {@link EventSystem#rootBoundary rootBoundary} handles events coming from the <canvas />.\n * {@link EventSystem} handles the normalization from native {@link https://dom.spec.whatwg.org/#event Events}\n * into {@link FederatedEvent FederatedEvents}. The rootBoundary then does the hit-testing and event dispatch\n * for the upstream normalized event.\n *\n * ## Additional event boundaries\n *\n * An additional event boundary may be desired within an application's scene graph. For example, if a portion of the scene is\n * is flat with many children at one level - a spatial hash maybe needed to accelerate hit testing. In this scenario, the\n * container can be detached from the scene and glued using a custom event boundary.\n *\n * ```ts\n * import { Container } from 'pixi.js';\n * import { EventBoundary } from 'pixi.js';\n * import { SpatialHash } from 'pixi-spatial-hash';\n *\n * class HashedHitTestingEventBoundary\n * {\n * private spatialHash: SpatialHash;\n *\n * constructor(scene: Container, spatialHash: SpatialHash)\n * {\n * super(scene);\n * this.spatialHash = spatialHash;\n * }\n *\n * hitTestRecursive(...)\n * {\n * // TODO: If target === this.rootTarget, then use spatial hash to get a\n * // list of possible children that match the given (x,y) coordinates.\n * }\n * }\n *\n * class VastScene extends Container\n * {\n * protected eventBoundary: EventBoundary;\n * protected scene: Container;\n * protected spatialHash: SpatialHash;\n *\n * constructor()\n * {\n * this.scene = new Container();\n * this.spatialHash = new SpatialHash();\n * this.eventBoundary = new HashedHitTestingEventBoundary(this.scene, this.spatialHash);\n *\n * // Populate this.scene with a ton of children, while updating this.spatialHash\n * }\n * }\n * ```\n * @memberof events\n */\nexport class EventBoundary\n{\n /**\n * The root event-target residing below the event boundary.\n * All events are dispatched trickling down and bubbling up to this `rootTarget`.\n */\n public rootTarget: Container;\n\n /**\n * Emits events after they were dispatched into the scene graph.\n *\n * This can be used for global events listening, regardless of the scene graph being used. It should\n * not be used by interactive libraries for normal use.\n *\n * Special events that do not bubble all the way to the root target are not emitted from here,\n * e.g. pointerenter, pointerleave, click.\n */\n public dispatch: EventEmitter = new EventEmitter();\n\n /** The cursor preferred by the event targets underneath this boundary. */\n public cursor: Cursor | string;\n\n /**\n * This flag would emit `pointermove`, `touchmove`, and `mousemove` events on all Containers.\n *\n * The `moveOnAll` semantics mirror those of earlier versions of PixiJS. This was disabled in favor of\n * the Pointer Event API's approach.\n */\n public moveOnAll = false;\n\n /** Enables the global move events. `globalpointermove`, `globaltouchmove`, and `globalmousemove` */\n public enableGlobalMoveEvents = true;\n\n /**\n * Maps event types to forwarding handles for them.\n *\n * {@link EventBoundary EventBoundary} provides mapping for \"pointerdown\", \"pointermove\",\n * \"pointerout\", \"pointerleave\", \"pointerover\", \"pointerup\", and \"pointerupoutside\" by default.\n * @see EventBoundary#addEventMapping\n */\n protected mappingTable: Record void,\n priority: number\n }>>;\n\n /**\n * State object for mapping methods.\n * @see EventBoundary#trackingData\n */\n protected mappingState: Record = {\n trackingData: {}\n };\n\n /**\n * The event pool maps event constructors to an free pool of instances of those specific events.\n * @see EventBoundary#allocateEvent\n * @see EventBoundary#freeEvent\n */\n protected eventPool: Map = new Map();\n\n /** Every interactive element gathered from the scene. Only used in `pointermove` */\n private readonly _allInteractiveElements: FederatedEventTarget[] = [];\n /** Every element that passed the hit test. Only used in `pointermove` */\n private _hitElements: FederatedEventTarget[] = [];\n /** Whether or not to collect all the interactive elements from the scene. Enabled in `pointermove` */\n private _isPointerMoveEvent = false;\n\n /**\n * @param rootTarget - The holder of the event boundary.\n */\n constructor(rootTarget?: Container)\n {\n this.rootTarget = rootTarget;\n\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n\n this.mappingTable = {};\n this.addEventMapping('pointerdown', this.mapPointerDown);\n this.addEventMapping('pointermove', this.mapPointerMove);\n this.addEventMapping('pointerout', this.mapPointerOut);\n this.addEventMapping('pointerleave', this.mapPointerOut);\n this.addEventMapping('pointerover', this.mapPointerOver);\n this.addEventMapping('pointerup', this.mapPointerUp);\n this.addEventMapping('pointerupoutside', this.mapPointerUpOutside);\n this.addEventMapping('wheel', this.mapWheel);\n }\n\n /**\n * Adds an event mapping for the event `type` handled by `fn`.\n *\n * Event mappings can be used to implement additional or custom events. They take an event\n * coming from the upstream scene (or directly from the {@link EventSystem}) and dispatch new downstream events\n * generally trickling down and bubbling up to {@link EventBoundary.rootTarget this.rootTarget}.\n *\n * To modify the semantics of existing events, the built-in mapping methods of EventBoundary should be overridden\n * instead.\n * @param type - The type of upstream event to map.\n * @param fn - The mapping method. The context of this function must be bound manually, if desired.\n */\n public addEventMapping(type: string, fn: (e: FederatedEvent) => void): void\n {\n if (!this.mappingTable[type])\n {\n this.mappingTable[type] = [];\n }\n\n this.mappingTable[type].push({\n fn,\n priority: 0,\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n\n /**\n * Dispatches the given event\n * @param e - The event to dispatch.\n * @param type - The type of event to dispatch. Defaults to `e.type`.\n */\n public dispatchEvent(e: FederatedEvent, type?: string): void\n {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n\n /**\n * Maps the given upstream event through the event boundary and propagates it downstream.\n * @param e - The event to map.\n */\n public mapEvent(e: FederatedEvent): void\n {\n if (!this.rootTarget)\n {\n return;\n }\n\n const mappers = this.mappingTable[e.type];\n\n if (mappers)\n {\n for (let i = 0, j = mappers.length; i < j; i++)\n {\n mappers[i].fn(e);\n }\n }\n else\n {\n // #if _DEBUG\n warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n // #endif\n }\n }\n\n /**\n * Finds the Container that is the target of a event at the given coordinates.\n *\n * The passed (x,y) coordinates are in the world space above this event boundary.\n * @param x - The x coordinate of the event.\n * @param y - The y coordinate of the event.\n */\n public hitTest(\n x: number,\n y: number,\n ): Container\n {\n EventsTicker.pauseUpdate = true;\n // if we are using global move events, we need to hit test the whole scene graph\n const useMove = this._isPointerMoveEvent && this.enableGlobalMoveEvents;\n const fn = useMove ? 'hitTestMoveRecursive' : 'hitTestRecursive';\n const invertedPath = this[fn](\n this.rootTarget,\n this.rootTarget.eventMode,\n tempHitLocation.set(x, y),\n this.hitTestFn,\n this.hitPruneFn,\n );\n\n return invertedPath && invertedPath[0];\n }\n\n /**\n * Propagate the passed event from from {@link EventBoundary.rootTarget this.rootTarget} to its\n * target {@code e.target}.\n * @param e - The event to propagate.\n * @param type - The type of event to propagate. Defaults to `e.type`.\n */\n public propagate(e: FederatedEvent, type?: string): void\n {\n if (!e.target)\n {\n // This usually occurs when the scene graph is not interactive.\n return;\n }\n\n const composedPath = e.composedPath();\n\n // Capturing phase\n e.eventPhase = e.CAPTURING_PHASE;\n\n for (let i = 0, j = composedPath.length - 1; i < j; i++)\n {\n e.currentTarget = composedPath[i];\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) return;\n }\n\n // At target phase\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) return;\n\n // Bubbling phase\n e.eventPhase = e.BUBBLING_PHASE;\n\n for (let i = composedPath.length - 2; i >= 0; i--)\n {\n e.currentTarget = composedPath[i];\n\n this.notifyTarget(e, type);\n\n if (e.propagationStopped || e.propagationImmediatelyStopped) return;\n }\n }\n\n /**\n * Emits the event {@code e} to all interactive containers. The event is propagated in the bubbling phase always.\n *\n * This is used in the `globalpointermove` event.\n * @param e - The emitted event.\n * @param type - The listeners to notify.\n * @param targets - The targets to notify.\n */\n public all(e: FederatedEvent, type?: string | string[], targets = this._allInteractiveElements): void\n {\n if (targets.length === 0) return;\n\n e.eventPhase = e.BUBBLING_PHASE;\n\n const events = Array.isArray(type) ? type : [type];\n\n // loop through all interactive elements and notify them of the event\n // loop through targets backwards\n for (let i = targets.length - 1; i >= 0; i--)\n {\n events.forEach((event) =>\n {\n e.currentTarget = targets[i];\n this.notifyTarget(e, event);\n });\n }\n }\n\n /**\n * Finds the propagation path from {@link EventBoundary.rootTarget rootTarget} to the passed\n * {@code target}. The last element in the path is {@code target}.\n * @param target - The target to find the propagation path to.\n */\n public propagationPath(target: FederatedEventTarget): FederatedEventTarget[]\n {\n const propagationPath = [target];\n\n for (let i = 0; i < PROPAGATION_LIMIT && (target !== this.rootTarget && target.parent); i++)\n {\n if (!target.parent)\n {\n throw new Error('Cannot find propagation path to disconnected target');\n }\n\n propagationPath.push(target.parent);\n\n target = target.parent;\n }\n\n propagationPath.reverse();\n\n return propagationPath;\n }\n\n protected hitTestMoveRecursive(\n currentTarget: Container,\n eventMode: EventMode,\n location: Point,\n testFn: (object: Container, pt: Point) => boolean,\n pruneFn: (object: Container, pt: Point) => boolean,\n ignore = false\n ): Container[]\n {\n let shouldReturn = false;\n\n // only bail out early if it is not interactive\n if (this._interactivePrune(currentTarget)) return null;\n\n if (currentTarget.eventMode === 'dynamic' || eventMode === 'dynamic')\n {\n EventsTicker.pauseUpdate = false;\n }\n\n if (currentTarget.interactiveChildren && currentTarget.children)\n {\n const children = currentTarget.children;\n\n for (let i = children.length - 1; i >= 0; i--)\n {\n const child = children[i] as Container;\n\n const nestedHit = this.hitTestMoveRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n location,\n testFn,\n pruneFn,\n ignore || pruneFn(currentTarget, location)\n );\n\n if (nestedHit)\n {\n // Its a good idea to check if a child has lost its parent.\n // this means it has been removed whilst looping so its best\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent)\n {\n continue;\n }\n\n // Only add the current hit-test target to the hit-test chain if the chain\n // has already started (i.e. the event target has been found) or if the current\n // target is interactive (i.e. it becomes the event target).\n const isInteractive = currentTarget.isInteractive();\n\n if (nestedHit.length > 0 || isInteractive)\n {\n if (isInteractive) this._allInteractiveElements.push(currentTarget);\n nestedHit.push(currentTarget);\n }\n\n // store all hit elements to be returned once we have traversed the whole tree\n if (this._hitElements.length === 0) this._hitElements = nestedHit;\n\n shouldReturn = true;\n }\n }\n }\n\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n\n if (isInteractiveTarget && isInteractiveTarget) this._allInteractiveElements.push(currentTarget);\n\n // we don't carry on hit testing something once we have found a hit,\n // now only care about gathering the interactive elements\n if (ignore || this._hitElements.length > 0) return null;\n\n if (shouldReturn) return this._hitElements as Container[];\n\n // Finally, hit test this Container itself.\n if (isInteractiveMode && (!pruneFn(currentTarget, location) && testFn(currentTarget, location)))\n {\n // The current hit-test target is the event's target only if it is interactive. Otherwise,\n // the first interactive ancestor will be the event's target.\n return isInteractiveTarget ? [currentTarget] : [];\n }\n\n return null;\n }\n\n /**\n * Recursive implementation for {@link EventBoundary.hitTest hitTest}.\n * @param currentTarget - The Container that is to be hit tested.\n * @param eventMode - The event mode for the `currentTarget` or one of its parents.\n * @param location - The location that is being tested for overlap.\n * @param testFn - Callback that determines whether the target passes hit testing. This callback\n * can assume that `pruneFn` failed to prune the container.\n * @param pruneFn - Callback that determiness whether the target and all of its children\n * cannot pass the hit test. It is used as a preliminary optimization to prune entire subtrees\n * of the scene graph.\n * @returns An array holding the hit testing target and all its ancestors in order. The first element\n * is the target itself and the last is {@link EventBoundary.rootTarget rootTarget}. This is the opposite\n * order w.r.t. the propagation path. If no hit testing target is found, null is returned.\n */\n protected hitTestRecursive(\n currentTarget: Container,\n eventMode: EventMode,\n location: Point,\n testFn: (object: Container, pt: Point) => boolean,\n pruneFn: (object: Container, pt: Point) => boolean\n ): Container[]\n {\n // Attempt to prune this Container and its subtree as an optimization.\n if (this._interactivePrune(currentTarget) || pruneFn(currentTarget, location))\n {\n return null;\n }\n if (currentTarget.eventMode === 'dynamic' || eventMode === 'dynamic')\n {\n EventsTicker.pauseUpdate = false;\n }\n\n // Find a child that passes the hit testing and return one, if any.\n if (currentTarget.interactiveChildren && currentTarget.children)\n {\n const children = currentTarget.children;\n const relativeLocation = location;\n\n for (let i = children.length - 1; i >= 0; i--)\n {\n const child = children[i] as Container;\n\n const nestedHit = this.hitTestRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n relativeLocation,\n testFn,\n pruneFn\n );\n\n if (nestedHit)\n {\n // Its a good idea to check if a child has lost its parent.\n // this means it has been removed whilst looping so its best\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent)\n {\n continue;\n }\n\n // Only add the current hit-test target to the hit-test chain if the chain\n // has already started (i.e. the event target has been found) or if the current\n // target is interactive (i.e. it becomes the event target).\n const isInteractive = currentTarget.isInteractive();\n\n if (nestedHit.length > 0 || isInteractive) nestedHit.push(currentTarget);\n\n return nestedHit;\n }\n }\n }\n\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n\n // Finally, hit test this Container itself.\n if (isInteractiveMode && testFn(currentTarget, location))\n {\n // The current hit-test target is the event's target only if it is interactive. Otherwise,\n // the first interactive ancestor will be the event's target.\n return isInteractiveTarget ? [currentTarget] : [];\n }\n\n return null;\n }\n\n private _isInteractive(int: EventMode): int is 'static' | 'dynamic'\n {\n return int === 'static' || int === 'dynamic';\n }\n\n private _interactivePrune(container: Container): boolean\n {\n // If container is a mask, invisible, or not renderable then it cannot be hit directly.\n if (!container || !container.visible || !container.renderable)\n {\n return true;\n }\n\n // If this Container is none then it cannot be hit by anything.\n if (container.eventMode === 'none')\n {\n return true;\n }\n\n // If this Container is passive and it has no interactive children then it cannot be hit\n if (container.eventMode === 'passive' && !container.interactiveChildren)\n {\n return true;\n }\n\n return false;\n }\n\n /**\n * Checks whether the container or any of its children cannot pass the hit test at all.\n *\n * {@link EventBoundary}'s implementation uses the {@link Container.hitArea hitArea}\n * and {@link Container._mask} for pruning.\n * @param container - The container to prune.\n * @param location - The location to test for overlap.\n */\n protected hitPruneFn(container: Container, location: Point): boolean\n {\n if (container.hitArea)\n {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n\n if (!container.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y))\n {\n return true;\n }\n }\n\n if (container.effects && container.effects.length)\n {\n for (let i = 0; i < container.effects.length; i++)\n {\n const effect = container.effects[i];\n\n if (effect.containsPoint)\n {\n const effectContainsPoint = effect.containsPoint(location, this.hitTestFn);\n\n if (!effectContainsPoint)\n {\n return true;\n }\n }\n }\n }\n\n return false;\n }\n\n /**\n * Checks whether the container passes hit testing for the given location.\n * @param container - The container to test.\n * @param location - The location to test for overlap.\n * @returns - Whether `container` passes hit testing for `location`.\n */\n protected hitTestFn(container: Container, location: Point): boolean\n {\n // If the container failed pruning with a hitArea, then it must pass it.\n if (container.hitArea)\n {\n return true;\n }\n\n if ((container as Renderable)?.containsPoint)\n {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n\n return (container as Renderable).containsPoint(tempLocalMapping) as boolean;\n }\n\n // TODO: Should we hit test based on bounds?\n\n return false;\n }\n\n /**\n * Notify all the listeners to the event's `currentTarget`.\n *\n * If the `currentTarget` contains the property `on`, then it is called here,\n * simulating the behavior from version 6.x and prior.\n * @param e - The event passed to the target.\n * @param type - The type of event to notify. Defaults to `e.type`.\n */\n protected notifyTarget(e: FederatedEvent, type?: string): void\n {\n type = type ?? e.type;\n\n // call the `on${type}` for the current target if it exists\n const handlerKey = `on${type}` as keyof IFederatedContainer;\n\n (e.currentTarget[handlerKey] as FederatedEventHandler)?.(e);\n\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n\n this._notifyListeners(e, key);\n\n if (e.eventPhase === e.AT_TARGET)\n {\n this._notifyListeners(e, type);\n }\n }\n\n /**\n * Maps the upstream `pointerdown` events to a downstream `pointerdown` event.\n *\n * `touchstart`, `rightdown`, `mousedown` events are also dispatched for specific pointer types.\n * @param from - The upstream `pointerdown` event.\n */\n protected mapPointerDown(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n const e = this.createPointerEvent(from);\n\n this.dispatchEvent(e, 'pointerdown');\n\n if (e.pointerType === 'touch')\n {\n this.dispatchEvent(e, 'touchstart');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen')\n {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightdown' : 'mousedown');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n\n this.freeEvent(e);\n }\n\n /**\n * Maps the upstream `pointermove` to downstream `pointerout`, `pointerover`, and `pointermove` events, in that order.\n *\n * The tracking data for the specific pointer has an updated `overTarget`. `mouseout`, `mouseover`,\n * `mousemove`, and `touchmove` events are fired as well for specific pointer types.\n * @param from - The upstream `pointermove` event.\n */\n protected mapPointerMove(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n this._isPointerMoveEvent = true;\n const e = this.createPointerEvent(from);\n\n this._isPointerMoveEvent = false;\n const isMouse = e.pointerType === 'mouse' || e.pointerType === 'pen';\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n // First pointerout/pointerleave\n if (trackingData.overTargets?.length > 0 && outTarget !== e.target)\n {\n // pointerout always occurs on the overTarget when the pointer hovers over another element.\n const outType = from.type === 'mousemove' ? 'mouseout' : 'pointerout';\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n\n this.dispatchEvent(outEvent, 'pointerout');\n if (isMouse) this.dispatchEvent(outEvent, 'mouseout');\n\n // If the pointer exits overTarget and its descendants, then a pointerleave event is also fired. This event\n // is dispatched to all ancestors that no longer capture the pointer.\n if (!e.composedPath().includes(outTarget))\n {\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target))\n {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) this.notifyTarget(leaveEvent, 'mouseleave');\n\n leaveEvent.target = leaveEvent.target.parent;\n }\n\n this.freeEvent(leaveEvent);\n }\n\n this.freeEvent(outEvent);\n }\n\n // Then pointerover\n if (outTarget !== e.target)\n {\n // pointerover always occurs on the new overTarget\n const overType = from.type === 'mousemove' ? 'mouseover' : 'pointerover';\n const overEvent = this.clonePointerEvent(e, overType);// clone faster\n\n this.dispatchEvent(overEvent, 'pointerover');\n if (isMouse) this.dispatchEvent(overEvent, 'mouseover');\n\n // Probe whether the newly hovered Container is an ancestor of the original overTarget.\n let overTargetAncestor = outTarget?.parent;\n\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent)\n {\n if (overTargetAncestor === e.target) break;\n\n overTargetAncestor = overTargetAncestor.parent;\n }\n\n // The pointer has entered a non-ancestor of the original overTarget. This means we need a pointerentered\n // event.\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n\n if (didPointerEnter)\n {\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target\n && enterEvent.target !== outTarget\n && enterEvent.target !== this.rootTarget.parent)\n {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) this.notifyTarget(enterEvent, 'mouseenter');\n\n enterEvent.target = enterEvent.target.parent;\n }\n\n this.freeEvent(enterEvent);\n }\n\n this.freeEvent(overEvent);\n }\n\n const allMethods: string[] = [];\n const allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? true;\n\n this.moveOnAll ? allMethods.push('pointermove') : this.dispatchEvent(e, 'pointermove');\n allowGlobalPointerEvents && allMethods.push('globalpointermove');\n\n // Then pointermove\n if (e.pointerType === 'touch')\n {\n this.moveOnAll ? allMethods.splice(1, 0, 'touchmove') : this.dispatchEvent(e, 'touchmove');\n allowGlobalPointerEvents && allMethods.push('globaltouchmove');\n }\n\n if (isMouse)\n {\n this.moveOnAll ? allMethods.splice(1, 0, 'mousemove') : this.dispatchEvent(e, 'mousemove');\n allowGlobalPointerEvents && allMethods.push('globalmousemove');\n this.cursor = e.target?.cursor;\n }\n\n if (allMethods.length > 0)\n {\n this.all(e, allMethods);\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n }\n\n /**\n * Maps the upstream `pointerover` to downstream `pointerover` and `pointerenter` events, in that order.\n *\n * The tracking data for the specific pointer gets a new `overTarget`.\n * @param from - The upstream `pointerover` event.\n */\n protected mapPointerOver(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === 'mouse' || e.pointerType === 'pen';\n\n this.dispatchEvent(e, 'pointerover');\n if (isMouse) this.dispatchEvent(e, 'mouseover');\n if (e.pointerType === 'mouse') this.cursor = e.target?.cursor;\n\n // pointerenter events must be fired since the pointer entered from upstream.\n const enterEvent = this.clonePointerEvent(e, 'pointerenter');\n\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent)\n {\n enterEvent.currentTarget = enterEvent.target;\n\n this.notifyTarget(enterEvent);\n if (isMouse) this.notifyTarget(enterEvent, 'mouseenter');\n\n enterEvent.target = enterEvent.target.parent;\n }\n\n trackingData.overTargets = e.composedPath();\n\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n\n /**\n * Maps the upstream `pointerout` to downstream `pointerout`, `pointerleave` events, in that order.\n *\n * The tracking data for the specific pointer is cleared of a `overTarget`.\n * @param from - The upstream `pointerout` event.\n */\n protected mapPointerOut(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n\n if (trackingData.overTargets)\n {\n const isMouse = from.pointerType === 'mouse' || from.pointerType === 'pen';\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n\n // pointerout first\n const outEvent = this.createPointerEvent(from, 'pointerout', outTarget);\n\n this.dispatchEvent(outEvent);\n if (isMouse) this.dispatchEvent(outEvent, 'mouseout');\n\n // pointerleave(s) are also dispatched b/c the pointer must've left rootTarget and its descendants to\n // get an upstream pointerout event (upstream events do not know rootTarget has descendants).\n const leaveEvent = this.createPointerEvent(from, 'pointerleave', outTarget);\n\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent)\n {\n leaveEvent.currentTarget = leaveEvent.target;\n\n this.notifyTarget(leaveEvent);\n if (isMouse) this.notifyTarget(leaveEvent, 'mouseleave');\n\n leaveEvent.target = leaveEvent.target.parent;\n }\n\n trackingData.overTargets = null;\n\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n\n this.cursor = null;\n }\n\n /**\n * Maps the upstream `pointerup` event to downstream `pointerup`, `pointerupoutside`,\n * and `click`/`rightclick`/`pointertap` events, in that order.\n *\n * The `pointerupoutside` event bubbles from the original `pointerdown` target to the most specific\n * ancestor of the `pointerdown` and `pointerup` targets, which is also the `click` event's target. `touchend`,\n * `rightup`, `mouseup`, `touchendoutside`, `rightupoutside`, `mouseupoutside`, and `tap` are fired as well for\n * specific pointer types.\n * @param from - The upstream `pointerup` event.\n */\n protected mapPointerUp(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n const now = performance.now();\n const e = this.createPointerEvent(from);\n\n this.dispatchEvent(e, 'pointerup');\n\n if (e.pointerType === 'touch')\n {\n this.dispatchEvent(e, 'touchend');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen')\n {\n const isRightButton = e.button === 2;\n\n this.dispatchEvent(e, isRightButton ? 'rightup' : 'mouseup');\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n\n let clickTarget = pressTarget;\n\n // pointerupoutside only bubbles. It only bubbles upto the parent that doesn't contain\n // the pointerup location.\n if (pressTarget && !e.composedPath().includes(pressTarget))\n {\n let currentTarget = pressTarget;\n\n while (currentTarget && !e.composedPath().includes(currentTarget))\n {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch')\n {\n this.notifyTarget(e, 'touchendoutside');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen')\n {\n const isRightButton = e.button === 2;\n\n this.notifyTarget(e, isRightButton ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n\n // currentTarget is the most specific ancestor holding both the pointerdown and pointerup\n // targets. That is - it's our click target!\n clickTarget = currentTarget;\n }\n\n // click!\n if (clickTarget)\n {\n const clickEvent = this.clonePointerEvent(e, 'click');\n\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n\n if (!trackingData.clicksByButton[from.button])\n {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now,\n };\n }\n\n const clickHistory = trackingData.clicksByButton[from.button];\n\n if (clickHistory.target === clickEvent.target\n && now - clickHistory.timeStamp < 200)\n {\n ++clickHistory.clickCount;\n }\n else\n {\n clickHistory.clickCount = 1;\n }\n\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n\n clickEvent.detail = clickHistory.clickCount;\n\n if (clickEvent.pointerType === 'mouse')\n {\n const isRightButton = clickEvent.button === 2;\n\n this.dispatchEvent(clickEvent, isRightButton ? 'rightclick' : 'click');\n }\n else if (clickEvent.pointerType === 'touch')\n {\n this.dispatchEvent(clickEvent, 'tap');\n }\n\n this.dispatchEvent(clickEvent, 'pointertap');\n\n this.freeEvent(clickEvent);\n }\n\n this.freeEvent(e);\n }\n\n /**\n * Maps the upstream `pointerupoutside` event to a downstream `pointerupoutside` event, bubbling from the original\n * `pointerdown` target to `rootTarget`.\n *\n * (The most specific ancestor of the `pointerdown` event and the `pointerup` event must the\n * `{@link EventBoundary}'s root because the `pointerup` event occurred outside of the boundary.)\n *\n * `touchendoutside`, `mouseupoutside`, and `rightupoutside` events are fired as well for specific pointer\n * types. The tracking data for the specific pointer is cleared of a `pressTarget`.\n * @param from - The upstream `pointerupoutside` event.\n */\n protected mapPointerUpOutside(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-pointer event as a pointer event');\n // #endif\n\n return;\n }\n\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n\n if (pressTarget)\n {\n let currentTarget = pressTarget;\n\n while (currentTarget)\n {\n e.currentTarget = currentTarget;\n\n this.notifyTarget(e, 'pointerupoutside');\n\n if (e.pointerType === 'touch')\n {\n this.notifyTarget(e, 'touchendoutside');\n }\n else if (e.pointerType === 'mouse' || e.pointerType === 'pen')\n {\n this.notifyTarget(e, e.button === 2 ? 'rightupoutside' : 'mouseupoutside');\n }\n\n currentTarget = currentTarget.parent;\n }\n\n delete trackingData.pressTargetsByButton[from.button];\n }\n\n this.freeEvent(e);\n }\n\n /**\n * Maps the upstream `wheel` event to a downstream `wheel` event.\n * @param from - The upstream `wheel` event.\n */\n protected mapWheel(from: FederatedEvent): void\n {\n if (!(from instanceof FederatedWheelEvent))\n {\n // #if _DEBUG\n warn('EventBoundary cannot map a non-wheel event as a wheel event');\n // #endif\n\n return;\n }\n\n const wheelEvent = this.createWheelEvent(from);\n\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n\n /**\n * Finds the most specific event-target in the given propagation path that is still mounted in the scene graph.\n *\n * This is used to find the correct `pointerup` and `pointerout` target in the case that the original `pointerdown`\n * or `pointerover` target was unmounted from the scene graph.\n * @param propagationPath - The propagation path was valid in the past.\n * @returns - The most specific event-target still mounted at the same location in the scene graph.\n */\n protected findMountedTarget(propagationPath: FederatedEventTarget[]): FederatedEventTarget\n {\n if (!propagationPath)\n {\n return null;\n }\n\n let currentTarget = propagationPath[0];\n\n for (let i = 1; i < propagationPath.length; i++)\n {\n // Set currentTarget to the next target in the path only if it is still attached to the\n // scene graph (i.e. parent still points to the expected ancestor).\n if (propagationPath[i].parent === currentTarget)\n {\n currentTarget = propagationPath[i];\n }\n else\n {\n break;\n }\n }\n\n return currentTarget;\n }\n\n /**\n * Creates an event whose {@code originalEvent} is {@code from}, with an optional `type` and `target` override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The {@code originalEvent} for the returned event.\n * @param [type=from.type] - The type of the returned event.\n * @param target - The target of the returned event.\n */\n protected createPointerEvent(\n from: FederatedPointerEvent,\n type?: string,\n target?: FederatedEventTarget\n ): FederatedPointerEvent\n {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target\n ?? this.hitTest(event.global.x, event.global.y) as FederatedEventTarget\n ?? this._hitElements[0];\n\n if (typeof type === 'string')\n {\n event.type = type;\n }\n\n return event;\n }\n\n /**\n * Creates a wheel event whose {@code originalEvent} is {@code from}.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The upstream wheel event.\n */\n protected createWheelEvent(from: FederatedWheelEvent): FederatedWheelEvent\n {\n const event = this.allocateEvent(FederatedWheelEvent);\n\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n\n return event;\n }\n\n /**\n * Clones the event {@code from}, with an optional {@code type} override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The event to clone.\n * @param [type=from.type] - The type of the returned event.\n */\n protected clonePointerEvent(from: FederatedPointerEvent, type?: string): FederatedPointerEvent\n {\n const event = this.allocateEvent(FederatedPointerEvent);\n\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n\n // copy propagation path for perf\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n\n return event;\n }\n\n /**\n * Copies wheel {@link FederatedWheelEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + deltaMode\n * + deltaX\n * + deltaY\n * + deltaZ\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n protected copyWheelData(from: FederatedWheelEvent, to: FederatedWheelEvent): void\n {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n\n /**\n * Copies pointer {@link FederatedPointerEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + pointerId\n * + width\n * + height\n * + isPrimary\n * + pointerType\n * + pressure\n * + tangentialPressure\n * + tiltX\n * + tiltY\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n protected copyPointerData(from: FederatedEvent, to: FederatedEvent): void\n {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent)) return;\n\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n\n /**\n * Copies mouse {@link FederatedMouseEvent} data from {@code from} to {@code to}.\n *\n * The following properties are copied:\n * + altKey\n * + button\n * + buttons\n * + clientX\n * + clientY\n * + metaKey\n * + movementX\n * + movementY\n * + pageX\n * + pageY\n * + x\n * + y\n * + screen\n * + shiftKey\n * + global\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n protected copyMouseData(from: FederatedEvent, to: FederatedEvent): void\n {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent)) return;\n\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.shiftKey = from.shiftKey;\n to.global.copyFrom(from.global);\n }\n\n /**\n * Copies base {@link FederatedEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + isTrusted\n * + srcElement\n * + timeStamp\n * + type\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n protected copyData(from: FederatedEvent, to: FederatedEvent): void\n {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n\n /**\n * @param id - The pointer ID.\n * @returns The tracking data stored for the given pointer. If no data exists, a blank\n * state will be created.\n */\n protected trackingData(id: number): TrackingData\n {\n if (!this.mappingState.trackingData[id])\n {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n\n return this.mappingState.trackingData[id];\n }\n\n /**\n * Allocate a specific type of event from {@link EventBoundary#eventPool this.eventPool}.\n *\n * This allocation is constructor-agnostic, as long as it only takes one argument - this event\n * boundary.\n * @param constructor - The event's constructor.\n */\n protected allocateEvent(\n constructor: { new(boundary: EventBoundary): T }\n ): T\n {\n if (!this.eventPool.has(constructor as any))\n {\n this.eventPool.set(constructor as any, []);\n }\n\n const event = this.eventPool.get(constructor as any).pop() as T\n || new constructor(this);\n\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n\n return event;\n }\n\n /**\n * Frees the event and puts it back into the event pool.\n *\n * It is illegal to reuse the event until it is allocated again, using `this.allocateEvent`.\n *\n * It is also advised that events not allocated from {@link EventBoundary#allocateEvent this.allocateEvent}\n * not be freed. This is because of the possibility that the same event is freed twice, which can cause\n * it to be allocated twice & result in overwriting.\n * @param event - The event to be freed.\n * @throws Error if the event is managed by another event boundary.\n */\n protected freeEvent(event: T): void\n {\n if (event.manager !== this) throw new Error('It is illegal to free an event not managed by this EventBoundary!');\n\n const constructor = event.constructor;\n\n if (!this.eventPool.has(constructor as any))\n {\n this.eventPool.set(constructor as any, []);\n }\n\n this.eventPool.get(constructor as any).push(event);\n }\n\n /**\n * Similar to {@link EventEmitter.emit}, except it stops if the `propagationImmediatelyStopped` flag\n * is set on the event.\n * @param e - The event to call each listener with.\n * @param type - The event key.\n */\n private _notifyListeners(e: FederatedEvent, type: string): void\n {\n const listeners = ((e.currentTarget as any)._events as EmitterListeners)[type];\n\n if (!listeners) return;\n if (!e.currentTarget.isInteractive()) return;\n\n if ('fn' in listeners)\n {\n if (listeners.once) e.currentTarget.removeListener(type, listeners.fn, undefined, true);\n listeners.fn.call(listeners.context, e);\n }\n else\n {\n for (\n let i = 0, j = listeners.length;\n i < j && !e.propagationImmediatelyStopped;\n i++)\n {\n if (listeners[i].once) e.currentTarget.removeListener(type, listeners[i].fn, undefined, true);\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n","import { ExtensionType } from '../extensions/Extensions';\nimport { EventBoundary } from './EventBoundary';\nimport { EventsTicker } from './EventTicker';\nimport { FederatedPointerEvent } from './FederatedPointerEvent';\nimport { FederatedWheelEvent } from './FederatedWheelEvent';\n\nimport type { ExtensionMetadata } from '../extensions/Extensions';\nimport type { PointData } from '../maths/point/PointData';\nimport type { System } from '../rendering/renderers/shared/system/System';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { PixiTouch } from './FederatedEvent';\nimport type { EventMode } from './FederatedEventTarget';\nimport type { FederatedMouseEvent } from './FederatedMouseEvent';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER: Record = {\n touchstart: 'pointerdown',\n touchend: 'pointerup',\n touchendoutside: 'pointerupoutside',\n touchmove: 'pointermove',\n touchcancel: 'pointercancel',\n};\n\n/** @ignore */\nexport interface EventSystemOptions\n{\n /**\n * The default event mode mode for all display objects.\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n */\n eventMode?: EventMode;\n\n /**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @example\n * const app = new Application({\n * view: canvas,\n * events: {\n * move: true,\n * globalMove: false,\n * click: true,\n * wheel: true,\n * },\n * });\n */\n eventFeatures?: Partial\n}\n\n/**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @since 7.2.0\n * @memberof events\n */\ninterface EventSystemFeatures\n{\n /**\n * Enables pointer events associated with pointer movement:\n * - `pointermove` / `mousemove` / `touchmove`\n * - `pointerout` / `mouseout`\n * - `pointerover` / `mouseover`\n */\n move: boolean;\n // eslint-disable-next-line jsdoc/multiline-blocks\n /**\n * Enables global pointer move events:\n * - `globalpointermove`\n * - `globalmousemove`\n * - `globaltouchemove`\n */\n globalMove: boolean;\n /**\n * Enables pointer events associated with clicking:\n * - `pointerup` / `mouseup` / `touchend` / 'rightup'\n * - `pointerupoutside` / `mouseupoutside` / `touchendoutside` / 'rightupoutside'\n * - `pointerdown` / 'mousedown' / `touchstart` / 'rightdown'\n * - `click` / `tap`\n */\n click: boolean;\n /** - Enables wheel events. */\n wheel: boolean;\n}\n\n/**\n * The system for handling UI events.\n * @memberof events\n */\nexport class EventSystem implements System\n{\n /** @ignore */\n public static extension: ExtensionMetadata = {\n name: 'events',\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.CanvasSystem,\n ExtensionType.WebGPUSystem,\n ],\n priority: -1,\n };\n\n /**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @since 7.2.0\n */\n public static defaultEventFeatures: EventSystemFeatures = {\n /** Enables pointer events associated with pointer movement. */\n move: true,\n /** Enables global pointer move events. */\n globalMove: true,\n /** Enables pointer events associated with clicking. */\n click: true,\n /** Enables wheel events. */\n wheel: true,\n };\n\n private static _defaultEventMode: EventMode;\n\n /**\n * The default interaction mode for all display objects.\n * @see Container.eventMode\n * @type {EventMode}\n * @readonly\n * @since 7.2.0\n */\n public static get defaultEventMode()\n {\n return this._defaultEventMode;\n }\n\n /**\n * The {@link EventBoundary} for the stage.\n *\n * The {@link EventBoundary#rootTarget rootTarget} of this root boundary is automatically set to\n * the last rendered object before any event processing is initiated. This means the main scene\n * needs to be rendered atleast once before UI events will start propagating.\n *\n * The root boundary should only be changed during initialization. Otherwise, any state held by the\n * event boundary may be lost (like hovered & pressed Containers).\n */\n public readonly rootBoundary: EventBoundary;\n\n /** Does the device support touch events https://www.w3.org/TR/touch-events/ */\n public readonly supportsTouchEvents = 'ontouchstart' in globalThis;\n\n /** Does the device support pointer events https://www.w3.org/Submission/pointer-events/ */\n public readonly supportsPointerEvents = !!globalThis.PointerEvent;\n\n /**\n * Should default browser actions automatically be prevented.\n * Does not apply to pointer events for backwards compatibility\n * preventDefault on pointer events stops mouse events from firing\n * Thus, for every pointer event, there will always be either a mouse of touch event alongside it.\n * @default true\n */\n public autoPreventDefault: boolean;\n\n /**\n * Dictionary of how different cursor modes are handled. Strings are handled as CSS cursor\n * values, objects are handled as dictionaries of CSS values for {@code domElement},\n * and functions are called instead of changing the CSS.\n * Default CSS cursor values are provided for 'default' and 'pointer' modes.\n */\n public cursorStyles: Record void) | CSSStyleDeclaration>;\n\n /**\n * The DOM element to which the root event listeners are bound. This is automatically set to\n * the renderer's {@link Renderer#view view}.\n */\n public domElement: HTMLElement = null;\n\n /** The resolution used to convert between the DOM client space into world space. */\n public resolution = 1;\n\n /** The renderer managing this {@link EventSystem}. */\n public renderer: Renderer;\n\n /**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @since 7.2.0\n * @example\n * const app = new Application()\n * app.renderer.events.features.globalMove = false\n *\n * // to override all features use Object.assign\n * Object.assign(app.renderer.events.features, {\n * move: false,\n * globalMove: false,\n * click: false,\n * wheel: false,\n * })\n */\n public readonly features: EventSystemFeatures;\n\n private _currentCursor: string;\n private readonly _rootPointerEvent: FederatedPointerEvent;\n private readonly _rootWheelEvent: FederatedWheelEvent;\n private _eventsAdded: boolean;\n\n /**\n * @param {Renderer} renderer\n */\n constructor(renderer: Renderer)\n {\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n EventsTicker.init(this);\n\n this.autoPreventDefault = true;\n this._eventsAdded = false;\n\n this._rootPointerEvent = new FederatedPointerEvent(null);\n this._rootWheelEvent = new FederatedWheelEvent(null);\n\n this.cursorStyles = {\n default: 'inherit',\n pointer: 'pointer',\n };\n\n this.features = new Proxy({ ...EventSystem.defaultEventFeatures }, {\n set: (target, key, value) =>\n {\n if (key === 'globalMove')\n {\n this.rootBoundary.enableGlobalMoveEvents = value;\n }\n target[key as keyof EventSystemFeatures] = value;\n\n return true;\n }\n });\n\n this._onPointerDown = this._onPointerDown.bind(this);\n this._onPointerMove = this._onPointerMove.bind(this);\n this._onPointerUp = this._onPointerUp.bind(this);\n this._onPointerOverOut = this._onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n public init(options: EventSystemOptions): void\n {\n const { canvas, resolution } = this.renderer;\n\n this.setTargetElement(canvas as HTMLCanvasElement);\n this.resolution = resolution;\n EventSystem._defaultEventMode = options.eventMode ?? 'passive';\n Object.assign(this.features, options.eventFeatures ?? {});\n this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;\n }\n\n /**\n * Handle changing resolution.\n * @ignore\n */\n public resolutionChange(resolution: number): void\n {\n this.resolution = resolution;\n }\n\n /** Destroys all event listeners and detaches the renderer. */\n public destroy(): void\n {\n this.setTargetElement(null);\n this.renderer = null;\n this._currentCursor = null;\n }\n\n /**\n * Sets the current cursor mode, handling any callbacks or CSS style changes.\n * @param mode - cursor mode, a key from the cursorStyles dictionary\n */\n public setCursor(mode: string): void\n {\n mode = mode || 'default';\n let applyStyles = true;\n\n // offscreen canvas does not support setting styles, but cursor modes can be functions,\n // in order to handle pixi rendered cursors, so we can't bail\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas)\n {\n applyStyles = false;\n }\n // if the mode didn't actually change, bail early\n if (this._currentCursor === mode)\n {\n return;\n }\n this._currentCursor = mode;\n const style = this.cursorStyles[mode];\n\n // only do things if there is a cursor style for it\n if (style)\n {\n switch (typeof style)\n {\n case 'string':\n // string styles are handled as cursor CSS\n if (applyStyles)\n {\n this.domElement.style.cursor = style;\n }\n break;\n case 'function':\n // functions are just called, and passed the cursor mode\n style(mode);\n break;\n case 'object':\n // if it is an object, assume that it is a dictionary of CSS styles,\n // apply it to the interactionDOMElement\n if (applyStyles)\n {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n }\n else if (applyStyles && typeof mode === 'string' && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode))\n {\n // if it mode is a string (not a Symbol) and cursorStyles doesn't have any entry\n // for the mode, then assume that the dev wants it to be CSS for the cursor.\n this.domElement.style.cursor = mode;\n }\n }\n\n /**\n * The global pointer event.\n * Useful for getting the pointer position without listening to events.\n * @since 7.2.0\n */\n public get pointer(): Readonly\n {\n return this._rootPointerEvent;\n }\n\n /**\n * Event handler for pointer down events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n private _onPointerDown(nativeEvent: MouseEvent | PointerEvent | TouchEvent): void\n {\n if (!this.features.click) return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n\n const events = this._normalizeToPointerData(nativeEvent);\n\n /*\n * No need to prevent default on natural pointer events, as there are no side effects\n * Normalized events, however, may have the double mousedown/touchstart issue on the native android browser,\n * so still need to be prevented.\n */\n\n // Guaranteed that there will be at least one event in events, and all events must have the same pointer type\n\n if (this.autoPreventDefault && (events[0] as any).isNormalized)\n {\n const cancelable = nativeEvent.cancelable || !('cancelable' in nativeEvent);\n\n if (cancelable)\n {\n nativeEvent.preventDefault();\n }\n }\n\n for (let i = 0, j = events.length; i < j; i++)\n {\n const nativeEvent = events[i];\n const federatedEvent = this._bootstrapEvent(this._rootPointerEvent, nativeEvent);\n\n this.rootBoundary.mapEvent(federatedEvent);\n }\n\n this.setCursor(this.rootBoundary.cursor);\n }\n\n /**\n * Event handler for pointer move events on on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch events.\n */\n private _onPointerMove(nativeEvent: MouseEvent | PointerEvent | TouchEvent): void\n {\n if (!this.features.move) return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n\n EventsTicker.pointerMoved();\n\n const normalizedEvents = this._normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++)\n {\n const event = this._bootstrapEvent(this._rootPointerEvent, normalizedEvents[i]);\n\n this.rootBoundary.mapEvent(event);\n }\n\n this.setCursor(this.rootBoundary.cursor);\n }\n\n /**\n * Event handler for pointer up events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n private _onPointerUp(nativeEvent: MouseEvent | PointerEvent | TouchEvent): void\n {\n if (!this.features.click) return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n\n let target = nativeEvent.target;\n\n // if in shadow DOM use composedPath to access target\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0)\n {\n target = nativeEvent.composedPath()[0];\n }\n\n const outside = target !== this.domElement ? 'outside' : '';\n const normalizedEvents = this._normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++)\n {\n const event = this._bootstrapEvent(this._rootPointerEvent, normalizedEvents[i]);\n\n event.type += outside;\n\n this.rootBoundary.mapEvent(event);\n }\n\n this.setCursor(this.rootBoundary.cursor);\n }\n\n /**\n * Event handler for pointer over & out events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n private _onPointerOverOut(nativeEvent: MouseEvent | PointerEvent | TouchEvent): void\n {\n if (!this.features.click) return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n\n const normalizedEvents = this._normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++)\n {\n const event = this._bootstrapEvent(this._rootPointerEvent, normalizedEvents[i]);\n\n this.rootBoundary.mapEvent(event);\n }\n\n this.setCursor(this.rootBoundary.cursor);\n }\n\n /**\n * Passive handler for `wheel` events on {@link EventSystem.domElement this.domElement}.\n * @param nativeEvent - The native wheel event.\n */\n protected onWheel(nativeEvent: WheelEvent): void\n {\n if (!this.features.wheel) return;\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n\n /**\n * Sets the {@link EventSystem#domElement domElement} and binds event listeners.\n *\n * To deregister the current DOM element without setting a new one, pass {@code null}.\n * @param element - The new DOM element.\n */\n public setTargetElement(element: HTMLElement): void\n {\n this._removeEvents();\n this.domElement = element;\n EventsTicker.domElement = element;\n this._addEvents();\n }\n\n /** Register event listeners on {@link Renderer#domElement this.domElement}. */\n private _addEvents(): void\n {\n if (this._eventsAdded || !this.domElement)\n {\n return;\n }\n\n EventsTicker.addTickerListener();\n\n const style = this.domElement.style as CrossCSSStyleDeclaration;\n\n if (style)\n {\n if ((globalThis.navigator as any).msPointerEnabled)\n {\n style.msContentZooming = 'none';\n style.msTouchAction = 'none';\n }\n else if (this.supportsPointerEvents)\n {\n style.touchAction = 'none';\n }\n }\n\n /*\n * These events are added first, so that if pointer events are normalized, they are fired\n * in the same order as non-normalized events. ie. pointer event 1st, mouse / touch 2nd\n */\n if (this.supportsPointerEvents)\n {\n globalThis.document.addEventListener('pointermove', this._onPointerMove, true);\n this.domElement.addEventListener('pointerdown', this._onPointerDown, true);\n // pointerout is fired in addition to pointerup (for touch events) and pointercancel\n // we already handle those, so for the purposes of what we do in onPointerOut, we only\n // care about the pointerleave event\n this.domElement.addEventListener('pointerleave', this._onPointerOverOut, true);\n this.domElement.addEventListener('pointerover', this._onPointerOverOut, true);\n // globalThis.addEventListener('pointercancel', this.onPointerCancel, true);\n globalThis.addEventListener('pointerup', this._onPointerUp, true);\n }\n else\n {\n globalThis.document.addEventListener('mousemove', this._onPointerMove, true);\n this.domElement.addEventListener('mousedown', this._onPointerDown, true);\n this.domElement.addEventListener('mouseout', this._onPointerOverOut, true);\n this.domElement.addEventListener('mouseover', this._onPointerOverOut, true);\n globalThis.addEventListener('mouseup', this._onPointerUp, true);\n\n if (this.supportsTouchEvents)\n {\n this.domElement.addEventListener('touchstart', this._onPointerDown, true);\n // this.domElement.addEventListener('touchcancel', this.onPointerCancel, true);\n this.domElement.addEventListener('touchend', this._onPointerUp, true);\n this.domElement.addEventListener('touchmove', this._onPointerMove, true);\n }\n }\n\n this.domElement.addEventListener('wheel', this.onWheel, {\n passive: true,\n capture: true,\n });\n\n this._eventsAdded = true;\n }\n\n /** Unregister event listeners on {@link EventSystem#domElement this.domElement}. */\n private _removeEvents(): void\n {\n if (!this._eventsAdded || !this.domElement)\n {\n return;\n }\n\n EventsTicker.removeTickerListener();\n\n const style = this.domElement.style as CrossCSSStyleDeclaration;\n\n // offscreen canvas does not have style, so check first\n if (style)\n {\n if ((globalThis.navigator as any).msPointerEnabled)\n {\n style.msContentZooming = '';\n style.msTouchAction = '';\n }\n else if (this.supportsPointerEvents)\n {\n style.touchAction = '';\n }\n }\n\n if (this.supportsPointerEvents)\n {\n globalThis.document.removeEventListener('pointermove', this._onPointerMove, true);\n this.domElement.removeEventListener('pointerdown', this._onPointerDown, true);\n this.domElement.removeEventListener('pointerleave', this._onPointerOverOut, true);\n this.domElement.removeEventListener('pointerover', this._onPointerOverOut, true);\n // globalThis.removeEventListener('pointercancel', this.onPointerCancel, true);\n globalThis.removeEventListener('pointerup', this._onPointerUp, true);\n }\n else\n {\n globalThis.document.removeEventListener('mousemove', this._onPointerMove, true);\n this.domElement.removeEventListener('mousedown', this._onPointerDown, true);\n this.domElement.removeEventListener('mouseout', this._onPointerOverOut, true);\n this.domElement.removeEventListener('mouseover', this._onPointerOverOut, true);\n globalThis.removeEventListener('mouseup', this._onPointerUp, true);\n\n if (this.supportsTouchEvents)\n {\n this.domElement.removeEventListener('touchstart', this._onPointerDown, true);\n // this.domElement.removeEventListener('touchcancel', this.onPointerCancel, true);\n this.domElement.removeEventListener('touchend', this._onPointerUp, true);\n this.domElement.removeEventListener('touchmove', this._onPointerMove, true);\n }\n }\n\n this.domElement.removeEventListener('wheel', this.onWheel, true);\n\n this.domElement = null;\n this._eventsAdded = false;\n }\n\n /**\n * Maps x and y coords from a DOM object and maps them correctly to the PixiJS view. The\n * resulting value is stored in the point. This takes into account the fact that the DOM\n * element could be scaled and positioned anywhere on the screen.\n * @param {PointData} point - the point that the result will be stored in\n * @param {number} x - the x coord of the position to map\n * @param {number} y - the y coord of the position to map\n */\n public mapPositionToPoint(point: PointData, x: number, y: number): void\n {\n const rect = this.domElement.isConnected\n ? this.domElement.getBoundingClientRect()\n : {\n x: 0,\n y: 0,\n width: (this.domElement as any).width,\n height: (this.domElement as any).height,\n left: 0,\n top: 0\n };\n\n const resolutionMultiplier = 1.0 / this.resolution;\n\n point.x = ((x - rect.left) * ((this.domElement as any).width / rect.width)) * resolutionMultiplier;\n point.y = ((y - rect.top) * ((this.domElement as any).height / rect.height)) * resolutionMultiplier;\n }\n\n /**\n * Ensures that the original event object contains all data that a regular pointer event would have\n * @param event - The original event data from a touch or mouse event\n * @returns An array containing a single normalized pointer event, in the case of a pointer\n * or mouse event, or a multiple normalized pointer events if there are multiple changed touches\n */\n private _normalizeToPointerData(event: TouchEvent | MouseEvent | PointerEvent): PointerEvent[]\n {\n const normalizedEvents = [];\n\n if (this.supportsTouchEvents && event instanceof TouchEvent)\n {\n for (let i = 0, li = event.changedTouches.length; i < li; i++)\n {\n const touch = event.changedTouches[i] as PixiTouch;\n\n if (typeof touch.button === 'undefined') touch.button = 0;\n if (typeof touch.buttons === 'undefined') touch.buttons = 1;\n if (typeof touch.isPrimary === 'undefined')\n {\n touch.isPrimary = event.touches.length === 1 && event.type === 'touchstart';\n }\n if (typeof touch.width === 'undefined') touch.width = touch.radiusX || 1;\n if (typeof touch.height === 'undefined') touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === 'undefined') touch.tiltX = 0;\n if (typeof touch.tiltY === 'undefined') touch.tiltY = 0;\n if (typeof touch.pointerType === 'undefined') touch.pointerType = 'touch';\n if (typeof touch.pointerId === 'undefined') touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === 'undefined') touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === 'undefined') touch.twist = 0;\n if (typeof touch.tangentialPressure === 'undefined') touch.tangentialPressure = 0;\n // TODO: Remove these, as layerX/Y is not a standard, is deprecated, has uneven\n // support, and the fill ins are not quite the same\n // offsetX/Y might be okay, but is not the same as clientX/Y when the canvas's top\n // left is not 0,0 on the page\n if (typeof touch.layerX === 'undefined') touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === 'undefined') touch.layerY = touch.offsetY = touch.clientY;\n\n // mark the touch as normalized, just so that we know we did it\n touch.isNormalized = true;\n touch.type = event.type;\n\n normalizedEvents.push(touch);\n }\n }\n // apparently PointerEvent subclasses MouseEvent, so yay\n else if (!globalThis.MouseEvent\n || (event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))))\n {\n const tempEvent = event as PixiPointerEvent;\n\n if (typeof tempEvent.isPrimary === 'undefined') tempEvent.isPrimary = true;\n if (typeof tempEvent.width === 'undefined') tempEvent.width = 1;\n if (typeof tempEvent.height === 'undefined') tempEvent.height = 1;\n if (typeof tempEvent.tiltX === 'undefined') tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === 'undefined') tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === 'undefined') tempEvent.pointerType = 'mouse';\n if (typeof tempEvent.pointerId === 'undefined') tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === 'undefined') tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === 'undefined') tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === 'undefined') tempEvent.tangentialPressure = 0;\n\n // mark the mouse event as normalized, just so that we know we did it\n tempEvent.isNormalized = true;\n\n normalizedEvents.push(tempEvent);\n }\n else\n {\n normalizedEvents.push(event);\n }\n\n return normalizedEvents as PointerEvent[];\n }\n\n /**\n * Normalizes the native {@link https://w3c.github.io/uievents/#interface-wheelevent WheelEvent}.\n *\n * The returned {@link FederatedWheelEvent} is a shared instance. It will not persist across\n * multiple native wheel events.\n * @param nativeEvent - The native wheel event that occurred on the canvas.\n * @returns A federated wheel event.\n */\n protected normalizeWheelEvent(nativeEvent: WheelEvent): FederatedWheelEvent\n {\n const event = this._rootWheelEvent;\n\n this._transferMouseData(event, nativeEvent);\n\n // When WheelEvent is triggered by scrolling with mouse wheel, reading WheelEvent.deltaMode\n // before deltaX/deltaY/deltaZ on Firefox will result in WheelEvent.DOM_DELTA_LINE (1),\n // while reading WheelEvent.deltaMode after deltaX/deltaY/deltaZ on Firefox or reading\n // in any order on other browsers will result in WheelEvent.DOM_DELTA_PIXEL (0).\n // Therefore, we need to read WheelEvent.deltaMode after deltaX/deltaY/deltaZ in order to\n // make its behavior more consistent across browsers.\n // @see https://github.com/pixijs/pixijs/issues/8970\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n event.deltaMode = nativeEvent.deltaMode;\n\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n\n return event;\n }\n\n /**\n * Normalizes the `nativeEvent` into a federateed {@link FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n private _bootstrapEvent(event: FederatedPointerEvent, nativeEvent: PointerEvent): FederatedPointerEvent\n {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this._transferMouseData(event, nativeEvent);\n\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);// global = screen for top-level\n event.offset.copyFrom(event.screen);// EventBoundary recalculates using its rootTarget\n\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === 'pointerleave')\n {\n event.type = 'pointerout';\n }\n if (event.type.startsWith('mouse'))\n {\n event.type = event.type.replace('mouse', 'pointer');\n }\n if (event.type.startsWith('touch'))\n {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n\n return event;\n }\n\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n private _transferMouseData(event: FederatedMouseEvent, nativeEvent: MouseEvent): void\n {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\n\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n event.shiftKey = nativeEvent.shiftKey;\n }\n}\n\ninterface CrossCSSStyleDeclaration extends CSSStyleDeclaration\n{\n msContentZooming: string;\n msTouchAction: string;\n}\n\ninterface PixiPointerEvent extends PointerEvent\n{\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n isNormalized: boolean;\n type: string;\n}\n","import { EventSystem } from './EventSystem';\nimport { FederatedEvent } from './FederatedEvent';\n\nimport type EventEmitter from 'eventemitter3';\nimport type { AllFederatedEventMap } from './FederatedEventMap';\nimport type { FederatedPointerEvent } from './FederatedPointerEvent';\nimport type { FederatedWheelEvent } from './FederatedWheelEvent';\n\n/**\n * The type of cursor to use when the mouse pointer is hovering over.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/cursor\n *\n * Can be any valid CSS cursor value:\n * `auto`, `default`, `none`, `context-menu`, `help`, `pointer`, `progress`,\n * `wait`, `cell`, `crosshair`, `text`, `verticaltext`, `alias`, `copy`, `move`,\n * `nodrop`, `notallowed`, `eresize`, `nresize`, `neresize`, `nwresize`, `sresize`,\n * `seresize`, `swresize`, `wresize`, `nsresize`, `ewresize`, `neswresize`, `colresize`,\n * `nwseresize`, `rowresize`, `allscroll`, `zoomin`, `zoomout`, `grab`, `grabbing`\n * @memberof events\n */\nexport type Cursor = 'auto'\n| 'default'\n| 'none'\n| 'context-menu'\n| 'help'\n| 'pointer'\n| 'progress'\n| 'wait'\n| 'cell'\n| 'crosshair'\n| 'text'\n| 'vertical-text'\n| 'alias'\n| 'copy'\n| 'move'\n| 'no-drop'\n| 'not-allowed'\n| 'e-resize'\n| 'n-resize'\n| 'ne-resize'\n| 'nw-resize'\n| 's-resize'\n| 'se-resize'\n| 'sw-resize'\n| 'w-resize'\n| 'ns-resize'\n| 'ew-resize'\n| 'nesw-resize'\n| 'col-resize'\n| 'nwse-resize'\n| 'row-resize'\n| 'all-scroll'\n| 'zoom-in'\n| 'zoom-out'\n| 'grab'\n| 'grabbing';\n\n/**\n * The hit area specifies the area for which pointer events should be captured by this event target.\n * @memberof events\n */\nexport interface IHitArea\n{\n /**\n * Checks if the x and y coordinates given are contained within this hit area.\n * @returns Whether the x and y coordinates are contained within this hit area.\n */\n contains(x: number, y: number): boolean;\n}\n\n/**\n * Function type for handlers, e.g., onclick\n * @memberof events\n */\nexport type FederatedEventHandler = (event: T) => void;\n\n/**\n * The type of interaction a Container can be.\n * This is the {@link scene.Container#eventMode|Container.eventMode} property of any {@link scene.Container}.\n *\n * Can be one of the following:\n * - `'none'`: Ignores all interaction events, even on its children.\n * - `'passive'`: **(default)** Does not emit events and ignores all hit testing on itself and non-interactive children.\n * Interactive children will still emit events.\n * - `'auto'`: Does not emit events but is hit tested if parent is interactive. Same as `interactive = false` in v7\n * - `'static'`: Emit events and is hit tested. Same as `interaction = true` in v7\n * - `'dynamic'`: Emits events and is hit tested but will also receive mock interaction events fired from a ticker to\n * allow for interaction when the mouse isn't moving\n *\n * `none` and `passive` are useful for optimizing interaction events on objects as it reduces the number of hit tests\n * PixiJS has to do. `auto` is useful for when you want to recreate how the DOM handles interaction events with\n * `pointer-events: auto`.\n * @since 7.2.0\n * @memberof events\n */\nexport type EventMode = 'none' | 'passive' | 'auto' | 'static' | 'dynamic';\n\n/**\n * The properties available for any interactive object.\n * @memberof events\n */\nexport interface FederatedOptions\n{\n /** The cursor preferred when the mouse pointer is hovering over. */\n cursor?: Cursor | string;\n /** The mode of interaction for this object */\n eventMode?: EventMode;\n /** Whether this event target should fire UI events. */\n interactive?: boolean\n /** Whether this event target has any children that need UI events. This can be used optimize event propagation. */\n interactiveChildren?: boolean;\n /** The hit-area specifies the area for which pointer events should be captured by this event target. */\n hitArea?: IHitArea | null;\n /** Handler for 'click' event */\n onclick?: FederatedEventHandler | null;\n /** Handler for 'mousedown' event */\n onmousedown?: FederatedEventHandler | null;\n /** Handler for 'mouseenter' event */\n onmouseenter?: FederatedEventHandler | null;\n /** Handler for 'mouseleave' event */\n onmouseleave?: FederatedEventHandler | null;\n /** Handler for 'mousemove' event */\n onmousemove?: FederatedEventHandler | null;\n /** Handler for 'globalmousemove' event */\n onglobalmousemove?: FederatedEventHandler | null;\n /** Handler for 'mouseout' event */\n onmouseout?: FederatedEventHandler | null;\n /** Handler for 'mouseover' event */\n onmouseover?: FederatedEventHandler | null;\n /** Handler for 'mouseup' event */\n onmouseup?: FederatedEventHandler | null;\n /** Handler for 'mouseupoutside' event */\n onmouseupoutside?: FederatedEventHandler | null;\n /** Handler for 'pointercancel' event */\n onpointercancel?: FederatedEventHandler | null;\n /** Handler for 'pointerdown' event */\n onpointerdown?: FederatedEventHandler | null;\n /** Handler for 'pointerenter' event */\n onpointerenter?: FederatedEventHandler | null;\n /** Handler for 'pointerleave' event */\n onpointerleave?: FederatedEventHandler | null;\n /** Handler for 'pointermove' event */\n onpointermove?: FederatedEventHandler | null;\n /** Handler for 'globalpointermove' event */\n onglobalpointermove?: FederatedEventHandler | null;\n /** Handler for 'pointerout' event */\n onpointerout?: FederatedEventHandler | null;\n /** Handler for 'pointerover' event */\n onpointerover?: FederatedEventHandler | null;\n /** Handler for 'pointertap' event */\n onpointertap?: FederatedEventHandler | null;\n /** Handler for 'pointerup' event */\n onpointerup?: FederatedEventHandler | null;\n /** Handler for 'pointerupoutside' event */\n onpointerupoutside?: FederatedEventHandler | null;\n /** Handler for 'rightclick' event */\n onrightclick?: FederatedEventHandler | null;\n /** Handler for 'rightdown' event */\n onrightdown?: FederatedEventHandler | null;\n /** Handler for 'rightup' event */\n onrightup?: FederatedEventHandler | null;\n /** Handler for 'rightupoutside' event */\n onrightupoutside?: FederatedEventHandler | null;\n /** Handler for 'tap' event */\n ontap?: FederatedEventHandler | null;\n /** Handler for 'touchcancel' event */\n ontouchcancel?: FederatedEventHandler | null;\n /** Handler for 'touchend' event */\n ontouchend?: FederatedEventHandler | null;\n /** Handler for 'touchendoutside' event */\n ontouchendoutside?: FederatedEventHandler | null;\n /** Handler for 'touchmove' event */\n ontouchmove?: FederatedEventHandler | null;\n /** Handler for 'globaltouchmove' event */\n onglobaltouchmove?: FederatedEventHandler | null;\n /** Handler for 'touchstart' event */\n ontouchstart?: FederatedEventHandler | null;\n /** Handler for 'wheel' event */\n onwheel?: FederatedEventHandler | null;\n}\n\n/**\n * A simplified shape of an interactive object for the `eventTarget` property of a {@link FederatedEvent}\n * @memberof events\n */\nexport interface FederatedEventTarget extends EventEmitter, EventTarget, Required\n{\n /** The parent of this event target. */\n readonly parent?: FederatedEventTarget;\n\n /** The children of this event target. */\n readonly children?: ReadonlyArray;\n\n _internalEventMode: EventMode;\n\n /** Returns true if the Container has interactive 'static' or 'dynamic' */\n isInteractive: () => boolean;\n\n // In Angular projects, zone.js is monkey patching the `EventTarget`\n // by adding its own `removeAllListeners(event?: string): void;` method,\n // so we have to override this signature when extending both `EventTarget` and `utils.EventEmitter`\n // to make it compatible with Angular projects\n // @see https://github.com/pixijs/pixijs/issues/8794\n\n /** Remove all listeners, or those of the specified event. */\n removeAllListeners(event?: string | symbol): this;\n}\n\ntype AddListenerOptions = boolean | AddEventListenerOptions;\ntype RemoveListenerOptions = boolean | EventListenerOptions;\n\nexport interface IFederatedContainer\n extends Omit\n{\n addEventListener(\n type: K,\n listener: (e: AllFederatedEventMap[K]) => any,\n options?: AddListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: AddListenerOptions\n ): void;\n removeEventListener(\n type: K,\n listener: (e: AllFederatedEventMap[K]) => any,\n options?: RemoveListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: RemoveListenerOptions\n ): void;\n}\n\nexport const FederatedContainer: IFederatedContainer = {\n\n /**\n * Property-based event handler for the `click` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onclick = (event) => {\n * //some function here that happens on click\n * }\n */\n onclick: null,\n\n /**\n * Property-based event handler for the `mousedown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousedown = (event) => {\n * //some function here that happens on mousedown\n * }\n */\n onmousedown: null,\n\n /**\n * Property-based event handler for the `mouseenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseenter = (event) => {\n * //some function here that happens on mouseenter\n * }\n */\n onmouseenter: null,\n\n /**\n * Property-based event handler for the `mouseleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseleave = (event) => {\n * //some function here that happens on mouseleave\n * }\n */\n onmouseleave: null,\n\n /**\n * Property-based event handler for the `mousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousemove = (event) => {\n * //some function here that happens on mousemove\n * }\n */\n onmousemove: null,\n\n /**\n * Property-based event handler for the `globalmousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalmousemove = (event) => {\n * //some function here that happens on globalmousemove\n * }\n */\n onglobalmousemove: null,\n\n /**\n * Property-based event handler for the `mouseout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseout = (event) => {\n * //some function here that happens on mouseout\n * }\n */\n onmouseout: null,\n\n /**\n * Property-based event handler for the `mouseover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseover = (event) => {\n * //some function here that happens on mouseover\n * }\n */\n onmouseover: null,\n\n /**\n * Property-based event handler for the `mouseup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseup = (event) => {\n * //some function here that happens on mouseup\n * }\n */\n onmouseup: null,\n\n /**\n * Property-based event handler for the `mouseupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseupoutside = (event) => {\n * //some function here that happens on mouseupoutside\n * }\n */\n onmouseupoutside: null,\n\n /**\n * Property-based event handler for the `pointercancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointercancel = (event) => {\n * //some function here that happens on pointercancel\n * }\n */\n onpointercancel: null,\n\n /**\n * Property-based event handler for the `pointerdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerdown = (event) => {\n * //some function here that happens on pointerdown\n * }\n */\n onpointerdown: null,\n\n /**\n * Property-based event handler for the `pointerenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerenter = (event) => {\n * //some function here that happens on pointerenter\n * }\n */\n onpointerenter: null,\n\n /**\n * Property-based event handler for the `pointerleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerleave = (event) => {\n * //some function here that happens on pointerleave\n * }\n */\n onpointerleave: null,\n\n /**\n * Property-based event handler for the `pointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointermove = (event) => {\n * //some function here that happens on pointermove\n * }\n */\n onpointermove: null,\n\n /**\n * Property-based event handler for the `globalpointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalpointermove = (event) => {\n * //some function here that happens on globalpointermove\n * }\n */\n onglobalpointermove: null,\n\n /**\n * Property-based event handler for the `pointerout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerout = (event) => {\n * //some function here that happens on pointerout\n * }\n */\n onpointerout: null,\n\n /**\n * Property-based event handler for the `pointerover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerover = (event) => {\n * //some function here that happens on pointerover\n * }\n */\n onpointerover: null,\n\n /**\n * Property-based event handler for the `pointertap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointertap = (event) => {\n * //some function here that happens on pointertap\n * }\n */\n onpointertap: null,\n\n /**\n * Property-based event handler for the `pointerup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerup = (event) => {\n * //some function here that happens on pointerup\n * }\n */\n onpointerup: null,\n\n /**\n * Property-based event handler for the `pointerupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerupoutside = (event) => {\n * //some function here that happens on pointerupoutside\n * }\n */\n onpointerupoutside: null,\n\n /**\n * Property-based event handler for the `rightclick` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightclick = (event) => {\n * //some function here that happens on rightclick\n * }\n */\n onrightclick: null,\n\n /**\n * Property-based event handler for the `rightdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightdown = (event) => {\n * //some function here that happens on rightdown\n * }\n */\n onrightdown: null,\n\n /**\n * Property-based event handler for the `rightup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightup = (event) => {\n * //some function here that happens on rightup\n * }\n */\n onrightup: null,\n\n /**\n * Property-based event handler for the `rightupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightupoutside = (event) => {\n * //some function here that happens on rightupoutside\n * }\n */\n onrightupoutside: null,\n\n /**\n * Property-based event handler for the `tap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontap = (event) => {\n * //some function here that happens on tap\n * }\n */\n ontap: null,\n\n /**\n * Property-based event handler for the `touchcancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchcancel = (event) => {\n * //some function here that happens on touchcancel\n * }\n */\n ontouchcancel: null,\n\n /**\n * Property-based event handler for the `touchend` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchend = (event) => {\n * //some function here that happens on touchend\n * }\n */\n ontouchend: null,\n\n /**\n * Property-based event handler for the `touchendoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchendoutside = (event) => {\n * //some function here that happens on touchendoutside\n * }\n */\n ontouchendoutside: null,\n\n /**\n * Property-based event handler for the `touchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchmove = (event) => {\n * //some function here that happens on touchmove\n * }\n */\n ontouchmove: null,\n\n /**\n * Property-based event handler for the `globaltouchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobaltouchmove = (event) => {\n * //some function here that happens on globaltouchmove\n * }\n */\n onglobaltouchmove: null,\n\n /**\n * Property-based event handler for the `touchstart` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchstart = (event) => {\n * //some function here that happens on touchstart\n * }\n */\n ontouchstart: null,\n\n /**\n * Property-based event handler for the `wheel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onwheel = (event) => {\n * //some function here that happens on wheel\n * }\n */\n onwheel: null,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse\n * @memberof scene.Container#\n */\n get interactive()\n {\n return this.eventMode === 'dynamic' || this.eventMode === 'static';\n },\n set interactive(value: boolean)\n {\n this.eventMode = value ? 'static' : 'passive';\n },\n /**\n * @ignore\n */\n _internalEventMode: undefined,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse.\n * There are 5 types of interaction settings:\n * - `'none'`: Ignores all interaction events, even on its children.\n * - `'passive'`: **(default)** Does not emit events and ignores all hit testing on itself and non-interactive children.\n * Interactive children will still emit events.\n * - `'auto'`: Does not emit events but is hit tested if parent is interactive. Same as `interactive = false` in v7\n * - `'static'`: Emit events and is hit tested. Same as `interaction = true` in v7\n * - `'dynamic'`: Emits events and is hit tested but will also receive mock interaction events fired from a ticker to\n * allow for interaction when the mouse isn't moving\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.on('tap', (event) => {\n * // Handle event\n * });\n * @memberof scene.Container#\n * @since 7.2.0\n */\n get eventMode()\n {\n return this._internalEventMode ?? EventSystem.defaultEventMode;\n },\n set eventMode(value)\n {\n this._internalEventMode = value;\n },\n\n /**\n * Determines if the container is interactive or not\n * @returns {boolean} Whether the container is interactive or not\n * @memberof scene.Container#\n * @since 7.2.0\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'dynamic';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'none';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'passive';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'auto';\n * sprite.isInteractive(); // false\n */\n isInteractive(): boolean\n {\n return this.eventMode === 'static' || this.eventMode === 'dynamic';\n },\n\n /**\n * Determines if the children to the container can be clicked/touched\n * Setting this to false allows PixiJS to bypass a recursive `hitTest` function\n * @memberof scene.Container#\n */\n interactiveChildren: true,\n\n /**\n * Interaction shape. Children will be hit first, then this shape will be checked.\n * Setting this will cause this shape to be checked in hit tests rather than the container's bounds.\n * @example\n * import { Rectangle, Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.interactive = true;\n * sprite.hitArea = new Rectangle(0, 0, 100, 100);\n * @member {IHitArea}\n * @memberof scene.Container#\n */\n hitArea: null,\n\n /**\n * Unlike `on` or `addListener` which are methods from EventEmitter, `addEventListener`\n * seeks to be compatible with the DOM's `addEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event to listen to.\n * @param listener - The listener callback or object.\n * @param options - Listener options, used for capture phase.\n * @example\n * // Tell the user whether they did a single, double, triple, or nth click.\n * button.addEventListener('click', {\n * handleEvent(e): {\n * let prefix;\n *\n * switch (e.detail) {\n * case 1: prefix = 'single'; break;\n * case 2: prefix = 'double'; break;\n * case 3: prefix = 'triple'; break;\n * default: prefix = e.detail + 'th'; break;\n * }\n *\n * console.log('That was a ' + prefix + 'click');\n * }\n * });\n *\n * // But skip the first click!\n * button.parent.addEventListener('click', function blockClickOnce(e) {\n * e.stopImmediatePropagation();\n * button.parent.removeEventListener('click', blockClickOnce, true);\n * }, {\n * capture: true,\n * });\n */\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: AddListenerOptions\n )\n {\n const capture = (typeof options === 'boolean' && options)\n || (typeof options === 'object' && options.capture);\n const signal = typeof options === 'object' ? options.signal : undefined;\n const once = typeof options === 'object' ? (options.once === true) : false;\n const context = typeof listener === 'function' ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n const listenerFn = typeof listener === 'function' ? listener : listener.handleEvent;\n\n const emitter = (this as unknown as EventEmitter);\n\n if (signal)\n {\n signal.addEventListener('abort', () =>\n {\n emitter.off(type, listenerFn, context);\n });\n }\n\n if (once)\n {\n emitter.once(type, listenerFn, context);\n }\n else\n {\n emitter.on(type, listenerFn, context);\n }\n },\n\n /**\n * Unlike `off` or `removeListener` which are methods from EventEmitter, `removeEventListener`\n * seeks to be compatible with the DOM's `removeEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event the listener is bound to.\n * @param listener - The listener callback or object.\n * @param options - The original listener options. This is required to deregister a capture phase listener.\n */\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: RemoveListenerOptions\n )\n {\n const capture = (typeof options === 'boolean' && options)\n || (typeof options === 'object' && options.capture);\n const context = typeof listener === 'function' ? undefined : listener;\n\n type = capture ? `${type}capture` : type;\n listener = typeof listener === 'function' ? listener : listener.handleEvent;\n\n (this as unknown as EventEmitter).off(type, listener, context);\n },\n\n /**\n * Dispatch the event on this {@link Container} using the event's {@link EventBoundary}.\n *\n * The target of the event is set to `this` and the `defaultPrevented` flag is cleared before dispatch.\n * @memberof scene.Container\n * @param e - The event to dispatch.\n * @returns Whether the {@link FederatedEvent.preventDefault preventDefault}() method was not invoked.\n * @example\n * // Reuse a click event!\n * button.dispatchEvent(clickEvent);\n */\n dispatchEvent(e: Event): boolean\n {\n if (!(e instanceof FederatedEvent))\n {\n throw new Error('Container cannot propagate events outside of the Federated Events API');\n }\n\n e.defaultPrevented = false;\n e.path = null;\n e.target = this as unknown as FederatedEventTarget;\n e.manager.dispatchEvent(e);\n\n return !e.defaultPrevented;\n }\n};\n","import { extensions } from '../extensions/Extensions';\nimport { Container } from '../scene/container/Container';\nimport { EventSystem } from './EventSystem';\nimport { FederatedContainer } from './FederatedEventTarget';\n\n/* eslint-disable max-len */\n/**\n * PixiJS is primarily a rendering system, but it also includes support for interactivity.\n * Adding support for mouse and touch events to your project is simple and consistent.\n *\n * The new event-based system that replaced InteractionManager from v6 has expanded the definition of what a\n * Container means to be interactive. With this we have introduced `eventMode` which allows you to control\n * how an object responds to interaction events.\n * This is similar to the `interactive` property in v6 but with more options.\n *\n *

\n * Enabling Interaction\n *\n * Any Container-derived object (Sprite, Container, etc.) can become interactive simply by setting its `eventMode` property to any of\n * the {@link events.EventMode} values. Doing so will cause the object to emit interaction events that can be responded to in order to drive your project's behavior.\n *\n * Check out the [interaction example code](/examples/events/click).\n *\n * Container-derived objects are based on {@link https://www.npmjs.com/package/eventemitter3|EventEmitter3}\n * so you can use `on()`, `once()`, `off()` to listen to events.\n *\n * For example to respond to clicks and taps, bind to an object ike so:\n *\n * ```javascript\n * let sprite = Sprite.from('/some/texture.png');\n *\n * sprite.eventMode = 'static'; // similar to `sprite.interactive = true` in v6\n * sprite.on('pointerdown', (event) => { alert('clicked!'); });\n * ```\n *\n * Check out the **EventTypes** section below for the full list of interaction events supported.\n *
\n *\n *
\n * Event Modes\n *\n * The new event-based system that replaced InteractionManager from v6 has expanded the definition of what a Container\n * means to be interactive. With this we have introduced `eventMode` which allows you to control how an object responds\n * to interaction events. This is similar to the `interactive` property in v6 but with more options.\n *\n * | event mode | Description |\n * |---|---|\n * | `none` | Ignores all interaction events, similar to CSS's `pointer-events: none`, good optimization for non-interactive children |\n * | `passive` | Does not emit events and ignores hit testing on itself but does allow for events and hit testing only its interactive children. If you want to be compatible with v6, set this as your default `eventMode` (see options in Renderer, Application, etc) |\n * | `auto` | Does not emit events and but is hit tested if parent is interactive. Same as `interactive = false` in v7 |\n * | `static` | Emit events and is hit tested. Same as `interaction = true` in v7, useful for objects like buttons that do not move. |\n * | `dynamic` | Emits events and is hit tested but will also receive mock interaction events fired from a ticker to allow for interaction when the mouse isn't moving. This is useful for elements that independently moving or animating. |\n *
\n *\n *
\n * Event Types\n *\n * Pixi supports the following event types for interactive objects:\n *\n * | Event Type | Fired When |\n * |---|---|\n * | `pointercancel` | Pointer device button is released outside the display object\n * that initially registered a pointerdown. |\n * | `pointerdown` | Pointer device button is pressed on the display object. |\n * | `pointerenter` | Pointer device enters the display object. |\n * | `pointerleave` | Pointer device leaves the display object. |\n * | `pointermove` | Pointer device is moved while over the display object. |\n * | `globalpointermove` | Pointer device is moved, regardless of hit-testing the current object. |\n * | `pointerout` | Pointer device is moved off the display object. |\n * | `pointerover` | Pointer device is moved onto the display object. |\n * | `pointertap` | Pointer device is tapped twice on the display object. |\n * | `pointerup` | Pointer device button is released over the display object. |\n * | `pointerupoutside` | Pointer device button is released outside the display object\n * that initially registered a pointerdown. |\n * | `mousedown ` | Mouse button is pressed on the display object. |\n * | `mouseenter` | Mouse cursor enters the display object. |\n * | `mouseleave` | Mouse cursor leaves the display object. |\n * | `mousemove ` | Mouse cursor is moved while over the display object. |\n * | `globalmousemove` | Mouse is moved, regardless of hit-testing the current object. |\n * | `mouseout ` | Mouse cursor is moved off the display object. |\n * | `mouseover ` | Mouse cursor is moved onto the display object. |\n * | `mouseup ` | Mouse button is released over the display object. |\n * | `mouseupoutside ` | Mouse button is released outside the display object that initially registered a mousedown. |\n * | `click ` | Mouse button is clicked (pressed and released) over the display object. |\n * | `touchcancel ` | Touch point is removed outside of the display object that initially registered a touchstart. |\n * | `touchend ` | Touch point is removed from the display object. |\n * | `touchendoutside ` | Touch point is removed outside of the display object that initially registered a touchstart. |\n * | `touchmove ` | Touch point is moved along the display object. |\n * | `globaltouchmove` | Touch point is moved, regardless of hit-testing the current object. |\n * | `touchstart ` | Touch point is placed on the display object. |\n * | `tap ` | Touch point is tapped twice on the display object. |\n * | `wheel ` | Mouse wheel is spun over the display object. |\n * | `rightclick ` | Right mouse button is clicked (pressed and released) over the display object. |\n * | `rightdown ` | Right mouse button is pressed on the display object. |\n * | `rightup ` | Right mouse button is released over the display object. |\n * | `rightupoutside ` | Right mouse button is released outside the display object that initially registered a rightdown. |\n *
\n * @namespace events\n */\n/* eslint-enable max-len */\n\nextensions.add(EventSystem);\nContainer.mixin(FederatedContainer);\n","import type { ExtensionMetadata } from '../../../extensions/Extensions';\nimport type { ResolvedAsset } from '../../types';\nimport type { Loader } from '../Loader';\n\n/**\n * The extension priority for loader parsers.\n * Helpful when managing multiple parsers that share the same extension test.\n * The higher priority parsers will be checked first.\n * @enum {number}\n */\nexport enum LoaderParserPriority\n// eslint-disable-next-line @typescript-eslint/indent\n{\n /** Generic parsers: txt, json, webfonts */\n Low = 0,\n /** PixiJS assets with generic extensions: spritesheets, bitmapfonts */\n Normal = 1,\n /** Specific texture types: svg, png, ktx, dds, basis */\n High = 2,\n}\n\n/**\n * The interface to define a loader parser *(all functions are optional)*.\n *\n * When you create a `parser` object, the flow for every asset loaded is:\n *\n * 1. `parser.test()` - Each URL to load will be tested here, if the test is passed the assets are\n * loaded using the load function below. Good place to test for things like file extensions!\n * 2. `parser.load()` - This is the promise that loads the URL provided resolves with a loaded asset\n * if returned by the parser.\n * 3. `parser.testParse()` - This function is used to test if the parse function should be run on the\n * asset If this returns true then parse is called with the asset\n * 4. `parse.parse()` - Gets called on the asset it testParse passes. Useful to convert a raw asset\n * into something more useful\n *\n *
\n * Some loaders may only be used for parsing, some only for loading, and some for both!\n * @memberof assets\n */\nexport interface LoaderParser>\n{\n /** Should be ExtensionType.LoaderParser */\n extension?: ExtensionMetadata;\n\n /** A config to adjust the parser */\n config?: CONFIG;\n\n /** The name of the parser (this can be used when specifying loadParser in a ResolvedAsset) */\n name: string;\n\n /**\n * Each URL to load will be tested here,\n * if the test is passed the assets are loaded using the load function below.\n * Good place to test for things like file extensions!\n * @param url - The URL to test\n * @param resolvedAsset - Any custom additional information relevant to the asset being loaded\n * @param loader - The loader instance\n */\n test?: (url: string, resolvedAsset?: ResolvedAsset, loader?: Loader) => boolean;\n\n /**\n * This is the promise that loads the URL provided\n * resolves with a loaded asset if returned by the parser.\n * @param url - The URL to load\n * @param resolvedAsset - Any custom additional information relevant to the asset being loaded\n * @param loader - The loader instance\n */\n load?: (url: string, resolvedAsset?: ResolvedAsset, loader?: Loader) => Promise;\n\n /**\n * This function is used to test if the parse function should be run on the asset\n * If this returns true then parse is called with the asset\n * @param asset - The loaded asset data\n * @param resolvedAsset - Any custom additional information relevant to the asset being loaded\n * @param loader - The loader instance\n */\n testParse?: (asset: ASSET, resolvedAsset?: ResolvedAsset, loader?: Loader) => Promise;\n\n /**\n * Gets called on the asset it testParse passes. Useful to convert a raw asset into something more useful\n * @param asset - The loaded asset data\n * @param resolvedAsset - Any custom additional information relevant to the asset being loaded\n * @param loader - The loader instance\n */\n parse?: (asset: ASSET, resolvedAsset?: ResolvedAsset, loader?: Loader) => Promise;\n\n /**\n * If an asset is parsed using this parser, the unload function will be called when the user requests an asset\n * to be unloaded. This is useful for things like sounds or textures that can be unloaded from memory\n * @param asset - The asset to unload/destroy\n * @param resolvedAsset - Any custom additional information relevant to the asset being loaded\n * @param loader - The loader instance\n */\n unload?: (asset: ASSET, resolvedAsset?: ResolvedAsset, loader?: Loader) => Promise;\n}\n","import { type Adapter } from '../environment/adapter';\n\n/**\n * This is an implementation of the {@link environment.Adapter} interface.\n * It can be used to make Pixi work in the browser.\n * @memberof environment\n * @property {Function} createCanvas - Creates a canvas element of the given size.\n * This canvas is created using the browser's native canvas element.\n * @property {Function} getCanvasRenderingContext2D - Returns a 2D rendering context.\n * @property {Function} getWebGLRenderingContext - Returns a WebGL rendering context.\n * @property {Function} getNavigator - Returns browsers window.navigator\n * @property {Function} getBaseUrl - Returns the current base URL for browser environments this is either\n * the document.baseURI or window.location.href\n * @property {Function} getFontFaceSet - Return the font face set if available\n * @property {Function} fetch - Returns a Response object that has been fetched from the given URL.\n * @property {Function} parseXML - Returns Document object that has been parsed from the given XML string.\n */\nexport const BrowserAdapter = {\n createCanvas: (width: number, height: number): HTMLCanvasElement =>\n {\n const canvas = document.createElement('canvas');\n\n canvas.width = width;\n canvas.height = height;\n\n return canvas;\n },\n getCanvasRenderingContext2D: () => CanvasRenderingContext2D,\n getWebGLRenderingContext: () => WebGLRenderingContext,\n getNavigator: () => navigator,\n getBaseUrl: () => (document.baseURI ?? window.location.href),\n getFontFaceSet: () => document.fonts,\n fetch: (url: RequestInfo, options?: RequestInit) => fetch(url, options),\n parseXML: (xml: string) =>\n {\n const parser = new DOMParser();\n\n return parser.parseFromString(xml, 'text/xml');\n },\n} as Adapter;\n","import { BrowserAdapter } from '../environment-browser/BrowserAdapter';\n\nimport type { ICanvas } from './canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from './canvas/ICanvasRenderingContext2D';\n\n/**\n * PixiJS supports multiple environments including browsers, Web Workers, and Node.js.\n * The environment is auto-detected by default using the {@link environment.autoDetectEnvironment} function.\n *\n * The {@link environment.Adapter} interface provides a way to abstract away the differences between\n * these environments. PixiJS uses the {@link environment.BrowserAdapter} by default.\n *\n * However you can manually set the environment using the {@link environment.DOMAdapter} singleton, for example to\n * use Pixi within a WebWorker.\n * ```js\n * import { DOMAdapter, WebWorkerAdapter } from 'pixi.js';\n *\n * // WebWorkerAdapter is an implementation of the Adapter interface\n * DOMAdapter.set(WebWorkerAdapter);\n *\n * // use the adapter to create a canvas (in this case an OffscreenCanvas)\n * DOMAdapter.get().createCanvas(800, 600);\n * ```\n * @namespace environment\n */\n\n/**\n * This interface describes all the DOM dependent calls that Pixi makes throughout its codebase.\n * Implementations of this interface can be used to make sure Pixi will work in any environment,\n * such as browser, Web Workers, and Node.js.\n * @memberof environment\n */\nexport interface Adapter\n{\n /** Returns a canvas object that can be used to create a webgl context. */\n createCanvas: (width?: number, height?: number) => ICanvas;\n /** Returns a 2D rendering context. */\n getCanvasRenderingContext2D: () => { prototype: ICanvasRenderingContext2D; };\n /** Returns a WebGL rendering context. */\n getWebGLRenderingContext: () => typeof WebGLRenderingContext;\n /** Returns a partial implementation of the browsers window.navigator */\n getNavigator: () => { userAgent: string, gpu: GPU | null };\n /** Returns the current base URL For browser environments this is either the document.baseURI or window.location.href */\n getBaseUrl: () => string;\n /** Return the font face set if available */\n getFontFaceSet: () => FontFaceSet | null;\n /** Returns a Response object that has been fetched from the given URL. */\n fetch: (url: RequestInfo, options?: RequestInit) => Promise;\n /** Returns Document object that has been parsed from the given XML string. */\n parseXML: (xml: string) => Document;\n}\n\nlet currentAdapter: Adapter = BrowserAdapter;\n\n/**\n * The DOMAdapter is a singleton that allows PixiJS to perform DOM operations, such as creating a canvas.\n * This allows PixiJS to be used in any environment, such as a web browser, Web Worker, or Node.js.\n * It uses the {@link environment.Adapter} interface to abstract away the differences between these environments\n * and uses the {@link environment.BrowserAdapter} by default.\n *\n * It has two methods: `get():Adapter` and `set(adapter: Adapter)`.\n *\n * Defaults to the {@link environment.BrowserAdapter}.\n * @example\n * import { DOMAdapter, WebWorkerAdapter } from 'pixi.js';\n *\n * // WebWorkerAdapter is an implementation of the Adapter interface\n * DOMAdapter.set(WebWorkerAdapter);\n *\n * // use the adapter to create a canvas (in this case an OffscreenCanvas)\n * DOMAdapter.get().createCanvas(800, 600);\n * @memberof environment\n */\nexport const DOMAdapter = {\n /**\n * Returns the current adapter.\n * @returns {environment.Adapter} The current adapter.\n */\n get(): Adapter\n {\n return currentAdapter;\n },\n /**\n * Sets the current adapter.\n * @param adapter - The new adapter.\n */\n set(adapter: Adapter): void\n {\n currentAdapter = adapter;\n },\n};\n","import { DOMAdapter } from '../environment/adapter';\n\nfunction assertPath(path: string)\n{\n if (typeof path !== 'string')\n {\n throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`);\n }\n}\n\nfunction removeUrlParams(url: string): string\n{\n const re = url.split('?')[0];\n\n return re.split('#')[0];\n}\n\nfunction escapeRegExp(string: string)\n{\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nfunction replaceAll(str: string, find: string, replace: string)\n{\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path: string, allowAboveRoot: boolean)\n{\n let res = '';\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let code = -1;\n\n for (let i = 0; i <= path.length; ++i)\n {\n if (i < path.length)\n {\n code = path.charCodeAt(i);\n }\n else if (code === 47)\n {\n break;\n }\n else\n {\n code = 47;\n }\n if (code === 47)\n {\n if (lastSlash === i - 1 || dots === 1)\n {\n // NOOP\n }\n else if (lastSlash !== i - 1 && dots === 2)\n {\n if (\n res.length < 2\n || lastSegmentLength !== 2\n || res.charCodeAt(res.length - 1) !== 46\n || res.charCodeAt(res.length - 2) !== 46\n )\n {\n if (res.length > 2)\n {\n const lastSlashIndex = res.lastIndexOf('/');\n\n if (lastSlashIndex !== res.length - 1)\n {\n if (lastSlashIndex === -1)\n {\n res = '';\n lastSegmentLength = 0;\n }\n else\n {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n else if (res.length === 2 || res.length === 1)\n {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot)\n {\n if (res.length > 0)\n { res += '/..'; }\n else\n { res = '..'; }\n lastSegmentLength = 2;\n }\n }\n else\n {\n if (res.length > 0)\n {\n res += `/${path.slice(lastSlash + 1, i)}`;\n }\n else\n {\n res = path.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n }\n else if (code === 46 && dots !== -1)\n {\n ++dots;\n }\n else\n {\n dots = -1;\n }\n }\n\n return res;\n}\n\n/**\n * Path utilities for working with URLs and file paths in a cross-platform way.\n * All paths that are passed in will become normalized to have posix separators.\n * ```js\n * import { path } from 'pixi.js';\n *\n * path.normalize('http://www.example.com/foo/bar/../baz'); // http://www.example.com/foo/baz\n * ```\n * @memberof utils\n */\nexport interface Path\n{\n /**\n * Converts a path to posix format.\n * @param path - The path to convert to posix\n */\n toPosix: (path: string) => string;\n /**\n * Checks if the path is a URL e.g. http://, https://\n * @param path - The path to check\n */\n isUrl: (path: string) => boolean;\n /**\n * Checks if the path is a data URL\n * @param path - The path to check\n */\n isDataUrl: (path: string) => boolean;\n /**\n * Checks if the path is a blob URL\n * @param path - The path to check\n */\n isBlobUrl: (path: string) => boolean;\n /**\n * Checks if the path has a protocol e.g. http://, https://, file:///, data:, blob:, C:/\n * This will return true for windows file paths\n * @param path - The path to check\n */\n hasProtocol: (path: string) => boolean;\n /**\n * Returns the protocol of the path e.g. http://, https://, file:///, data:, blob:, C:/\n * @param path - The path to get the protocol from\n */\n getProtocol: (path: string) => string;\n /**\n * Converts URL to an absolute path.\n * When loading from a Web Worker, we must use absolute paths.\n * If the URL is already absolute we return it as is\n * If it's not, we convert it\n * @param url - The URL to test\n * @param customBaseUrl - The base URL to use\n * @param customRootUrl - The root URL to use\n */\n toAbsolute: (url: string, baseUrl?: string, rootUrl?: string) => string;\n /**\n * Normalizes the given path, resolving '..' and '.' segments\n * @param path - The path to normalize\n */\n normalize: (path: string) => string;\n /**\n * Determines if path is an absolute path.\n * Absolute paths can be urls, data urls, or paths on disk\n * @param path - The path to test\n */\n isAbsolute: (path: string) => boolean;\n /**\n * Joins all given path segments together using the platform-specific separator as a delimiter,\n * then normalizes the resulting path\n * @param segments - The segments of the path to join\n */\n join: (...paths: string[]) => string;\n /**\n * Returns the directory name of a path\n * @param path - The path to parse\n */\n dirname: (path: string) => string;\n /**\n * Returns the root of the path e.g. /, C:/, file:///, http://domain.com/\n * @param path - The path to parse\n */\n rootname: (path: string) => string;\n /**\n * Returns the last portion of a path\n * @param path - The path to test\n * @param ext - Optional extension to remove\n */\n basename: (path: string, ext?: string) => string;\n /**\n * Returns the extension of the path, from the last occurrence of the . (period) character to end of string in the last\n * portion of the path. If there is no . in the last portion of the path, or if there are no . characters other than\n * the first character of the basename of path, an empty string is returned.\n * @param path - The path to parse\n */\n extname: (path: string) => string;\n /**\n * Parses a path into an object containing the 'root', `dir`, `base`, `ext`, and `name` properties.\n * @param path - The path to parse\n */\n parse: (path: string) => { root?: string, dir?: string, base?: string, ext?: string, name?: string };\n sep: string,\n delimiter: string,\n joinExtensions: string[],\n}\n\n/**\n * Path utilities for working with URLs and file paths in a cross-platform way.\n * All paths that are passed in will become normalized to have posix separators.\n * ```js\n * import { path } from 'pixi.js';\n *\n * path.normalize('http://www.example.com/foo/bar/../baz'); // http://www.example.com/foo/baz\n * ```\n * @see {@link utils.Path}\n * @memberof utils\n */\nexport const path: Path = {\n /**\n * Converts a path to posix format.\n * @param path - The path to convert to posix\n */\n toPosix(path: string) { return replaceAll(path, '\\\\', '/'); },\n /**\n * Checks if the path is a URL e.g. http://, https://\n * @param path - The path to check\n */\n isUrl(path: string) { return (/^https?:/).test(this.toPosix(path)); },\n /**\n * Checks if the path is a data URL\n * @param path - The path to check\n */\n isDataUrl(path: string)\n {\n // eslint-disable-next-line max-len\n return (/^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s<>]*?)$/i)\n .test(path);\n },\n /**\n * Checks if the path is a blob URL\n * @param path - The path to check\n */\n isBlobUrl(path: string)\n {\n // Not necessary to have an exact regex to match the blob URLs\n return path.startsWith('blob:');\n },\n /**\n * Checks if the path has a protocol e.g. http://, https://, file:///, data:, blob:, C:/\n * This will return true for windows file paths\n * @param path - The path to check\n */\n hasProtocol(path: string) { return (/^[^/:]+:/).test(this.toPosix(path)); },\n /**\n * Returns the protocol of the path e.g. http://, https://, file:///, data:, blob:, C:/\n * @param path - The path to get the protocol from\n */\n getProtocol(path: string)\n {\n assertPath(path);\n path = this.toPosix(path);\n\n const matchFile = (/^file:\\/\\/\\//).exec(path);\n\n if (matchFile)\n {\n return matchFile[0];\n }\n\n const matchProtocol = (/^[^/:]+:\\/{0,2}/).exec(path);\n\n if (matchProtocol)\n {\n return matchProtocol[0];\n }\n\n return '';\n },\n\n /**\n * Converts URL to an absolute path.\n * When loading from a Web Worker, we must use absolute paths.\n * If the URL is already absolute we return it as is\n * If it's not, we convert it\n * @param url - The URL to test\n * @param customBaseUrl - The base URL to use\n * @param customRootUrl - The root URL to use\n */\n toAbsolute(url: string, customBaseUrl?: string, customRootUrl?: string)\n {\n assertPath(url);\n\n if (this.isDataUrl(url) || this.isBlobUrl(url)) return url;\n\n const baseUrl = removeUrlParams(this.toPosix(customBaseUrl ?? DOMAdapter.get().getBaseUrl()));\n const rootUrl = removeUrlParams(this.toPosix(customRootUrl ?? this.rootname(baseUrl)));\n\n url = this.toPosix(url);\n\n // root relative url\n if (url.startsWith('/'))\n {\n return path.join(rootUrl, url.slice(1));\n }\n\n const absolutePath = this.isAbsolute(url) ? url : this.join(baseUrl, url);\n\n return absolutePath;\n },\n\n /**\n * Normalizes the given path, resolving '..' and '.' segments\n * @param path - The path to normalize\n */\n normalize(path: string)\n {\n assertPath(path);\n\n if (path.length === 0) return '.';\n if (this.isDataUrl(path) || this.isBlobUrl(path)) return path;\n\n path = this.toPosix(path);\n\n let protocol = '';\n const isAbsolute = path.startsWith('/');\n\n if (this.hasProtocol(path))\n {\n protocol = this.rootname(path);\n path = path.slice(protocol.length);\n }\n\n const trailingSeparator = path.endsWith('/');\n\n // Normalize the path\n path = normalizeStringPosix(path, false);\n\n if (path.length > 0 && trailingSeparator) path += '/';\n if (isAbsolute) return `/${path}`;\n\n return protocol + path;\n },\n\n /**\n * Determines if path is an absolute path.\n * Absolute paths can be urls, data urls, or paths on disk\n * @param path - The path to test\n */\n isAbsolute(path: string)\n {\n assertPath(path);\n path = this.toPosix(path);\n\n if (this.hasProtocol(path)) return true;\n\n return path.startsWith('/');\n },\n\n /**\n * Joins all given path segments together using the platform-specific separator as a delimiter,\n * then normalizes the resulting path\n * @param segments - The segments of the path to join\n */\n join(...segments: string[])\n {\n if (segments.length === 0)\n { return '.'; }\n let joined;\n\n for (let i = 0; i < segments.length; ++i)\n {\n const arg = segments[i];\n\n assertPath(arg);\n if (arg.length > 0)\n {\n if (joined === undefined) joined = arg;\n else\n {\n const prevArg = segments[i - 1] ?? '';\n\n if (this.joinExtensions.includes(this.extname(prevArg).toLowerCase()))\n {\n joined += `/../${arg}`;\n }\n else\n {\n joined += `/${arg}`;\n }\n }\n }\n }\n if (joined === undefined) { return '.'; }\n\n return this.normalize(joined);\n },\n\n /**\n * Returns the directory name of a path\n * @param path - The path to parse\n */\n dirname(path: string)\n {\n assertPath(path);\n if (path.length === 0) return '.';\n path = this.toPosix(path);\n let code = path.charCodeAt(0);\n const hasRoot = code === 47;\n let end = -1;\n let matchedSlash = true;\n\n const proto = this.getProtocol(path);\n const origpath = path;\n\n path = path.slice(proto.length);\n\n for (let i = path.length - 1; i >= 1; --i)\n {\n code = path.charCodeAt(i);\n if (code === 47)\n {\n if (!matchedSlash)\n {\n end = i;\n break;\n }\n }\n else\n {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n // if end is -1 and its a url then we need to add the path back\n // eslint-disable-next-line no-nested-ternary\n if (end === -1) return hasRoot ? '/' : this.isUrl(origpath) ? proto + path : proto;\n if (hasRoot && end === 1) return '//';\n\n return proto + path.slice(0, end);\n },\n\n /**\n * Returns the root of the path e.g. /, C:/, file:///, http://domain.com/\n * @param path - The path to parse\n */\n rootname(path: string)\n {\n assertPath(path);\n path = this.toPosix(path);\n\n let root = '';\n\n if (path.startsWith('/')) root = '/';\n else\n {\n root = this.getProtocol(path);\n }\n\n if (this.isUrl(path))\n {\n // need to find the first path separator\n const index = path.indexOf('/', root.length);\n\n if (index !== -1)\n {\n root = path.slice(0, index);\n }\n else root = path;\n\n if (!root.endsWith('/')) root += '/';\n }\n\n return root;\n },\n\n /**\n * Returns the last portion of a path\n * @param path - The path to test\n * @param ext - Optional extension to remove\n */\n basename(path: string, ext?: string)\n {\n assertPath(path);\n if (ext) assertPath(ext);\n\n path = removeUrlParams(this.toPosix(path));\n\n let start = 0;\n let end = -1;\n let matchedSlash = true;\n let i: number;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length)\n {\n if (ext.length === path.length && ext === path) return '';\n let extIdx = ext.length - 1;\n let firstNonSlashEnd = -1;\n\n for (i = path.length - 1; i >= 0; --i)\n {\n const code = path.charCodeAt(i);\n\n if (code === 47)\n {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash)\n {\n start = i + 1;\n break;\n }\n }\n else\n {\n if (firstNonSlashEnd === -1)\n {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0)\n {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx))\n {\n if (--extIdx === -1)\n {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n }\n else\n {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd; else if (end === -1) end = path.length;\n\n return path.slice(start, end);\n }\n for (i = path.length - 1; i >= 0; --i)\n {\n if (path.charCodeAt(i) === 47)\n {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash)\n {\n start = i + 1;\n break;\n }\n }\n else if (end === -1)\n {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n\n return path.slice(start, end);\n },\n\n /**\n * Returns the extension of the path, from the last occurrence of the . (period) character to end of string in the last\n * portion of the path. If there is no . in the last portion of the path, or if there are no . characters other than\n * the first character of the basename of path, an empty string is returned.\n * @param path - The path to parse\n */\n extname(path: string)\n {\n assertPath(path);\n path = removeUrlParams(this.toPosix(path));\n\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n\n for (let i = path.length - 1; i >= 0; --i)\n {\n const code = path.charCodeAt(i);\n\n if (code === 47)\n {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash)\n {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1)\n {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46)\n {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n }\n else if (startDot !== -1)\n {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 || end === -1\n // We saw a non-dot character immediately before the dot\n || preDotState === 0\n // The (right-most) trimmed path component is exactly '..'\n // eslint-disable-next-line no-mixed-operators, no-mixed-operators/no-mixed-operators\n || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1\n )\n {\n return '';\n }\n\n return path.slice(startDot, end);\n },\n\n /**\n * Parses a path into an object containing the 'root', `dir`, `base`, `ext`, and `name` properties.\n * @param path - The path to parse\n */\n parse(path: string)\n {\n assertPath(path);\n\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\n\n if (path.length === 0) return ret;\n path = removeUrlParams(this.toPosix(path));\n\n let code = path.charCodeAt(0);\n const isAbsolute = this.isAbsolute(path);\n let start: number;\n const protocol = '';\n\n ret.root = this.rootname(path);\n\n if (isAbsolute || this.hasProtocol(path))\n {\n start = 1;\n }\n else\n {\n start = 0;\n }\n let startDot = -1;\n let startPart = 0;\n let end = -1;\n let matchedSlash = true;\n let i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n let preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i)\n {\n code = path.charCodeAt(i);\n if (code === 47)\n {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash)\n {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1)\n {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46)\n {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n }\n else if (startDot !== -1)\n {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 || end === -1\n // We saw a non-dot character immediately before the dot\n || preDotState === 0\n // The (right-most) trimmed path component is exactly '..'\n // eslint-disable-next-line no-mixed-operators, no-mixed-operators/no-mixed-operators\n || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1\n )\n {\n if (end !== -1)\n {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);\n else ret.base = ret.name = path.slice(startPart, end);\n }\n }\n else\n {\n if (startPart === 0 && isAbsolute)\n {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n }\n else\n {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n ret.dir = this.dirname(path);\n if (protocol) ret.dir = protocol + ret.dir;\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n joinExtensions: ['.html'],\n} as Path;\n","export const convertToList = (\n input: string | T | (string | T)[],\n transform?: (input: string) => T,\n forceTransform = false\n): T[] =>\n{\n if (!Array.isArray(input))\n {\n input = [input as T];\n }\n\n if (!transform)\n {\n return input as T[];\n }\n\n return (input as (string | T)[]).map((item): T =>\n {\n if (typeof item === 'string' || forceTransform)\n {\n return transform(item as string);\n }\n\n return item as T;\n });\n};\n","function processX(base: string, ids: string[][], depth: number, result: string[], tags: string[])\n{\n const id = ids[depth];\n\n for (let i = 0; i < id.length; i++)\n {\n const value = id[i];\n\n if (depth < ids.length - 1)\n {\n processX(base.replace(result[depth], value), ids, depth + 1, result, tags);\n }\n else\n {\n tags.push(base.replace(result[depth], value));\n }\n }\n}\n\n/**\n * Creates a list of all possible combinations of the given strings.\n * @example\n * const out2 = createStringVariations('name is {chicken,wolf,sheep}');\n * console.log(out2); // [ 'name is chicken', 'name is wolf', 'name is sheep' ]\n * @param string - The string to process\n */\nexport function createStringVariations(string: string): string[]\n{\n const regex = /\\{(.*?)\\}/g;\n\n const result = string.match(regex);\n\n const tags: string[] = [];\n\n if (result)\n {\n const ids: string[][] = [];\n\n result.forEach((vars) =>\n {\n // first remove the brackets...\n const split = vars.substring(1, vars.length - 1).split(',');\n\n ids.push(split);\n });\n\n processX(string, ids, 0, result, tags);\n }\n else\n {\n tags.push(string);\n }\n\n return tags;\n}\n","/**\n * Checks if the given value is an array.\n * @param item - The item to test\n */\nexport const isSingleItem = (item: unknown): boolean => (!Array.isArray(item));\n","import { warn } from '../../utils/logging/warn';\nimport { path } from '../../utils/path';\nimport { convertToList } from '../utils/convertToList';\nimport { createStringVariations } from '../utils/createStringVariations';\nimport { isSingleItem } from '../utils/isSingleItem';\n\nimport type {\n ArrayOr,\n AssetsBundle,\n AssetsManifest,\n AssetSrc,\n ResolvedAsset,\n ResolvedSrc,\n UnresolvedAsset,\n} from '../types';\nimport type { PreferOrder, ResolveURLParser } from './types';\n\n/**\n * Options for how the resolver deals with generating bundle ids\n * @memberof assets\n */\nexport interface BundleIdentifierOptions\n{\n /** The character that is used to connect the bundleId and the assetId when generating a bundle asset id key */\n connector?: string;\n /**\n * A function that generates a bundle asset id key from a bundleId and an assetId\n * @param bundleId - the bundleId\n * @param assetId - the assetId\n * @returns the bundle asset id key\n */\n createBundleAssetId?: (bundleId: string, assetId: string) => string;\n /**\n * A function that generates an assetId from a bundle asset id key. This is the reverse of generateBundleAssetId\n * @param bundleId - the bundleId\n * @param assetBundleId - the bundle asset id key\n * @returns the assetId\n */\n extractAssetIdFromBundle?: (bundleId: string, assetBundleId: string) => string;\n}\n\n/**\n * A class that is responsible for resolving mapping asset URLs to keys.\n * At its most basic it can be used for Aliases:\n *\n * ```js\n * resolver.add('foo', 'bar');\n * resolver.resolveUrl('foo') // => 'bar'\n * ```\n *\n * It can also be used to resolve the most appropriate asset for a given URL:\n *\n * ```js\n * resolver.prefer({\n * params: {\n * format: 'webp',\n * resolution: 2,\n * }\n * });\n *\n * resolver.add('foo', ['bar@2x.webp', 'bar@2x.png', 'bar.webp', 'bar.png']);\n *\n * resolver.resolveUrl('foo') // => 'bar@2x.webp'\n * ```\n * Other features include:\n * - Ability to process a manifest file to get the correct understanding of how to resolve all assets\n * - Ability to add custom parsers for specific file types\n * - Ability to add custom prefer rules\n *\n * This class only cares about the URL, not the loading of the asset itself.\n *\n * It is not intended that this class is created by developers - its part of the Asset class\n * This is the third major system of PixiJS' main Assets class\n * @memberof assets\n */\nexport class Resolver\n{\n /**\n * The prefix that denotes a URL is for a retina asset.\n * @static\n * @name RETINA_PREFIX\n * @type {RegExp}\n * @default /@([0-9\\.]+)x/\n * @example `@2x`\n */\n public static RETINA_PREFIX = /@([0-9\\.]+)x/;\n\n private readonly _defaultBundleIdentifierOptions: Required = {\n connector: '-',\n createBundleAssetId: (bundleId, assetId) =>\n `${bundleId}${this._bundleIdConnector}${assetId}`,\n extractAssetIdFromBundle: (bundleId, assetBundleId) =>\n assetBundleId.replace(`${bundleId}${this._bundleIdConnector}`, ''),\n };\n\n /** The character that is used to connect the bundleId and the assetId when generating a bundle asset id key */\n private _bundleIdConnector = this._defaultBundleIdentifierOptions.connector;\n\n /**\n * A function that generates a bundle asset id key from a bundleId and an assetId\n * @param bundleId - the bundleId\n * @param assetId - the assetId\n * @returns the bundle asset id key\n */\n private _createBundleAssetId: (\n bundleId: string,\n assetId: string\n ) => string = this._defaultBundleIdentifierOptions.createBundleAssetId;\n\n /**\n * A function that generates an assetId from a bundle asset id key. This is the reverse of generateBundleAssetId\n * @param bundleId - the bundleId\n * @param assetBundleId - the bundle asset id key\n * @returns the assetId\n */\n private _extractAssetIdFromBundle: (\n bundleId: string,\n assetBundleId: string\n ) => string = this._defaultBundleIdentifierOptions.extractAssetIdFromBundle;\n\n private _assetMap: Record = {};\n private _preferredOrder: PreferOrder[] = [];\n private readonly _parsers: ResolveURLParser[] = [];\n\n private _resolverHash: Record = {};\n private _rootPath: string;\n private _basePath: string;\n private _manifest: AssetsManifest;\n private _bundles: Record = {};\n private _defaultSearchParams: string;\n\n /**\n * Override how the resolver deals with generating bundle ids.\n * must be called before any bundles are added\n * @param bundleIdentifier - the bundle identifier options\n */\n public setBundleIdentifier(bundleIdentifier: BundleIdentifierOptions): void\n {\n this._bundleIdConnector = bundleIdentifier.connector ?? this._bundleIdConnector;\n this._createBundleAssetId = bundleIdentifier.createBundleAssetId ?? this._createBundleAssetId;\n this._extractAssetIdFromBundle = bundleIdentifier.extractAssetIdFromBundle ?? this._extractAssetIdFromBundle;\n\n if (this._extractAssetIdFromBundle('foo', this._createBundleAssetId('foo', 'bar')) !== 'bar')\n {\n throw new Error('[Resolver] GenerateBundleAssetId are not working correctly');\n }\n }\n\n /**\n * Let the resolver know which assets you prefer to use when resolving assets.\n * Multiple prefer user defined rules can be added.\n * @example\n * resolver.prefer({\n * // first look for something with the correct format, and then then correct resolution\n * priority: ['format', 'resolution'],\n * params:{\n * format:'webp', // prefer webp images\n * resolution: 2, // prefer a resolution of 2\n * }\n * })\n * resolver.add('foo', ['bar@2x.webp', 'bar@2x.png', 'bar.webp', 'bar.png']);\n * resolver.resolveUrl('foo') // => 'bar@2x.webp'\n * @param preferOrders - the prefer options\n */\n public prefer(...preferOrders: PreferOrder[]): void\n {\n preferOrders.forEach((prefer) =>\n {\n this._preferredOrder.push(prefer);\n\n if (!prefer.priority)\n {\n // generate the priority based on the order of the object\n prefer.priority = Object.keys(prefer.params);\n }\n });\n\n this._resolverHash = {};\n }\n\n /**\n * Set the base path to prepend to all urls when resolving\n * @example\n * resolver.basePath = 'https://home.com/';\n * resolver.add('foo', 'bar.ong');\n * resolver.resolveUrl('foo', 'bar.png'); // => 'https://home.com/bar.png'\n * @param basePath - the base path to use\n */\n public set basePath(basePath: string)\n {\n this._basePath = basePath;\n }\n\n public get basePath(): string\n {\n return this._basePath;\n }\n\n /**\n * Set the root path for root-relative URLs. By default the `basePath`'s root is used. If no `basePath` is set, then the\n * default value for browsers is `window.location.origin`\n * @example\n * // Application hosted on https://home.com/some-path/index.html\n * resolver.basePath = 'https://home.com/some-path/';\n * resolver.rootPath = 'https://home.com/';\n * resolver.add('foo', '/bar.png');\n * resolver.resolveUrl('foo', '/bar.png'); // => 'https://home.com/bar.png'\n * @param rootPath - the root path to use\n */\n public set rootPath(rootPath: string)\n {\n this._rootPath = rootPath;\n }\n\n public get rootPath(): string\n {\n return this._rootPath;\n }\n\n /**\n * All the active URL parsers that help the parser to extract information and create\n * an asset object-based on parsing the URL itself.\n *\n * Can be added using the extensions API\n * @example\n * resolver.add('foo', [\n * {\n * resolution: 2,\n * format: 'png',\n * src: 'image@2x.png',\n * },\n * {\n * resolution:1,\n * format:'png',\n * src: 'image.png',\n * },\n * ]);\n *\n * // With a url parser the information such as resolution and file format could extracted from the url itself:\n * extensions.add({\n * extension: ExtensionType.ResolveParser,\n * test: loadTextures.test, // test if url ends in an image\n * parse: (value: string) =>\n * ({\n * resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n * format: value.split('.').pop(),\n * src: value,\n * }),\n * });\n *\n * // Now resolution and format can be extracted from the url\n * resolver.add('foo', [\n * 'image@2x.png',\n * 'image.png',\n * ]);\n */\n public get parsers(): ResolveURLParser[]\n {\n return this._parsers;\n }\n\n /** Used for testing, this resets the resolver to its initial state */\n public reset(): void\n {\n this.setBundleIdentifier(this._defaultBundleIdentifierOptions);\n\n this._assetMap = {};\n this._preferredOrder = [];\n // Do not reset this._parsers\n\n this._resolverHash = {};\n this._rootPath = null;\n this._basePath = null;\n this._manifest = null;\n this._bundles = {};\n this._defaultSearchParams = null;\n }\n\n /**\n * Sets the default URL search parameters for the URL resolver. The urls can be specified as a string or an object.\n * @param searchParams - the default url parameters to append when resolving urls\n */\n public setDefaultSearchParams(searchParams: string | Record): void\n {\n if (typeof searchParams === 'string')\n {\n this._defaultSearchParams = searchParams;\n }\n else\n {\n const queryValues = searchParams as Record;\n\n this._defaultSearchParams = Object.keys(queryValues)\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(queryValues[key])}`)\n .join('&');\n }\n }\n\n /**\n * Returns the aliases for a given asset\n * @param asset - the asset to get the aliases for\n */\n public getAlias(asset: UnresolvedAsset): string[]\n {\n const { alias, src } = asset;\n const aliasesToUse = convertToList>(\n alias || src, (value: string | AssetSrc) =>\n {\n if (typeof value === 'string') return value;\n\n if (Array.isArray(value)) return value.map((v) => (v as ResolvedSrc)?.src ?? v);\n\n if (value?.src) return value.src;\n\n return value;\n }, true) as string[];\n\n return aliasesToUse;\n }\n\n /**\n * Add a manifest to the asset resolver. This is a nice way to add all the asset information in one go.\n * generally a manifest would be built using a tool.\n * @param manifest - the manifest to add to the resolver\n */\n public addManifest(manifest: AssetsManifest): void\n {\n if (this._manifest)\n {\n // #if _DEBUG\n warn('[Resolver] Manifest already exists, this will be overwritten');\n // #endif\n }\n\n this._manifest = manifest;\n\n manifest.bundles.forEach((bundle) =>\n {\n this.addBundle(bundle.name, bundle.assets);\n });\n }\n\n /**\n * This adds a bundle of assets in one go so that you can resolve them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * resolver.addBundle('animals', [\n * { alias: 'bunny', src: 'bunny.png' },\n * { alias: 'chicken', src: 'chicken.png' },\n * { alias: 'thumper', src: 'thumper.png' },\n * ]);\n * // or\n * resolver.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const resolvedAssets = await resolver.resolveBundle('animals');\n * @param bundleId - The id of the bundle to add\n * @param assets - A record of the asset or assets that will be chosen from when loading via the specified key\n */\n public addBundle(bundleId: string, assets: AssetsBundle['assets']): void\n {\n const assetNames: string[] = [];\n let convertedAssets: UnresolvedAsset[] = assets as UnresolvedAsset[];\n\n if (!Array.isArray(assets))\n {\n // convert to array...\n convertedAssets = Object.entries(assets).map(([alias, src]) =>\n {\n if (typeof src === 'string' || Array.isArray(src))\n {\n return { alias, src };\n }\n\n return { alias, ...src };\n });\n }\n\n // when storing keys against a bundle we prepend the bundleId to each asset key\n // and pass it through as an additional alias for the asset\n // this keeps clashing ids separate on a per-bundle basis\n // you can also resolve a file using the bundleId-assetId syntax\n\n convertedAssets.forEach((asset) =>\n {\n const srcs = asset.src;\n const aliases = asset.alias;\n let ids: string[];\n\n if (typeof aliases === 'string')\n {\n const bundleAssetId = this._createBundleAssetId(bundleId, aliases);\n\n assetNames.push(bundleAssetId);\n ids = [aliases, bundleAssetId];\n }\n else\n {\n const bundleIds = aliases.map((name) => this._createBundleAssetId(bundleId, name));\n\n assetNames.push(...bundleIds);\n ids = [...aliases, ...bundleIds];\n }\n\n this.add({\n ...asset,\n ...{\n alias: ids,\n src: srcs,\n }\n });\n });\n\n this._bundles[bundleId] = assetNames;\n }\n\n /**\n * Tells the resolver what keys are associated with witch asset.\n * The most important thing the resolver does\n * @example\n * // Single key, single asset:\n * resolver.add({alias: 'foo', src: 'bar.png');\n * resolver.resolveUrl('foo') // => 'bar.png'\n *\n * // Multiple keys, single asset:\n * resolver.add({alias: ['foo', 'boo'], src: 'bar.png'});\n * resolver.resolveUrl('foo') // => 'bar.png'\n * resolver.resolveUrl('boo') // => 'bar.png'\n *\n * // Multiple keys, multiple assets:\n * resolver.add({alias: ['foo', 'boo'], src: ['bar.png', 'bar.webp']});\n * resolver.resolveUrl('foo') // => 'bar.png'\n *\n * // Add custom data attached to the resolver\n * Resolver.add({\n * alias: 'bunnyBooBooSmooth',\n * src: 'bunny{png,webp}',\n * data: { scaleMode:SCALE_MODES.NEAREST }, // Base texture options\n * });\n *\n * resolver.resolve('bunnyBooBooSmooth') // => { src: 'bunny.png', data: { scaleMode: SCALE_MODES.NEAREST } }\n * @param aliases - the UnresolvedAsset or array of UnresolvedAssets to add to the resolver\n */\n public add(\n aliases: ArrayOr,\n ): void\n {\n const assets: UnresolvedAsset[] = [];\n\n if (Array.isArray(aliases))\n {\n assets.push(...(aliases as UnresolvedAsset[]));\n }\n else\n {\n assets.push(aliases as UnresolvedAsset);\n }\n\n let keyCheck: (key: string) => void;\n\n // #if _DEBUG\n // eslint-disable-next-line prefer-const\n keyCheck = (key: string) =>\n {\n if (this.hasKey(key))\n {\n // #if _DEBUG\n warn(`[Resolver] already has key: ${key} overwriting`);\n // #endif\n }\n };\n // #endif\n\n const assetArray = convertToList(assets);\n\n // loop through all the assets and generate a resolve asset for each src\n assetArray.forEach((asset) =>\n {\n const { src } = asset;\n let { data, format, loadParser } = asset;\n\n // src can contain an unresolved asset itself\n // so we need to merge that data with the current asset\n // we dont need to create string variations for the src if it is a ResolvedAsset\n const srcsToUse: (string | ResolvedSrc)[][] = convertToList(src).map((src) =>\n {\n if (typeof src === 'string')\n { return createStringVariations(src); }\n\n return Array.isArray(src) ? src : [src];\n });\n\n const aliasesToUse = this.getAlias(asset);\n\n // #if _DEBUG\n Array.isArray(aliasesToUse) ? aliasesToUse.forEach(keyCheck) : keyCheck(aliasesToUse);\n // #endif\n\n // loop through all the srcs and generate a resolve asset for each src\n const resolvedAssets: ResolvedAsset[] = [];\n\n srcsToUse.forEach((srcs) =>\n {\n srcs.forEach((src) =>\n {\n let formattedAsset = {} as ResolvedAsset;\n\n if (typeof src !== 'object')\n {\n formattedAsset.src = src;\n // first see if it contains any {} tags...\n for (let i = 0; i < this._parsers.length; i++)\n {\n const parser = this._parsers[i];\n\n if (parser.test(src))\n {\n formattedAsset = parser.parse(src);\n break;\n }\n }\n }\n else\n {\n data = src.data ?? data;\n format = src.format ?? format;\n loadParser = src.loadParser ?? loadParser;\n formattedAsset = {\n ...formattedAsset,\n ...src,\n };\n }\n\n // check if aliases is undefined\n if (!aliasesToUse)\n {\n throw new Error(`[Resolver] alias is undefined for this asset: ${formattedAsset.src}`);\n }\n\n formattedAsset = this._buildResolvedAsset(formattedAsset, {\n aliases: aliasesToUse,\n data,\n format,\n loadParser,\n });\n\n resolvedAssets.push(formattedAsset);\n });\n });\n\n aliasesToUse.forEach((alias) =>\n {\n this._assetMap[alias] = resolvedAssets;\n });\n });\n }\n\n // TODO: this needs an overload like load did in Assets\n /**\n * If the resolver has had a manifest set via setManifest, this will return the assets urls for\n * a given bundleId or bundleIds.\n * @example\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * resolver.setManifest(manifest);\n * const resolved = resolver.resolveBundle('load-screen');\n * @param bundleIds - The bundle ids to resolve\n * @returns All the bundles assets or a hash of assets for each bundle specified\n */\n public resolveBundle(bundleIds: ArrayOr):\n Record | Record>\n {\n const singleAsset = isSingleItem(bundleIds);\n\n bundleIds = convertToList(bundleIds);\n\n const out: Record> = {};\n\n bundleIds.forEach((bundleId) =>\n {\n const assetNames = this._bundles[bundleId];\n\n if (assetNames)\n {\n const results = this.resolve(assetNames) as Record;\n\n const assets: Record = {};\n\n for (const key in results)\n {\n const asset = results[key];\n\n assets[this._extractAssetIdFromBundle(bundleId, key)] = asset;\n }\n\n out[bundleId] = assets;\n }\n });\n\n return singleAsset ? out[bundleIds[0]] : out;\n }\n\n /**\n * Does exactly what resolve does, but returns just the URL rather than the whole asset object\n * @param key - The key or keys to resolve\n * @returns - The URLs associated with the key(s)\n */\n public resolveUrl(key: ArrayOr): string | Record\n {\n const result = this.resolve(key as string) as ResolvedAsset | Record;\n\n if (typeof key !== 'string')\n {\n const out: Record = {};\n\n for (const i in result)\n {\n out[i] = (result as Record)[i].src;\n }\n\n return out;\n }\n\n return (result as ResolvedAsset).src;\n }\n\n /**\n * Resolves each key in the list to an asset object.\n * Another key function of the resolver! After adding all the various key/asset pairs. this will run the logic\n * of finding which asset to return based on any preferences set using the `prefer` function\n * by default the same key passed in will be returned if nothing is matched by the resolver.\n * @example\n * resolver.add('boo', 'bunny.png');\n *\n * resolver.resolve('boo') // => { src: 'bunny.png' }\n *\n * // Will return the same string as no key was added for this value..\n * resolver.resolve('another-thing.png') // => { src: 'another-thing.png' }\n * @param keys - key or keys to resolve\n * @returns - the resolve asset or a hash of resolve assets for each key specified\n */\n public resolve(keys: string): ResolvedAsset;\n public resolve(keys: string[]): Record;\n public resolve(keys: ArrayOr): ResolvedAsset | Record\n {\n const singleAsset = isSingleItem(keys);\n\n keys = convertToList(keys);\n\n const result: Record = {};\n\n keys.forEach((key) =>\n {\n if (!this._resolverHash[key])\n {\n if (this._assetMap[key])\n {\n let assets = this._assetMap[key];\n const preferredOrder = this._getPreferredOrder(assets);\n\n preferredOrder?.priority.forEach((priorityKey) =>\n {\n preferredOrder.params[priorityKey].forEach((value: unknown) =>\n {\n const filteredAssets = assets.filter((asset) =>\n {\n if (asset[priorityKey as keyof ResolvedAsset])\n {\n return asset[priorityKey as keyof ResolvedAsset] === value;\n }\n\n return false;\n });\n\n if (filteredAssets.length)\n {\n assets = filteredAssets;\n }\n });\n });\n\n this._resolverHash[key] = assets[0];\n }\n else\n {\n this._resolverHash[key] = this._buildResolvedAsset({\n alias: [key],\n src: key,\n }, {});\n }\n }\n\n result[key] = this._resolverHash[key];\n });\n\n return singleAsset ? result[keys[0]] : result;\n }\n\n /**\n * Checks if an asset with a given key exists in the resolver\n * @param key - The key of the asset\n */\n public hasKey(key: string): boolean\n {\n return !!this._assetMap[key];\n }\n\n /**\n * Checks if a bundle with the given key exists in the resolver\n * @param key - The key of the bundle\n */\n public hasBundle(key: string): boolean\n {\n return !!this._bundles[key];\n }\n\n /**\n * Internal function for figuring out what prefer criteria an asset should use.\n * @param assets\n */\n private _getPreferredOrder(assets: ResolvedAsset[]): PreferOrder\n {\n for (let i = 0; i < assets.length; i++)\n {\n const asset = assets[0];\n\n const preferred = this._preferredOrder.find((preference: PreferOrder) =>\n preference.params.format.includes(asset.format));\n\n if (preferred)\n {\n return preferred;\n }\n }\n\n return this._preferredOrder[0];\n }\n\n /**\n * Appends the default url parameters to the url\n * @param url - The url to append the default parameters to\n * @returns - The url with the default parameters appended\n */\n private _appendDefaultSearchParams(url: string): string\n {\n if (!this._defaultSearchParams) return url;\n\n const paramConnector = (/\\?/).test(url) ? '&' : '?';\n\n return `${url}${paramConnector}${this._defaultSearchParams}`;\n }\n\n private _buildResolvedAsset(formattedAsset: ResolvedAsset, data?: {\n aliases?: string[],\n data?: Record\n loadParser?: string,\n format?: string,\n }): ResolvedAsset\n {\n const { aliases, data: assetData, loadParser, format } = data;\n\n if (this._basePath || this._rootPath)\n {\n formattedAsset.src = path.toAbsolute(formattedAsset.src, this._basePath, this._rootPath);\n }\n\n formattedAsset.alias = aliases ?? formattedAsset.alias ?? [formattedAsset.src];\n formattedAsset.src = this._appendDefaultSearchParams(formattedAsset.src);\n formattedAsset.data = { ...assetData || {}, ...formattedAsset.data };\n formattedAsset.loadParser = loadParser ?? formattedAsset.loadParser;\n formattedAsset.format = format ?? formattedAsset.format ?? getUrlExtension(formattedAsset.src);\n\n return formattedAsset;\n }\n}\n\nexport function getUrlExtension(url: string)\n{\n return url.split('.').pop().split('?').shift()\n .split('#')\n .shift();\n}\n","/**\n * Copies the search params from one url to another\n * @param targetUrl - the url to copy the search params to\n * @param sourceUrl - the url container the search params we want to copy\n * @returns the url with the search params copied\n */\nexport const copySearchParams = (targetUrl: string, sourceUrl: string) =>\n{\n const searchParams = sourceUrl.split('?')[1];\n\n if (searchParams)\n {\n targetUrl += `?${searchParams}`;\n }\n\n return targetUrl;\n};\n","// Your friendly neighbour https://en.wikipedia.org/wiki/Dihedral_group\n//\n// This file implements the dihedral group of order 16, also called\n// of degree 8. That's why its called groupD8.\n\nimport { Matrix } from './Matrix';\n\n/*\n * Transform matrix for operation n is:\n * | ux | vx |\n * | uy | vy |\n */\n\nconst ux = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];\nconst uy = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vx = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];\nconst vy = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];\n\n/**\n * [Cayley Table]{@link https://en.wikipedia.org/wiki/Cayley_table}\n * for the composition of each rotation in the dihederal group D8.\n * @type {number[][]}\n * @private\n */\nconst rotationCayley: number[][] = [];\n\n/**\n * Matrices for each `GD8Symmetry` rotation.\n * @type {Matrix[]}\n * @private\n */\nconst rotationMatrices: Matrix[] = [];\n\n/*\n * Alias for {@code Math.sign}.\n */\nconst signum = Math.sign;\n\n/*\n * Initializes `rotationCayley` and `rotationMatrices`. It is called\n * only once below.\n */\nfunction init(): void\n{\n for (let i = 0; i < 16; i++)\n {\n const row: number[] = [];\n\n rotationCayley.push(row);\n\n for (let j = 0; j < 16; j++)\n {\n /* Multiplies rotation matrices i and j. */\n const _ux = signum((ux[i] * ux[j]) + (vx[i] * uy[j]));\n const _uy = signum((uy[i] * ux[j]) + (vy[i] * uy[j]));\n const _vx = signum((ux[i] * vx[j]) + (vx[i] * vy[j]));\n const _vy = signum((uy[i] * vx[j]) + (vy[i] * vy[j]));\n\n /* Finds rotation matrix matching the product and pushes it. */\n for (let k = 0; k < 16; k++)\n {\n if (ux[k] === _ux && uy[k] === _uy\n && vx[k] === _vx && vy[k] === _vy)\n {\n row.push(k);\n break;\n }\n }\n }\n }\n\n for (let i = 0; i < 16; i++)\n {\n const mat = new Matrix();\n\n mat.set(ux[i], uy[i], vx[i], vy[i], 0, 0);\n rotationMatrices.push(mat);\n }\n}\n\ninit();\n\ntype GD8Symmetry = number;\n/**\n * @typedef {number} GD8Symmetry\n * @see groupD8\n */\n\n/**\n * Implements the dihedral group D8, which is similar to\n * [group D4]{@link http://mathworld.wolfram.com/DihedralGroupD4.html};\n * D8 is the same but with diagonals, and it is used for texture\n * rotations.\n *\n * The directions the U- and V- axes after rotation\n * of an angle of `a: GD8Constant` are the vectors `(uX(a), uY(a))`\n * and `(vX(a), vY(a))`. These aren't necessarily unit vectors.\n *\n * **Origin:**
\n * This is the small part of gameofbombs.com portal system. It works.\n * @see maths.groupD8.E\n * @see maths.groupD8.SE\n * @see maths.groupD8.S\n * @see maths.groupD8.SW\n * @see maths.groupD8.W\n * @see maths.groupD8.NW\n * @see maths.groupD8.N\n * @see maths.groupD8.NE\n * @author Ivan @ivanpopelyshev\n * @namespace maths.groupD8\n */\nexport const groupD8 = {\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 0° | East |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n E: 0,\n\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 45°↻ | Southeast |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n SE: 1,\n\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 90°↻ | South |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n S: 2,\n\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 135°↻ | Southwest |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n SW: 3,\n\n /**\n * | Rotation | Direction |\n * |----------|-----------|\n * | 180° | West |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n W: 4,\n\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -135°/225°↻ | Northwest |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n NW: 5,\n\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -90°/270°↻ | North |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n N: 6,\n\n /**\n * | Rotation | Direction |\n * |-------------|--------------|\n * | -45°/315°↻ | Northeast |\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n NE: 7,\n\n /**\n * Reflection about Y-axis.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MIRROR_VERTICAL: 8,\n\n /**\n * Reflection about the main diagonal.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MAIN_DIAGONAL: 10,\n\n /**\n * Reflection about X-axis.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n MIRROR_HORIZONTAL: 12,\n\n /**\n * Reflection about reverse diagonal.\n * @memberof maths.groupD8\n * @constant {GD8Symmetry}\n */\n REVERSE_DIAGONAL: 14,\n\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The X-component of the U-axis\n * after rotating the axes.\n */\n uX: (ind: GD8Symmetry): GD8Symmetry => ux[ind],\n\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The Y-component of the U-axis\n * after rotating the axes.\n */\n uY: (ind: GD8Symmetry): GD8Symmetry => uy[ind],\n\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The X-component of the V-axis\n * after rotating the axes.\n */\n vX: (ind: GD8Symmetry): GD8Symmetry => vx[ind],\n\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} ind - sprite rotation angle.\n * @returns {GD8Symmetry} The Y-component of the V-axis\n * after rotating the axes.\n */\n vY: (ind: GD8Symmetry): GD8Symmetry => vy[ind],\n\n /**\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotation - symmetry whose opposite\n * is needed. Only rotations have opposite symmetries while\n * reflections don't.\n * @returns {GD8Symmetry} The opposite symmetry of `rotation`\n */\n inv: (rotation: GD8Symmetry): GD8Symmetry =>\n {\n if (rotation & 8)// true only if between 8 & 15 (reflections)\n {\n return rotation & 15;// or rotation % 16\n }\n\n return (-rotation) & 7;// or (8 - rotation) % 8\n },\n\n /**\n * Composes the two D8 operations.\n *\n * Taking `^` as reflection:\n *\n * | | E=0 | S=2 | W=4 | N=6 | E^=8 | S^=10 | W^=12 | N^=14 |\n * |-------|-----|-----|-----|-----|------|-------|-------|-------|\n * | E=0 | E | S | W | N | E^ | S^ | W^ | N^ |\n * | S=2 | S | W | N | E | S^ | W^ | N^ | E^ |\n * | W=4 | W | N | E | S | W^ | N^ | E^ | S^ |\n * | N=6 | N | E | S | W | N^ | E^ | S^ | W^ |\n * | E^=8 | E^ | N^ | W^ | S^ | E | N | W | S |\n * | S^=10 | S^ | E^ | N^ | W^ | S | E | N | W |\n * | W^=12 | W^ | S^ | E^ | N^ | W | S | E | N |\n * | N^=14 | N^ | W^ | S^ | E^ | N | W | S | E |\n *\n * [This is a Cayley table]{@link https://en.wikipedia.org/wiki/Cayley_table}\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotationSecond - Second operation, which\n * is the row in the above cayley table.\n * @param {GD8Symmetry} rotationFirst - First operation, which\n * is the column in the above cayley table.\n * @returns {GD8Symmetry} Composed operation\n */\n add: (rotationSecond: GD8Symmetry, rotationFirst: GD8Symmetry): GD8Symmetry => (\n rotationCayley[rotationSecond][rotationFirst]\n ),\n\n /**\n * Reverse of `add`.\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotationSecond - Second operation\n * @param {GD8Symmetry} rotationFirst - First operation\n * @returns {GD8Symmetry} Result\n */\n sub: (rotationSecond: GD8Symmetry, rotationFirst: GD8Symmetry): GD8Symmetry => (\n rotationCayley[rotationSecond][groupD8.inv(rotationFirst)]\n ),\n\n /**\n * Adds 180 degrees to rotation, which is a commutative\n * operation.\n * @memberof maths.groupD8\n * @param {number} rotation - The number to rotate.\n * @returns {number} Rotated number\n */\n rotate180: (rotation: number): number => rotation ^ 4,\n\n /**\n * Checks if the rotation angle is vertical, i.e. south\n * or north. It doesn't work for reflections.\n * @memberof maths.groupD8\n * @param {GD8Symmetry} rotation - The number to check.\n * @returns {boolean} Whether or not the direction is vertical\n */\n isVertical: (rotation: GD8Symmetry): boolean => (rotation & 3) === 2, // rotation % 4 === 2\n\n /**\n * Approximates the vector `V(dx,dy)` into one of the\n * eight directions provided by `groupD8`.\n * @memberof maths.groupD8\n * @param {number} dx - X-component of the vector\n * @param {number} dy - Y-component of the vector\n * @returns {GD8Symmetry} Approximation of the vector into\n * one of the eight symmetries.\n */\n byDirection: (dx: number, dy: number): GD8Symmetry =>\n {\n if (Math.abs(dx) * 2 <= Math.abs(dy))\n {\n if (dy >= 0)\n {\n return groupD8.S;\n }\n\n return groupD8.N;\n }\n else if (Math.abs(dy) * 2 <= Math.abs(dx))\n {\n if (dx > 0)\n {\n return groupD8.E;\n }\n\n return groupD8.W;\n }\n else if (dy > 0)\n {\n if (dx > 0)\n {\n return groupD8.SE;\n }\n\n return groupD8.SW;\n }\n else if (dx > 0)\n {\n return groupD8.NE;\n }\n\n return groupD8.NW;\n },\n\n /**\n * Helps sprite to compensate texture packer rotation.\n * @memberof maths.groupD8\n * @param {Matrix} matrix - sprite world matrix\n * @param {GD8Symmetry} rotation - The rotation factor to use.\n * @param {number} tx - sprite anchoring\n * @param {number} ty - sprite anchoring\n */\n matrixAppendRotationInv: (matrix: Matrix, rotation: GD8Symmetry, tx = 0, ty = 0): void =>\n {\n // Packer used \"rotation\", we use \"inv(rotation)\"\n const mat: Matrix = rotationMatrices[groupD8.inv(rotation)];\n\n mat.tx = tx;\n mat.ty = ty;\n matrix.append(mat);\n },\n};\n","export const NOOP = () =>\n{\n // empty!\n};\n","// Taken from the bit-twiddle package\n\n/**\n * Rounds to next power of two.\n * @function nextPow2\n * @param {number} v - input value\n * @returns {number} - next rounded power of two\n * @memberof maths\n */\nexport function nextPow2(v: number): number\n{\n v += v === 0 ? 1 : 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n\n return v + 1;\n}\n\n/**\n * Checks if a number is a power of two.\n * @function isPow2\n * @param {number} v - input value\n * @returns {boolean} `true` if value is power of two\n * @memberof maths\n */\nexport function isPow2(v: number): boolean\n{\n return !(v & (v - 1)) && (!!v);\n}\n\n/**\n * Computes ceil of log base 2\n * @function log2\n * @param {number} v - input value\n * @returns {number} logarithm base 2\n * @memberof maths\n */\nexport function log2(v: number): number\n{\n let r = (v > 0xFFFF ? 1 : 0) << 4;\n\n v >>>= r;\n\n let shift = (v > 0xFF ? 1 : 0) << 3;\n\n v >>>= shift; r |= shift;\n shift = (v > 0xF ? 1 : 0) << 2;\n v >>>= shift; r |= shift;\n shift = (v > 0x3 ? 1 : 0) << 1;\n v >>>= shift; r |= shift;\n\n return r | (v >> 1);\n}\n","/**\n * Returns a new object with all properties from the input object that have defined values.\n * @template T - The type of the input object.\n * @param {T} obj - The input object.\n * @returns {T} - A new object with only the defined properties from the input object.\n * @memberof utils\n * @ignore\n */\nexport function definedProps>(obj: T): T\n{\n const result: Partial = {};\n\n for (const key in obj)\n {\n if (obj[key] !== undefined)\n {\n result[key] = obj[key];\n }\n }\n\n return result as T;\n}\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\n\nimport type { BindResource } from '../../gpu/shader/BindResource';\nimport type { COMPARE_FUNCTION, SCALE_MODE, WRAP_MODE } from './const';\n\nconst idHash: Record = Object.create(null);\n\n/**\n * This takes a shader string and maps it to a resource id.\n * This is a little different than regular resource ids as these ids\n * are not unique to the resource. But must not overlap with other (non sampler) resources Ids.\n * @param value - the string to turn into a resource id\n * @returns a unique resource id\n */\nfunction createResourceIdFromString(value: string): number\n{\n const id = idHash[value];\n\n if (id === undefined)\n {\n idHash[value] = uid('resource');\n }\n\n return id;\n}\n\nexport interface TextureStyleOptions extends Partial\n{\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n addressMode?: WRAP_MODE;\n /** specifies the {{GPUAddressMode|address modes}} for the texture width, height, and depth coordinates, respectively. */\n addressModeU?: WRAP_MODE;\n /** specifies the {{GPUAddressMode|address modes}} for the texture width, height, and depth coordinates, respectively. */\n addressModeV?: WRAP_MODE;\n /** Specifies the {{GPUAddressMode|address modes}} for the texture width, height, and depth coordinates, respectively. */\n addressModeW?: WRAP_MODE;\n\n /** setting this will set magFilter,minFilter and mipmapFilter all at once! */\n scaleMode?: SCALE_MODE;\n\n /** specifies the sampling behavior when the sample footprint is smaller than or equal to one texel. */\n magFilter?: SCALE_MODE;\n /** specifies the sampling behavior when the sample footprint is larger than one texel. */\n minFilter?: SCALE_MODE;\n /** specifies behavior for sampling between mipmap levels. */\n mipmapFilter?: SCALE_MODE;\n\n /** specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n lodMinClamp?: number;\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n lodMaxClamp?: number;\n /**\n * When provided the sampler will be a comparison sampler with the specified\n * {@link GPUCompareFunction}.\n * Note: Comparison samplers may use filtering, but the sampling results will be\n * implementation-dependent and may differ from the normal filtering rules.\n */\n compare?: COMPARE_FUNCTION;\n /**\n * Specifies the maximum anisotropy value clamp used by the sampler.\n * Note: Most implementations support {@link GPUSamplerDescriptor#maxAnisotropy} values in range\n * between 1 and 16, inclusive. The used value of {@link GPUSamplerDescriptor#maxAnisotropy} will\n * be clamped to the maximum value that the platform supports.\n *\n * setting this to anything higher than 1 will set scale modes to 'linear'\n */\n maxAnisotropy?: number;\n}\n\n/**\n * A texture style describes how a texture should be sampled by a shader.\n * @memberof rendering\n */\nexport class TextureStyle extends EventEmitter<{\n change: TextureStyle,\n destroy: TextureStyle,\n}> implements BindResource\n{\n public _resourceType = 'textureSampler';\n public _touched = 0;\n private _sharedResourceId: number;\n\n /** default options for the style */\n public static readonly defaultOptions: TextureStyleOptions = {\n addressMode: 'clamp-to-edge',\n scaleMode: 'linear'\n };\n\n /** */\n public addressModeU?: WRAP_MODE;\n /** */\n public addressModeV?: WRAP_MODE;\n /** Specifies the {{GPUAddressMode|address modes}} for the texture width, height, and depth coordinates, respectively. */\n public addressModeW?: WRAP_MODE;\n /** Specifies the sampling behavior when the sample footprint is smaller than or equal to one texel. */\n public magFilter?: SCALE_MODE;\n /** Specifies the sampling behavior when the sample footprint is larger than one texel. */\n public minFilter?: SCALE_MODE;\n /** Specifies behavior for sampling between mipmap levels. */\n public mipmapFilter?: SCALE_MODE;\n /** */\n public lodMinClamp?: number;\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n public lodMaxClamp?: number;\n /**\n * When provided the sampler will be a comparison sampler with the specified\n * {@link GPUCompareFunction}.\n * Note: Comparison samplers may use filtering, but the sampling results will be\n * implementation-dependent and may differ from the normal filtering rules.\n */\n public compare?: COMPARE_FUNCTION;\n /**\n * Specifies the maximum anisotropy value clamp used by the sampler.\n * Note: Most implementations support {@link GPUSamplerDescriptor#maxAnisotropy} values in range\n * between 1 and 16, inclusive. The used value of {@link GPUSamplerDescriptor#maxAnisotropy} will\n * be clamped to the maximum value that the platform supports.\n * @internal\n * @ignore\n */\n public _maxAnisotropy?: number = 1;\n\n /**\n * Has the style been destroyed?\n * @readonly\n */\n public destroyed = false;\n\n /**\n * @param options - options for the style\n */\n constructor(options: TextureStyleOptions = {})\n {\n super();\n\n options = { ...TextureStyle.defaultOptions, ...options };\n\n this.addressMode = options.addressMode;\n\n this.addressModeU = options.addressModeU ?? this.addressModeU;\n this.addressModeV = options.addressModeV ?? this.addressModeV;\n this.addressModeW = options.addressModeW ?? this.addressModeW;\n\n this.scaleMode = options.scaleMode;\n\n this.magFilter = options.magFilter ?? this.magFilter;\n this.minFilter = options.minFilter ?? this.minFilter;\n this.mipmapFilter = options.mipmapFilter ?? this.mipmapFilter;\n\n this.lodMinClamp = options.lodMinClamp;\n this.lodMaxClamp = options.lodMaxClamp;\n\n this.compare = options.compare;\n\n this.maxAnisotropy = options.maxAnisotropy ?? 1;\n }\n\n set addressMode(value: WRAP_MODE)\n {\n this.addressModeU = value;\n this.addressModeV = value;\n this.addressModeW = value;\n }\n\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get addressMode(): WRAP_MODE\n {\n return this.addressModeU;\n }\n\n set wrapMode(value: WRAP_MODE)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'TextureStyle.wrapMode is now TextureStyle.addressMode');\n // #endif\n\n this.addressMode = value;\n }\n\n get wrapMode(): WRAP_MODE\n {\n return this.addressMode;\n }\n\n set scaleMode(value: SCALE_MODE)\n {\n this.magFilter = value;\n this.minFilter = value;\n this.mipmapFilter = value;\n }\n\n /** setting this will set magFilter,minFilter and mipmapFilter all at once! */\n get scaleMode(): SCALE_MODE\n {\n return this.magFilter;\n }\n\n /** Specifies the maximum anisotropy value clamp used by the sampler. */\n set maxAnisotropy(value: number)\n {\n this._maxAnisotropy = Math.min(value, 16);\n\n if (this._maxAnisotropy > 1)\n {\n this.scaleMode = 'linear';\n }\n }\n\n get maxAnisotropy(): number\n {\n return this._maxAnisotropy;\n }\n\n // TODO - move this to WebGL?\n get _resourceId(): number\n {\n return this._sharedResourceId || this._generateResourceId();\n }\n\n public update()\n {\n // manage the resource..\n this.emit('change', this);\n this._sharedResourceId = null;\n }\n\n private _generateResourceId(): number\n {\n // eslint-disable-next-line max-len\n const bigKey = `${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;\n\n this._sharedResourceId = createResourceIdFromString(bigKey);\n\n return this._resourceId;\n }\n\n /** Destroys the style */\n public destroy()\n {\n this.destroyed = true;\n\n this.emit('destroy', this);\n this.emit('change', this);\n\n this.removeAllListeners();\n }\n}\n","import EventEmitter from 'eventemitter3';\nimport { isPow2 } from '../../../../../maths/misc/pow2';\nimport { definedProps } from '../../../../../scene/container/utils/definedProps';\nimport { uid } from '../../../../../utils/data/uid';\nimport { TextureStyle } from '../TextureStyle';\n\nimport type { BindResource } from '../../../gpu/shader/BindResource';\nimport type { ALPHA_MODES, SCALE_MODE, TEXTURE_DIMENSIONS, TEXTURE_FORMATS, WRAP_MODE } from '../const';\nimport type { TextureStyleOptions } from '../TextureStyle';\n\n/**\n * options for creating a new TextureSource\n * @memberof rendering\n */\nexport interface TextureSourceOptions = any> extends TextureStyleOptions\n{\n /**\n * the resource that will be upladed to the GPU. This is where we get our pixels from\n * eg an ImageBimt / Canvas / Video etc\n */\n resource?: T;\n /** the pixel width of this texture source. This is the REAL pure number, not accounting resolution */\n width?: number;\n /** the pixel height of this texture source. This is the REAL pure number, not accounting resolution */\n height?: number;\n /** the resolution of the texture. */\n resolution?: number;\n /** the format that the texture data has */\n format?: TEXTURE_FORMATS;\n /**\n * Used by internal textures\n * @ignore\n */\n sampleCount?: number;\n /**\n * Only really affects RenderTextures.\n * Should we use antialiasing for this texture. It will look better, but may impact performance as a\n * Blit operation will be required to resolve the texture.\n */\n antialias?: boolean;\n /** how many dimensions does this texture have? currently v8 only supports 2d */\n dimensions?: TEXTURE_DIMENSIONS;\n /** The number of mip levels to generate for this texture. this is overridden if autoGenerateMipmaps is true */\n mipLevelCount?: number;\n /**\n * Should we auto generate mipmaps for this texture? This will automatically generate mipmaps\n * for this texture when uploading to the GPU. Mipmapped textures take up more memory, but\n * can look better when scaled down.\n *\n * For performance reasons, it is recommended to NOT use this with RenderTextures, as they are often updated every frame.\n * If you do, make sure to call `updateMipmaps` after you update the texture.\n */\n autoGenerateMipmaps?: boolean;\n /** the alpha mode of the texture */\n alphaMode?: ALPHA_MODES;\n /** optional label, can be used for debugging */\n label?: string;\n /** If true, the Garbage Collector will unload this texture if it is not used after a period of time */\n autoGarbageCollect?: boolean;\n}\n\n/**\n * A TextureSource stores the information that represents an image.\n * All textures have require TextureSource, which contains information about the source.\n * Therefore you can have many textures all using a single TextureSource (eg a sprite sheet)\n *\n * This is an class is extended depending on the source of the texture.\n * Eg if you are using an an image as your resource, then an ImageSource is used.\n * @memberof rendering\n * @typeParam T - The TextureSource's Resource type.\n */\nexport class TextureSource = any> extends EventEmitter<{\n change: BindResource;\n update: TextureSource;\n unload: TextureSource;\n destroy: TextureSource;\n resize: TextureSource;\n styleChange: TextureSource;\n updateMipmaps: TextureSource;\n error: Error;\n}> implements BindResource\n{\n /** The default options used when creating a new TextureSource. override these to add your own defaults */\n public static defaultOptions: TextureSourceOptions = {\n resolution: 1,\n format: 'bgra8unorm',\n alphaMode: 'premultiply-alpha-on-upload',\n dimensions: '2d',\n mipLevelCount: 1,\n autoGenerateMipmaps: false,\n sampleCount: 1,\n antialias: false,\n autoGarbageCollect: false,\n };\n\n /** unique id for this Texture source */\n public readonly uid = uid('textureSource');\n /** optional label, can be used for debugging */\n public label: string;\n\n /**\n * The resource type used by this TextureSource. This is used by the bind groups to determine\n * how to handle this resource.\n * @ignore\n * @internal\n */\n public readonly _resourceType = 'textureSource';\n /**\n * i unique resource id, used by the bind group systems.\n * This can change if the texture is resized or its resource changes\n */\n public _resourceId = uid('resource');\n /**\n * this is how the backends know how to upload this texture to the GPU\n * It changes depending on the resource type. Classes that extend TextureSource\n * should override this property.\n * @ignore\n * @internal\n */\n public uploadMethodId = 'unknown';\n\n // dimensions\n public _resolution = 1;\n\n /** the pixel width of this texture source. This is the REAL pure number, not accounting resolution */\n public pixelWidth = 1;\n /** the pixel height of this texture source. This is the REAL pure number, not accounting resolution */\n public pixelHeight = 1;\n\n /**\n * the width of this texture source, accounting for resolution\n * eg pixelWidth 200, resolution 2, then width will be 100\n */\n public width = 1;\n /**\n * the height of this texture source, accounting for resolution\n * eg pixelHeight 200, resolution 2, then height will be 100\n */\n public height = 1;\n\n /**\n * the resource that will be upladed to the GPU. This is where we get our pixels from\n * eg an ImageBimt / Canvas / Video etc\n */\n public resource: T;\n\n /**\n * The number of samples of a multisample texture. This is always 1 for non-multisample textures.\n * To enable multisample for a texture, set antialias to true\n * @internal\n * @ignore\n */\n public sampleCount = 1;\n\n /** The number of mip levels to generate for this texture. this is overridden if autoGenerateMipmaps is true */\n public mipLevelCount = 1;\n /**\n * Should we auto generate mipmaps for this texture? This will automatically generate mipmaps\n * for this texture when uploading to the GPU. Mipmapped textures take up more memory, but\n * can look better when scaled down.\n *\n * For performance reasons, it is recommended to NOT use this with RenderTextures, as they are often updated every frame.\n * If you do, make sure to call `updateMipmaps` after you update the texture.\n */\n public autoGenerateMipmaps = false;\n /** the format that the texture data has */\n public format: TEXTURE_FORMATS = 'rgba8unorm';\n /** how many dimensions does this texture have? currently v8 only supports 2d */\n public dimension: TEXTURE_DIMENSIONS = '2d';\n /** the alpha mode of the texture */\n public alphaMode: ALPHA_MODES;\n private _style: TextureStyle;\n\n /**\n * Only really affects RenderTextures.\n * Should we use antialiasing for this texture. It will look better, but may impact performance as a\n * Blit operation will be required to resolve the texture.\n */\n public antialias = false;\n\n /**\n * Has the source been destroyed?\n * @readonly\n */\n public destroyed: boolean;\n\n /**\n * Used by automatic texture Garbage Collection, stores last GC tick when it was bound\n * @protected\n */\n public _touched = 0;\n\n /**\n * Used by the batcher to build texture batches. faster to have the variable here!\n * @protected\n */\n public _batchTick = -1;\n /**\n * A temporary batch location for the texture batching. Here for performance reasons only!\n * @protected\n */\n public _textureBindLocation = -1;\n\n public isPowerOfTwo: boolean;\n\n /** If true, the Garbage Collector will unload this texture if it is not used after a period of time */\n public autoGarbageCollect: boolean;\n\n /**\n * used internally to know where a texture came from. Usually assigned by the asset loader!\n * @ignore\n */\n public _sourceOrigin: string;\n\n /**\n * @param options - options for creating a new TextureSource\n */\n constructor(protected readonly options: TextureSourceOptions = {})\n {\n super();\n\n options = { ...TextureSource.defaultOptions, ...options };\n\n this.label = options.label ?? '';\n this.resource = options.resource;\n this.autoGarbageCollect = options.autoGarbageCollect;\n this._resolution = options.resolution;\n\n if (options.width)\n {\n this.pixelWidth = options.width * this._resolution;\n }\n else\n {\n this.pixelWidth = this.resource ? (this.resourceWidth ?? 1) : 1;\n }\n\n if (options.height)\n {\n this.pixelHeight = options.height * this._resolution;\n }\n else\n {\n this.pixelHeight = this.resource ? (this.resourceHeight ?? 1) : 1;\n }\n\n this.width = this.pixelWidth / this._resolution;\n this.height = this.pixelHeight / this._resolution;\n\n this.format = options.format;\n this.dimension = options.dimensions;\n this.mipLevelCount = options.mipLevelCount;\n this.autoGenerateMipmaps = options.autoGenerateMipmaps;\n this.sampleCount = options.sampleCount;\n this.antialias = options.antialias;\n this.alphaMode = options.alphaMode;\n\n this.style = new TextureStyle(definedProps(options));\n\n this.destroyed = false;\n\n this._refreshPOT();\n }\n\n /** returns itself */\n get source(): TextureSource\n {\n return this;\n }\n\n /** the style of the texture */\n get style(): TextureStyle\n {\n return this._style;\n }\n\n set style(value: TextureStyle)\n {\n if (this.style === value) return;\n\n this._style?.off('change', this._onStyleChange, this);\n this._style = value;\n this._style?.on('change', this._onStyleChange, this);\n\n this._onStyleChange();\n }\n\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get addressMode(): WRAP_MODE\n {\n return this._style.addressMode;\n }\n\n set addressMode(value: WRAP_MODE)\n {\n this._style.addressMode = value;\n }\n\n /** setting this will set wrapModeU,wrapModeV and wrapModeW all at once! */\n get repeatMode(): WRAP_MODE\n {\n return this._style.addressMode;\n }\n\n set repeatMode(value: WRAP_MODE)\n {\n this._style.addressMode = value;\n }\n\n /** Specifies the sampling behavior when the sample footprint is smaller than or equal to one texel. */\n get magFilter(): SCALE_MODE\n {\n return this._style.magFilter;\n }\n\n set magFilter(value: SCALE_MODE)\n {\n this._style.magFilter = value;\n }\n\n /** Specifies the sampling behavior when the sample footprint is larger than one texel. */\n get minFilter(): SCALE_MODE\n {\n return this._style.minFilter;\n }\n\n set minFilter(value: SCALE_MODE)\n {\n this._style.minFilter = value;\n }\n\n /** Specifies behavior for sampling between mipmap levels. */\n get mipmapFilter(): SCALE_MODE\n {\n return this._style.mipmapFilter;\n }\n\n set mipmapFilter(value: SCALE_MODE)\n {\n this._style.mipmapFilter = value;\n }\n\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n get lodMinClamp(): number\n {\n return this._style.lodMinClamp;\n }\n\n set lodMinClamp(value: number)\n {\n this._style.lodMinClamp = value;\n }\n\n /** Specifies the minimum and maximum levels of detail, respectively, used internally when sampling a texture. */\n get lodMaxClamp(): number\n {\n return this._style.lodMaxClamp;\n }\n\n set lodMaxClamp(value: number)\n {\n this._style.lodMaxClamp = value;\n }\n\n private _onStyleChange()\n {\n this.emit('styleChange', this);\n }\n\n /** call this if you have modified the texture outside of the constructor */\n public update()\n {\n // update resource...\n if (this.resource)\n {\n const resolution = this._resolution;\n\n const didResize = this.resize(this.resourceWidth / resolution, this.resourceHeight / resolution);\n\n // no ned to dispatch the update we resized as that will\n // notify the texture systems anyway\n if (didResize) return;\n }\n\n this.emit('update', this);\n }\n\n /** Destroys this texture source */\n public destroy()\n {\n this.destroyed = true;\n this.emit('destroy', this);\n this.emit('change', this);\n\n if (this._style)\n {\n this._style.destroy();\n this._style = null;\n }\n\n this.uploadMethodId = null;\n this.resource = null;\n this.removeAllListeners();\n }\n\n /**\n * This will unload the Texture source from the GPU. This will free up the GPU memory\n * As soon as it is required fore rendering, it will be re-uploaded.\n */\n public unload()\n {\n this._resourceId = uid('resource');\n this.emit('change', this);\n this.emit('unload', this);\n }\n\n /** the width of the resource. This is the REAL pure number, not accounting resolution */\n public get resourceWidth(): number\n {\n const { resource } = this;\n\n return resource.naturalWidth || resource.videoWidth || resource.displayWidth || resource.width;\n }\n\n /** the height of the resource. This is the REAL pure number, not accounting resolution */\n public get resourceHeight(): number\n {\n const { resource } = this;\n\n return resource.naturalHeight || resource.videoHeight || resource.displayHeight || resource.height;\n }\n\n /**\n * the resolution of the texture. Changing this number, will not change the number of pixels in the actual texture\n * but will the size of the texture when rendered.\n *\n * changing the resolution of this texture to 2 for example will make it appear twice as small when rendered (as pixel\n * density will have increased)\n */\n get resolution(): number\n {\n return this._resolution;\n }\n\n set resolution(resolution: number)\n {\n if (this._resolution === resolution) return;\n\n this._resolution = resolution;\n\n this.width = this.pixelWidth / resolution;\n this.height = this.pixelHeight / resolution;\n }\n\n /**\n * Resize the texture, this is handy if you want to use the texture as a render texture\n * @param width - the new width of the texture\n * @param height - the new height of the texture\n * @param resolution - the new resolution of the texture\n * @returns - if the texture was resized\n */\n public resize(width?: number, height?: number, resolution?: number): boolean\n {\n resolution = resolution || this._resolution;\n width = width || this.width;\n height = height || this.height;\n\n // make sure we work with rounded pixels\n const newPixelWidth = Math.round(width * resolution);\n const newPixelHeight = Math.round(height * resolution);\n\n this.width = newPixelWidth / resolution;\n this.height = newPixelHeight / resolution;\n\n this._resolution = resolution;\n\n if (this.pixelWidth === newPixelWidth && this.pixelHeight === newPixelHeight)\n {\n return false;\n }\n\n this._refreshPOT();\n\n this.pixelWidth = newPixelWidth;\n this.pixelHeight = newPixelHeight;\n\n this.emit('resize', this);\n\n this._resourceId = uid('resource');\n this.emit('change', this);\n\n return true;\n }\n\n /**\n * Lets the renderer know that this texture has been updated and its mipmaps should be re-generated.\n * This is only important for RenderTexture instances, as standard Texture instances will have their\n * mipmaps generated on upload. You should call this method after you make any change to the texture\n *\n * The reason for this is is can be quite expensive to update mipmaps for a texture. So by default,\n * We want you, the developer to specify when this action should happen.\n *\n * Generally you don't want to have mipmaps generated on Render targets that are changed every frame,\n */\n public updateMipmaps()\n {\n if (this.autoGenerateMipmaps && this.mipLevelCount > 1)\n {\n this.emit('updateMipmaps', this);\n }\n }\n\n set wrapMode(value: WRAP_MODE)\n {\n this._style.wrapMode = value;\n }\n\n get wrapMode(): WRAP_MODE\n {\n return this._style.wrapMode;\n }\n\n set scaleMode(value: SCALE_MODE)\n {\n this._style.scaleMode = value;\n }\n\n /** setting this will set magFilter,minFilter and mipmapFilter all at once! */\n get scaleMode(): SCALE_MODE\n {\n return this._style.scaleMode;\n }\n\n /**\n * Refresh check for isPowerOfTwo texture based on size\n * @private\n */\n protected _refreshPOT(): void\n {\n this.isPowerOfTwo = isPow2(this.pixelWidth) && isPow2(this.pixelHeight);\n }\n\n public static test(_resource: any): any\n {\n // this should be overridden by other sources..\n throw new Error('Unimplemented');\n }\n}\n","import { ExtensionType } from '../../../../../extensions/Extensions';\nimport { TextureSource } from './TextureSource';\n\nimport type { ExtensionMetadata } from '../../../../../extensions/Extensions';\nimport type { TypedArray } from '../../buffer/Buffer';\nimport type { TextureSourceOptions } from './TextureSource';\n\nexport interface BufferSourceOptions extends TextureSourceOptions\n{\n width: number;\n height: number;\n}\n\nexport class BufferImageSource extends TextureSource\n{\n public static extension: ExtensionMetadata = ExtensionType.TextureSource;\n\n public uploadMethodId = 'buffer';\n\n constructor(options: BufferSourceOptions)\n {\n const buffer = options.resource || new Float32Array(options.width * options.height * 4);\n let format = options.format;\n\n if (!format)\n {\n if (buffer instanceof Float32Array)\n {\n format = 'rgba32float';\n }\n else if (buffer instanceof Int32Array)\n {\n format = 'rgba32uint';\n }\n else if (buffer instanceof Uint32Array)\n {\n format = 'rgba32uint';\n }\n else if (buffer instanceof Int16Array)\n {\n format = 'rgba16uint';\n }\n else if (buffer instanceof Uint16Array)\n {\n format = 'rgba16uint';\n }\n else if (buffer instanceof Int8Array)\n {\n format = 'bgra8unorm';\n }\n else\n {\n format = 'bgra8unorm';\n }\n }\n\n super({\n ...options,\n resource: buffer,\n format,\n });\n }\n\n public static test(resource: any): resource is TypedArray | ArrayBuffer\n {\n return resource instanceof Int8Array\n || resource instanceof Uint8Array\n || resource instanceof Uint8ClampedArray\n || resource instanceof Int16Array\n || resource instanceof Uint16Array\n || resource instanceof Int32Array\n || resource instanceof Uint32Array\n || resource instanceof Float32Array;\n }\n}\n","import { Matrix } from '../../../../maths/matrix/Matrix';\n\nimport type { Texture } from './Texture';\n\nconst tempMat = new Matrix();\n\n/**\n * Class controls uv mapping from Texture normal space to BaseTexture normal space.\n *\n * Takes `trim` and `rotate` into account. May contain clamp settings for Meshes and TilingSprite.\n *\n * Can be used in Texture `uvMatrix` field, or separately, you can use different clamp settings on the same texture.\n * If you want to add support for texture region of certain feature or filter, that's what you're looking for.\n *\n * Takes track of Texture changes through `_lastTextureID` private field.\n * Use `update()` method call to track it from outside.\n * @see Texture\n * @see Mesh\n * @see TilingSprite\n * @memberof rendering\n */\nexport class TextureMatrix\n{\n /**\n * Matrix operation that converts texture region coords to texture coords\n * @readonly\n */\n public mapCoord: Matrix;\n\n /**\n * Changes frame clamping\n * Works with TilingSprite and Mesh\n * Change to 1.5 if you texture has repeated right and bottom lines, that leads to smoother borders\n * @default 0\n */\n public clampOffset: number;\n\n /**\n * Changes frame clamping\n * Works with TilingSprite and Mesh\n * Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas\n * @default 0.5\n */\n public clampMargin: number;\n\n /**\n * Clamp region for normalized coords, left-top pixel center in xy , bottom-right in zw.\n * Calculated based on clampOffset.\n */\n public readonly uClampFrame: Float32Array;\n\n /** Normalized clamp offset. Calculated based on clampOffset. */\n public readonly uClampOffset: Float32Array;\n\n /**\n * Tracks Texture frame changes.\n * @ignore\n */\n public _updateID: number;\n\n /**\n * Tracks Texture frame changes.\n * @protected\n */\n protected _textureID: number;\n\n protected _texture: Texture;\n\n /**\n * If texture size is the same as baseTexture.\n * @default false\n * @readonly\n */\n public isSimple: boolean;\n\n /**\n * @param texture - observed texture\n * @param clampMargin - Changes frame clamping, 0.5 by default. Use -0.5 for extra border.\n */\n constructor(texture: Texture, clampMargin?: number)\n {\n this.mapCoord = new Matrix();\n this.uClampFrame = new Float32Array(4);\n this.uClampOffset = new Float32Array(2);\n this._textureID = -1;\n this._updateID = 0;\n\n this.clampOffset = 0;\n\n if ((typeof clampMargin === 'undefined'))\n {\n this.clampMargin = (texture.width < 10) ? 0 : 0.5;\n }\n else\n {\n this.clampMargin = clampMargin;\n }\n\n this.isSimple = false;\n\n this.texture = texture;\n }\n\n /** Texture property. */\n get texture(): Texture\n {\n return this._texture;\n }\n\n set texture(value: Texture)\n {\n if (this.texture === value) return;\n\n this._texture?.removeListener('update', this.update, this);\n this._texture = value;\n this._texture.addListener('update', this.update, this);\n\n this.update();\n }\n\n /**\n * Multiplies uvs array to transform\n * @param uvs - mesh uvs\n * @param [out=uvs] - output\n * @returns - output\n */\n public multiplyUvs(uvs: Float32Array, out?: Float32Array): Float32Array\n {\n if (out === undefined)\n {\n out = uvs;\n }\n\n const mat = this.mapCoord;\n\n for (let i = 0; i < uvs.length; i += 2)\n {\n const x = uvs[i];\n const y = uvs[i + 1];\n\n out[i] = (x * mat.a) + (y * mat.c) + mat.tx;\n out[i + 1] = (x * mat.b) + (y * mat.d) + mat.ty;\n }\n\n return out;\n }\n\n /**\n * Updates matrices if texture was changed\n * @returns - whether or not it was updated\n */\n public update(): boolean\n {\n const tex = this._texture;\n\n this._updateID++;\n\n const uvs = tex.uvs;\n\n this.mapCoord.set(uvs.x1 - uvs.x0, uvs.y1 - uvs.y0, uvs.x3 - uvs.x0, uvs.y3 - uvs.y0, uvs.x0, uvs.y0);\n\n const orig = tex.orig;\n const trim = tex.trim;\n\n if (trim)\n {\n tempMat.set(\n orig.width / trim.width,\n 0, 0, orig.height / trim.height,\n -trim.x / trim.width,\n -trim.y / trim.height\n );\n\n this.mapCoord.append(tempMat);\n }\n\n const texBase = tex.source;\n const frame = this.uClampFrame;\n const margin = this.clampMargin / texBase._resolution;\n const offset = this.clampOffset;\n\n frame[0] = (tex.frame.x + margin + offset) / texBase.width;\n frame[1] = (tex.frame.y + margin + offset) / texBase.height;\n frame[2] = (tex.frame.x + tex.frame.width - margin + offset) / texBase.width;\n frame[3] = (tex.frame.y + tex.frame.height - margin + offset) / texBase.height;\n\n this.uClampOffset[0] = offset / texBase.pixelWidth;\n this.uClampOffset[1] = offset / texBase.pixelHeight;\n\n this.isSimple = tex.frame.width === texBase.width\n && tex.frame.height === texBase.height\n && tex.rotate === 0;\n\n return true;\n }\n}\n","import EventEmitter from 'eventemitter3';\nimport { groupD8 } from '../../../../maths/matrix/groupD8';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { uid } from '../../../../utils/data/uid';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\nimport { NOOP } from '../../../../utils/misc/NOOP';\nimport { BufferImageSource } from './sources/BufferSource';\nimport { TextureSource } from './sources/TextureSource';\nimport { TextureMatrix } from './TextureMatrix';\n\nimport type { TextureResourceOrOptions } from './utils/textureFrom';\n\n/**\n * Stores the width of the non-scalable borders, for example when used with {@link scene.NineSlicePlane} texture.\n * @memberof rendering\n */\nexport interface TextureBorders\n{\n /** left border in pixels */\n left: number;\n /** top border in pixels */\n top: number;\n /** right border in pixels */\n right: number;\n /** bottom border in pixels */\n bottom: number;\n}\n\n/**\n * The UVs data structure for a texture.\n * @memberof rendering\n */\nexport type UVs = {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n x3: number;\n y3: number;\n};\n\n/**\n * The options that can be passed to a new Texture\n * @memberof rendering\n */\nexport interface TextureOptions\n{\n /** the underlying texture data that this texture will use */\n source?: TextureSource;\n /** optional label, for debugging */\n label?: string;\n /** The rectangle frame of the texture to show */\n frame?: Rectangle;\n /** The area of original texture */\n orig?: Rectangle;\n /** Trimmed rectangle of original texture */\n trim?: Rectangle;\n /** Default anchor point used for sprite placement / rotation */\n defaultAnchor?: { x: number; y: number };\n /** Default borders used for 9-slice scaling {@link NineSlicePlane}*/\n defaultBorders?: TextureBorders;\n /** indicates how the texture was rotated by texture packer. See {@link groupD8} */\n rotate?: number;\n /** set to true if you plan on modifying the uvs of this texture - can affect performance with high numbers of sprites*/\n dynamic?: boolean;\n}\n\nexport interface BindableTexture\n{\n source: TextureSource;\n}\n\nexport type TextureSourceLike = TextureSource | TextureResourceOrOptions | string;\n\n/**\n * A texture stores the information that represents an image or part of an image.\n *\n * A texture must have a loaded resource passed to it to work. It does not contain any\n * loading mechanisms.\n *\n * The Assets class can be used to load an texture from a file. This is the recommended\n * way as it will handle the loading and caching for you.\n *\n * ```js\n *\n * const texture = await Asset.load('assets/image.png');\n *\n * // once Assets has loaded the image it will be available via the from method\n * const sameTexture = Texture.from('assets/image.png');\n * // another way to acces the texture once loaded\n * const sameAgainTexture = Asset.get('assets/image.png');\n *\n * const sprite1 = new Sprite(texture);\n *\n * ```\n *\n * It cannot be added to the display list directly; instead use it as the texture for a Sprite.\n * If no frame is provided for a texture, then the whole image is used.\n *\n * You can directly create a texture from an image and then reuse it multiple times like this :\n *\n * ```js\n * import { Sprite, Texture } from 'pixi.js';\n *\n * const texture = await Asset.load('assets/image.png');\n * const sprite1 = new Sprite(texture);\n * const sprite2 = new Sprite(texture);\n * ```\n *\n * If you didn't pass the texture frame to constructor, it enables `noFrame` mode:\n * it subscribes on baseTexture events, it automatically resizes at the same time as baseTexture.\n * @memberof rendering\n * @class\n */\nexport class Texture extends EventEmitter<{\n update: Texture\n destroy: Texture\n}> implements BindableTexture\n{\n /**\n * Helper function that creates a returns Texture based on the source you provide.\n * The source should be loaded and ready to go. If not its best to grab the asset using Assets.\n * @param id - String or Source to create texture from\n * @param skipCache - Skip adding the texture to the cache\n * @returns The texture based on the Id provided\n */\n public static from: (id: TextureSourceLike, skipCache?: boolean) => Texture;\n\n /** label used for debugging */\n public label?: string;\n /** unique id for this texture */\n public uid = uid('texture');\n /**\n * Has the texture been destroyed?\n * @readonly\n */\n public destroyed: boolean;\n\n public _source: TextureSource;\n\n /**\n * Indicates whether the texture is rotated inside the atlas\n * set to 2 to compensate for texture packer rotation\n * set to 6 to compensate for spine packer rotation\n * can be used to rotate or mirror sprites\n * See {@link maths.groupD8} for explanation\n */\n public readonly rotate: number;\n /** A uvs object based on the given frame and the texture source */\n public readonly uvs: UVs = { x0: 0, y0: 0, x1: 0, y1: 0, x2: 0, y2: 0, x3: 0, y3: 0 };\n /**\n * Anchor point that is used as default if sprite is created with this texture.\n * Changing the `defaultAnchor` at a later point of time will not update Sprite's anchor point.\n * @default {0,0}\n */\n public readonly defaultAnchor?: { x: number; y: number };\n /**\n * Default width of the non-scalable border that is used if 9-slice plane is created with this texture.\n * @since 7.2.0\n * @see scene.NineSliceSprite\n */\n public readonly defaultBorders?: TextureBorders;\n /**\n * This is the area of the BaseTexture image to actually copy to the Canvas / WebGL when rendering,\n * irrespective of the actual frame size or placement (which can be influenced by trimmed texture atlases)\n */\n public readonly frame = new Rectangle();\n /** This is the area of original texture, before it was put in atlas. */\n public readonly orig: Rectangle;\n /**\n * This is the trimmed area of original texture, before it was put in atlas\n * Please call `updateUvs()` after you change coordinates of `trim` manually.\n */\n public readonly trim: Rectangle;\n\n /**\n * Does this Texture have any frame data assigned to it?\n *\n * This mode is enabled automatically if no frame was passed inside constructor.\n *\n * In this mode texture is subscribed to baseTexture events, and fires `update` on any change.\n *\n * Beware, after loading or resize of baseTexture event can fired two times!\n * If you want more control, subscribe on baseTexture itself.\n * @example\n * texture.on('update', () => {});\n */\n public noFrame = false;\n\n /**\n * Set to true if you plan on modifying the uvs of this texture.\n * When this is the case, sprites and other objects using the texture will\n * make sure to listen for changes to the uvs and update their vertices accordingly.\n */\n public dynamic = false;\n\n private _textureMatrix: TextureMatrix;\n\n /** is it a texture? yes! used for type checking */\n public readonly isTexture = true;\n\n /**\n * @param {TextureOptions} param0 - Options for the texture\n */\n constructor({\n source,\n label,\n frame,\n orig,\n trim,\n defaultAnchor,\n defaultBorders,\n rotate,\n dynamic\n }: TextureOptions = {})\n {\n super();\n\n this.label = label;\n this.source = source?.source ?? new TextureSource();\n\n this.noFrame = !frame;\n\n if (frame)\n {\n this.frame.copyFrom(frame);\n }\n else\n {\n const { width, height } = this._source;\n\n this.frame.width = width;\n this.frame.height = height;\n }\n\n this.orig = orig || this.frame;\n this.trim = trim;\n\n this.rotate = rotate ?? 0;\n this.defaultAnchor = defaultAnchor;\n this.defaultBorders = defaultBorders;\n\n this.destroyed = false;\n this.dynamic = dynamic || false;\n\n this.updateUvs();\n }\n\n set source(value: TextureSource)\n {\n if (this._source)\n {\n this._source.off('resize', this.update, this);\n }\n\n this._source = value;\n\n value.on('resize', this.update, this);\n\n this.emit('update', this);\n }\n\n /** the underlying source of the texture (equivalent of baseTexture in v7) */\n get source(): TextureSource\n {\n return this._source;\n }\n\n /** returns a TextureMatrix instance for this texture. By default, that object is not created because its heavy. */\n get textureMatrix()\n {\n if (!this._textureMatrix)\n {\n this._textureMatrix = new TextureMatrix(this);\n }\n\n return this._textureMatrix;\n }\n\n /** The width of the Texture in pixels. */\n get width(): number\n {\n return this.orig.width;\n }\n\n /** The height of the Texture in pixels. */\n get height(): number\n {\n return this.orig.height;\n }\n\n /** Call this function when you have modified the frame of this texture. */\n public updateUvs()\n {\n const { uvs, frame } = this;\n const { width, height } = this._source;\n\n const nX = frame.x / width;\n const nY = frame.y / height;\n\n const nW = frame.width / width;\n const nH = frame.height / height;\n\n let rotate = this.rotate;\n\n if (rotate)\n {\n // width and height div 2 div baseFrame size\n const w2 = nW / 2;\n const h2 = nH / 2;\n\n // coordinates of center\n const cX = nX + w2;\n const cY = nY + h2;\n\n rotate = groupD8.add(rotate, groupD8.NW); // NW is top-left corner\n uvs.x0 = cX + (w2 * groupD8.uX(rotate));\n uvs.y0 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2); // rotate 90 degrees clockwise\n uvs.x1 = cX + (w2 * groupD8.uX(rotate));\n uvs.y1 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2);\n uvs.x2 = cX + (w2 * groupD8.uX(rotate));\n uvs.y2 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2);\n uvs.x3 = cX + (w2 * groupD8.uX(rotate));\n uvs.y3 = cY + (h2 * groupD8.uY(rotate));\n }\n\n else\n {\n uvs.x0 = nX;\n uvs.y0 = nY;\n uvs.x1 = nX + nW;\n uvs.y1 = nY;\n uvs.x2 = nX + nW;\n uvs.y2 = nY + nH;\n uvs.x3 = nX;\n uvs.y3 = nY + nH;\n }\n }\n\n /**\n * Destroys this texture\n * @param destroySource - Destroy the source when the texture is destroyed.\n */\n public destroy(destroySource = false)\n {\n if (this._source)\n {\n if (destroySource)\n {\n this._source.destroy();\n this._source = null;\n }\n }\n\n this._textureMatrix = null;\n this.destroyed = true;\n this.emit('destroy', this);\n this.removeAllListeners();\n }\n\n /** call this if you have modified the `texture outside` of the constructor */\n public update(): void\n {\n if (this.noFrame)\n {\n this.frame.width = this._source.width;\n this.frame.height = this._source.height;\n }\n\n this.updateUvs();\n this.emit('update', this);\n }\n\n /** @deprecated since 8.0.0 */\n get baseTexture(): TextureSource\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Texture.baseTexture is now Texture.source');\n // #endif\n\n return this._source;\n }\n\n /** an Empty Texture used internally by the engine */\n public static EMPTY: Texture;\n /** a White texture used internally by the engine */\n public static WHITE: Texture;\n}\n\nTexture.EMPTY = new Texture({\n label: 'EMPTY',\n source: new TextureSource({\n label: 'EMPTY',\n })\n});\n\nTexture.EMPTY.destroy = NOOP;\n\nTexture.WHITE = new Texture({\n source: new BufferImageSource({\n resource: new Uint8Array([255, 255, 255, 255]),\n width: 1,\n height: 1,\n alphaMode: 'premultiply-alpha-on-upload',\n label: 'WHITE',\n }),\n label: 'WHITE',\n});\n\nTexture.WHITE.destroy = NOOP;\n","import { Rectangle } from '../maths/shapes/Rectangle';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\n\nimport type { PointData } from '../maths/point/PointData';\nimport type { TextureSource } from '../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { BindableTexture, TextureBorders } from '../rendering/renderers/shared/texture/Texture';\nimport type { Dict } from '../utils/types';\n\n/**\n * Represents the JSON data for a spritesheet atlas.\n * @memberof assets\n */\nexport interface SpritesheetFrameData\n{\n /** The frame rectangle of the texture. */\n frame: {\n x: number;\n y: number;\n w: number;\n h: number;\n };\n /** Whether the texture is trimmed. */\n trimmed?: boolean;\n /** Whether the texture is rotated. */\n rotated?: boolean;\n /** The source size of the texture. */\n sourceSize?: {\n w: number;\n h: number;\n };\n /** The sprite source size. */\n spriteSourceSize?: {\n h?: number;\n w?: number;\n x: number;\n y: number;\n };\n /** The anchor point of the texture. */\n anchor?: PointData;\n /** The 9-slice borders of the texture. */\n borders?: TextureBorders\n}\n\n/**\n * Atlas format.\n * @memberof assets\n */\nexport interface SpritesheetData\n{\n /** The frames of the atlas. */\n frames: Dict;\n /** The animations of the atlas. */\n animations?: Dict;\n /** The meta data of the atlas. */\n meta: {\n app?: string;\n format?: string;\n frameTags?: {\n from: number;\n name: string;\n to: number;\n direction: string;\n }[];\n image?: string;\n layers?: {\n blendMode: string;\n name: string;\n opacity: number;\n }[];\n scale: number | string;\n size?: {\n h: number;\n w: number;\n };\n slices?: {\n color: string;\n name: string;\n keys: {\n frame: number,\n bounds: {\n x: number;\n y: number;\n w: number;\n h: number;\n };\n }[];\n }[];\n // eslint-disable-next-line camelcase\n related_multi_packs?: string[];\n version?: string;\n };\n}\n\n/**\n * Utility class for maintaining reference to a collection\n * of Textures on a single Spritesheet.\n *\n * To access a sprite sheet from your code you may pass its JSON data file to Pixi's loader:\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * const sheet = await Assets.load('images/spritesheet.json');\n * ```\n *\n * Alternately, you may circumvent the loader by instantiating the Spritesheet directly:\n *\n * ```js\n * import { Spritesheet } from 'pixi.js';\n *\n * const sheet = new Spritesheet(texture, spritesheetData);\n * await sheet.parse();\n * console.log('Spritesheet ready to use!');\n * ```\n *\n * With the `sheet.textures` you can create Sprite objects, and `sheet.animations` can be used to create an AnimatedSprite.\n *\n * Here's an example of a sprite sheet JSON data file:\n * ```json\n * {\n * \"frames\": {\n * \"enemy1.png\":\n * {\n * \"frame\": {\"x\":103,\"y\":1,\"w\":32,\"h\":32},\n * \"spriteSourceSize\": {\"x\":0,\"y\":0,\"w\":32,\"h\":32},\n * \"sourceSize\": {\"w\":32,\"h\":32},\n * \"anchor\": {\"x\":16,\"y\":16}\n * },\n * \"enemy2.png\":\n * {\n * \"frame\": {\"x\":103,\"y\":35,\"w\":32,\"h\":32},\n * \"spriteSourceSize\": {\"x\":0,\"y\":0,\"w\":32,\"h\":32},\n * \"sourceSize\": {\"w\":32,\"h\":32},\n * \"anchor\": {\"x\":16,\"y\":16}\n * },\n * \"button.png\":\n * {\n * \"frame\": {\"x\":1,\"y\":1,\"w\":100,\"h\":100},\n * \"spriteSourceSize\": {\"x\":0,\"y\":0,\"w\":100,\"h\":100},\n * \"sourceSize\": {\"w\":100,\"h\":100},\n * \"anchor\": {\"x\":0,\"y\":0},\n * \"borders\": {\"left\":35,\"top\":35,\"right\":35,\"bottom\":35}\n * }\n * },\n *\n * \"animations\": {\n * \"enemy\": [\"enemy1.png\",\"enemy2.png\"]\n * },\n *\n * \"meta\": {\n * \"image\": \"sheet.png\",\n * \"format\": \"RGBA8888\",\n * \"size\": {\"w\":136,\"h\":102},\n * \"scale\": \"1\"\n * }\n * }\n * ```\n * Sprite sheets can be packed using tools like {@link https://codeandweb.com/texturepacker|TexturePacker},\n * {@link https://renderhjs.net/shoebox/|Shoebox} or {@link https://github.com/krzysztof-o/spritesheet.js|Spritesheet.js}.\n * Default anchor points (see {@link Texture#defaultAnchor}), default 9-slice borders\n * (see {@link Texture#defaultBorders}) and grouping of animation sprites are currently only\n * supported by TexturePacker.\n *\n * Alternative ways for loading spritesheet image if you need more control:\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * const sheetTexture = await Assets.load('images/spritesheet.png');\n * Assets.add({\n * alias: 'atlas',\n * src: 'images/spritesheet.json'\n * data: {texture: sheetTexture} // using of preloaded texture\n * });\n * const sheet = await Assets.load('atlas')\n * ```\n *\n * or:\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * Assets.add({\n * alias: 'atlas',\n * src: 'images/spritesheet.json'\n * data: {imageFilename: 'my-spritesheet.2x.avif'} // using of custom filename located in \"images/my-spritesheet.2x.avif\"\n * });\n * const sheet = await Assets.load('atlas')\n * ```\n * @memberof assets\n */\nexport class Spritesheet\n{\n /** The maximum number of Textures to build per process. */\n public static readonly BATCH_SIZE = 1000;\n\n /** For multi-packed spritesheets, this contains a reference to all the other spritesheets it depends on. */\n public linkedSheets: Spritesheet[] = [];\n\n /** Reference to ths source texture. */\n public textureSource: TextureSource;\n\n /**\n * A map containing all textures of the sprite sheet.\n * Can be used to create a {@link Sprite|Sprite}:\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * new Sprite(sheet.textures['image.png']);\n */\n public textures: Record;\n\n /**\n * A map containing the textures for each animation.\n * Can be used to create an {@link AnimatedSprite|AnimatedSprite}:\n * @example\n * import { AnimatedSprite } from 'pixi.js';\n *\n * new AnimatedSprite(sheet.animations['anim_name']);\n */\n public animations: Record, Texture[]>;\n\n /**\n * Reference to the original JSON data.\n * @type {object}\n */\n public data: S;\n\n /** The resolution of the spritesheet. */\n public resolution: number;\n\n /**\n * Reference to original source image from the Loader. This reference is retained so we\n * can destroy the Texture later on. It is never used internally.\n */\n private _texture: Texture;\n\n /**\n * Map of spritesheet frames.\n * @type {object}\n */\n private _frames: S['frames'];\n\n /** Collection of frame names. */\n private _frameKeys: (keyof S['frames'])[];\n\n /** Current batch index being processed. */\n private _batchIndex: number;\n\n /**\n * Callback when parse is completed.\n * @type {Function}\n */\n private _callback: (textures: Dict) => void;\n\n /**\n * @param texture - Reference to the source BaseTexture object.\n * @param {object} data - Spritesheet image data.\n */\n constructor(texture: BindableTexture, data: S)\n {\n this._texture = texture instanceof Texture ? texture : null;\n this.textureSource = texture.source;\n this.textures = {} as Record;\n this.animations = {} as Record, Texture[]>;\n this.data = data;\n\n const metaResolution = parseFloat(data.meta.scale as string);\n\n if (metaResolution)\n {\n this.resolution = metaResolution;\n texture.source.resolution = this.resolution;\n }\n else\n {\n this.resolution = texture.source._resolution;\n }\n\n this._frames = this.data.frames;\n this._frameKeys = Object.keys(this._frames);\n this._batchIndex = 0;\n this._callback = null;\n }\n\n /**\n * Parser spritesheet from loaded data. This is done asynchronously\n * to prevent creating too many Texture within a single process.\n */\n public parse(): Promise>\n {\n return new Promise((resolve) =>\n {\n this._callback = resolve;\n this._batchIndex = 0;\n\n if (this._frameKeys.length <= Spritesheet.BATCH_SIZE)\n {\n this._processFrames(0);\n this._processAnimations();\n this._parseComplete();\n }\n else\n {\n this._nextBatch();\n }\n });\n }\n\n /**\n * Process a batch of frames\n * @param initialFrameIndex - The index of frame to start.\n */\n private _processFrames(initialFrameIndex: number): void\n {\n let frameIndex = initialFrameIndex;\n const maxFrames = Spritesheet.BATCH_SIZE;\n\n while (frameIndex - initialFrameIndex < maxFrames && frameIndex < this._frameKeys.length)\n {\n const i = this._frameKeys[frameIndex];\n const data = this._frames[i];\n const rect = data.frame;\n\n if (rect)\n {\n let frame = null;\n let trim = null;\n const sourceSize = data.trimmed !== false && data.sourceSize\n ? data.sourceSize : data.frame;\n\n const orig = new Rectangle(\n 0,\n 0,\n Math.floor(sourceSize.w) / this.resolution,\n Math.floor(sourceSize.h) / this.resolution\n );\n\n if (data.rotated)\n {\n frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.h) / this.resolution,\n Math.floor(rect.w) / this.resolution\n );\n }\n else\n {\n frame = new Rectangle(\n Math.floor(rect.x) / this.resolution,\n Math.floor(rect.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n );\n }\n\n // Check to see if the sprite is trimmed\n if (data.trimmed !== false && data.spriteSourceSize)\n {\n trim = new Rectangle(\n Math.floor(data.spriteSourceSize.x) / this.resolution,\n Math.floor(data.spriteSourceSize.y) / this.resolution,\n Math.floor(rect.w) / this.resolution,\n Math.floor(rect.h) / this.resolution\n );\n }\n\n this.textures[i] = new Texture({\n source: this.textureSource,\n\n frame,\n orig,\n trim,\n rotate: data.rotated ? 2 : 0,\n defaultAnchor: data.anchor,\n defaultBorders: data.borders,\n\n label: i.toString(),\n });\n }\n\n frameIndex++;\n }\n }\n\n /** Parse animations config. */\n private _processAnimations(): void\n {\n const animations = this.data.animations || {};\n\n for (const animName in animations)\n {\n this.animations[animName as keyof S['animations']] = [];\n for (let i = 0; i < animations[animName].length; i++)\n {\n const frameName = animations[animName][i];\n\n this.animations[animName].push(this.textures[frameName]);\n }\n }\n }\n\n /** The parse has completed. */\n private _parseComplete(): void\n {\n const callback = this._callback;\n\n this._callback = null;\n this._batchIndex = 0;\n callback.call(this, this.textures);\n }\n\n /** Begin the next batch of textures. */\n private _nextBatch(): void\n {\n this._processFrames(this._batchIndex * Spritesheet.BATCH_SIZE);\n this._batchIndex++;\n setTimeout(() =>\n {\n if (this._batchIndex * Spritesheet.BATCH_SIZE < this._frameKeys.length)\n {\n this._nextBatch();\n }\n else\n {\n this._processAnimations();\n this._parseComplete();\n }\n }, 0);\n }\n\n /**\n * Destroy Spritesheet and don't use after this.\n * @param {boolean} [destroyBase=false] - Whether to destroy the base texture as well\n */\n public destroy(destroyBase = false): void\n {\n for (const i in this.textures)\n {\n this.textures[i].destroy();\n }\n this._frames = null;\n this._frameKeys = null;\n this.data = null;\n this.textures = null;\n if (destroyBase)\n {\n this._texture?.destroy();\n this.textureSource.destroy();\n }\n this._texture = null;\n this.textureSource = null;\n this.linkedSheets = [];\n }\n}\n","import { LoaderParserPriority } from '../assets/loader/parsers/LoaderParser';\nimport { Resolver } from '../assets/resolver/Resolver';\nimport { copySearchParams } from '../assets/utils/copySearchParams';\nimport { ExtensionType } from '../extensions/Extensions';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport { path } from '../utils/path';\nimport { Spritesheet } from './Spritesheet';\n\nimport type { AssetExtension } from '../assets/AssetExtension';\nimport type { Loader } from '../assets/loader/Loader';\nimport type { ResolvedAsset, UnresolvedAsset } from '../assets/types';\nimport type { SpritesheetData } from './Spritesheet';\n\nexport interface SpriteSheetJson extends SpritesheetData\n{\n meta: {\n image: string;\n scale: string;\n // eslint-disable-next-line camelcase\n related_multi_packs?: string[];\n };\n}\n\nconst validImages = ['jpg', 'png', 'jpeg', 'avif', 'webp',\n 'basis', 'etc2', 'bc7', 'bc6h', 'bc5', 'bc4', 'bc3', 'bc2', 'bc1', 'eac', 'astc'];\n\nfunction getCacheableAssets(keys: string[], asset: Spritesheet, ignoreMultiPack: boolean)\n{\n const out: Record = {};\n\n keys.forEach((key: string) =>\n {\n out[key] = asset;\n });\n\n Object.keys(asset.textures).forEach((key) =>\n {\n out[key] = asset.textures[key];\n });\n\n if (!ignoreMultiPack)\n {\n const basePath = path.dirname(keys[0]);\n\n asset.linkedSheets.forEach((item: Spritesheet, i) =>\n {\n const out2 = getCacheableAssets([`${basePath}/${asset.data.meta.related_multi_packs[i]}`], item, true);\n\n Object.assign(out, out2);\n });\n }\n\n return out;\n}\n\n/**\n * Asset extension for loading spritesheets\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.load({\n * alias: 'spritesheet',\n * src: 'path/to/spritesheet.json',\n * data: {\n * ignoreMultiPack: true,\n * }\n * })\n * @type {AssetExtension}\n * @memberof assets\n */\nexport const spritesheetAsset = {\n extension: ExtensionType.Asset,\n /** Handle the caching of the related Spritesheet Textures */\n cache: {\n test: (asset: Spritesheet) => asset instanceof Spritesheet,\n getCacheableAssets: (keys: string[], asset: Spritesheet) => getCacheableAssets(keys, asset, false),\n },\n /** Resolve the resolution of the asset. */\n resolver: {\n test: (value: string): boolean =>\n {\n const tempURL = value.split('?')[0];\n const split = tempURL.split('.');\n const extension = split.pop();\n const format = split.pop();\n\n return extension === 'json' && validImages.includes(format);\n },\n parse: (value: string): UnresolvedAsset =>\n {\n const split = value.split('.');\n\n return {\n resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: split[split.length - 2],\n src: value,\n };\n },\n },\n /**\n * Loader plugin that parses sprite sheets!\n * once the JSON has been loaded this checks to see if the JSON is spritesheet data.\n * If it is, we load the spritesheets image and parse the data into Spritesheet\n * All textures in the sprite sheet are then added to the cache\n */\n loader: {\n name: 'spritesheetLoader',\n\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal,\n },\n\n async testParse(asset: SpriteSheetJson, options: ResolvedAsset): Promise\n {\n return (path.extname(options.src).toLowerCase() === '.json' && !!asset.frames);\n },\n\n async parse(\n asset: SpriteSheetJson,\n options: ResolvedAsset<{texture: Texture, imageFilename: string, ignoreMultiPack: boolean}>,\n loader: Loader\n ): Promise\n {\n const {\n texture: imageTexture, // if user need to use preloaded texture\n imageFilename // if user need to use custom filename (not from jsonFile.meta.image)\n } = options?.data ?? {};\n\n let basePath = path.dirname(options.src);\n\n if (basePath && basePath.lastIndexOf('/') !== (basePath.length - 1))\n {\n basePath += '/';\n }\n\n let texture: Texture;\n\n if (imageTexture instanceof Texture)\n {\n texture = imageTexture;\n }\n else\n {\n const imagePath = copySearchParams(basePath + (imageFilename ?? asset.meta.image), options.src);\n\n const assets = await loader.load([imagePath]);\n\n texture = assets[imagePath];\n }\n\n const spritesheet = new Spritesheet(\n texture.source,\n asset,\n );\n\n await spritesheet.parse();\n\n // Check and add the multi atlas\n // Heavily influenced and based on https://github.com/rocket-ua/pixi-tps-loader/blob/master/src/ResourceLoader.js\n // eslint-disable-next-line camelcase\n const multiPacks = asset?.meta?.related_multi_packs;\n\n if (Array.isArray(multiPacks))\n {\n const promises: Promise>[] = [];\n\n for (const item of multiPacks)\n {\n if (typeof item !== 'string')\n {\n continue;\n }\n\n let itemUrl = basePath + item;\n\n // Check if the file wasn't already added as multipack\n if (options.data?.ignoreMultiPack)\n {\n continue;\n }\n\n itemUrl = copySearchParams(itemUrl, options.src);\n\n promises.push(loader.load>({\n src: itemUrl,\n data: {\n ignoreMultiPack: true,\n }\n }));\n }\n\n const res = await Promise.all(promises);\n\n spritesheet.linkedSheets = res;\n res.forEach((item) =>\n {\n item.linkedSheets = [spritesheet].concat(spritesheet.linkedSheets.filter((sp) => (sp !== item)));\n });\n }\n\n return spritesheet;\n },\n\n async unload(spritesheet: Spritesheet, _resolvedAsset, loader)\n {\n await loader.unload(spritesheet.textureSource._sourceOrigin);\n\n spritesheet.destroy(false);\n },\n },\n} as AssetExtension;\n","import { extensions } from '../extensions/Extensions';\nimport { spritesheetAsset } from './spritesheetAsset';\n\nextensions.add(spritesheetAsset);\n","import type { ObservablePoint } from '../../maths/point/ObservablePoint';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { BoundsData } from '../../scene/container/bounds/Bounds';\n\nexport function updateQuadBounds(\n bounds: BoundsData,\n anchor: ObservablePoint,\n texture: Texture,\n padding: number\n)\n{\n const { width, height } = texture.orig;\n const trim = texture.trim;\n\n if (trim)\n {\n const sourceWidth = trim.width;\n const sourceHeight = trim.height;\n\n bounds.minX = (trim.x) - (anchor._x * width) - padding;\n bounds.maxX = bounds.minX + sourceWidth;\n\n bounds.minY = (trim.y) - (anchor._y * height) - padding;\n bounds.maxY = bounds.minY + sourceHeight;\n }\n\n else\n {\n bounds.minX = (-anchor._x * width) - padding;\n bounds.maxX = bounds.minX + width;\n\n bounds.minY = (-anchor._y * height) - padding;\n bounds.maxY = bounds.minY + height;\n }\n\n return;\n}\n","import { ObservablePoint } from '../../maths/point/ObservablePoint';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds';\nimport { Container } from '../container/Container';\n\nimport type { Size } from '../../maths/misc/Size';\nimport type { PointData } from '../../maths/point/PointData';\nimport type { TextureSourceLike } from '../../rendering/renderers/shared/texture/Texture';\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { Bounds, BoundsData } from '../container/bounds/Bounds';\nimport type { ContainerOptions } from '../container/Container';\nimport type { Optional } from '../container/container-mixins/measureMixin';\nimport type { DestroyOptions } from '../container/destroyTypes';\n\n/**\n * Options for the {@link scene.Sprite} constructor.\n * @memberof scene\n */\nexport interface SpriteOptions extends ContainerOptions\n{\n /** The texture to use for the sprite. */\n texture?: Texture;\n /** The anchor point of the sprite. */\n anchor?: PointData | number;\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n\n/**\n * The Sprite object is one of the most important objects in PixiJS. It is a\n * drawing item that can be added to a scene and rendered to the screen.\n *\n * A sprite can be created directly from an image like this:\n *\n * ```js\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = Sprite.from('assets/image.png');\n * ```\n *\n * The more efficient way to create sprites is using a {@link assets.Spritesheet},\n * as swapping base textures when rendering to the screen is inefficient.\n *\n * ```js\n * import { Assets, Sprite } from 'pixi.js';\n *\n * const sheet = await Assets.load('assets/spritesheet.json');\n * const sprite = new Sprite(sheet.textures['image.png']);\n * ```\n * @memberof scene\n * @extends scene.Container\n */\nexport class Sprite extends Container implements View\n{\n /**\n * Helper function that creates a new sprite based on the source you provide.\n * The source can be - frame id, image, video, canvas element, video element, texture\n * @param source - Source to create texture from\n * @param [skipCache] - Whether to skip the cache or not\n * @returns The newly created sprite\n */\n public static from(source: Texture | TextureSourceLike, skipCache = false): Sprite\n {\n if (source instanceof Texture)\n {\n return new Sprite(source);\n }\n\n return new Sprite(Texture.from(source, skipCache));\n }\n\n public readonly renderPipeId = 'sprite';\n\n public batched = true;\n public readonly _anchor: ObservablePoint;\n\n // sprite specific..\n public _texture: Texture;\n public _didSpriteUpdate = false;\n\n private readonly _bounds: BoundsData = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n private readonly _sourceBounds: BoundsData = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n private _boundsDirty = true;\n private _sourceBoundsDirty = true;\n\n public _roundPixels: 0 | 1 = 0;\n\n /**\n * @param options - The options for creating the sprite.\n */\n constructor(options: SpriteOptions | Texture = Texture.EMPTY)\n {\n if (options instanceof Texture)\n {\n options = { texture: options };\n }\n\n // split out\n const { texture, anchor, roundPixels, width, height, ...rest } = options;\n\n super({\n label: 'Sprite',\n ...rest\n });\n\n this._anchor = new ObservablePoint(\n {\n _onUpdate: () =>\n {\n this.onViewUpdate();\n }\n },\n );\n\n if (anchor)\n {\n this.anchor = anchor;\n }\n else if (texture.defaultAnchor)\n {\n this.anchor = texture.defaultAnchor;\n }\n\n this.texture = texture;\n\n this.allowChildren = false;\n this.roundPixels = roundPixels ?? false;\n\n // needs to be set after the container has initiated\n if (width) this.width = width;\n if (height) this.height = height;\n }\n\n set texture(value: Texture)\n {\n value ||= Texture.EMPTY;\n\n const currentTexture = this._texture;\n\n if (currentTexture === value) return;\n\n if (currentTexture && currentTexture.dynamic) currentTexture.off('update', this.onViewUpdate, this);\n if (value.dynamic) value.on('update', this.onViewUpdate, this);\n\n this._texture = value;\n\n this.onViewUpdate();\n }\n\n /** The texture that the sprite is using. */\n get texture()\n {\n return this._texture;\n }\n\n /**\n * The local bounds of the sprite.\n * @type {rendering.Bounds}\n */\n get bounds()\n {\n if (this._boundsDirty)\n {\n this._updateBounds();\n this._boundsDirty = false;\n }\n\n return this._bounds;\n }\n\n /**\n * The bounds of the sprite, taking the texture's trim into account.\n * @type {rendering.Bounds}\n */\n get sourceBounds()\n {\n if (this._sourceBoundsDirty)\n {\n this._updateSourceBounds();\n this._sourceBoundsDirty = false;\n }\n\n return this._sourceBounds;\n }\n\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: PointData)\n {\n const bounds = this.sourceBounds;\n\n if (point.x >= bounds.maxX && point.x <= bounds.minX)\n {\n if (point.y >= bounds.maxY && point.y <= bounds.minY)\n {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Adds the bounds of this object to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n const _bounds = this._texture.trim ? this.sourceBounds : this.bounds;\n\n bounds.addFrame(_bounds.minX, _bounds.minY, _bounds.maxX, _bounds.maxY);\n }\n\n public onViewUpdate()\n {\n // increment from the 12th bit!\n this._didChangeId += 1 << 12;\n this._didSpriteUpdate = true;\n this._sourceBoundsDirty = this._boundsDirty = true;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n private _updateBounds()\n {\n updateQuadBounds(this._bounds, this._anchor, this._texture, 0);\n }\n\n private _updateSourceBounds()\n {\n const anchor = this._anchor;\n const texture = this._texture;\n\n const sourceBounds = this._sourceBounds;\n\n const { width, height } = texture.orig;\n\n sourceBounds.maxX = -anchor._x * width;\n sourceBounds.minX = sourceBounds.maxX + width;\n\n sourceBounds.maxY = -anchor._y * height;\n sourceBounds.minY = sourceBounds.maxY + height;\n }\n\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n public destroy(options: DestroyOptions = false)\n {\n super.destroy(options);\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n this._texture.destroy(destroyTextureSource);\n }\n\n this._texture = null;\n (this._bounds as null) = null;\n (this._sourceBounds as null) = null;\n (this._anchor as null) = null;\n }\n\n /**\n * The anchor sets the origin point of the sprite. The default value is taken from the {@link Texture}\n * and passed to the constructor.\n *\n * The default is `(0,0)`, this means the sprite's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the sprite's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the sprite's origin point will be the bottom right corner.\n *\n * If you pass only single parameter, it will set both x and y to the same value as shown in the example below.\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite({texture: Texture.WHITE});\n * sprite.anchor.set(0.5); // This will set the origin to center. (0.5) is same as (0.5, 0.5).\n */\n get anchor(): ObservablePoint\n {\n return this._anchor;\n }\n\n set anchor(value: PointData | number)\n {\n typeof value === 'number' ? this._anchor.set(value) : this._anchor.copyFrom(value);\n }\n\n /**\n * Whether or not to round the x/y position of the sprite.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n /** The width of the sprite, setting this will actually modify the scale to achieve the value set. */\n override get width(): number\n {\n return Math.abs(this.scale.x) * this._texture.orig.width;\n }\n\n override set width(value: number)\n {\n this._setWidth(value, this._texture.orig.width);\n }\n\n /** The height of the sprite, setting this will actually modify the scale to achieve the value set. */\n override get height(): number\n {\n return Math.abs(this.scale.y) * this._texture.orig.height;\n }\n\n override set height(value: number)\n {\n this._setHeight(value, this._texture.orig.height);\n }\n\n /**\n * Retrieves the size of the Sprite as a [Size]{@link Size} object.\n * This is faster than get the width and height separately.\n * @param out - Optional object to store the size in.\n * @returns - The size of the Sprite.\n */\n public override getSize(out?: Size): Size\n {\n if (!out)\n {\n out = {} as Size;\n }\n\n out.width = Math.abs(this.scale.x) * this._texture.orig.width;\n out.height = Math.abs(this.scale.y) * this._texture.orig.height;\n\n return out;\n }\n\n /**\n * Sets the size of the Sprite to the specified width and height.\n * This is faster than setting the width and height separately.\n * @param value - This can be either a number or a [Size]{@link Size} object.\n * @param height - The height to set. Defaults to the value of `width` if not provided.\n */\n public override setSize(value: number | Optional, height?: number)\n {\n let convertedWidth: number;\n let convertedHeight: number;\n\n if (typeof value !== 'object')\n {\n convertedWidth = value;\n convertedHeight = height ?? value;\n }\n else\n {\n convertedWidth = value.width;\n convertedHeight = value.height ?? value.width;\n }\n\n if (convertedWidth !== undefined)\n {\n this._setWidth(convertedWidth, this._texture.orig.width);\n }\n\n if (convertedHeight !== undefined)\n {\n this._setHeight(convertedHeight, this._texture.orig.height);\n }\n }\n}\n","import { Bounds } from '../../../scene/container/bounds/Bounds';\nimport { getGlobalBounds } from '../../../scene/container/bounds/getGlobalBounds';\n\nimport type { Container } from '../../../scene/container/Container';\n\nconst tempBounds = new Bounds();\n\nexport function addMaskBounds(mask: Container, bounds: Bounds, skipUpdateTransform: boolean): void\n{\n const boundsToMask = tempBounds;\n\n mask.measurable = true;\n\n getGlobalBounds(mask, skipUpdateTransform, boundsToMask);\n\n bounds.addBoundsMask(boundsToMask);\n\n mask.measurable = false;\n}\n\n","import { getLocalBounds } from '../../../scene/container/bounds/getLocalBounds';\nimport { boundsPool, matrixPool } from '../../../scene/container/bounds/utils/matrixAndBoundsPool';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { Matrix } from '../../../maths/matrix/Matrix';\nimport type { Bounds } from '../../../scene/container/bounds/Bounds';\nimport type { Container } from '../../../scene/container/Container';\n\nexport function addMaskLocalBounds(mask: Container, bounds: Bounds, localRoot: Container): void\n{\n const boundsToMask = boundsPool.get();\n\n mask.measurable = true;\n\n const tempMatrix = matrixPool.get().identity();\n\n const relativeMask = getMatrixRelativeToParent(mask, localRoot, tempMatrix);\n\n getLocalBounds(mask, boundsToMask, relativeMask);\n\n mask.measurable = false;\n\n bounds.addBoundsMask(boundsToMask);\n\n matrixPool.return(tempMatrix);\n boundsPool.return(boundsToMask);\n}\n\nexport function getMatrixRelativeToParent(target: Container, root: Container, matrix: Matrix): Matrix\n{\n if (!target)\n {\n // we have reach the top of the tree!\n // #if _DEBUG\n warn('Mask bounds, renderable is not inside the root container');\n // #endif\n\n return matrix;\n }\n\n if (target !== root)\n {\n getMatrixRelativeToParent(target.parent, root, matrix);\n\n target.updateLocalTransform();\n\n matrix.append(target.localTransform);\n }\n\n return matrix;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Sprite } from '../../../scene/sprite/Sprite';\nimport { addMaskBounds } from '../utils/addMaskBounds';\nimport { addMaskLocalBounds } from '../utils/addMaskLocalBounds';\n\nimport type { ExtensionMetadata } from '../../../extensions/Extensions';\nimport type { Point } from '../../../maths/point/Point';\nimport type { Bounds } from '../../../scene/container/bounds/Bounds';\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { PoolItem } from '../../../utils/pool/Pool';\n\nexport class AlphaMask implements Effect, PoolItem\n{\n public static extension: ExtensionMetadata = ExtensionType.MaskEffect;\n\n public priority = 0;\n public mask: Container;\n public pipe = 'alphaMask';\n public renderMaskToTexture: boolean;\n\n constructor(options?: {mask: Container})\n {\n if (options?.mask)\n {\n this.init(options.mask);\n }\n }\n\n public init(mask: Container): void\n {\n this.mask = mask;\n\n // TODO - might want to change this to adjust on the fly\n // user may add children to the sprite..\n this.renderMaskToTexture = !(mask instanceof Sprite);\n\n this.mask.renderable = this.renderMaskToTexture;\n this.mask.includeInBuild = !this.renderMaskToTexture;\n\n this.mask.measurable = false;\n }\n\n public reset()\n {\n this.mask.measurable = true;\n this.mask = null;\n }\n\n public addBounds(bounds: Bounds, skipUpdateTransform?: boolean): void\n {\n addMaskBounds(this.mask, bounds, skipUpdateTransform);\n }\n\n public addLocalBounds(bounds: Bounds, localRoot: Container): void\n {\n addMaskLocalBounds(this.mask, bounds, localRoot);\n }\n\n public containsPoint(point: Point, hitTestFn: (container: Container, point: Point) => boolean): boolean\n {\n const mask = this.mask as any;\n\n // if the point is in the mask, yay!\n return hitTestFn(mask, point);\n }\n\n public destroy(): void\n {\n this.reset();\n }\n\n public static test(mask: any): boolean\n {\n return mask instanceof Sprite;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { ExtensionMetadata } from '../../../extensions/Extensions';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { PoolItem } from '../../../utils/pool/Pool';\n\nexport class ColorMask implements Effect, PoolItem\n{\n public static extension: ExtensionMetadata = ExtensionType.MaskEffect;\n\n public priority = 0;\n public mask: number;\n public pipe = 'colorMask';\n\n constructor(options: {mask: number})\n {\n if (options?.mask)\n {\n this.init(options.mask);\n }\n }\n\n public init(mask: number): void\n {\n this.mask = mask;\n }\n\n public destroy(): void\n {\n // nothing to destroy\n }\n\n public static test(mask: any): boolean\n {\n return typeof mask === 'number';\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Container } from '../../../scene/container/Container';\nimport { addMaskBounds } from '../utils/addMaskBounds';\nimport { addMaskLocalBounds } from '../utils/addMaskLocalBounds';\n\nimport type { ExtensionMetadata } from '../../../extensions/Extensions';\nimport type { Point } from '../../../maths/point/Point';\nimport type { Bounds } from '../../../scene/container/bounds/Bounds';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { PoolItem } from '../../../utils/pool/Pool';\n\nexport class StencilMask implements Effect, PoolItem\n{\n public static extension: ExtensionMetadata = ExtensionType.MaskEffect;\n\n public priority = 0;\n public mask: Container;\n public pipe = 'stencilMask';\n\n constructor(options: {mask: Container})\n {\n if (options?.mask)\n {\n this.init(options.mask);\n }\n }\n\n public init(mask: Container): void\n {\n this.mask = mask;\n this.mask.includeInBuild = false;\n this.mask.measurable = false;\n }\n\n public reset()\n {\n this.mask.measurable = true;\n this.mask.includeInBuild = true;\n this.mask = null;\n }\n\n public addBounds(bounds: Bounds, skipUpdateTransform: boolean): void\n {\n addMaskBounds(this.mask, bounds, skipUpdateTransform);\n }\n\n public addLocalBounds(bounds: Bounds, localRoot: Container): void\n {\n addMaskLocalBounds(this.mask, bounds, localRoot);\n }\n\n public containsPoint(point: Point, hitTestFn: (container: Container, point: Point) => boolean): boolean\n {\n const mask = this.mask as any;\n\n // if the point is in the mask, yay!\n return hitTestFn(mask, point);\n }\n\n public destroy(): void\n {\n this.reset();\n }\n\n public static test(mask: any): boolean\n {\n return mask instanceof Container;\n }\n}\n","import { DOMAdapter } from '../../../../../environment/adapter';\nimport { ExtensionType } from '../../../../../extensions/Extensions';\nimport { TextureSource } from './TextureSource';\n\nimport type { ICanvas } from '../../../../../environment/canvas/ICanvas';\nimport type { ExtensionMetadata } from '../../../../../extensions/Extensions';\nimport type { TextureSourceOptions } from './TextureSource';\n\nexport interface CanvasSourceOptions extends TextureSourceOptions\n{\n /** should the canvas be resized to preserve its screen width and height regardless of the resolution of the renderer */\n autoDensity?: boolean;\n /** if true, this canvas will be set up to be transparent where possible */\n transparent?: boolean;\n}\n\nexport class CanvasSource extends TextureSource\n{\n public static extension: ExtensionMetadata = ExtensionType.TextureSource;\n\n public uploadMethodId = 'image';\n public autoDensity: boolean;\n public transparent: boolean;\n\n constructor(options: CanvasSourceOptions)\n {\n if (!options.resource)\n {\n options.resource = DOMAdapter.get().createCanvas();\n }\n\n if (!options.width)\n {\n options.width = options.resource.width;\n\n if (!options.autoDensity)\n {\n options.width /= options.resolution;\n }\n }\n\n if (!options.height)\n {\n options.height = options.resource.height;\n\n if (!options.autoDensity)\n {\n options.height /= options.resolution;\n }\n }\n\n super(options);\n\n this.autoDensity = options.autoDensity;\n\n const canvas = options.resource;\n\n if (this.pixelWidth !== canvas.width || this.pixelWidth !== canvas.height)\n {\n this.resizeCanvas();\n }\n\n this.transparent = !!options.transparent;\n }\n\n public resizeCanvas()\n {\n if (this.autoDensity)\n {\n this.resource.style.width = `${this.width}px`;\n this.resource.style.height = `${this.height}px`;\n }\n\n // only resize if wee need to, as this clears the canvas (even if values are set to the same)\n if (this.resource.width !== this.pixelWidth || this.resource.height !== this.pixelHeight)\n {\n this.resource.width = this.pixelWidth;\n this.resource.height = this.pixelHeight;\n }\n }\n\n public resize(width = this.width, height = this.height, resolution = this._resolution): boolean\n {\n const didResize = super.resize(width, height, resolution);\n\n if (didResize)\n {\n this.resizeCanvas();\n }\n\n return didResize;\n }\n\n public static test(resource: any): resource is ICanvas\n {\n return (globalThis.HTMLCanvasElement && resource instanceof HTMLCanvasElement)\n || (globalThis.OffscreenCanvas && resource instanceof OffscreenCanvas);\n }\n}\n","import { DOMAdapter } from '../../../../../environment/adapter';\nimport { ExtensionType } from '../../../../../extensions/Extensions';\nimport { warn } from '../../../../../utils/logging/warn';\nimport { TextureSource } from './TextureSource';\n\nimport type { ICanvas } from '../../../../../environment/canvas/ICanvas';\nimport type { ExtensionMetadata } from '../../../../../extensions/Extensions';\nimport type { TextureSourceOptions } from './TextureSource';\n\nexport type ImageResource =\nImageBitmap\n| HTMLCanvasElement\n| OffscreenCanvas\n| ICanvas\n| VideoFrame\n| HTMLImageElement\n| HTMLVideoElement;\n\nexport class ImageSource extends TextureSource\n{\n public static extension: ExtensionMetadata = ExtensionType.TextureSource;\n public uploadMethodId = 'image';\n\n constructor(options: TextureSourceOptions)\n {\n if (options.resource && (globalThis.HTMLImageElement && options.resource instanceof HTMLImageElement))\n {\n const canvas = DOMAdapter.get().createCanvas(options.resource.width, options.resource.height);\n const context = canvas.getContext('2d');\n\n context.drawImage(options.resource, 0, 0);\n options.resource = canvas;\n\n // #if _DEBUG\n warn('ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.');\n // #endif\n }\n\n super(options);\n\n this.autoGarbageCollect = true;\n }\n\n public static test(resource: any): resource is ImageResource\n {\n return (globalThis.HTMLImageElement && resource instanceof HTMLImageElement)\n || (typeof ImageBitmap !== 'undefined' && resource instanceof ImageBitmap);\n }\n}\n","import type { ALPHA_MODES } from '../../rendering/renderers/shared/texture/const';\n\nlet promise: Promise | undefined;\n\n/**\n * Helper for detecting the correct alpha mode for video textures.\n * For some reason, some browsers/devices/WebGL implementations premultiply the alpha\n * of a video before and then a second time if `UNPACK_PREMULTIPLY_ALPHA_WEBGL`\n * is true. So the video is premultiplied twice if the alpha mode is `UNPACK`.\n * In this case we need the alpha mode to be `PMA`. This function detects\n * the upload behavior by uploading a white 2x2 webm with 50% alpha\n * without `UNPACK_PREMULTIPLY_ALPHA_WEBGL` and then checking whether\n * the uploaded pixels are premultiplied.\n * @memberof utils\n * @function detectVideoAlphaMode\n * @returns {Promise} The correct alpha mode for video textures.\n */\nexport async function detectVideoAlphaMode(): Promise\n{\n promise ??= (async () =>\n {\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl');\n\n if (!gl)\n {\n return 'premultiply-alpha-on-upload';\n }\n\n const video = await new Promise((resolve) =>\n {\n const video = document.createElement('video');\n\n video.onloadeddata = () => resolve(video);\n video.onerror = () => resolve(null);\n video.autoplay = false;\n video.crossOrigin = 'anonymous';\n video.preload = 'auto';\n // eslint-disable-next-line max-len\n video.src = 'data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=';\n video.load();\n });\n\n if (!video)\n {\n return 'premultiply-alpha-on-upload';\n }\n\n const texture = gl.createTexture();\n\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n const framebuffer = gl.createFramebuffer();\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n );\n\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video);\n\n const pixel = new Uint8Array(4);\n\n gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);\n\n gl.deleteFramebuffer(framebuffer);\n gl.deleteTexture(texture);\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n\n return pixel[0] <= pixel[3] ? 'premultiplied-alpha' : 'premultiply-alpha-on-upload';\n })();\n\n return promise;\n}\n","// VideoSource.ts\n\nimport { ExtensionType } from '../../../../../extensions/Extensions';\nimport { Ticker } from '../../../../../ticker/Ticker';\nimport { detectVideoAlphaMode } from '../../../../../utils/browser/detectVideoAlphaMode';\nimport { TextureSource } from './TextureSource';\n\nimport type { ExtensionMetadata } from '../../../../../extensions/Extensions';\nimport type { Dict } from '../../../../../utils/types';\nimport type { ALPHA_MODES } from '../const';\nimport type { TextureSourceOptions } from './TextureSource';\n\ntype VideoResource = HTMLVideoElement;\n\n/**\n * Options for video sources.\n * @memberof rendering\n */\nexport interface VideoSourceOptions extends TextureSourceOptions\n{\n /** If true, the video will start loading immediately. */\n autoLoad?: boolean;\n /** If true, the video will start playing as soon as it is loaded. */\n autoPlay?: boolean;\n /** The number of times a second to update the texture from the video. Leave at 0 to update at every render. */\n updateFPS?: number;\n /** If true, the video will be loaded with the `crossorigin` attribute. */\n crossorigin?: boolean | string;\n /** If true, the video will loop when it ends. */\n loop?: boolean;\n /** If true, the video will be muted. */\n muted?: boolean;\n /** If true, the video will play inline. */\n playsinline?: boolean;\n /** If true, the video will be preloaded. */\n preload?: boolean;\n /** The time in milliseconds to wait for the video to preload before timing out. */\n preloadTimeoutMs?: number;\n /** The alpha mode of the video. */\n alphaMode?: ALPHA_MODES;\n}\n\nexport interface VideoResourceOptionsElement\n{\n src: string;\n mime: string;\n}\n\n/**\n * A source for video-based textures.\n * @memberof rendering\n */\nexport class VideoSource extends TextureSource\n{\n public static extension: ExtensionMetadata = ExtensionType.TextureSource;\n\n /** The default options for video sources. */\n public static defaultOptions: VideoSourceOptions = {\n ...TextureSource.defaultOptions,\n /** If true, the video will start loading immediately. */\n autoLoad: true,\n /** If true, the video will start playing as soon as it is loaded. */\n autoPlay: true,\n /** The number of times a second to update the texture from the video. Leave at 0 to update at every render. */\n updateFPS: 0,\n /** If true, the video will be loaded with the `crossorigin` attribute. */\n crossorigin: true,\n /** If true, the video will loop when it ends. */\n loop: false,\n /** If true, the video will be muted. */\n muted: true,\n /** If true, the video will play inline. */\n playsinline: true,\n /** If true, the video will be preloaded. */\n preload: false,\n };\n\n // Public\n /** Whether or not the video is ready to play. */\n public isReady = false;\n /** The upload method for this texture. */\n public uploadMethodId = 'video';\n\n // Protected\n /**\n * When set to true will automatically play videos used by this texture once\n * they are loaded. If false, it will not modify the playing state.\n * @default true\n */\n protected autoPlay: boolean;\n\n // Private\n /**\n * `true` to use Ticker.shared to auto update the base texture.\n * @default true\n */\n private _autoUpdate: boolean;\n\n /**\n * `true` if the instance is currently connected to Ticker.shared to auto update the base texture.\n * @default false\n */\n private _isConnectedToTicker: boolean;\n\n /**\n * Promise when loading.\n * @default null\n */\n private _load: Promise;\n\n private _msToNextUpdate: number;\n private _preloadTimeout: number;\n\n /** Callback when completed with load. */\n private _resolve: (value?: this | PromiseLike) => void;\n private _reject: (error: ErrorEvent) => void;\n\n private _updateFPS: number;\n private _videoFrameRequestCallbackHandle: number | null;\n\n constructor(\n options: VideoSourceOptions\n )\n {\n super(options);\n\n // Merge provided options with default ones\n options = {\n ...VideoSource.defaultOptions,\n ...options\n };\n\n this._autoUpdate = true;\n this._isConnectedToTicker = false;\n this._updateFPS = options.updateFPS || 0;\n this._msToNextUpdate = 0;\n this.autoPlay = options.autoPlay !== false;\n this.alphaMode = options.alphaMode ?? 'premultiply-alpha-on-upload';\n\n // Binding for frame updates\n this._videoFrameRequestCallback = this._videoFrameRequestCallback.bind(this);\n this._videoFrameRequestCallbackHandle = null;\n\n this._load = null;\n this._resolve = null;\n this._reject = null;\n\n // Bind for listeners\n this._onCanPlay = this._onCanPlay.bind(this);\n this._onCanPlayThrough = this._onCanPlayThrough.bind(this);\n this._onError = this._onError.bind(this);\n this._onPlayStart = this._onPlayStart.bind(this);\n this._onPlayStop = this._onPlayStop.bind(this);\n this._onSeeked = this._onSeeked.bind(this);\n\n if (options.autoLoad !== false)\n {\n void this.load();\n }\n }\n\n /** Update the video frame if the source is not destroyed and meets certain conditions. */\n protected updateFrame(): void\n {\n if (this.destroyed)\n {\n return;\n }\n\n if (this._updateFPS)\n {\n // Account for if video has had its playbackRate changed\n const elapsedMS = Ticker.shared.elapsedMS * this.resource.playbackRate;\n\n this._msToNextUpdate = Math.floor(this._msToNextUpdate - elapsedMS);\n }\n\n if (!this._updateFPS || this._msToNextUpdate <= 0)\n {\n this._msToNextUpdate = this._updateFPS ? Math.floor(1000 / this._updateFPS) : 0;\n }\n\n if (this.isValid)\n {\n this.update();\n }\n }\n\n /** Callback to update the video frame and potentially request the next frame update. */\n private _videoFrameRequestCallback(): void\n {\n this.updateFrame();\n\n if (this.destroyed)\n {\n this._videoFrameRequestCallbackHandle = null;\n }\n else\n {\n this._videoFrameRequestCallbackHandle = this.resource.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n );\n }\n }\n\n /**\n * Checks if the resource has valid dimensions.\n * @returns {boolean} True if width and height are set, otherwise false.\n */\n public get isValid(): boolean\n {\n return !!this.resource.videoWidth && !!this.resource.videoHeight;\n }\n\n /**\n * Start preloading the video resource.\n * @returns {Promise} Handle the validate event\n */\n public async load(): Promise\n {\n if (this._load)\n {\n return this._load;\n }\n\n const source = this.resource;\n const options = this.options as VideoSourceOptions;\n\n // Check if source data is enough and set it to complete if needed\n if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA)\n && source.width && source.height)\n {\n (source as any).complete = true;\n }\n\n // Add event listeners related to playback and seeking\n source.addEventListener('play', this._onPlayStart);\n source.addEventListener('pause', this._onPlayStop);\n source.addEventListener('seeked', this._onSeeked);\n\n // Add or handle source readiness event listeners\n if (!this._isSourceReady())\n {\n if (!options.preload)\n {\n // since this event fires early, only bind if not waiting for a preload event\n source.addEventListener('canplay', this._onCanPlay);\n }\n source.addEventListener('canplaythrough', this._onCanPlayThrough);\n source.addEventListener('error', this._onError, true);\n }\n else\n {\n // Source is already ready, so handle it immediately\n this._mediaReady();\n }\n\n this.alphaMode = await detectVideoAlphaMode();\n\n // Create and return the loading promise\n this._load = new Promise((resolve, reject): void =>\n {\n if (this.isValid)\n {\n resolve(this);\n }\n else\n {\n this._resolve = resolve;\n this._reject = reject;\n\n if (options.preloadTimeoutMs !== undefined)\n {\n this._preloadTimeout = setTimeout(() =>\n {\n this._onError(new ErrorEvent(`Preload exceeded timeout of ${options.preloadTimeoutMs}ms`));\n }) as unknown as number;\n }\n source.load();\n }\n });\n\n return this._load;\n }\n\n /**\n * Handle video error events.\n * @param event - The error event\n */\n private _onError(event: ErrorEvent): void\n {\n this.resource.removeEventListener('error', this._onError, true);\n this.emit('error', event);\n\n if (this._reject)\n {\n this._reject(event);\n this._reject = null;\n this._resolve = null;\n }\n }\n\n /**\n * Checks if the underlying source is playing.\n * @returns True if playing.\n */\n private _isSourcePlaying(): boolean\n {\n const source = this.resource;\n\n return (!source.paused && !source.ended);\n }\n\n /**\n * Checks if the underlying source is ready for playing.\n * @returns True if ready.\n */\n private _isSourceReady(): boolean\n {\n const source = this.resource;\n\n return source.readyState > 2;\n }\n\n /** Runs the update loop when the video is ready to play. */\n private _onPlayStart(): void\n {\n // Handle edge case where video might not have received its \"can play\" event yet\n if (!this.isValid)\n {\n this._mediaReady();\n }\n\n this._configureAutoUpdate();\n }\n\n /** Stops the update loop when a pause event is triggered. */\n private _onPlayStop(): void\n {\n this._configureAutoUpdate();\n }\n\n /** Handles behavior when the video completes seeking to the current playback position. */\n private _onSeeked(): void\n {\n if (this._autoUpdate && !this._isSourcePlaying())\n {\n this._msToNextUpdate = 0;\n this.updateFrame();\n this._msToNextUpdate = 0;\n }\n }\n\n private _onCanPlay(): void\n {\n const source = this.resource;\n\n // Remove event listeners\n source.removeEventListener('canplay', this._onCanPlay);\n\n this._mediaReady();\n }\n\n private _onCanPlayThrough(): void\n {\n const source = this.resource;\n\n // Remove event listeners\n source.removeEventListener('canplaythrough', this._onCanPlay);\n\n if (this._preloadTimeout)\n {\n clearTimeout(this._preloadTimeout);\n this._preloadTimeout = undefined;\n }\n\n this._mediaReady();\n }\n\n /** Fired when the video is loaded and ready to play. */\n private _mediaReady(): void\n {\n const source = this.resource;\n\n if (this.isValid)\n {\n this.isReady = true;\n this.resize(source.videoWidth, source.videoHeight);\n }\n\n // Reset update timers and perform a frame update\n this._msToNextUpdate = 0;\n this.updateFrame();\n this._msToNextUpdate = 0;\n\n // Resolve the loading promise if it exists\n if (this._resolve)\n {\n this._resolve(this);\n this._resolve = null;\n this._reject = null;\n }\n\n // Handle play behavior based on current source status\n if (this._isSourcePlaying())\n {\n this._onPlayStart();\n }\n else if (this.autoPlay)\n {\n void this.resource.play();\n }\n }\n\n /** Cleans up resources and event listeners associated with this texture. */\n public destroy()\n {\n this._configureAutoUpdate();\n\n const source = this.resource;\n\n if (source)\n {\n // Remove event listeners\n source.removeEventListener('play', this._onPlayStart);\n source.removeEventListener('pause', this._onPlayStop);\n source.removeEventListener('seeked', this._onSeeked);\n source.removeEventListener('canplay', this._onCanPlay);\n source.removeEventListener('canplaythrough', this._onCanPlayThrough);\n source.removeEventListener('error', this._onError, true);\n\n // Clear the video source and pause\n source.pause();\n source.src = '';\n source.load();\n }\n\n super.destroy();\n }\n\n /** Should the base texture automatically update itself, set to true by default. */\n get autoUpdate(): boolean\n {\n return this._autoUpdate;\n }\n\n set autoUpdate(value: boolean)\n {\n if (value !== this._autoUpdate)\n {\n this._autoUpdate = value;\n this._configureAutoUpdate();\n }\n }\n\n /**\n * How many times a second to update the texture from the video.\n * Leave at 0 to update at every render.\n * A lower fps can help performance, as updating the texture at 60fps on a 30ps video may not be efficient.\n */\n get updateFPS(): number\n {\n return this._updateFPS;\n }\n\n set updateFPS(value: number)\n {\n if (value !== this._updateFPS)\n {\n this._updateFPS = value;\n this._configureAutoUpdate();\n }\n }\n\n /**\n * Configures the updating mechanism based on the current state and settings.\n *\n * This method decides between using the browser's native video frame callback or a custom ticker\n * for updating the video frame. It ensures optimal performance and responsiveness\n * based on the video's state, playback status, and the desired frames-per-second setting.\n *\n * - If `_autoUpdate` is enabled and the video source is playing:\n * - It will prefer the native video frame callback if available and no specific FPS is set.\n * - Otherwise, it will use a custom ticker for manual updates.\n * - If `_autoUpdate` is disabled or the video isn't playing, any active update mechanisms are halted.\n */\n private _configureAutoUpdate(): void\n {\n // Check if automatic updating is enabled and if the source is currently playing\n if (this._autoUpdate && this._isSourcePlaying())\n {\n // Determine if we should use the browser's native video frame callback (generally for better performance)\n if (!this._updateFPS && this.resource.requestVideoFrameCallback)\n {\n // If connected to a custom ticker, remove the update frame function from it\n if (this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.updateFrame, this);\n this._isConnectedToTicker = false;\n // Reset the time until the next update\n this._msToNextUpdate = 0;\n }\n\n // Check if we haven't already requested a video frame callback, and if not, request one\n if (this._videoFrameRequestCallbackHandle === null)\n {\n this._videoFrameRequestCallbackHandle = this.resource.requestVideoFrameCallback(\n this._videoFrameRequestCallback\n );\n }\n }\n else\n {\n // If a video frame request callback exists, cancel it, as we are switching to manual ticker-based updates\n if (this._videoFrameRequestCallbackHandle !== null)\n {\n this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle);\n this._videoFrameRequestCallbackHandle = null;\n }\n\n // If not connected to the custom ticker, add the update frame function to it\n if (!this._isConnectedToTicker)\n {\n Ticker.shared.add(this.updateFrame, this);\n this._isConnectedToTicker = true;\n // Reset the time until the next update\n this._msToNextUpdate = 0;\n }\n }\n }\n else\n {\n // If automatic updating is disabled or the source isn't playing, perform cleanup\n\n // Cancel any existing video frame callback request\n if (this._videoFrameRequestCallbackHandle !== null)\n {\n this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle);\n this._videoFrameRequestCallbackHandle = null;\n }\n\n // Remove the update frame function from the custom ticker\n if (this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.updateFrame, this);\n this._isConnectedToTicker = false;\n // Reset the time until the next update\n this._msToNextUpdate = 0;\n }\n }\n }\n\n /**\n * Map of video MIME types that can't be directly derived from file extensions.\n * @readonly\n */\n public static MIME_TYPES: Dict\n = {\n ogv: 'video/ogg',\n mov: 'video/quicktime',\n m4v: 'video/mp4',\n };\n\n public static test(resource: any): resource is VideoResource\n {\n return (globalThis.HTMLVideoElement && resource instanceof HTMLVideoElement)\n || (globalThis.VideoFrame && resource instanceof VideoFrame);\n }\n}\n","import { warn } from '../../utils/logging/warn';\nimport { convertToList } from '../utils/convertToList';\n\nimport type { CacheParser } from './CacheParser';\n\n/**\n * A single Cache for all assets.\n *\n * When assets are added to the cache via set they normally are added to the cache as key-value pairs.\n *\n * With this cache, you can add parsers that will take the object and convert it to a list of assets that can be cached.\n * for example a cacheSpritesheet parser will add all of the textures found within its sprite sheet directly to the cache.\n *\n * This gives devs the flexibility to cache any type of object however we want.\n *\n * It is not intended that this class is created by developers - it is part of the Asset package.\n * This is the first major system of PixiJS' main Assets class.\n * @example\n * import { Cache } from 'pixi.js';\n *\n * Cache.set('bunny', bunnyTexture);\n * @class Cache\n * @memberof assets\n */\nclass CacheClass\n{\n private readonly _parsers: CacheParser[] = [];\n\n private readonly _cache: Map = new Map();\n private readonly _cacheMap: Map = new Map();\n\n /** Clear all entries. */\n public reset(): void\n {\n this._cacheMap.clear();\n this._cache.clear();\n }\n\n /**\n * Check if the key exists\n * @param key - The key to check\n */\n public has(key: any): boolean\n {\n return this._cache.has(key);\n }\n\n /**\n * Fetch entry by key\n * @param key - The key of the entry to get\n */\n public get(key: any): T\n {\n const result = this._cache.get(key);\n\n if (!result)\n {\n // #if _DEBUG\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n // #endif\n }\n\n return result as T;\n }\n\n /**\n * Set a value by key or keys name\n * @param key - The key or keys to set\n * @param value - The value to store in the cache or from which cacheable assets will be derived.\n */\n public set(key: any | any[], value: unknown): void\n {\n const keys = convertToList(key);\n\n let cacheableAssets: Record;\n\n for (let i = 0; i < this.parsers.length; i++)\n {\n const parser = this.parsers[i];\n\n if (parser.test(value))\n {\n cacheableAssets = parser.getCacheableAssets(keys, value);\n\n break;\n }\n }\n\n // convert cacheable assets to a map of key-value pairs\n const cacheableMap = new Map(Object.entries(cacheableAssets || {}));\n\n if (!cacheableAssets)\n {\n keys.forEach((key) =>\n {\n cacheableMap.set(key, value);\n });\n }\n\n const cacheKeys = [...cacheableMap.keys()];\n\n const cachedAssets = {\n cacheKeys,\n keys\n };\n\n // this is so we can remove them later..\n keys.forEach((key) =>\n {\n this._cacheMap.set(key, cachedAssets as any);\n });\n\n cacheKeys.forEach((key) =>\n {\n const val = cacheableAssets ? cacheableAssets[key] : value;\n\n if (this._cache.has(key) && this._cache.get(key) !== val)\n {\n // #if _DEBUG\n warn('[Cache] already has key:', key);\n // #endif\n }\n\n this._cache.set(key, cacheableMap.get(key));\n });\n }\n\n /**\n * Remove entry by key\n *\n * This function will also remove any associated alias from the cache also.\n * @param key - The key of the entry to remove\n */\n public remove(key: any): void\n {\n if (!this._cacheMap.has(key))\n {\n // #if _DEBUG\n warn(`[Assets] Asset id ${key} was not found in the Cache`);\n // #endif\n\n return;\n }\n\n const cacheMap = this._cacheMap.get(key);\n\n const cacheKeys = cacheMap.cacheKeys;\n\n cacheKeys.forEach((key) =>\n {\n this._cache.delete(key);\n });\n\n cacheMap.keys.forEach((key: string) =>\n {\n this._cacheMap.delete(key);\n });\n }\n\n /** All loader parsers registered */\n public get parsers(): CacheParser[]\n {\n return this._parsers;\n }\n}\n\nexport const Cache = new CacheClass();\n","import { Cache } from '../../../../../assets/cache/Cache';\nimport { extensions, ExtensionType } from '../../../../../extensions/Extensions';\nimport { TextureSource } from '../sources/TextureSource';\nimport { Texture } from '../Texture';\n\nimport type { TypedArray } from '../../buffer/Buffer';\nimport type { BufferSourceOptions } from '../sources/BufferSource';\nimport type { ImageResource } from '../sources/ImageSource';\nimport type { TextureSourceOptions } from '../sources/TextureSource';\nimport type { TextureSourceLike } from '../Texture';\n\ninterface TextureSourceConstructor\n{\n new (options: TextureSourceOptions): T;\n test(options: ImageResource | TypedArray | ArrayBuffer): boolean;\n}\n\nconst sources: TextureSourceConstructor[] = [];\n\nextensions.handleByList(ExtensionType.TextureSource, sources);\n\nexport type TextureResourceOrOptions =\n ImageResource\n | TextureSourceOptions\n | BufferSourceOptions;\n\nexport function autoDetectSource(options: TextureResourceOrOptions = {}): TextureSource\n{\n const hasResource = options && (options as TextureSourceOptions).resource;\n const res = hasResource ? (options as TextureSourceOptions).resource : options;\n const opts = hasResource ? options as TextureSourceOptions : { resource: options } as TextureSourceOptions;\n\n for (let i = 0; i < sources.length; i++)\n {\n const Source = sources[i];\n\n if (Source.test(res))\n {\n return new Source(opts);\n }\n }\n\n throw new Error(`Could not find a source type for resource: ${opts.resource}`);\n}\n\nexport function resourceToTexture(\n options: TextureResourceOrOptions = {},\n skipCache = false\n): Texture\n{\n const hasResource = options && (options as TextureSourceOptions).resource;\n const resource = hasResource ? (options as TextureSourceOptions).resource : options;\n const opts = hasResource ? options as TextureSourceOptions : { resource: options } as TextureSourceOptions;\n\n if (!skipCache && Cache.has(resource))\n {\n return Cache.get(resource);\n }\n\n const texture = new Texture({ source: autoDetectSource(opts) });\n\n texture.on('destroy', () =>\n {\n if (Cache.has(resource))\n {\n Cache.remove(resource);\n }\n });\n\n if (!skipCache)\n {\n Cache.set(resource, texture);\n }\n\n return texture;\n}\n\n/**\n * Helper function that creates a returns Texture based on the source you provide.\n * The source should be loaded and ready to go. If not its best to grab the asset using Assets.\n * @param id - String or Source to create texture from\n * @param skipCache - Skip adding the texture to the cache\n * @returns The texture based on the Id provided\n */\nexport function textureFrom(id: TextureSourceLike, skipCache = false): Texture\n{\n if (typeof id === 'string')\n {\n return Cache.get(id);\n }\n else if (id instanceof TextureSource)\n {\n return new Texture({ source: id });\n }\n\n // return a auto generated texture from resource\n return resourceToTexture(id, skipCache);\n}\n\nTexture.from = textureFrom;\n","import { extensions } from '../extensions/Extensions';\nimport { AlphaMask } from './mask/alpha/AlphaMask';\nimport { ColorMask } from './mask/color/ColorMask';\nimport { StencilMask } from './mask/stencil/StencilMask';\nimport { BufferImageSource } from './renderers/shared/texture/sources/BufferSource';\nimport { CanvasSource } from './renderers/shared/texture/sources/CanvasSource';\nimport { ImageSource } from './renderers/shared/texture/sources/ImageSource';\nimport { VideoSource } from './renderers/shared/texture/sources/VideoSource';\nimport './renderers/shared/texture/utils/textureFrom';\nimport './mask/MaskEffectManager';\n\n/**\n * The rendering namespace contains all the classes used for core rendering in PixiJS\n * this includes all the lower level resources such as Textures, Shaders, State, Buffers,\n * Geometry and the systems required to use them. This covers WebGL and WebGPU and their shared classes.\n *\n * To automatically create a renderer based on available resources, see the {@link rendering.autoDetectRenderer} function.\n * @namespace rendering\n */\n\nextensions.add(AlphaMask, ColorMask, StencilMask, VideoSource, ImageSource, CanvasSource, BufferImageSource);\n\n","/**\n * Buffer usage flags. they can be combined using the bitwise OR operator\n * eg : BufferUsage.VERTEX | BufferUsage.INDEX\n * @memberof rendering\n */\nexport enum BufferUsage\n// eslint-disable-next-line @typescript-eslint/indent\n{\n /**\n * The buffer can be mapped for reading. (Example: calling mapAsync() with GPUMapMode.READ)\n * May only be combined with COPY_DST.\n */\n MAP_READ = 0x0001,\n /**\n * The buffer can be mapped for writing. (Example: calling mapAsync() with GPUMapMode.WRITE)\n * May only be combined with COPY_SRC.\n */\n MAP_WRITE = 0x0002,\n /**\n * The buffer can be used as the source of a copy operation.\n * (Examples: as the source argument of a copyBufferToBuffer() or copyBufferToTexture() call.)\n */\n COPY_SRC = 0x0004,\n /**\n * The buffer can be used as the destination of a copy or write operation.\n * (Examples: as the destination argument of a copyBufferToBuffer() or\n * copyTextureToBuffer() call, or as the target of a writeBuffer() call.)\n */\n COPY_DST = 0x0008,\n /** The buffer can be used as an index buffer. (Example: passed to setIndexBuffer().) */\n INDEX = 0x0010,\n /** The buffer can be used as a vertex buffer. (Example: passed to setVertexBuffer().) */\n VERTEX = 0x0020,\n /**\n * The buffer can be used as a uniform buffer.\n * (Example: as a bind group entry for a GPUBufferBindingLayout with a buffer.type of \"uniform\".)\n */\n UNIFORM = 0x0040,\n /**\n * The buffer can be used as a storage buffer.\n * (Example: as a bind group entry for a GPUBufferBindingLayout with a buffer.type of \"storage\" or \"read-only-storage\".)\n */\n STORAGE = 0x0080,\n /**\n * The buffer can be used as to store indirect command arguments.\n * (Examples: as the indirectBuffer argument of a drawIndirect() or dispatchWorkgroupsIndirect() call.)\n */\n INDIRECT = 0x0100,\n /**\n * The buffer can be used to capture query results.\n * (Example: as the destination argument of a resolveQuerySet() call.)\n */\n QUERY_RESOLVE = 0x0200,\n /** the buffer will not be updated frequently */\n STATIC = 0x0400\n}\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid';\nimport { BufferUsage } from './const';\n\nimport type { BindResource } from '../../gpu/shader/BindResource';\n\n/** All the various typed arrays that exist in js */\n// eslint-disable-next-line max-len\nexport type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;\n\n/** Options for creating a buffer */\nexport interface BufferOptions\n{\n /**\n * the data to initialize the buffer with, this can be a typed array,\n * or a regular number array. If it is a number array, it will be converted to a Float32Array\n */\n data?: TypedArray | number[];\n /** the size of the buffer in bytes, if not supplied, it will be inferred from the data */\n size?: number;\n /** the usage of the buffer, see {@link rendering.BufferUsage} */\n usage: number;\n /** a label for the buffer, this is useful for debugging */\n label?: string;\n /**\n * should the GPU buffer be shrunk when the data becomes smaller?\n * changing this will cause the buffer to be destroyed and a new one created on the GPU\n * this can be expensive, especially if the buffer is already big enough!\n * setting this to false will prevent the buffer from being shrunk. This will yield better performance\n * if you are constantly setting data that is changing size often.\n * @default true\n */\n shrinkToFit?: boolean;\n}\n\nexport interface BufferDescriptor\n{\n label?: string;\n size: GPUSize64;\n usage: BufferUsage;\n mappedAtCreation?: boolean;\n}\n\n/**\n * A wrapper for a WebGPU/WebGL Buffer.\n * In PixiJS, the Buffer class is used to manage the data that is sent to the GPU rendering pipeline.\n * It abstracts away the underlying GPU buffer and provides an interface for uploading typed arrays or other data to the GPU,\n * They are used in the following places:\n *

\n * .1. {@link Geometry} as attribute data or index data for geometry\n *
\n * .2. {@link UniformGroup} as an underlying buffer for uniform data\n *
\n * .3. {@link BufferResource} as an underlying part of a buffer used directly by the GPU program\n *
\n *\n * It is important to note that you must provide a usage type when creating a buffer. This is because\n * the underlying GPU buffer needs to know how it will be used. For example, if you are creating a buffer\n * to hold vertex data, you would use `BufferUsage.VERTEX`. This will tell the GPU that this buffer will be\n * used as a vertex buffer. This is important because it will affect how you can use the buffer.\n *\n * Buffers are updated by calling the {@link Buffer.update} method. This immediately updates the buffer on the GPU.\n * Be mindful of calling this more often than you need to. It is recommended to update buffers only when needed.\n *\n * In WebGPU, a GPU buffer cannot resized. This limitation is abstracted away, but know that resizing a buffer means\n * creating a brand new one and destroying the old, so it is best to limit this if possible.\n * @example\n *\n * const buffer = new Buffer({\n * data: new Float32Array([1, 2, 3, 4]),\n * usage: BufferUsage.VERTEX,\n * });\n * @memberof rendering\n */\nexport class Buffer extends EventEmitter<{\n change: BindResource,\n update: Buffer,\n destroy: Buffer,\n}> implements BindResource\n{\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n\n /**\n * emits when the underlying buffer data has been updated. letting the renderer know\n * that it needs to update the buffer on the GPU\n * @event update\n */\n\n /**\n * emits when the buffer is destroyed. letting the renderer know that it needs to destroy the buffer on the GPU\n * @event destroy\n */\n\n /**\n * a unique id for this uniform group used through the renderer\n * @internal\n * @ignore\n */\n public readonly uid = uid('buffer');\n\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n * @ignore\n */\n public readonly _resourceType = 'buffer';\n\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n * @ignore\n */\n public _resourceId = uid('resource');\n\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n * @ignore\n */\n public _touched = 0;\n\n /**\n * a description of the buffer and how it should be set up on the GPU\n * @internal\n * @ignore\n */\n public readonly descriptor: BufferDescriptor;\n\n /**\n * @internal\n * @ignore\n */\n public _updateID = 1;\n\n /**\n * @internal\n * @ignore\n */\n public _updateSize: number;\n\n private _data: TypedArray;\n\n /**\n * should the GPU buffer be shrunk when the data becomes smaller?\n * changing this will cause the buffer to be destroyed and a new one created on the GPU\n * this can be expensive, especially if the buffer is already big enough!\n * setting this to false will prevent the buffer from being shrunk. This will yield better performance\n * if you are constantly setting data that is changing size often.\n * @default true\n */\n public shrinkToFit = true;\n\n /**\n * Has the buffer been destroyed?\n * @readonly\n */\n public destroyed = false;\n\n /**\n * Creates a new Buffer with the given options\n * @param options - the options for the buffer\n */\n constructor(options: BufferOptions)\n {\n let { data, size } = options;\n const { usage, label, shrinkToFit } = options;\n\n super();\n\n if (data instanceof Array)\n {\n data = new Float32Array(data as number[]);\n }\n\n this._data = data as TypedArray;\n\n size = size ?? (data as TypedArray)?.byteLength;\n\n const mappedAtCreation = !!data;\n\n this.descriptor = {\n size,\n usage,\n mappedAtCreation,\n label,\n };\n\n this.shrinkToFit = shrinkToFit ?? true;\n }\n\n /** the data in the buffer */\n get data()\n {\n return this._data;\n }\n\n set data(value: TypedArray)\n {\n this.setDataWithSize(value, value.length, true);\n }\n\n /** whether the buffer is static or not */\n get static()\n {\n return !!(this.descriptor.usage & BufferUsage.STATIC);\n }\n\n set static(value: boolean)\n {\n if (value)\n {\n this.descriptor.usage |= BufferUsage.STATIC;\n }\n else\n {\n this.descriptor.usage &= ~BufferUsage.STATIC;\n }\n }\n\n /**\n * Sets the data in the buffer to the given value. This will immediately update the buffer on the GPU.\n * If you only want to update a subset of the buffer, you can pass in the size of the data.\n * @param value - the data to set\n * @param size - the size of the data in bytes\n * @param syncGPU - should the buffer be updated on the GPU immediately?\n */\n public setDataWithSize(value: TypedArray, size: number, syncGPU: boolean)\n {\n // Increment update ID\n this._updateID++;\n\n this._updateSize = (size * value.BYTES_PER_ELEMENT);\n\n // If the data hasn't changed, early return after emitting 'update'\n if (this._data === value)\n {\n if (syncGPU) this.emit('update', this);\n\n return;\n }\n\n // Cache old data and update to new value\n const oldData = this._data;\n\n this._data = value;\n\n // Event handling\n if (oldData.length !== value.length)\n {\n if (!this.shrinkToFit && value.byteLength < oldData.byteLength)\n {\n if (syncGPU) this.emit('update', this);\n }\n else\n {\n this.descriptor.size = value.byteLength;\n this._resourceId = uid('resource');\n this.emit('change', this);\n }\n\n return;\n }\n\n if (syncGPU) this.emit('update', this);\n }\n\n /**\n * updates the buffer on the GPU to reflect the data in the buffer.\n * By default it will update the entire buffer. If you only want to update a subset of the buffer,\n * you can pass in the size of the buffer to update.\n * @param sizeInBytes - the new size of the buffer in bytes\n */\n public update(sizeInBytes?: number): void\n {\n this._updateSize = sizeInBytes ?? this._updateSize;\n\n this._updateID++;\n\n this.emit('update', this);\n }\n\n /** Destroys the buffer */\n public destroy()\n {\n this.destroyed = true;\n\n this.emit('destroy', this);\n this.emit('change', this);\n\n this._data = null;\n (this.descriptor as null) = null;\n\n this.removeAllListeners();\n }\n}\n\n","import { Buffer } from '../../buffer/Buffer';\nimport { BufferUsage } from '../../buffer/const';\n\nimport type { TypedArray } from '../../buffer/Buffer';\n\n/**\n * Converts something into a buffer. If it is already a buffer it will pass it through\n * if it is a number array it will convert it to a float32 array before being passed into a buffer\n * the buffer will be created with the correct usage flags for geometry attributes\n * @param buffer - number array\n * @param index - is this an index buffer?\n * @returns a buffer\n * @memberof rendering\n */\nexport function ensureIsBuffer(buffer: Buffer | TypedArray | number[], index: boolean): Buffer\n{\n if (!(buffer instanceof Buffer))\n {\n let usage: number = index ? BufferUsage.INDEX : BufferUsage.VERTEX;\n\n // its an array!\n if (buffer instanceof Array)\n {\n if (index)\n {\n buffer = new Uint32Array(buffer);\n usage = BufferUsage.INDEX | BufferUsage.COPY_DST;\n }\n\n else\n {\n buffer = new Float32Array(buffer);\n usage = BufferUsage.VERTEX | BufferUsage.COPY_DST;\n }\n }\n\n buffer = new Buffer({\n data: buffer,\n label: index ? 'index-mesh-buffer' : 'vertex-mesh-buffer',\n usage\n });\n }\n\n return buffer;\n}\n","import type { Bounds } from '../../../../../scene/container/bounds/Bounds';\nimport type { Geometry } from '../Geometry';\n\n/**\n * Gets the 2D bounds of a geometry, based on a specific attribute.\n * @param geometry - Geometry to to measure\n * @param attributeId - AttributeId that contains the x,y data\n * @param bounds - Bounds to store the result in\n * @returns the bounds\n */\nexport function getGeometryBounds(geometry: Geometry, attributeId: string, bounds: Bounds): Bounds\n{\n const attribute = geometry.getAttribute(attributeId);\n\n if (!attribute)\n {\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = 0;\n bounds.maxY = 0;\n\n return bounds;\n }\n\n const data = attribute.buffer.data as Float32Array;\n\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n const byteSize = data.BYTES_PER_ELEMENT;\n\n // stride and offset MAY have not been calculated yet.. so go with assumed defaults\n const offset = (attribute.offset || 0) / byteSize;\n const stride = (attribute.stride || (2 * 4)) / byteSize;\n\n for (let i = offset; i < data.length; i += stride)\n {\n const x = data[i];\n const y = data[i + 1];\n\n if (x > maxX)maxX = x;\n if (y > maxY)maxY = y;\n if (x < minX)minX = x;\n if (y < minY)minY = y;\n }\n\n bounds.minX = minX;\n bounds.minY = minY;\n bounds.maxX = maxX;\n bounds.maxY = maxY;\n\n return bounds;\n}\n","import EventEmitter from 'eventemitter3';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds';\nimport { uid } from '../../../../utils/data/uid';\nimport { Buffer } from '../buffer/Buffer';\nimport { ensureIsBuffer } from './utils/ensureIsBuffer';\nimport { getGeometryBounds } from './utils/getGeometryBounds';\n\nimport type { TypedArray } from '../buffer/Buffer';\nimport type { Topology, VertexFormat } from './const';\n\nexport type IndexBufferArray = Uint16Array | Uint32Array;\n\n/**\n * The attribute data for a geometries attributes\n * @memberof rendering\n */\nexport interface Attribute\n{\n /** the buffer that this attributes data belongs to */\n buffer: Buffer;\n /** the format of the attribute */\n format?: VertexFormat;\n /** set where the shader location is for this attribute */\n location?: number;\n /** the stride of the data in the buffer*/\n stride?: number;\n /** the offset of the attribute from the buffer, defaults to 0 */\n offset?: number;\n /** is this an instanced buffer? (defaults to false) */\n instance?: boolean;\n /** The number of elements to be rendered. If not specified, all vertices after the starting vertex will be drawn. */\n size?: number;\n /** the type of attribute */\n type?: number;\n /**\n * The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n */\n start?: number;\n}\n\n/**\n * The attribute options used by the constructor for adding geometries attributes\n * extends {@link rendering.Attribute} but allows for the buffer to be a typed or number array\n * @memberof rendering\n */\ntype AttributeOption = Omit & { buffer: Buffer | TypedArray | number[]}\n| Buffer | TypedArray | number[];\n\nexport type AttributeOptions = Record;\n\n/**\n * the interface that describes the structure of the geometry\n * @memberof rendering\n */\nexport interface GeometryDescriptor\n{\n /** an optional label to easily identify the geometry */\n label?: string;\n /** the attributes that make up the geometry */\n attributes: AttributeOptions;\n /** optional index buffer for this geometry */\n indexBuffer?: Buffer | TypedArray | number[];\n /** the topology of the geometry, defaults to 'triangle-list' */\n topology?: Topology;\n\n instanceCount?: number;\n}\nfunction ensureIsAttribute(attribute: AttributeOption): Attribute\n{\n if (attribute instanceof Buffer || Array.isArray(attribute) || (attribute as TypedArray).BYTES_PER_ELEMENT)\n {\n attribute = {\n buffer: attribute as Buffer | TypedArray | number[],\n };\n }\n\n (attribute as Attribute).buffer = ensureIsBuffer(attribute.buffer as Buffer | TypedArray | number[], false);\n\n return attribute as Attribute;\n}\n\n/**\n * A Geometry is a low-level object that represents the structure of 2D shapes in terms of vertices and attributes.\n * It's a crucial component for rendering as it describes the shape and format of the data that will go through the shaders.\n * Essentially, a Geometry object holds the data you'd send to a GPU buffer.\n *\n * A geometry is basically made of two components:\n *
\n * Attributes: These are essentially arrays that define properties of the vertices like position, color,\n * texture coordinates, etc. They map directly to attributes in your vertex shaders.\n *
\n * Indices: An optional array that describes how the vertices are connected.\n * If not provided, vertices will be interpreted in the sequence they're given.\n * @example\n *\n * const geometry = new Geometry({\n * attributes: {\n * aPosition: [ // add some positions\n * 0, 0,\n * 0, 100,\n * 100, 100,\n * 100, 0,\n * ],\n * aUv: [ // add some uvs\n * 0, 0,\n * 0, 1,\n * 1, 1,\n * 1, 0,\n * ]\n * }\n * });\n * @memberof rendering\n * @class\n */\nexport class Geometry extends EventEmitter<{\n update: Geometry,\n destroy: Geometry,\n}>\n{\n /** The topology of the geometry. */\n public topology: Topology;\n /** The unique id of the geometry. */\n public readonly uid: number = uid('geometry');\n /** A record of the attributes of the geometry. */\n public readonly attributes: Record;\n /** The buffers that the attributes use */\n public readonly buffers: Buffer[];\n /** The index buffer of the geometry */\n public readonly indexBuffer: Buffer;\n\n /**\n * the layout key will be generated by WebGPU all geometries that have the same structure\n * will have the same layout key. This is used to cache the pipeline layout\n * @internal\n * @ignore\n */\n public _layoutKey = 0;\n\n /** the instance count of the geometry to draw */\n public instanceCount = 1;\n\n private readonly _bounds: Bounds = new Bounds();\n private _boundsDirty = true;\n\n /**\n * Create a new instance of a geometry\n * @param options - The options for the geometry.\n */\n constructor(options: GeometryDescriptor)\n {\n const { attributes, indexBuffer, topology } = options;\n\n super();\n\n this.attributes = attributes as Record;\n this.buffers = [];\n\n this.instanceCount = options.instanceCount || 1;\n\n for (const i in attributes)\n {\n const attribute = attributes[i] = ensureIsAttribute(attributes[i]);\n\n const bufferIndex = this.buffers.indexOf(attribute.buffer);\n\n if (bufferIndex === -1)\n {\n this.buffers.push(attribute.buffer);\n\n // two events here - one for a resize (new buffer change)\n // and one for an update (existing buffer change)\n attribute.buffer.on('update', this.onBufferUpdate, this);\n attribute.buffer.on('change', this.onBufferUpdate, this);\n }\n }\n\n if (indexBuffer)\n {\n this.indexBuffer = ensureIsBuffer(indexBuffer, true);\n this.buffers.push(this.indexBuffer);\n }\n\n this.topology = topology || 'triangle-list';\n }\n\n protected onBufferUpdate(): void\n {\n this._boundsDirty = true;\n this.emit('update', this);\n }\n\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n public getAttribute(id: string): Attribute\n {\n return this.attributes[id];\n }\n\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n public getIndex(): Buffer\n {\n return this.indexBuffer;\n }\n\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n public getBuffer(id: string): Buffer\n {\n return this.getAttribute(id).buffer;\n }\n\n /**\n * Used to figure out how many vertices there are in this geometry\n * @returns the number of vertices in the geometry\n */\n public getSize(): number\n {\n for (const i in this.attributes)\n {\n const attribute = this.attributes[i];\n const buffer = attribute.buffer;\n\n // TODO use SIZE again like v7..\n return (buffer.data as any).length / ((attribute.stride / 4) || attribute.size);\n }\n\n return 0;\n }\n\n /** Returns the bounds of the geometry. */\n get bounds(): Bounds\n {\n if (!this._boundsDirty) return this._bounds;\n\n this._boundsDirty = false;\n\n return getGeometryBounds(this, 'aPosition', this._bounds);\n }\n\n /**\n * destroys the geometry.\n * @param destroyBuffers - destroy the buffers associated with this geometry\n */\n public destroy(destroyBuffers = false): void\n {\n this.emit('destroy', this);\n\n this.removeAllListeners();\n\n if (destroyBuffers)\n {\n this.buffers.forEach((buffer) => buffer.destroy());\n }\n\n (this.attributes as null) = null;\n (this.buffers as null) = null;\n (this.indexBuffer as null) = null;\n (this._bounds as null) = null;\n }\n}\n\n","import { Buffer } from '../../renderers/shared/buffer/Buffer';\nimport { BufferUsage } from '../../renderers/shared/buffer/const';\nimport { Geometry } from '../../renderers/shared/geometry/Geometry';\n\nconst placeHolderBufferData = new Float32Array(1);\nconst placeHolderIndexData = new Uint32Array(1);\n\nexport class BatchGeometry extends Geometry\n{\n constructor()\n {\n const vertexSize = 6;\n\n const attributeBuffer = new Buffer({\n data: placeHolderBufferData,\n label: 'attribute-batch-buffer',\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n shrinkToFit: false,\n });\n\n const indexBuffer = new Buffer({\n data: placeHolderIndexData,\n label: 'index-batch-buffer',\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST, // | BufferUsage.STATIC,\n shrinkToFit: false,\n });\n\n const stride = vertexSize * 4;\n\n super({\n attributes: {\n aPosition: {\n buffer: attributeBuffer,\n format: 'float32x2',\n stride,\n offset: 0,\n location: 1,\n },\n aUV: {\n buffer: attributeBuffer,\n format: 'float32x2',\n stride,\n offset: 2 * 4,\n location: 3,\n },\n aColor: {\n buffer: attributeBuffer,\n format: 'unorm8x4',\n stride,\n offset: 4 * 4,\n location: 0,\n },\n aTextureIdAndRound: {\n buffer: attributeBuffer,\n format: 'uint16x2',\n stride,\n offset: 5 * 4,\n location: 2,\n },\n },\n indexBuffer\n });\n }\n}\n\n","import type { BindResource } from './BindResource';\n\n/**\n * A bind group is a collection of resources that are bound together for use by a shader.\n * They are essentially a wrapper for the WebGPU BindGroup class. But with the added bonus\n * that WebGL can also work with them.\n * @see https://gpuweb.github.io/gpuweb/#dictdef-gpubindgroupdescriptor\n * @example\n * // Create a bind group with a single texture and sampler\n * const bindGroup = new BindGroup({\n * uTexture: texture.source,\n * uTexture: texture.style,\n * });\n *\n * Bind groups resources must implement the {@link BindResource} interface.\n * The following resources are supported:\n * - {@link TextureSource}\n * - {@link TextureStyle}\n * - {@link Buffer}\n * - {@link BufferResource}\n * - {@link UniformGroup}\n *\n * The keys in the bind group must correspond to the names of the resources in the GPU program.\n *\n * This bind group class will also watch for changes in its resources ensuring that the changes\n * are reflected in the WebGPU BindGroup.\n * @memberof rendering\n */\nexport class BindGroup\n{\n /** The resources that are bound together for use by a shader. */\n public resources: Record = Object.create(null);\n /**\n * a key used internally to match it up to a WebGPU Bindgroup\n * @internal\n * @ignore\n */\n public _key: string;\n private _dirty = true;\n\n /**\n * Create a new instance eof the Bind Group.\n * @param resources - The resources that are bound together for use by a shader.\n */\n constructor(resources?: Record)\n {\n let index = 0;\n\n for (const i in resources)\n {\n const resource: BindResource = resources[i];\n\n this.setResource(resource, index++);\n }\n\n this._updateKey();\n }\n\n /**\n * Updates the key if its flagged as dirty. This is used internally to\n * match this bind group to a WebGPU BindGroup.\n * @internal\n * @ignore\n */\n public _updateKey(): void\n {\n if (!this._dirty) return;\n\n this._dirty = false;\n\n const keyParts = [];\n let index = 0;\n\n // TODO - lets use big ints instead of strings...\n for (const i in this.resources)\n {\n // TODO make this consistent...\n keyParts[index++] = this.resources[i]._resourceId;\n }\n\n this._key = keyParts.join('|');\n }\n\n /**\n * Set a resource at a given index. this function will\n * ensure that listeners will be removed from the current resource\n * and added to the new resource.\n * @param resource - The resource to set.\n * @param index - The index to set the resource at.\n */\n public setResource(resource: BindResource, index: number): void\n {\n const currentResource = this.resources[index];\n\n if (resource === currentResource) return;\n\n if (currentResource)\n {\n resource.off?.('change', this.onResourceChange, this);\n }\n\n resource.on?.('change', this.onResourceChange, this);\n\n this.resources[index] = resource;\n this._dirty = true;\n }\n\n /**\n * Returns the resource at the current specified index.\n * @param index - The index of the resource to get.\n * @returns - The resource at the specified index.\n */\n public getResource(index: number): BindResource\n {\n return this.resources[index];\n }\n\n /**\n * Used internally to 'touch' each resource, to ensure that the GC\n * knows that all resources in this bind group are still being used.\n * @param tick - The current tick.\n * @internal\n * @ignore\n */\n public _touch(tick: number)\n {\n const resources = this.resources;\n\n for (const i in resources)\n {\n resources[i]._touched = tick;\n }\n }\n\n /** Destroys this bind group and removes all listeners. */\n public destroy()\n {\n const resources = this.resources;\n\n for (const i in resources)\n {\n const resource = resources[i];\n\n resource.off?.('change', this.onResourceChange, this);\n }\n\n this.resources = null;\n }\n\n protected onResourceChange(resource: BindResource)\n {\n this._dirty = true;\n\n // check if a resource has been destroyed, if it has then we need to destroy this bind group\n // using this bind group with a destroyed resource will cause the renderer to explode :)\n if (resource.destroyed)\n {\n // free up the resource\n const resources = this.resources;\n\n for (const i in resources)\n {\n if (resources[i] === resource)\n {\n resources[i] = null;\n }\n }\n }\n else\n {\n this._updateKey();\n }\n }\n}\n","export const MAX_TEXTURES = 16;\n","import { BindGroup } from '../../renderers/gpu/shader/BindGroup';\nimport { Texture } from '../../renderers/shared/texture/Texture';\nimport { MAX_TEXTURES } from '../shared/const';\n\nimport type { TextureSource } from '../../renderers/shared/texture/sources/TextureSource';\n\nconst cachedGroups: Record = {};\n\nexport function getTextureBatchBindGroup(textures: TextureSource[], size: number)\n{\n let uid = 0;\n\n for (let i = 0; i < size; i++)\n {\n uid = ((uid * 31) + textures[i].uid) >>> 0;\n }\n\n return cachedGroups[uid] || generateTextureBatchBindGroup(textures, uid);\n}\n\nfunction generateTextureBatchBindGroup(textures: TextureSource[], key: number): BindGroup\n{\n const bindGroupResources: Record = {};\n\n let bindIndex = 0;\n\n for (let i = 0; i < MAX_TEXTURES; i++)\n {\n const texture = i < textures.length ? textures[i] : Texture.EMPTY.source;\n\n bindGroupResources[bindIndex++] = texture.source;\n bindGroupResources[bindIndex++] = texture.style;\n }\n\n // pad out with empty textures\n const bindGroup = new BindGroup(bindGroupResources);\n\n cachedGroups[key] = bindGroup;\n\n return bindGroup;\n}\n\n","type TypedArray = Float32Array | Uint32Array | Int32Array | Uint8Array;\n\n/**\n * Flexible wrapper around `ArrayBuffer` that also provides typed array views on demand.\n * @memberof utils\n */\nexport class ViewableBuffer\n{\n /** The size of the buffer in bytes. */\n public size: number;\n\n /** Underlying `ArrayBuffer` that holds all the data and is of capacity `this.size`. */\n public rawBinaryData: ArrayBuffer;\n\n /** View on the raw binary data as a `Uint32Array`. */\n public uint32View: Uint32Array;\n\n /** View on the raw binary data as a `Float32Array`. */\n public float32View: Float32Array;\n public uint16View: Uint16Array;\n\n private _int8View: Int8Array;\n private _uint8View: Uint8Array;\n private _int16View: Int16Array;\n private _int32View: Int32Array;\n private _float64Array: Float64Array;\n private _bigUint64Array: BigUint64Array;\n\n /**\n * @param length - The size of the buffer in bytes.\n */\n constructor(length: number);\n\n /**\n * @param arrayBuffer - The source array buffer.\n */\n constructor(arrayBuffer: ArrayBuffer);\n\n constructor(sizeOrBuffer: number | ArrayBuffer | Uint8Array)\n {\n if (typeof sizeOrBuffer === 'number')\n {\n this.rawBinaryData = new ArrayBuffer(sizeOrBuffer);\n }\n else if (sizeOrBuffer instanceof Uint8Array)\n {\n this.rawBinaryData = sizeOrBuffer.buffer;\n }\n else\n {\n this.rawBinaryData = sizeOrBuffer;\n }\n\n this.uint32View = new Uint32Array(this.rawBinaryData);\n this.float32View = new Float32Array(this.rawBinaryData);\n\n this.size = this.rawBinaryData.byteLength;\n }\n\n /** View on the raw binary data as a `Int8Array`. */\n get int8View(): Int8Array\n {\n if (!this._int8View)\n {\n this._int8View = new Int8Array(this.rawBinaryData);\n }\n\n return this._int8View;\n }\n\n /** View on the raw binary data as a `Uint8Array`. */\n get uint8View(): Uint8Array\n {\n if (!this._uint8View)\n {\n this._uint8View = new Uint8Array(this.rawBinaryData);\n }\n\n return this._uint8View;\n }\n\n /** View on the raw binary data as a `Int16Array`. */\n get int16View(): Int16Array\n {\n if (!this._int16View)\n {\n this._int16View = new Int16Array(this.rawBinaryData);\n }\n\n return this._int16View;\n }\n\n /** View on the raw binary data as a `Int32Array`. */\n get int32View(): Int32Array\n {\n if (!this._int32View)\n {\n this._int32View = new Int32Array(this.rawBinaryData);\n }\n\n return this._int32View;\n }\n\n /** View on the raw binary data as a `Float64Array`. */\n get float64View(): Float64Array\n {\n if (!this._float64Array)\n {\n this._float64Array = new Float64Array(this.rawBinaryData);\n }\n\n return this._float64Array;\n }\n\n /** View on the raw binary data as a `BigUint64Array`. */\n get bigUint64View(): BigUint64Array\n {\n if (!this._bigUint64Array)\n {\n this._bigUint64Array = new BigUint64Array(this.rawBinaryData);\n }\n\n return this._bigUint64Array;\n }\n\n /**\n * Returns the view of the given type.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - typed array of given type\n */\n public view(type: string): TypedArray\n {\n return (this as any)[`${type}View`];\n }\n\n /** Destroys all buffer references. Do not use after calling this. */\n public destroy(): void\n {\n this.rawBinaryData = null;\n this._int8View = null;\n this._uint8View = null;\n this._int16View = null;\n this.uint16View = null;\n this._int32View = null;\n this.uint32View = null;\n this.float32View = null;\n }\n\n /**\n * Returns the size of the given type in bytes.\n * @param type - One of `int8`, `uint8`, `int16`,\n * `uint16`, `int32`, `uint32`, and `float32`.\n * @returns - size of the type in bytes\n */\n public static sizeOf(type: string): number\n {\n switch (type)\n {\n case 'int8':\n case 'uint8':\n return 1;\n case 'int16':\n case 'uint16':\n return 2;\n case 'int32':\n case 'uint32':\n case 'float32':\n return 4;\n default:\n throw new Error(`${type} isn't a valid view type`);\n }\n }\n}\n","/**\n * Copies from one buffer to another.\n * This is an optimised function that will use `Float64Array` window.\n * This means it can copy twice as fast!\n * @param sourceBuffer - the array buffer to copy from\n * @param destinationBuffer - the array buffer to copy to\n * @private\n */\nexport function fastCopy(sourceBuffer: ArrayBuffer, destinationBuffer: ArrayBuffer): void\n{\n const lengthDouble = (sourceBuffer.byteLength / 8) | 0;\n\n const sourceFloat64View = new Float64Array(sourceBuffer, 0, lengthDouble);\n const destinationFloat64View = new Float64Array(destinationBuffer, 0, lengthDouble);\n\n // Use set for faster copying\n destinationFloat64View.set(sourceFloat64View);\n\n // copying over the remaining bytes\n const remainingBytes = sourceBuffer.byteLength - (lengthDouble * 8);\n\n if (remainingBytes > 0)\n {\n const sourceUint8View = new Uint8Array(sourceBuffer, lengthDouble * 8, remainingBytes);\n const destinationUint8View = new Uint8Array(destinationBuffer, lengthDouble * 8, remainingBytes);\n\n // Direct copy for remaining bytes\n destinationUint8View.set(sourceUint8View);\n }\n}\n","/* eslint-disable @typescript-eslint/indent */\n/**\n * Various blend modes supported by Pixi\n * @memberof filters\n */\nexport type BLEND_MODES = 'inherit'\n| 'normal'\n| 'add'\n| 'multiply'\n| 'screen'\n| 'darken'\n| 'lighten'\n| 'erase'\n| 'color-dodge'\n| 'color-burn'\n| 'linear-burn'\n| 'linear-dodge'\n| 'linear-light'\n| 'hard-light'\n| 'soft-light'\n| 'pin-light'\n| 'difference'\n| 'exclusion'\n| 'overlay'\n// | 'hue'\n| 'saturation'\n| 'color'\n| 'luminosity'\n| 'normal-npm'\n| 'add-npm'\n| 'screen-npm'\n| 'none'\n| 'subtract'\n| 'divide'\n| 'vivid-light'\n| 'hard-mix'\n| 'negation';\n\n/**\n * The map of blend modes supported by Pixi\n * @memberof rendering\n */\nexport const BLEND_TO_NPM = {\n normal: 'normal-npm',\n add: 'add-npm',\n screen: 'screen-npm',\n};\n\n/**\n * The stencil operation to perform when using the stencil buffer\n * @memberof rendering\n */\nexport enum STENCIL_MODES\n{\n DISABLED = 0,\n RENDERING_MASK_ADD = 1,\n MASK_ACTIVE = 2,\n RENDERING_MASK_REMOVE = 3,\n NONE = 4,\n}\n\n/**\n * The culling mode to use. It can be either `none`, `front` or `back`.\n * @memberof rendering\n */\nexport type CULL_MODES = 'none' | 'back' | 'front';\n\n","import { type BLEND_MODES, BLEND_TO_NPM } from './const';\n\nimport type { TextureSource } from '../texture/sources/TextureSource';\n\n/**\n * Adjusts a blend mode for the current alpha mode. Returns the blend mode that works with that format.\n * eg 'normal' blend mode will return 'normal-npm' when rendering with premultiplied alpha.\n * and 'normal' if the texture is already premultiplied (the default)\n * @param blendMode - The blend mode to get the adjusted blend mode for.\n * @param textureSource - The texture to test the format of.\n * @returns - the blend mode that should be used to render this texture correctly based on its alphaMode\n */\nexport function getAdjustedBlendModeBlend(blendMode: BLEND_MODES, textureSource: TextureSource): BLEND_MODES\n{\n if (textureSource.alphaMode === 'no-premultiply-alpha')\n {\n return (BLEND_TO_NPM[blendMode as keyof typeof BLEND_TO_NPM] || blendMode) as BLEND_MODES;\n }\n\n return blendMode;\n}\n","import type { TextureSource } from '../../renderers/shared/texture/sources/TextureSource';\n\n/**\n * Used by the batcher to build texture batches. Holds list of textures and their respective locations.\n * @memberof rendering\n */\nexport class BatchTextureArray\n{\n /** Inside textures array. */\n public textures: TextureSource[];\n\n /** Respective locations for textures. */\n public ids: Record = Object.create(null);\n\n /** Number of filled elements. */\n public count: number;\n\n constructor()\n {\n this.textures = [];\n this.count = 0;\n }\n\n /** Clear the textures and their locations. */\n public clear(): void\n {\n for (let i = 0; i < this.count; i++)\n {\n const t = this.textures[i];\n\n this.textures[i] = null;\n this.ids[t.uid] = null;\n }\n\n this.count = 0;\n }\n}\n","import { uid } from '../../../utils/data/uid';\nimport { ViewableBuffer } from '../../../utils/data/ViewableBuffer';\nimport { fastCopy } from '../../renderers/shared/buffer/utils/fastCopy';\nimport { type BLEND_MODES } from '../../renderers/shared/state/const';\nimport { getAdjustedBlendModeBlend } from '../../renderers/shared/state/getAdjustedBlendModeBlend';\nimport { BatchTextureArray } from './BatchTextureArray';\nimport { MAX_TEXTURES } from './const';\n\nimport type { BindGroup } from '../../renderers/gpu/shader/BindGroup';\nimport type { IndexBufferArray } from '../../renderers/shared/geometry/Geometry';\nimport type { Instruction } from '../../renderers/shared/instructions/Instruction';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { Texture } from '../../renderers/shared/texture/Texture';\n\nexport type BatchAction = 'startBatch' | 'renderBatch';\n\n/**\n * A batch pool is used to store batches when they are not currently in use.\n * @memberof rendering\n */\nexport class Batch implements Instruction\n{\n public renderPipeId = 'batch';\n public action: BatchAction = 'startBatch';\n\n // TODO - eventually this could be useful for flagging batches as dirty and then only rebuilding those ones\n // public elementStart = 0;\n // public elementSize = 0;\n\n // for drawing..\n public start = 0;\n public size = 0;\n public textures: BatchTextureArray;\n\n public blendMode: BLEND_MODES = 'normal';\n\n public canBundle = true;\n\n /**\n * breaking rules slightly here in the name of performance..\n * storing references to these bindgroups here is just faster for access!\n * keeps a reference to the GPU bind group to set when rendering this batch for WebGPU. Will be null is using WebGL.\n */\n public gpuBindGroup: GPUBindGroup;\n /**\n * breaking rules slightly here in the name of performance..\n * storing references to these bindgroups here is just faster for access!\n * keeps a reference to the bind group to set when rendering this batch for WebGPU. Will be null if using WebGl.\n */\n public bindGroup: BindGroup;\n\n public batcher: Batcher;\n\n public destroy()\n {\n this.textures = null;\n this.gpuBindGroup = null;\n this.bindGroup = null;\n this.batcher = null;\n }\n}\n\nexport interface BatchableObject\n{\n indexStart: number;\n\n packAttributes: (\n float32View: Float32Array,\n uint32View: Uint32Array,\n index: number,\n textureId: number,\n ) => void;\n packIndex: (indexBuffer: IndexBufferArray, index: number, indicesOffset: number) => void;\n\n texture: Texture;\n blendMode: BLEND_MODES;\n vertexSize: number;\n indexSize: number;\n\n // stored for efficient updating..\n textureId: number;\n location: number; // location in the buffer\n batcher: Batcher;\n batch: Batch;\n\n roundPixels: 0 | 1;\n}\n\nlet BATCH_TICK = 0;\n\n/**\n * The options for the batcher.\n * @ignore\n */\nexport interface BatcherOptions\n{\n /** The size of the vertex buffer. */\n vertexSize?: number;\n /** The size of the index buffer. */\n indexSize?: number;\n}\n\n/**\n * A batcher is used to batch together objects with the same texture.\n * @ignore\n */\nexport class Batcher\n{\n public static defaultOptions: BatcherOptions = {\n vertexSize: 4,\n indexSize: 6,\n };\n\n public uid = uid('batcher');\n public attributeBuffer: ViewableBuffer;\n public indexBuffer: IndexBufferArray;\n\n public attributeSize: number;\n public indexSize: number;\n public elementSize: number;\n public elementStart: number;\n\n public dirty = true;\n\n public batchIndex = 0;\n public batches: Batch[] = [];\n\n // specifics.\n private readonly _vertexSize: number = 6;\n\n private _elements: BatchableObject[] = [];\n\n private readonly _batchPool: Batch[] = [];\n private _batchPoolIndex = 0;\n private readonly _textureBatchPool: BatchTextureArray[] = [];\n private _textureBatchPoolIndex = 0;\n private _batchIndexStart: number;\n private _batchIndexSize: number;\n\n constructor(options: BatcherOptions = {})\n {\n options = { ...Batcher.defaultOptions, ...options };\n\n const { vertexSize, indexSize } = options;\n\n this.attributeBuffer = new ViewableBuffer(vertexSize * this._vertexSize * 4);\n\n this.indexBuffer = new Uint16Array(indexSize);\n }\n\n public begin()\n {\n this.batchIndex = 0;\n this.elementSize = 0;\n this.elementStart = 0;\n this.indexSize = 0;\n this.attributeSize = 0;\n this._batchPoolIndex = 0;\n this._textureBatchPoolIndex = 0;\n this._batchIndexStart = 0;\n this._batchIndexSize = 0;\n\n this.dirty = true;\n }\n\n public add(batchableObject: BatchableObject)\n {\n this._elements[this.elementSize++] = batchableObject;\n\n batchableObject.indexStart = this.indexSize;\n batchableObject.location = this.attributeSize;\n batchableObject.batcher = this;\n\n this.indexSize += batchableObject.indexSize;\n this.attributeSize += ((batchableObject.vertexSize) * this._vertexSize);\n }\n\n public checkAndUpdateTexture(batchableObject: BatchableObject, texture: Texture): boolean\n {\n const textureId = batchableObject.batch.textures.ids[texture._source.uid];\n\n // TODO could try to be a bit smarter if there are spare textures..\n // but need to figure out how to alter the bind groups too..\n if (!textureId && textureId !== 0) return false;\n\n batchableObject.textureId = textureId;\n batchableObject.texture = texture;\n\n return true;\n }\n\n public updateElement(batchableObject: BatchableObject)\n {\n this.dirty = true;\n\n batchableObject.packAttributes(\n this.attributeBuffer.float32View,\n this.attributeBuffer.uint32View,\n batchableObject.location, batchableObject.textureId);\n }\n\n /**\n * breaks the batcher. This happens when a batch gets too big,\n * or we need to switch to a different type of rendering (a filter for example)\n * @param instructionSet\n */\n public break(instructionSet: InstructionSet)\n {\n // ++BATCH_TICK;\n const elements = this._elements;\n\n let textureBatch = this._textureBatchPool[this._textureBatchPoolIndex++] || new BatchTextureArray();\n\n textureBatch.clear();\n\n // length 0??!! (we broke without ading anything)\n if (!elements[this.elementStart]) return;\n\n const firstElement = elements[this.elementStart];\n let blendMode = getAdjustedBlendModeBlend(firstElement.blendMode, firstElement.texture._source);\n\n if (this.attributeSize * 4 > this.attributeBuffer.size)\n {\n this._resizeAttributeBuffer(this.attributeSize * 4);\n }\n\n if (this.indexSize > this.indexBuffer.length)\n {\n this._resizeIndexBuffer(this.indexSize);\n }\n\n const f32 = this.attributeBuffer.float32View;\n const u32 = this.attributeBuffer.uint32View;\n const iBuffer = this.indexBuffer;\n\n let size = this._batchIndexSize;\n let start = this._batchIndexStart;\n\n let action: BatchAction = 'startBatch';\n let batch = this._batchPool[this._batchPoolIndex++] || new Batch();\n\n for (let i = this.elementStart; i < this.elementSize; ++i)\n {\n const element = elements[i];\n\n elements[i] = null;\n\n const texture = element.texture;\n const source = texture._source;\n\n const adjustedBlendMode = getAdjustedBlendModeBlend(element.blendMode, source);\n\n const blendModeChange = blendMode !== adjustedBlendMode;\n\n if (source._batchTick === BATCH_TICK && !blendModeChange)\n {\n element.textureId = source._textureBindLocation;\n\n size += element.indexSize;\n element.packAttributes(f32, u32, element.location, element.textureId);\n element.packIndex(iBuffer, element.indexStart, element.location / this._vertexSize);\n\n element.batch = batch;\n\n continue;\n }\n\n source._batchTick = BATCH_TICK;\n\n if (textureBatch.count >= MAX_TEXTURES || blendModeChange)\n {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n instructionSet,\n action\n );\n\n action = 'renderBatch';\n start = size;\n // create a batch...\n blendMode = adjustedBlendMode;\n\n textureBatch = this._textureBatchPool[this._textureBatchPoolIndex++] || new BatchTextureArray();\n textureBatch.clear();\n\n batch = this._batchPool[this._batchPoolIndex++] || new Batch();\n ++BATCH_TICK;\n }\n\n element.textureId = source._textureBindLocation = textureBatch.count;\n textureBatch.ids[source.uid] = textureBatch.count;\n textureBatch.textures[textureBatch.count++] = source;\n element.batch = batch;\n\n size += element.indexSize;\n element.packAttributes(f32, u32, element.location, element.textureId);\n element.packIndex(iBuffer, element.indexStart, element.location / this._vertexSize);\n }\n\n if (textureBatch.count > 0)\n {\n this._finishBatch(\n batch,\n start,\n size - start,\n textureBatch,\n blendMode,\n instructionSet,\n action\n );\n\n start = size;\n ++BATCH_TICK;\n }\n\n this.elementStart = this.elementSize;\n this._batchIndexStart = start;\n this._batchIndexSize = size;\n }\n\n private _finishBatch(\n batch: Batch,\n indexStart: number,\n indexSize: number,\n textureBatch: BatchTextureArray,\n blendMode: BLEND_MODES,\n instructionSet: InstructionSet,\n action: BatchAction\n )\n {\n batch.gpuBindGroup = null;\n batch.action = action;\n\n batch.batcher = this;\n batch.textures = textureBatch;\n batch.blendMode = blendMode;\n\n batch.start = indexStart;\n batch.size = indexSize;\n\n ++BATCH_TICK;\n\n instructionSet.add(batch);\n }\n\n public finish(instructionSet: InstructionSet)\n {\n this.break(instructionSet);\n }\n\n /**\n * Resizes the attribute buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n public ensureAttributeBuffer(size: number)\n {\n if (size * 4 <= this.attributeBuffer.size) return;\n\n this._resizeAttributeBuffer(size * 4);\n }\n\n /**\n * Resizes the index buffer to the given size (1 = 1 float32)\n * @param size - the size in vertices to ensure (not bytes!)\n */\n public ensureIndexBuffer(size: number)\n {\n if (size <= this.indexBuffer.length) return;\n\n this._resizeIndexBuffer(size);\n }\n\n private _resizeAttributeBuffer(size: number)\n {\n const newSize = Math.max(size, this.attributeBuffer.size * 2);\n\n const newArrayBuffer = new ViewableBuffer(newSize);\n\n fastCopy(this.attributeBuffer.rawBinaryData, newArrayBuffer.rawBinaryData);\n\n this.attributeBuffer = newArrayBuffer;\n }\n\n private _resizeIndexBuffer(size: number)\n {\n const indexBuffer = this.indexBuffer;\n\n let newSize = Math.max(size, indexBuffer.length * 1.5);\n\n newSize += newSize % 2;\n\n // this, is technically not 100% accurate, as really we should\n // be checking the maximum value in the buffer. This approximation\n // does the trick though...\n\n // make sure buffer is always an even number..\n const newIndexBuffer = (newSize > 65535) ? new Uint32Array(newSize) : new Uint16Array(newSize);\n\n if (newIndexBuffer.BYTES_PER_ELEMENT !== indexBuffer.BYTES_PER_ELEMENT)\n {\n for (let i = 0; i < indexBuffer.length; i++)\n {\n newIndexBuffer[i] = indexBuffer[i];\n }\n }\n else\n {\n fastCopy(indexBuffer.buffer, newIndexBuffer.buffer);\n }\n\n this.indexBuffer = newIndexBuffer;\n }\n\n public destroy()\n {\n for (let i = 0; i < this.batches.length; i++)\n {\n this.batches[i].destroy();\n }\n\n this.batches = null;\n\n for (let i = 0; i < this._elements.length; i++)\n {\n this._elements[i].batch = null;\n }\n\n this._elements = null;\n\n this.indexBuffer = null;\n\n this.attributeBuffer.destroy();\n this.attributeBuffer = null;\n }\n}\n\n","import type { Matrix } from '../../../../../maths/matrix/Matrix';\n\n/**\n * Takes a vertices array and a matrix and transforms the vertices based on the matrix.\n * this out put is written to the uvs array\n * @param vertices - the vertices to calculate uvs from\n * @param verticesStride - the stride of the vertice\n * @param verticesOffset - the offset of the vertices\n * @param uvs - the uvs to fill\n * @param uvsOffset - the offset of the uvs\n * @param uvsStride - the stride of the uvs\n * @param size - the size of the vertices\n * @param matrix - the matrix to apply to the uvs\n * @memberof rendering\n */\nexport function buildUvs(\n vertices: number[],\n verticesStride: number,\n verticesOffset: number,\n\n uvs: number[],\n uvsOffset: number,\n uvsStride: number,\n\n size: number,\n matrix: Matrix = null\n): void\n{\n let index = 0;\n\n verticesOffset *= verticesStride;\n uvsOffset *= uvsStride;\n\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n\n while (index < size)\n {\n const x = vertices[verticesOffset];\n const y = vertices[verticesOffset + 1];\n\n uvs[uvsOffset] = (a * x) + (c * y) + tx;\n uvs[uvsOffset + 1] = (b * x) + (d * y) + ty;\n\n uvsOffset += uvsStride;\n\n verticesOffset += verticesStride;\n\n index++;\n }\n}\n\nexport function buildSimpleUvs(\n uvs: number[],\n uvsOffset: number,\n uvsStride: number,\n size: number,\n)\n{\n let index = 0;\n\n uvsOffset *= uvsStride;\n\n while (index < size)\n {\n uvs[uvsOffset] = 0;\n uvs[uvsOffset + 1] = 0;\n\n uvsOffset += uvsStride;\n\n index++;\n }\n}\n","import type { Matrix } from '../../../../../maths/matrix/Matrix';\n\n/**\n * Transforms the vertices in an array with the given matrix.\n * @param vertices - the vertices to transform\n * @param m - the matrix to apply to the vertices\n * @param offset - the offset of the vertices (defaults to 0)\n * @param stride - the stride of the vertices (defaults to 2)\n * @param size - the size of the vertices (defaults to vertices.length / stride - offset)\n * @memberof rendering\n */\nexport function transformVertices(vertices: number[], m: Matrix, offset?: number, stride?: number, size?: number)\n{\n const a = m.a;\n const b = m.b;\n const c = m.c;\n const d = m.d;\n const tx = m.tx;\n const ty = m.ty;\n\n offset = offset || 0;\n stride = stride || 2;\n size = size || (vertices.length / stride) - offset;\n\n let index = offset * stride;\n\n for (let i = 0; i < size; i++)\n {\n const x = vertices[index];\n const y = vertices[index + 1];\n\n vertices[index] = (a * x) + (c * y) + tx;\n vertices[index + 1] = (b * x) + (d * y) + ty;\n\n index += stride;\n }\n}\n","export function multiplyHexColors(color1: number, color2: number): number\n{\n if (color1 === 0xFFFFFF || !color2) return color2;\n if (color2 === 0xFFFFFF || !color1) return color1;\n\n const r1 = (color1 >> 16) & 0xFF;\n const g1 = (color1 >> 8) & 0xFF;\n const b1 = color1 & 0xFF;\n\n const r2 = (color2 >> 16) & 0xFF;\n const g2 = (color2 >> 8) & 0xFF;\n const b2 = color2 & 0xFF;\n\n const r = (r1 * r2) / 255;\n const g = (g1 * g2) / 255;\n const b = (b1 * b2) / 255;\n\n return (r << 16) + (g << 8) + b;\n}\n","import { multiplyHexColors } from '../../container/utils/multiplyHexColors';\n\nimport type { Batch, BatchableObject, Batcher } from '../../../rendering/batcher/shared/Batcher';\nimport type { IndexBufferArray } from '../../../rendering/renderers/shared/geometry/Geometry';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Graphics } from './Graphics';\n\n/**\n * A batchable graphics object.\n * @ignore\n */\nexport class BatchableGraphics implements BatchableObject\n{\n public indexStart: number;\n public textureId: number;\n public texture: Texture;\n public location: number;\n public batcher: Batcher = null;\n public batch: Batch = null;\n public renderable: Graphics;\n public indexOffset: number;\n public indexSize: number;\n public vertexOffset: number;\n public vertexSize: number;\n public color: number;\n public alpha: number;\n public applyTransform = true;\n public roundPixels: 0 | 1 = 0;\n\n public geometryData: { vertices: number[]; uvs: number[]; indices: number[]; };\n\n get blendMode()\n {\n if (this.applyTransform)\n {\n return this.renderable.groupBlendMode;\n }\n\n return 'normal';\n }\n\n public packIndex(indexBuffer: IndexBufferArray, index: number, indicesOffset: number)\n {\n const indices = this.geometryData.indices;\n\n for (let i = 0; i < this.indexSize; i++)\n {\n indexBuffer[index++] = indices[i + this.indexOffset] + indicesOffset - this.vertexOffset;\n }\n }\n\n public packAttributes(\n float32View: Float32Array,\n uint32View: Uint32Array,\n index: number,\n textureId: number\n )\n {\n const geometry = this.geometryData;\n const graphics = this.renderable;\n\n const positions = geometry.vertices;\n const uvs = geometry.uvs;\n\n const offset = this.vertexOffset * 2;\n const vertSize = (this.vertexOffset + this.vertexSize) * 2;\n\n const rgb = this.color;\n const bgr = (rgb >> 16) | (rgb & 0xff00) | ((rgb & 0xff) << 16);\n\n if (this.applyTransform)\n {\n const argb = multiplyHexColors(bgr, graphics.groupColor)\n + ((this.alpha * graphics.groupAlpha * 255) << 24);\n\n const wt = graphics.groupTransform;\n const textureIdAndRound = (textureId << 16) | (this.roundPixels & 0xFFFF);\n\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n\n for (let i = offset; i < vertSize; i += 2)\n {\n const x = positions[i];\n const y = positions[i + 1];\n\n float32View[index] = (a * x) + (c * y) + tx;\n float32View[index + 1] = (b * x) + (d * y) + ty;\n\n float32View[index + 2] = uvs[i];\n float32View[index + 3] = uvs[i + 1];\n\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n\n index += 6;\n }\n }\n else\n {\n const argb = bgr + ((this.alpha * 255) << 24);\n\n for (let i = offset; i < vertSize; i += 2)\n {\n float32View[index] = positions[i];\n float32View[index + 1] = positions[i + 1];\n\n float32View[index + 2] = uvs[i];\n float32View[index + 3] = uvs[i + 1];\n\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureId << 16;\n\n index += 6;\n }\n }\n }\n\n // TODO rename to vertexSize\n get vertSize()\n {\n return this.vertexSize;\n }\n\n public copyTo(gpuBuffer: BatchableGraphics)\n {\n gpuBuffer.indexOffset = this.indexOffset;\n gpuBuffer.indexSize = this.indexSize;\n\n gpuBuffer.vertexOffset = this.vertexOffset;\n gpuBuffer.vertexSize = this.vertexSize;\n\n gpuBuffer.color = this.color;\n gpuBuffer.alpha = this.alpha;\n\n gpuBuffer.texture = this.texture;\n gpuBuffer.geometryData = this.geometryData;\n }\n\n public reset()\n {\n this.applyTransform = true;\n }\n}\n","import type { Circle } from '../../../../maths/shapes/Circle';\nimport type { Ellipse } from '../../../../maths/shapes/Ellipse';\nimport type { RoundedRectangle } from '../../../../maths/shapes/RoundedRectangle';\nimport type { ShapeBuildCommand } from './ShapeBuildCommand';\n\ntype RoundedShape = Circle | Ellipse | RoundedRectangle;\n\n/**\n * Builds a rectangle to draw\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n */\nexport const buildCircle: ShapeBuildCommand = {\n\n build(shape: RoundedShape, points: number[])\n {\n let x;\n let y;\n let dx;\n let dy;\n\n let rx;\n let ry;\n\n if (shape.type === 'circle')\n {\n const circle = shape as Circle;\n\n x = circle.x;\n y = circle.y;\n rx = ry = circle.radius;\n dx = dy = 0;\n }\n\n else if (shape.type === 'ellipse')\n {\n const ellipse = shape as Ellipse;\n\n x = ellipse.x;\n y = ellipse.y;\n rx = ellipse.halfWidth;\n ry = ellipse.halfHeight;\n dx = dy = 0;\n }\n else\n {\n const roundedRect = shape as RoundedRectangle;\n const halfWidth = roundedRect.width / 2;\n const halfHeight = roundedRect.height / 2;\n\n x = roundedRect.x + halfWidth;\n y = roundedRect.y + halfHeight;\n rx = ry = Math.max(0, Math.min(roundedRect.radius, Math.min(halfWidth, halfHeight)));\n dx = halfWidth - rx;\n dy = halfHeight - ry;\n }\n\n if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0))\n {\n return points;\n }\n\n // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029\n const n = Math.ceil(2.3 * Math.sqrt(rx + ry));\n const m = (n * 8) + (dx ? 4 : 0) + (dy ? 4 : 0);\n\n if (m === 0)\n {\n return points;\n }\n\n if (n === 0)\n {\n points[0] = points[6] = x + dx;\n points[1] = points[3] = y + dy;\n points[2] = points[4] = x - dx;\n points[5] = points[7] = y - dy;\n\n return points;\n }\n\n let j1 = 0;\n let j2 = (n * 4) + (dx ? 2 : 0) + 2;\n let j3 = j2;\n let j4 = m;\n\n let x0 = dx + rx;\n let y0 = dy;\n let x1 = x + x0;\n let x2 = x - x0;\n let y1 = y + y0;\n\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n\n if (dy)\n {\n const y2 = y - y0;\n\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n\n for (let i = 1; i < n; i++)\n {\n const a = Math.PI / 2 * (i / n);\n const x0 = dx + (Math.cos(a) * rx);\n const y0 = dy + (Math.sin(a) * ry);\n const x1 = x + x0;\n const x2 = x - x0;\n const y1 = y + y0;\n const y2 = y - y0;\n\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j2] = y1;\n points[--j2] = x2;\n points[j3++] = x2;\n points[j3++] = y2;\n points[--j4] = y2;\n points[--j4] = x1;\n }\n\n x0 = dx;\n y0 = dy + ry;\n x1 = x + x0;\n x2 = x - x0;\n y1 = y + y0;\n const y2 = y - y0;\n\n points[j1++] = x1;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x1;\n\n if (dx)\n {\n points[j1++] = x2;\n points[j1++] = y1;\n points[--j4] = y2;\n points[--j4] = x2;\n }\n\n return points;\n },\n\n triangulate(points, vertices, verticesStride, verticesOffset, indices, indicesOffset)\n {\n if (points.length === 0)\n {\n return;\n }\n\n // Compute center (average of all points)\n let centerX = 0; let\n centerY = 0;\n\n for (let i = 0; i < points.length; i += 2)\n {\n centerX += points[i];\n centerY += points[i + 1];\n }\n centerX /= (points.length / 2);\n centerY /= (points.length / 2);\n\n // Set center vertex\n let count = verticesOffset;\n\n vertices[count * verticesStride] = centerX;\n vertices[(count * verticesStride) + 1] = centerY;\n const centerIndex = count++;\n\n // Set edge vertices and indices\n for (let i = 0; i < points.length; i += 2)\n {\n vertices[count * verticesStride] = points[i];\n vertices[(count * verticesStride) + 1] = points[i + 1];\n\n if (i > 0)\n { // Skip first point for indices\n indices[indicesOffset++] = count;\n indices[indicesOffset++] = centerIndex;\n indices[indicesOffset++] = count - 1;\n }\n count++;\n }\n\n // Connect last point to the first edge point\n indices[indicesOffset++] = centerIndex + 1;\n indices[indicesOffset++] = centerIndex;\n indices[indicesOffset++] = count - 1;\n }\n\n};\n","export type LineCap = 'butt' | 'round' | 'square';\nexport type LineJoin = 'round' | 'bevel' | 'miter';\n\nexport const closePointEps = 1e-4;\nexport const curveEps = 0.0001;\n","export function getOrientationOfPoints(points: number[]): number\n{\n const m = points.length;\n\n if (m < 6)\n {\n return 1;\n }\n\n let area = 0;\n\n for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2)\n {\n const x2 = points[i];\n const y2 = points[i + 1];\n\n area += (x2 - x1) * (y2 + y1);\n\n x1 = x2;\n y1 = y2;\n }\n\n if (area < 0)\n {\n return -1;\n }\n\n return 1;\n}\n","import { Point } from '../../../../maths/point/Point';\nimport { closePointEps, curveEps } from '../const';\nimport { getOrientationOfPoints } from '../utils/getOrientationOfPoints';\n\nimport type { StrokeStyle } from '../GraphicsContext';\n\n/**\n * Buffers vertices to draw a square cap.\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n * @param {number} x - X-coord of end point\n * @param {number} y - Y-coord of end point\n * @param {number} nx - X-coord of line normal pointing inside\n * @param {number} ny - Y-coord of line normal pointing inside\n * @param {number} innerWeight - Weight of inner points\n * @param {number} outerWeight - Weight of outer points\n * @param {boolean} clockwise - Whether the cap is drawn clockwise\n * @param {Array} verts - vertex buffer\n * @returns {number} - no. of vertices pushed\n */\nfunction square(\n x: number,\n y: number,\n nx: number,\n ny: number,\n innerWeight: number,\n outerWeight: number,\n clockwise: boolean, /* rotation for square (true at left end, false at right end) */\n verts: Array\n): number\n{\n const ix = x - (nx * innerWeight);\n const iy = y - (ny * innerWeight);\n const ox = x + (nx * outerWeight);\n const oy = y + (ny * outerWeight);\n\n /* Rotate nx,ny for extension vector */\n let exx; let\n eyy;\n\n if (clockwise)\n {\n exx = ny;\n eyy = -nx;\n }\n else\n {\n exx = -ny;\n eyy = nx;\n }\n\n /* [i|0]x,y extended at cap */\n const eix = ix + exx;\n const eiy = iy + eyy;\n const eox = ox + exx;\n const eoy = oy + eyy;\n\n /* Square itself must be inserted clockwise*/\n verts.push(eix, eiy);\n verts.push(eox, eoy);\n\n return 2;\n}\n\n/**\n * Buffers vertices to draw an arc at the line joint or cap.\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n * @param {number} cx - X-coord of center\n * @param {number} cy - Y-coord of center\n * @param {number} sx - X-coord of arc start\n * @param {number} sy - Y-coord of arc start\n * @param {number} ex - X-coord of arc end\n * @param {number} ey - Y-coord of arc end\n * @param {Array[]} verts - buffer of vertices\n * @param {boolean} clockwise - orientation of vertices\n * @returns {number} - no. of vertices pushed\n */\nfunction round(\n cx: number,\n cy: number,\n sx: number,\n sy: number,\n ex: number,\n ey: number,\n verts: number[],\n clockwise: boolean, /* if not cap, then clockwise is turn of joint, otherwise rotation from angle0 to angle1 */\n): number\n{\n const cx2p0x = sx - cx;\n const cy2p0y = sy - cy;\n\n let angle0 = Math.atan2(cx2p0x, cy2p0y);\n let angle1 = Math.atan2(ex - cx, ey - cy);\n\n if (clockwise && angle0 < angle1)\n {\n angle0 += Math.PI * 2;\n }\n else if (!clockwise && angle0 > angle1)\n {\n angle1 += Math.PI * 2;\n }\n\n let startAngle = angle0;\n const angleDiff = angle1 - angle0;\n const absAngleDiff = Math.abs(angleDiff);\n\n const radius = Math.sqrt((cx2p0x * cx2p0x) + (cy2p0y * cy2p0y));\n const segCount = ((15 * absAngleDiff * Math.sqrt(radius) / Math.PI) >> 0) + 1;\n const angleInc = angleDiff / segCount;\n\n startAngle += angleInc;\n\n if (clockwise)\n {\n verts.push(cx, cy);\n verts.push(sx, sy);\n\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc)\n {\n verts.push(cx, cy);\n verts.push(cx + ((Math.sin(angle) * radius)),\n cy + ((Math.cos(angle) * radius)));\n }\n\n verts.push(cx, cy);\n verts.push(ex, ey);\n }\n else\n {\n verts.push(sx, sy);\n verts.push(cx, cy);\n\n for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc)\n {\n verts.push(cx + ((Math.sin(angle) * radius)),\n cy + ((Math.cos(angle) * radius)));\n verts.push(cx, cy);\n }\n\n verts.push(ex, ey);\n verts.push(cx, cy);\n }\n\n return segCount * 2;\n}\n\n/**\n * Builds a line to draw using the polygon method.\n * @param points\n * @param lineStyle\n * @param flipAlignment\n * @param closed\n * @param vertices\n * @param _verticesStride\n * @param _verticesOffset\n * @param indices\n * @param _indicesOffset\n */\nexport function buildLine(\n points: number[],\n lineStyle: StrokeStyle,\n flipAlignment: boolean,\n closed: boolean,\n // alignment:number,\n\n vertices: number[],\n _verticesStride: number,\n _verticesOffset: number,\n\n indices: number[],\n _indicesOffset: number,\n\n): void\n{\n // const shape = graphicsData.shape as Polygon;\n // let points = graphicsData.points || shape.points.slice();\n const eps = closePointEps;\n\n if (points.length === 0)\n {\n return;\n }\n\n const style = lineStyle;\n\n let alignment = style.alignment;\n\n if (lineStyle.alignment !== 0.5)\n {\n // rotate the points!\n let orientation = getOrientationOfPoints(points);\n\n if (flipAlignment)orientation *= -1;\n\n alignment = ((alignment - 0.5) * orientation) + 0.5;\n }\n\n // get first and last point.. figure out the middle!\n const firstPoint = new Point(points[0], points[1]);\n const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n const closedShape = closed;\n const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps\n && Math.abs(firstPoint.y - lastPoint.y) < eps;\n\n // if the first point is the last point - gonna have issues :)\n if (closedShape)\n {\n // need to clone as we are going to slightly modify the shape..\n points = points.slice();\n\n if (closedPath)\n {\n points.pop();\n points.pop();\n lastPoint.set(points[points.length - 2], points[points.length - 1]);\n }\n\n const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n\n points.unshift(midPointX, midPointY);\n points.push(midPointX, midPointY);\n }\n\n const verts = vertices;\n\n const length = points.length / 2;\n let indexCount = points.length;\n const indexStart = verts.length / 2;\n\n // Max. inner and outer width\n const width = style.width / 2;\n const widthSquared = width * width;\n const miterLimitSquared = style.miterLimit * style.miterLimit;\n\n /* Line segments of interest where (x1,y1) forms the corner. */\n let x0 = points[0];\n let y0 = points[1];\n let x1 = points[2];\n let y1 = points[3];\n let x2 = 0;\n let y2 = 0;\n\n /* perp[?](x|y) = the line normal with magnitude lineWidth. */\n let perpX = -(y0 - y1);\n let perpY = x0 - x1;\n let perp1x = 0;\n let perp1y = 0;\n\n let dist = Math.sqrt((perpX * perpX) + (perpY * perpY));\n\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n\n const ratio = alignment;// 0.5;\n const innerWeight = (1 - ratio) * 2;\n const outerWeight = ratio * 2;\n\n if (!closedShape)\n {\n if (style.cap === 'round')\n {\n indexCount += round(\n x0 - (perpX * (innerWeight - outerWeight) * 0.5),\n y0 - (perpY * (innerWeight - outerWeight) * 0.5),\n x0 - (perpX * innerWeight),\n y0 - (perpY * innerWeight),\n x0 + (perpX * outerWeight),\n y0 + (perpY * outerWeight),\n verts,\n true,\n ) + 2;\n }\n else if (style.cap === 'square')\n {\n indexCount += square(x0, y0, perpX, perpY, innerWeight, outerWeight, true, verts);\n }\n }\n\n // Push first point (below & above vertices)\n verts.push(\n x0 - (perpX * innerWeight),\n y0 - (perpY * innerWeight));\n verts.push(\n x0 + (perpX * outerWeight),\n y0 + (perpY * outerWeight));\n\n for (let i = 1; i < length - 1; ++i)\n {\n x0 = points[(i - 1) * 2];\n y0 = points[((i - 1) * 2) + 1];\n\n x1 = points[i * 2];\n y1 = points[(i * 2) + 1];\n\n x2 = points[(i + 1) * 2];\n y2 = points[((i + 1) * 2) + 1];\n\n perpX = -(y0 - y1);\n perpY = x0 - x1;\n\n dist = Math.sqrt((perpX * perpX) + (perpY * perpY));\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n\n perp1x = -(y1 - y2);\n perp1y = x1 - x2;\n\n dist = Math.sqrt((perp1x * perp1x) + (perp1y * perp1y));\n perp1x /= dist;\n perp1y /= dist;\n perp1x *= width;\n perp1y *= width;\n\n /* d[x|y](0|1) = the component displacement between points p(0,1|1,2) */\n const dx0 = x1 - x0;\n const dy0 = y0 - y1;\n const dx1 = x1 - x2;\n const dy1 = y2 - y1;\n\n /* +ve if internal angle < 90 degree, -ve if internal angle > 90 degree. */\n const dot = (dx0 * dx1) + (dy0 * dy1);\n /* +ve if internal angle counterclockwise, -ve if internal angle clockwise. */\n const cross = (dy0 * dx1) - (dy1 * dx0);\n const clockwise = (cross < 0);\n\n /* Going nearly parallel? */\n /* atan(0.001) ~= 0.001 rad ~= 0.057 degree */\n if (Math.abs(cross) < 0.001 * Math.abs(dot))\n {\n verts.push(\n x1 - (perpX * innerWeight),\n y1 - (perpY * innerWeight));\n verts.push(\n x1 + (perpX * outerWeight),\n y1 + (perpY * outerWeight));\n\n /* 180 degree corner? */\n if (dot >= 0)\n {\n if (style.join === 'round')\n {\n indexCount += round(\n x1, y1,\n x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n verts, false) + 4;\n }\n else\n {\n indexCount += 2;\n }\n\n verts.push(\n x1 - (perp1x * outerWeight),\n y1 - (perp1y * outerWeight));\n verts.push(\n x1 + (perp1x * innerWeight),\n y1 + (perp1y * innerWeight));\n }\n\n continue;\n }\n\n /* p[x|y] is the miter point. pDist is the distance between miter point and p1. */\n const c1 = ((-perpX + x0) * (-perpY + y1)) - ((-perpX + x1) * (-perpY + y0));\n const c2 = ((-perp1x + x2) * (-perp1y + y1)) - ((-perp1x + x1) * (-perp1y + y2));\n const px = ((dx0 * c2) - (dx1 * c1)) / cross;\n const py = ((dy1 * c1) - (dy0 * c2)) / cross;\n const pDist = ((px - x1) * (px - x1)) + ((py - y1) * (py - y1));\n\n /* Inner miter point */\n const imx = x1 + ((px - x1) * innerWeight);\n const imy = y1 + ((py - y1) * innerWeight);\n /* Outer miter point */\n const omx = x1 - ((px - x1) * outerWeight);\n const omy = y1 - ((py - y1) * outerWeight);\n\n /* Is the inside miter point too far away, creating a spike? */\n const smallerInsideSegmentSq = Math.min((dx0 * dx0) + (dy0 * dy0), (dx1 * dx1) + (dy1 * dy1));\n const insideWeight = clockwise ? innerWeight : outerWeight;\n const smallerInsideDiagonalSq = smallerInsideSegmentSq + (insideWeight * insideWeight * widthSquared);\n const insideMiterOk = pDist <= smallerInsideDiagonalSq;\n\n if (insideMiterOk)\n {\n if (style.join === 'bevel' || pDist / widthSquared > miterLimitSquared)\n {\n if (clockwise) /* rotating at inner angle */\n {\n verts.push(imx, imy); // inner miter point\n verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n verts.push(imx, imy); // inner miter point\n verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n }\n else /* rotating at outer angle */\n {\n verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n verts.push(omx, omy); // outer miter point\n verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's outer vertex\n verts.push(omx, omy); // outer miter point\n }\n\n indexCount += 2;\n }\n else if (style.join === 'round')\n {\n if (clockwise) /* arc is outside */\n {\n verts.push(imx, imy);\n verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n indexCount += round(\n x1, y1,\n x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n verts, true\n ) + 4;\n\n verts.push(imx, imy);\n verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight));\n }\n else /* arc is inside */\n {\n verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n verts.push(omx, omy);\n\n indexCount += round(\n x1, y1,\n x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n verts, false\n ) + 4;\n\n verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight));\n verts.push(omx, omy);\n }\n }\n else\n {\n verts.push(imx, imy);\n verts.push(omx, omy);\n }\n }\n else // inside miter is NOT ok\n {\n verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n if (style.join === 'round')\n {\n if (clockwise) /* arc is outside */\n {\n indexCount += round(\n x1, y1,\n x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n verts, true\n ) + 2;\n }\n else /* arc is inside */\n {\n indexCount += round(\n x1, y1,\n x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n verts, false\n ) + 2;\n }\n }\n else if (style.join === 'miter' && pDist / widthSquared <= miterLimitSquared)\n {\n if (clockwise)\n {\n verts.push(omx, omy); // inner miter point\n verts.push(omx, omy); // inner miter point\n }\n else\n {\n verts.push(imx, imy); // outer miter point\n verts.push(imx, imy); // outer miter point\n }\n indexCount += 2;\n }\n verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's inner vertex\n verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n indexCount += 2;\n }\n }\n\n x0 = points[(length - 2) * 2];\n y0 = points[((length - 2) * 2) + 1];\n\n x1 = points[(length - 1) * 2];\n y1 = points[((length - 1) * 2) + 1];\n\n perpX = -(y0 - y1);\n perpY = x0 - x1;\n\n dist = Math.sqrt((perpX * perpX) + (perpY * perpY));\n perpX /= dist;\n perpY /= dist;\n perpX *= width;\n perpY *= width;\n\n verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n if (!closedShape)\n {\n if (style.cap === 'round')\n {\n indexCount += round(\n x1 - (perpX * (innerWeight - outerWeight) * 0.5),\n y1 - (perpY * (innerWeight - outerWeight) * 0.5),\n x1 - (perpX * innerWeight),\n y1 - (perpY * innerWeight),\n x1 + (perpX * outerWeight),\n y1 + (perpY * outerWeight),\n verts,\n false\n ) + 2;\n }\n else if (style.cap === 'square')\n {\n indexCount += square(x1, y1, perpX, perpY, innerWeight, outerWeight, false, verts);\n }\n }\n\n // const indices = graphicsGeometry.indices;\n const eps2 = curveEps * curveEps;\n\n // indices.push(indexStart);\n for (let i = indexStart; i < indexCount + indexStart - 2; ++i)\n {\n x0 = verts[(i * 2)];\n y0 = verts[(i * 2) + 1];\n\n x1 = verts[(i + 1) * 2];\n y1 = verts[((i + 1) * 2) + 1];\n\n x2 = verts[(i + 2) * 2];\n y2 = verts[((i + 2) * 2) + 1];\n\n /* Skip zero area triangles */\n if (Math.abs((x0 * (y1 - y2)) + (x1 * (y2 - y0)) + (x2 * (y0 - y1))) < eps2)\n {\n continue;\n }\n\n indices.push(i, i + 1, i + 2);\n }\n}\n\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","import { default as earcut } from 'earcut';\n\nexport function triangulateWithHoles(\n points: number[],\n holes: number[],\n vertices: number[],\n verticesStride: number,\n verticesOffset: number,\n\n indices: number[],\n indicesOffset: number\n)\n{\n const triangles = earcut(points, holes, 2);\n\n if (!triangles)\n {\n return;\n }\n\n for (let i = 0; i < triangles.length; i += 3)\n {\n indices[indicesOffset++] = (triangles[i] + verticesOffset);\n indices[indicesOffset++] = (triangles[i + 1] + verticesOffset);\n indices[indicesOffset++] = (triangles[i + 2] + verticesOffset);\n }\n\n let index = verticesOffset * verticesStride;\n\n for (let i = 0; i < points.length; i += 2)\n {\n vertices[index] = points[i];\n vertices[index + 1] = points[i + 1];\n\n index += verticesStride;\n }\n}\n\n","import { triangulateWithHoles } from '../utils/triangulateWithHoles';\n\nimport type { Polygon } from '../../../../maths/shapes/Polygon';\nimport type { ShapeBuildCommand } from './ShapeBuildCommand';\n\nconst emptyArray: number[] = [];\n\n/**\n * Builds a rectangle to draw\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n */\nexport const buildPolygon: ShapeBuildCommand = {\n\n build(shape: Polygon, points: number[]): number[]\n {\n for (let i = 0; i < shape.points.length; i++)\n {\n points[i] = shape.points[i];\n }\n\n return points;\n },\n\n triangulate(\n points: number[],\n // holes: number[],\n vertices: number[],\n verticesStride: number,\n verticesOffset: number,\n\n indices: number[],\n indicesOffset: number\n )\n {\n triangulateWithHoles(points, emptyArray, vertices, verticesStride, verticesOffset, indices, indicesOffset);\n },\n\n};\n","import type { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport type { ShapeBuildCommand } from './ShapeBuildCommand';\n\n/**\n * Builds a rectangle to draw\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n */\nexport const buildRectangle: ShapeBuildCommand = {\n\n build(shape: Rectangle, points: number[]): number[]\n {\n const rectData = shape;\n const x = rectData.x;\n const y = rectData.y;\n const width = rectData.width;\n const height = rectData.height;\n\n if (!(width >= 0 && height >= 0))\n {\n return points;\n }\n\n points[0] = x;\n points[1] = y;\n points[2] = x + width;\n points[3] = y;\n points[4] = x + width;\n points[5] = y + height;\n points[6] = x;\n points[7] = y + height;\n\n return points;\n },\n\n triangulate(\n points: number[],\n\n vertices: number[],\n verticesStride: number,\n verticesOffset: number,\n\n indices: number[],\n indicesOffset: number\n )\n {\n let count = 0;\n\n verticesOffset *= verticesStride;\n\n vertices[verticesOffset + count] = points[0];\n vertices[verticesOffset + count + 1] = points[1];\n\n count += verticesStride;\n\n vertices[verticesOffset + count] = points[2];\n vertices[verticesOffset + count + 1] = points[3];\n\n count += verticesStride;\n\n vertices[verticesOffset + count] = points[6];\n vertices[verticesOffset + count + 1] = points[7];\n\n count += verticesStride;\n\n vertices[verticesOffset + count] = points[4];\n vertices[verticesOffset + count + 1] = points[5];\n\n count += verticesStride;\n\n const verticesIndex = verticesOffset / verticesStride;\n\n // triangle 1\n indices[indicesOffset++] = verticesIndex;\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 2;\n\n // triangle 2\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 3;\n indices[indicesOffset++] = verticesIndex + 2;\n },\n};\n","import type { Triangle } from '../../../../maths/shapes/Triangle';\nimport type { ShapeBuildCommand } from './ShapeBuildCommand';\n\n/**\n * Builds a triangle to draw\n *\n * Ignored from docs since it is not directly exposed.\n * @ignore\n * @private\n */\nexport const buildTriangle: ShapeBuildCommand = {\n\n build(shape: Triangle, points: number[]): number[]\n {\n points[0] = shape.x;\n points[1] = shape.y;\n points[2] = shape.x2;\n points[3] = shape.y2;\n points[4] = shape.x3;\n points[5] = shape.y3;\n\n return points;\n },\n\n triangulate(\n points: number[],\n\n vertices: number[],\n verticesStride: number,\n verticesOffset: number,\n\n indices: number[],\n indicesOffset: number\n )\n {\n let count = 0;\n\n verticesOffset *= verticesStride;\n\n vertices[verticesOffset + count] = points[0];\n vertices[verticesOffset + count + 1] = points[1];\n\n count += verticesStride;\n\n vertices[verticesOffset + count] = points[2];\n vertices[verticesOffset + count + 1] = points[3];\n\n count += verticesStride;\n\n vertices[verticesOffset + count] = points[4];\n vertices[verticesOffset + count + 1] = points[5];\n\n const verticesIndex = verticesOffset / verticesStride;\n\n // triangle 1\n indices[indicesOffset++] = verticesIndex;\n indices[indicesOffset++] = verticesIndex + 1;\n indices[indicesOffset++] = verticesIndex + 2;\n },\n};\n","import { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { buildSimpleUvs, buildUvs } from '../../../../rendering/renderers/shared/geometry/utils/buildUvs';\nimport { transformVertices } from '../../../../rendering/renderers/shared/geometry/utils/transformVertices';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { BigPool } from '../../../../utils/pool/PoolGroup';\nimport { BatchableGraphics } from '../BatchableGraphics';\nimport { buildCircle } from '../buildCommands/buildCircle';\nimport { buildLine } from '../buildCommands/buildLine';\nimport { buildPolygon } from '../buildCommands/buildPolygon';\nimport { buildRectangle } from '../buildCommands/buildRectangle';\nimport { buildTriangle } from '../buildCommands/buildTriangle';\nimport { triangulateWithHoles } from './triangulateWithHoles';\n\nimport type { Polygon } from '../../../../maths/shapes/Polygon';\nimport type { ShapeBuildCommand } from '../buildCommands/ShapeBuildCommand';\nimport type { ConvertedFillStyle, GraphicsContext, TextureInstruction } from '../GraphicsContext';\nimport type { GpuGraphicsContext } from '../GraphicsContextSystem';\nimport type { GraphicsPath } from '../path/GraphicsPath';\nimport type { ShapePath } from '../path/ShapePath';\n\nconst buildMap: Record = {\n rectangle: buildRectangle,\n polygon: buildPolygon,\n triangle: buildTriangle,\n circle: buildCircle,\n ellipse: buildCircle,\n roundedRectangle: buildCircle,\n};\n\nconst tempRect = new Rectangle();\n\nexport function buildContextBatches(context: GraphicsContext, gpuContext: GpuGraphicsContext)\n{\n const { geometryData, batches } = gpuContext;\n\n // reset them..\n batches.length = 0;\n geometryData.indices.length = 0;\n geometryData.vertices.length = 0;\n geometryData.uvs.length = 0;\n\n for (let i = 0; i < context.instructions.length; i++)\n {\n const instruction = context.instructions[i];\n\n if (instruction.action === 'texture')\n {\n // add a quad!\n addTextureToGeometryData(instruction.data, batches, geometryData);\n }\n else if (instruction.action === 'fill' || instruction.action === 'stroke')\n {\n const isStroke = instruction.action === 'stroke';\n\n // build path collection of polys and shapes points..\n const shapePath = instruction.data.path.shapePath;\n\n const style = instruction.data.style;\n\n const hole = instruction.data.hole;\n\n if (isStroke && hole)\n {\n addShapePathToGeometryData(hole.shapePath, style, null, true, batches, geometryData);\n }\n\n addShapePathToGeometryData(shapePath, style, hole, isStroke, batches, geometryData);\n }\n }\n}\n\nfunction addTextureToGeometryData(\n data: TextureInstruction['data'],\n batches: BatchableGraphics[],\n geometryData: {\n vertices: number[];\n uvs: number[];\n indices: number[];\n }\n)\n{\n const { vertices, uvs, indices } = geometryData;\n\n const indexOffset = indices.length;\n const vertOffset = vertices.length / 2;\n\n const points: number[] = [];\n\n const build = buildMap.rectangle;\n\n const rect = tempRect;\n\n const texture = data.image;\n\n rect.x = data.dx;\n rect.y = data.dy;\n rect.width = data.dw;\n rect.height = data.dh;\n\n const matrix = data.transform;\n\n // TODO - this can be cached...\n build.build(rect, points);\n\n if (matrix)\n {\n transformVertices(points, matrix);\n }\n\n build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);\n\n const textureUvs = texture.uvs;\n\n uvs.push(\n textureUvs.x0, textureUvs.y0,\n textureUvs.x1, textureUvs.y1,\n textureUvs.x3, textureUvs.y3,\n textureUvs.x2, textureUvs.y2,\n );\n\n const graphicsBatch = BigPool.get(BatchableGraphics);\n\n graphicsBatch.indexOffset = indexOffset;\n graphicsBatch.indexSize = indices.length - indexOffset;\n\n graphicsBatch.vertexOffset = vertOffset;\n graphicsBatch.vertexSize = (vertices.length / 2) - vertOffset;\n\n graphicsBatch.color = data.style;\n graphicsBatch.alpha = data.alpha;\n\n graphicsBatch.texture = texture;\n graphicsBatch.geometryData = geometryData;\n\n batches.push(graphicsBatch);\n}\n\nfunction addShapePathToGeometryData(\n shapePath: ShapePath,\n style: ConvertedFillStyle,\n hole: GraphicsPath,\n isStroke: boolean,\n batches: BatchableGraphics[],\n geometryData: {\n vertices: number[];\n uvs: number[];\n indices: number[];\n }\n)\n{\n const { vertices, uvs, indices } = geometryData;\n const lastIndex = shapePath.shapePrimitives.length - 1;\n\n shapePath.shapePrimitives.forEach(({ shape, transform: matrix }, i) =>\n {\n const indexOffset = indices.length;\n const vertOffset = vertices.length / 2;\n\n const points: number[] = [];\n\n const build = buildMap[shape.type];\n\n // TODO - this can be cached...\n // TODO - THIS IS DONE TWICE!!!!!!\n // ONCE FOR STROKE AND ONCE FOR FILL\n // move to the ShapePath2D class itself?\n build.build(shape, points);\n\n if (matrix)\n {\n transformVertices(points, matrix);\n }\n\n if (!isStroke)\n {\n if (hole && lastIndex === i)\n {\n if (lastIndex !== 0)\n {\n console.warn('[Pixi Graphics] only the last shape have be cut out');\n }\n\n const holeIndices: number[] = [];\n\n const otherPoints = points.slice();\n\n const holeArrays = getHoleArrays(hole.shapePath);\n\n holeArrays.forEach((holePoints) =>\n {\n holeIndices.push(otherPoints.length / 2);\n otherPoints.push(...holePoints);\n });\n\n triangulateWithHoles(otherPoints, holeIndices, vertices, 2, vertOffset, indices, indexOffset);\n }\n else\n {\n build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);\n }\n }\n else\n {\n const close = (shape as Polygon).closePath ?? true;\n const lineStyle = style;\n\n buildLine(points, lineStyle, false, close, vertices, 2, vertOffset, indices, indexOffset);\n }\n\n const uvsOffset = uvs.length / 2;\n\n const texture = style.texture;\n\n if (texture !== Texture.WHITE)\n {\n const textureMatrix = style.matrix;\n\n if (matrix)\n {\n // todo can prolly do this before calculating uvs..\n textureMatrix.append(matrix.clone().invert());\n }\n\n buildUvs(vertices, 2, vertOffset, uvs, uvsOffset, 2, (vertices.length / 2) - vertOffset, textureMatrix);\n }\n else\n {\n buildSimpleUvs(uvs, uvsOffset, 2, (vertices.length / 2) - vertOffset);\n }\n\n const graphicsBatch = BigPool.get(BatchableGraphics);\n\n graphicsBatch.indexOffset = indexOffset;\n graphicsBatch.indexSize = indices.length - indexOffset;\n\n graphicsBatch.vertexOffset = vertOffset;\n graphicsBatch.vertexSize = (vertices.length / 2) - vertOffset;\n\n graphicsBatch.color = style.color as number;\n graphicsBatch.alpha = style.alpha;\n\n graphicsBatch.texture = texture;\n graphicsBatch.geometryData = geometryData;\n\n batches.push(graphicsBatch);\n });\n}\n\nfunction getHoleArrays(shape: ShapePath)\n{\n if (!shape) return [];\n\n const holePrimitives = shape.shapePrimitives;\n\n const holeArrays = [];\n\n for (let k = 0; k < holePrimitives.length; k++)\n {\n const holePrimitive = holePrimitives[k].shape;\n\n // TODO - need to transform the points via there transform here..\n const holePoints: number[] = [];\n\n const holeBuilder = buildMap[holePrimitive.type] as ShapeBuildCommand;\n\n holeBuilder.build(holePrimitive, holePoints);\n\n holeArrays.push(holePoints);\n }\n\n return holeArrays;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { BatchGeometry } from '../../../rendering/batcher/gpu/BatchGeometry';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup';\nimport { Batcher } from '../../../rendering/batcher/shared/Batcher';\nimport { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\nimport { buildContextBatches } from './utils/buildContextBatches';\n\nimport type { System } from '../../../rendering/renderers/shared/system/System';\nimport type { PoolItem } from '../../../utils/pool/Pool';\nimport type { BatchableGraphics } from './BatchableGraphics';\nimport type { GraphicsContext } from './GraphicsContext';\n\ninterface GeometryData\n{\n vertices: number[];\n uvs: number[];\n indices: number[];\n}\n\n/**\n * A class that holds batchable graphics data for a GraphicsContext.\n * @memberof rendering\n * @ignore\n */\nexport class GpuGraphicsContext\n{\n public isBatchable: boolean;\n public batches: BatchableGraphics[] = [];\n public geometryData: GeometryData = {\n vertices: [],\n uvs: [],\n indices: [],\n };\n public graphicsData: GraphicsContextRenderData;\n}\n\n/**\n * A class that holds the render data for a GraphicsContext.\n * @memberof rendering\n * @ignore\n */\nexport class GraphicsContextRenderData\n{\n public geometry = new BatchGeometry();\n public instructions = new InstructionSet();\n\n public init()\n {\n this.instructions.reset();\n }\n}\n\n/**\n * Options for the GraphicsContextSystem.\n * @memberof rendering\n */\nexport interface GraphicsContextSystemOptions\n{\n /** A value from 0 to 1 that controls the smoothness of bezier curves (the higher the smoother) */\n bezierSmoothness?: number;\n}\n\n/**\n * A system that manages the rendering of GraphicsContexts.\n * @memberof rendering\n */\nexport class GraphicsContextSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'graphicsContext'\n } as const;\n\n /** The default options for the GraphicsContextSystem. */\n public static readonly defaultOptions: GraphicsContextSystemOptions = {\n /**\n * A value from 0 to 1 that controls the smoothness of bezier curves (the higher the smoother)\n * @default 0.5\n */\n bezierSmoothness: 0.5,\n };\n\n // the root context batches, used to either make a batch or geometry\n // all graphics use this as a base\n private readonly _activeBatchers: Batcher[] = [];\n private _gpuContextHash: Record = {};\n // used for non-batchable graphics\n private _graphicsDataContextHash: Record = Object.create(null);\n private readonly _needsContextNeedsRebuild: GraphicsContext[] = [];\n\n /**\n * Runner init called, update the default options\n * @ignore\n */\n public init(options?: GraphicsContextSystemOptions)\n {\n GraphicsContextSystem.defaultOptions.bezierSmoothness = options?.bezierSmoothness\n ?? GraphicsContextSystem.defaultOptions.bezierSmoothness;\n }\n\n protected prerender()\n {\n this._returnActiveBatchers();\n }\n\n public getContextRenderData(context: GraphicsContext): GraphicsContextRenderData\n {\n return this._graphicsDataContextHash[context.uid] || this._initContextRenderData(context);\n }\n\n // Context management functions\n public updateGpuContext(context: GraphicsContext)\n {\n let gpuContext: GpuGraphicsContext = this._gpuContextHash[context.uid]\n\n || this._initContext(context);\n\n if (context.dirty)\n {\n if (gpuContext)\n {\n this._cleanGraphicsContextData(context);\n }\n else\n {\n gpuContext = this._initContext(context);\n }\n\n buildContextBatches(context, gpuContext);\n\n const batchMode = context.batchMode;\n\n if (context.customShader || batchMode === 'no-batch')\n {\n gpuContext.isBatchable = false;\n }\n else if (batchMode === 'auto')\n {\n gpuContext.isBatchable = (gpuContext.geometryData.vertices.length < 400);\n }\n\n context.dirty = false;\n }\n\n return gpuContext;\n }\n\n public getGpuContext(context: GraphicsContext): GpuGraphicsContext\n {\n return this._gpuContextHash[context.uid] || this._initContext(context);\n }\n\n private _returnActiveBatchers()\n {\n for (let i = 0; i < this._activeBatchers.length; i++)\n {\n BigPool.return(this._activeBatchers[i] as PoolItem);\n }\n\n this._activeBatchers.length = 0;\n }\n\n private _initContextRenderData(context: GraphicsContext): GraphicsContextRenderData\n {\n const graphicsData: GraphicsContextRenderData = BigPool.get(GraphicsContextRenderData);// ();\n\n const { batches, geometryData } = this._gpuContextHash[context.uid];\n\n const vertexSize = geometryData.vertices.length;\n const indexSize = geometryData.indices.length;\n\n for (let i = 0; i < batches.length; i++)\n {\n batches[i].applyTransform = false;\n }\n\n const batcher = BigPool.get(Batcher);\n\n this._activeBatchers.push(batcher);\n\n batcher.ensureAttributeBuffer(vertexSize);\n batcher.ensureIndexBuffer(indexSize);\n\n batcher.begin();\n\n for (let i = 0; i < batches.length; i++)\n {\n const batch = batches[i];\n\n batcher.add(batch);\n }\n\n batcher.finish(graphicsData.instructions);\n\n const geometry = graphicsData.geometry;\n\n // not to self - this works as we are assigning the batchers array buffer\n // once its up loaded - this buffer is then put back in the pool to be reused.\n // this mean we don't have to creating new Batchers for each graphics items\n geometry.indexBuffer.setDataWithSize(batcher.indexBuffer, batcher.indexSize, true);\n geometry.buffers[0].setDataWithSize(batcher.attributeBuffer.float32View, batcher.attributeSize, true);\n\n const drawBatches = batcher.batches;\n\n for (let i = 0; i < drawBatches.length; i++)\n {\n const batch = drawBatches[i];\n\n batch.bindGroup = getTextureBatchBindGroup(batch.textures.textures, batch.textures.count);\n }\n\n this._graphicsDataContextHash[context.uid] = graphicsData;\n\n return graphicsData;\n }\n\n private _initContext(context: GraphicsContext): GpuGraphicsContext\n {\n const gpuContext = new GpuGraphicsContext();\n\n this._gpuContextHash[context.uid] = gpuContext;\n\n context.on('update', this.onGraphicsContextUpdate, this);\n context.on('destroy', this.onGraphicsContextDestroy, this);\n\n return this._gpuContextHash[context.uid];\n }\n\n protected onGraphicsContextUpdate(context: GraphicsContext)\n {\n this._needsContextNeedsRebuild.push(context);\n }\n\n protected onGraphicsContextDestroy(context: GraphicsContext)\n {\n this._cleanGraphicsContextData(context);\n\n context.off('update', this.onGraphicsContextUpdate, this);\n context.off('destroy', this.onGraphicsContextDestroy, this);\n\n this._gpuContextHash[context.uid] = null;\n }\n\n private _cleanGraphicsContextData(context: GraphicsContext)\n {\n const gpuContext: GpuGraphicsContext = this._gpuContextHash[context.uid];\n\n if (!gpuContext.isBatchable)\n {\n if (this._graphicsDataContextHash[context.uid])\n {\n BigPool.return(this.getContextRenderData(context) as PoolItem);\n\n // we will rebuild this...\n this._graphicsDataContextHash[context.uid] = null;\n }\n }\n\n if (gpuContext.batches)\n {\n gpuContext.batches.forEach((batch) =>\n {\n BigPool.return(batch as PoolItem);\n });\n }\n }\n\n public destroy()\n {\n // Clean up all graphics contexts\n for (const context of this._needsContextNeedsRebuild)\n {\n // only clean if it exists\n if (this._gpuContextHash[context.uid])\n {\n this.onGraphicsContextDestroy(context);\n }\n }\n\n this._needsContextNeedsRebuild.length = 0;\n }\n}\n","/* eslint-disable max-len */\nimport type { BLEND_MODES, CULL_MODES } from './const';\n\nconst blendModeIds = {\n normal: 0,\n add: 1,\n multiply: 2,\n screen: 3,\n overlay: 4,\n erase: 5,\n 'normal-npm': 6,\n 'add-npm': 7,\n 'screen-npm': 8,\n};\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\n\n/**\n * This is a WebGL state, and is is passed to {@link StateSystem}.\n *\n * Each mesh rendered may require WebGL to be in a different state.\n * For example you may want different blend mode or to enable polygon offsets\n * @memberof rendering\n */\nexport class State\n{\n /**\n * The data is a unique number based on the states settings.\n * This lets us quickly compare states with a single number rather than looking\n * at all the individual settings.\n */\n public data: number;\n public _blendModeId: number;\n private _blendMode: BLEND_MODES;\n private _polygonOffset: number;\n\n constructor()\n {\n this.data = 0;\n\n this.blendMode = 'normal';\n this.polygonOffset = 0;\n\n this.blend = true;\n this.depthMask = true;\n }\n\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend(): boolean\n {\n return !!(this.data & (1 << BLEND));\n }\n\n set blend(value: boolean)\n {\n if (!!(this.data & (1 << BLEND)) !== value)\n {\n this.data ^= (1 << BLEND);\n }\n }\n\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets(): boolean\n {\n return !!(this.data & (1 << OFFSET));\n }\n\n set offsets(value: boolean)\n {\n if (!!(this.data & (1 << OFFSET)) !== value)\n {\n this.data ^= (1 << OFFSET);\n }\n }\n\n /** The culling settings for this state none - No culling back - Back face culling front - Front face culling */\n set cullMode(value: CULL_MODES)\n {\n if (value === 'none')\n {\n this.culling = false;\n\n return;\n }\n\n this.culling = true;\n this.clockwiseFrontFace = value === 'front';\n }\n\n get cullMode(): CULL_MODES\n {\n if (!this.culling)\n {\n return 'none';\n }\n\n return this.clockwiseFrontFace ? 'front' : 'back';\n }\n\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling(): boolean\n {\n return !!(this.data & (1 << CULLING));\n }\n\n set culling(value: boolean)\n {\n if (!!(this.data & (1 << CULLING)) !== value)\n {\n this.data ^= (1 << CULLING);\n }\n }\n\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest(): boolean\n {\n return !!(this.data & (1 << DEPTH_TEST));\n }\n\n set depthTest(value: boolean)\n {\n if (!!(this.data & (1 << DEPTH_TEST)) !== value)\n {\n this.data ^= (1 << DEPTH_TEST);\n }\n }\n\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask(): boolean\n {\n return !!(this.data & (1 << DEPTH_MASK));\n }\n\n set depthMask(value: boolean)\n {\n if (!!(this.data & (1 << DEPTH_MASK)) !== value)\n {\n this.data ^= (1 << DEPTH_MASK);\n }\n }\n\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace(): boolean\n {\n return !!(this.data & (1 << WINDING));\n }\n\n set clockwiseFrontFace(value: boolean)\n {\n if (!!(this.data & (1 << WINDING)) !== value)\n {\n this.data ^= (1 << WINDING);\n }\n }\n\n /**\n * The blend mode to be applied when this state is set. Apply a value of `normal` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default 'normal'\n */\n get blendMode(): BLEND_MODES\n {\n return this._blendMode;\n }\n\n set blendMode(value: BLEND_MODES)\n {\n this.blend = (value !== 'none');\n this._blendMode = value;\n this._blendModeId = blendModeIds[value as keyof typeof blendModeIds] || 0;\n }\n\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset(): number\n {\n return this._polygonOffset;\n }\n\n set polygonOffset(value: number)\n {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/core:State `\n + `blendMode=${this.blendMode} `\n + `clockwiseFrontFace=${this.clockwiseFrontFace} `\n + `culling=${this.culling} `\n + `depthMask=${this.depthMask} `\n + `polygonOffset=${this.polygonOffset}`\n + `]`;\n }\n // #endif\n\n /**\n * A quickly getting an instance of a State that is configured for 2d rendering.\n * @returns a new State with values set for 2d rendering\n */\n public static for2d(): State\n {\n const state = new State();\n\n state.depthTest = false;\n state.blend = true;\n\n return state;\n }\n\n public static default2d = State.for2d();\n}\n\n","export function colorToUniform(rgb: number, alpha: number, out: Float32Array, offset: number)\n{\n // TODO replace with Color..\n out[offset++] = ((rgb >> 16) & 0xFF) / 255;\n out[offset++] = ((rgb >> 8) & 0xFF) / 255;\n out[offset++] = (rgb & 0xFF) / 255;\n out[offset++] = alpha;\n}\n\nexport function color32BitToUniform(abgr: number, out: Float32Array, offset: number)\n{\n const alpha = ((abgr >> 24) & 0xFF) / 255;\n\n out[offset++] = ((abgr & 0xFF) / 255) * alpha;\n out[offset++] = (((abgr >> 8) & 0xFF) / 255) * alpha;\n out[offset++] = (((abgr >> 16) & 0xFF) / 255) * alpha;\n out[offset++] = alpha;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { State } from '../../../rendering/renderers/shared/state/State';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\nimport { color32BitToUniform } from '../gpu/colorToUniform';\nimport { BatchableGraphics } from './BatchableGraphics';\n\nimport type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { BatchPipe, RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport type { PoolItem } from '../../../utils/pool/Pool';\nimport type { Graphics } from './Graphics';\nimport type { GpuGraphicsContext, GraphicsContextSystem } from './GraphicsContextSystem';\n\nexport interface GraphicsAdaptor\n{\n shader: Shader;\n init(): void;\n execute(graphicsPipe: GraphicsPipe, renderable: Graphics): void;\n destroy(): void;\n}\nexport interface GraphicsSystem\n{\n graphicsContext: GraphicsContextSystem;\n renderPipes: {\n batch: BatchPipe\n }\n _roundPixels: 0 | 1;\n}\n\nexport class GraphicsPipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'graphics',\n } as const;\n\n public renderer: GraphicsSystem;\n public state: State = State.for2d();\n\n // batchable graphics list, used to render batches\n private _graphicsBatchesHash: Record = Object.create(null);\n private _adaptor: GraphicsAdaptor;\n\n constructor(renderer: GraphicsSystem, adaptor: GraphicsAdaptor)\n {\n this.renderer = renderer;\n\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n\n public validateRenderable(graphics: Graphics): boolean\n {\n // assume context is dirty..\n\n const context = graphics.context;\n\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(context);\n\n if (gpuContext.isBatchable || wasBatched !== gpuContext.isBatchable)\n {\n // TODO what if they are the same size??\n return true;\n }\n\n return false;\n }\n\n public addRenderable(graphics: Graphics, instructionSet: InstructionSet)\n {\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n\n // need to get batches here.. as we need to know if we can batch or not..\n // this also overrides the current batches..\n\n if (graphics._didGraphicsUpdate)\n {\n graphics._didGraphicsUpdate = false;\n\n this._rebuild(graphics);\n }\n\n if (gpuContext.isBatchable)\n {\n this._addToBatcher(graphics, instructionSet);\n }\n else\n {\n this.renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(graphics);\n }\n }\n\n public updateRenderable(graphics: Graphics)\n {\n const batches = this._graphicsBatchesHash[graphics.uid];\n\n if (batches)\n {\n for (let i = 0; i < batches.length; i++)\n {\n const batch = batches[i];\n\n batch.batcher.updateElement(batch);\n }\n }\n }\n\n public destroyRenderable(graphics: Graphics)\n {\n if (this._graphicsBatchesHash[graphics.uid])\n {\n this._removeBatchForRenderable(graphics.uid);\n }\n }\n\n public execute(graphics: Graphics)\n {\n if (!graphics.isRenderable) return;\n\n const renderer = this.renderer;\n const context = graphics.context;\n const contextSystem = renderer.graphicsContext;\n\n // early out if there is no actual visual stuff...\n if (!contextSystem.getGpuContext(context).batches.length)\n { return; }\n\n const shader = context.customShader || this._adaptor.shader;\n\n this.state.blendMode = graphics.groupBlendMode;\n\n const localUniforms = shader.resources.localUniforms.uniforms;\n\n localUniforms.uTransformMatrix = graphics.groupTransform;\n localUniforms.uRound = renderer._roundPixels | graphics._roundPixels;\n\n color32BitToUniform(\n graphics.groupColorAlpha,\n localUniforms.uColor,\n 0,\n );\n\n this._adaptor.execute(this, graphics);\n }\n\n private _rebuild(graphics: Graphics)\n {\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n\n // TODO POOL the old batches!\n\n if (wasBatched)\n {\n this._removeBatchForRenderable(graphics.uid);\n }\n\n if (gpuContext.isBatchable)\n {\n this._initBatchesForRenderable(graphics);\n }\n\n graphics.batched = gpuContext.isBatchable;\n }\n\n private _addToBatcher(graphics: Graphics, instructionSet: InstructionSet)\n {\n const batchPipe = this.renderer.renderPipes.batch;\n\n const batches = this._getBatchesForRenderable(graphics);\n\n for (let i = 0; i < batches.length; i++)\n {\n const batch = batches[i];\n\n batchPipe.addToBatch(batch, instructionSet);\n }\n }\n\n private _getBatchesForRenderable(graphics: Graphics): BatchableGraphics[]\n {\n return this._graphicsBatchesHash[graphics.uid] || this._initBatchesForRenderable(graphics);\n }\n\n private _initBatchesForRenderable(graphics: Graphics): BatchableGraphics[]\n {\n const context = graphics.context;\n\n const gpuContext: GpuGraphicsContext = this.renderer.graphicsContext.getGpuContext(context);\n\n const roundPixels = (this.renderer._roundPixels | graphics._roundPixels) as 0 | 1;\n\n const batches = gpuContext.batches.map((batch) =>\n {\n // TODO pool this!!\n const batchClone = BigPool.get(BatchableGraphics);\n\n batch.copyTo(batchClone);\n\n batchClone.renderable = graphics;\n\n batchClone.roundPixels = roundPixels;\n\n return batchClone;\n });\n\n this._graphicsBatchesHash[graphics.uid] = batches;\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n graphics.on('destroyed', () =>\n {\n this.destroyRenderable(graphics);\n });\n\n return batches;\n }\n\n private _removeBatchForRenderable(graphicsUid: number)\n {\n this._graphicsBatchesHash[graphicsUid].forEach((batch) =>\n {\n BigPool.return(batch as PoolItem);\n });\n\n this._graphicsBatchesHash[graphicsUid] = null;\n }\n\n public destroy()\n {\n this.renderer = null;\n\n this._adaptor.destroy();\n this._adaptor = null;\n this.state = null;\n\n for (const i in this._graphicsBatchesHash)\n {\n this._removeBatchForRenderable(i as unknown as number);\n }\n\n this._graphicsBatchesHash = null;\n }\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { GraphicsContextSystem } from './shared/GraphicsContextSystem';\nimport { GraphicsPipe } from './shared/GraphicsPipe';\n\nextensions.add(GraphicsPipe);\nextensions.add(GraphicsContextSystem);\n","const idCounts: Record = Object.create(null);\nconst idHash: Record = Object.create(null);\n\nexport function createIdFromString(value: string, groupId: string): number\n{\n let id = idHash[value];\n\n if (id === undefined)\n {\n if (idCounts[groupId] === undefined)\n {\n idCounts[groupId] = 1;\n }\n\n idHash[value] = id = idCounts[groupId]++;\n }\n\n return id;\n}\n","/**\n * @method defaultValue\n * @param {string} type - Type of value\n * @param {number} size\n * @private\n */\nexport function getDefaultUniformValue(\n type: string,\n size: number\n): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[]\n{\n switch (type)\n {\n case 'f32':\n return 0;\n\n case 'vec2':\n return new Float32Array(2 * size);\n\n case 'vec3':\n return new Float32Array(3 * size);\n\n case 'vec4':\n return new Float32Array(4 * size);\n case 'mat2x2':\n return new Float32Array([1, 0,\n 0, 1]);\n\n case 'mat3x3':\n return new Float32Array([1, 0, 0,\n 0, 1, 0,\n 0, 0, 1]);\n\n case 'mat4x4':\n return new Float32Array([1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1]);\n }\n\n return null;\n}\n","import { uid } from '../../../../utils/data/uid';\nimport { createIdFromString } from '../utils/createIdFromString';\nimport { getDefaultUniformValue } from './utils/getDefaultUniformValue';\n\nimport type { BindResource } from '../../gpu/shader/BindResource';\nimport type { Buffer } from '../buffer/Buffer';\nimport type { UniformData } from './types';\n\ntype FLOPS = T extends { value: infer V } ? V : never;\n\n// TODO replace..T['value']\ntype ExtractUniformObject> = {\n [K in keyof T]: FLOPS;\n};\n\n/**\n * Uniform group options\n * @memberof rendering\n */\nexport type UniformGroupOptions = {\n /**\n * if true the UniformGroup is handled as an Uniform buffer object.\n * This is the only way WebGPU can work with uniforms. WebGL2 can also use this.\n * So don't set to true if you want to use WebGPU :D\n */\n ubo?: boolean;\n /** if true, then you are responsible for when the data is uploaded to the GPU by calling `update()` */\n isStatic?: boolean;\n};\n\n/**\n * Uniform group holds uniform map and some ID's for work\n *\n * `UniformGroup` has two modes:\n *\n * 1: Normal mode\n * Normal mode will upload the uniforms with individual function calls as required. This is the default mode\n * for WebGL rendering.\n *\n * 2: Uniform buffer mode\n * This mode will treat the uniforms as a uniform buffer. You can pass in either a buffer that you manually handle, or\n * or a generic object that PixiJS will automatically map to a buffer for you.\n * For maximum benefits, make Ubo UniformGroups static, and only update them each frame.\n * This is the only way uniforms can be used with WebGPU.\n *\n * Rules of UBOs:\n * - UBOs only work with WebGL2, so make sure you have a fallback!\n * - Only floats are supported (including vec[2,3,4], mat[2,3,4])\n * - Samplers cannot be used in ubo's (a GPU limitation)\n * - You must ensure that the object you pass in exactly matches in the shader ubo structure.\n * Otherwise, weirdness will ensue!\n * - The name of the ubo object added to the group must match exactly the name of the ubo in the shader.\n *\n * When declaring your uniform options, you ust parse in the value and the type of the uniform.\n * The types correspond to the WebGPU types {@link UNIFORM_TYPES}\n *\n Uniforms can be modified via the classes 'uniforms' property. It will contain all the uniforms declared in the constructor.\n *\n * ```glsl\n * // UBO in shader:\n * uniform myCoolData { // Declaring a UBO...\n * mat4 uCoolMatrix;\n * float uFloatyMcFloatFace;\n * };\n * ```\n *\n * ```js\n * // A new Uniform Buffer Object...\n * const myCoolData = new UniformGroup({\n * uCoolMatrix: {value:new Matrix(), type: 'mat4'},\n * uFloatyMcFloatFace: {value:23, type: 'f32'},\n * }}\n *\n * // modify the data\n * myCoolData.uniforms.uFloatyMcFloatFace = 42;\n * // Build a shader...\n * const shader = Shader.from(srcVert, srcFrag, {\n * myCoolData // Name matches the UBO name in the shader. Will be processed accordingly.\n * })\n *\n *\n * ```\n * @memberof rendering\n */\nexport class UniformGroup implements BindResource\n{\n /** The default options used by the uniform group. */\n public static defaultOptions: UniformGroupOptions = {\n /** if true the UniformGroup is handled as an Uniform buffer object. */\n ubo: false,\n /** if true, then you are responsible for when the data is uploaded to the GPU by calling `update()` */\n isStatic: false,\n };\n\n /** used internally to know if a uniform group was used in the last render pass */\n public _touched = 0;\n\n /** a unique id for this uniform group used through the renderer */\n public readonly uid = uid('uniform');\n /** a resource type, used to identify how to handle it when its in a bind group / shader resource */\n public _resourceType = 'uniformGroup';\n /** the resource id used internally by the renderer to build bind group keys */\n public _resourceId = uid('resource');\n /** the structures of the uniform group */\n public uniformStructures: UNIFORMS;\n /** the uniforms as an easily accessible map of properties */\n public uniforms: ExtractUniformObject;\n /** true if it should be used as a uniform buffer object */\n public ubo: boolean;\n /** an underlying buffer that will be uploaded to the GPU when using this UniformGroup */\n public buffer?: Buffer;\n /**\n * if true, then you are responsible for when the data is uploaded to the GPU.\n * otherwise, the data is reuploaded each frame.\n */\n public isStatic: boolean;\n /** used ito identify if this is a uniform group */\n public readonly isUniformGroup = true;\n /**\n * used to flag if this Uniform groups data is different from what it has stored in its buffer / on the GPU\n * @internal\n * @ignore\n */\n public _dirtyId = 0;\n /**\n * a signature string generated for internal use\n * @internal\n * @ignore\n */\n public readonly _signature: number;\n\n // implementing the interface - UniformGroup are not destroyed\n public readonly destroyed = false;\n\n /**\n * Create a new Uniform group\n * @param uniformStructures - The structures of the uniform group\n * @param options - The optional parameters of this uniform group\n */\n constructor(uniformStructures: UNIFORMS, options?: UniformGroupOptions)\n {\n options = { ...UniformGroup.defaultOptions, ...options };\n\n this.uniformStructures = uniformStructures;\n\n const uniforms = {} as ExtractUniformObject;\n\n for (const i in uniformStructures)\n {\n const uniformData = uniformStructures[i] as UniformData;\n\n uniformData.name = i;\n uniformData.size = uniformData.size ?? 1;\n uniformData.value ??= getDefaultUniformValue(uniformData.type, uniformData.size);\n\n uniforms[i] = uniformData.value as ExtractUniformObject[keyof UNIFORMS];\n }\n\n this.uniforms = uniforms;\n\n this._dirtyId = 1;\n this.ubo = options.ubo;\n this.isStatic = options.isStatic;\n\n this._signature = createIdFromString(Object.keys(uniforms).map(\n (i) => `${i}-${(uniformStructures[i as keyof typeof uniformStructures] as UniformData).type}`\n ).join('-'), 'uniform-group');\n }\n\n /** Call this if you want the uniform groups data to be uploaded to the GPU only useful if `isStatic` is true. */\n public update(): void\n {\n this._dirtyId++;\n // dispatch...\n }\n}\n","import type { Batch, BatchableObject, Batcher } from '../../../rendering/batcher/shared/Batcher';\nimport type { IndexBufferArray } from '../../../rendering/renderers/shared/geometry/Geometry';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Container } from '../../container/Container';\nimport type { MeshGeometry } from './MeshGeometry';\n\n/**\n * A batchable mesh object.\n * @ignore\n */\nexport class BatchableMesh implements BatchableObject\n{\n public indexStart: number;\n public textureId: number;\n public texture: Texture;\n public location: number;\n public batcher: Batcher = null;\n public batch: Batch = null;\n public mesh: Container;\n public geometry: MeshGeometry;\n\n public roundPixels: 0 | 1 = 0;\n\n private _transformedUvs: Float32Array;\n private _uvUpdateId: number = -1;\n private _textureMatrixUpdateId: number = -1;\n\n get blendMode() { return this.mesh.groupBlendMode; }\n\n public reset()\n {\n this.mesh = null;\n this.texture = null;\n this.batcher = null;\n this.batch = null;\n }\n\n public packIndex(indexBuffer: IndexBufferArray, index: number, indicesOffset: number)\n {\n const indices = this.geometry.indices;\n\n for (let i = 0; i < indices.length; i++)\n {\n indexBuffer[index++] = indices[i] + indicesOffset;\n }\n }\n\n public packAttributes(\n float32View: Float32Array,\n uint32View: Uint32Array,\n index: number,\n textureId: number\n )\n {\n const mesh = this.mesh;\n\n const geometry = this.geometry;\n const wt = mesh.groupTransform;\n\n const textureIdAndRound = (textureId << 16) | (this.roundPixels & 0xFFFF);\n\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n\n // const trim = texture.trim;\n const positions = geometry.positions;\n const uvBuffer = geometry.getBuffer('aUV');\n\n const uvs = uvBuffer.data;\n\n let transformedUvs = uvs;\n const textureMatrix = this.texture.textureMatrix;\n\n if (!textureMatrix.isSimple)\n {\n transformedUvs = this._transformedUvs;\n\n if (this._textureMatrixUpdateId !== textureMatrix._updateID || this._uvUpdateId !== uvBuffer._updateID)\n {\n if (!transformedUvs || transformedUvs.length < uvs.length)\n {\n transformedUvs = this._transformedUvs = new Float32Array(uvs.length);\n }\n\n this._textureMatrixUpdateId = textureMatrix._updateID;\n this._uvUpdateId = uvBuffer._updateID;\n\n textureMatrix.multiplyUvs(uvs as Float32Array, transformedUvs);\n }\n }\n\n const abgr = mesh.groupColorAlpha;\n\n for (let i = 0; i < positions.length; i += 2)\n {\n const x = positions[i];\n const y = positions[i + 1];\n\n float32View[index] = (a * x) + (c * y) + tx;\n float32View[index + 1] = (b * x) + (d * y) + ty;\n\n // TODO implement texture matrix?\n float32View[index + 2] = transformedUvs[i];\n float32View[index + 3] = transformedUvs[i + 1];\n\n uint32View[index + 4] = abgr;\n uint32View[index + 5] = textureIdAndRound;\n\n index += 6;\n }\n }\n\n get vertexSize()\n {\n return this.geometry.positions.length / 2;\n }\n\n get indexSize()\n {\n return this.geometry.indices.length;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform';\nimport { BatchableMesh } from './BatchableMesh';\n\nimport type { Instruction } from '../../../rendering/renderers/shared/instructions/Instruction';\nimport type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport type {\n InstructionPipe,\n RenderPipe\n} from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../../rendering/renderers/types';\nimport type { PoolItem } from '../../../utils/pool/Pool';\nimport type { Mesh } from './Mesh';\n\n// TODO Record mode is a P2, will get back to this as it's not a priority\n// const recordMode = true;\n\ninterface MeshData\n{\n batched: boolean;\n indexSize: number;\n vertexSize: number;\n}\n\nexport interface MeshAdaptor\n{\n init(): void;\n execute(meshPipe: MeshPipe, mesh: Mesh): void;\n destroy(): void;\n}\n\nexport interface MeshInstruction extends Instruction\n{\n renderPipeId: 'mesh';\n mesh: Mesh;\n}\n\n// eslint-disable-next-line max-len\nexport class MeshPipe implements RenderPipe, InstructionPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'mesh',\n } as const;\n\n public localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4' },\n uRound: { value: 0, type: 'f32' },\n });\n\n public localUniformsBindGroup = new BindGroup({\n 0: this.localUniforms,\n });\n\n public renderer: Renderer;\n\n private _meshDataHash: Record = Object.create(null);\n private _gpuBatchableMeshHash: Record = Object.create(null);\n private _adaptor: MeshAdaptor;\n\n constructor(renderer: Renderer, adaptor: MeshAdaptor)\n {\n this.renderer = renderer;\n this._adaptor = adaptor;\n\n this._adaptor.init();\n }\n\n public validateRenderable(mesh: Mesh): boolean\n {\n const meshData = this._getMeshData(mesh);\n\n const wasBatched = meshData.batched;\n\n const isBatched = mesh.batched;\n\n meshData.batched = isBatched;\n\n if (wasBatched !== isBatched)\n {\n return true;\n }\n else if (isBatched)\n {\n const geometry = mesh._geometry;\n\n // no need to break the batch if it's the same size\n if (geometry.indices.length !== meshData.indexSize\n || geometry.positions.length !== meshData.vertexSize)\n {\n meshData.indexSize = geometry.indices.length;\n meshData.vertexSize = geometry.positions.length;\n\n return true;\n }\n\n const batchableMesh = this._getBatchableMesh(mesh);\n\n const texture = mesh.texture;\n\n if (batchableMesh.texture._source !== texture._source)\n {\n if (batchableMesh.texture._source !== texture._source)\n {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, texture);\n }\n }\n }\n\n return false;\n }\n\n public addRenderable(mesh: Mesh, instructionSet: InstructionSet)\n {\n const batcher = this.renderer.renderPipes.batch;\n\n const { batched } = this._getMeshData(mesh);\n\n if (batched)\n {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n\n batcher.addToBatch(gpuBatchableMesh);\n }\n else\n {\n batcher.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'mesh',\n mesh\n } as MeshInstruction);\n }\n }\n\n public updateRenderable(mesh: Mesh)\n {\n if (mesh.batched)\n {\n const gpuBatchableMesh = this._gpuBatchableMeshHash[mesh.uid];\n\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n\n gpuBatchableMesh.batcher.updateElement(gpuBatchableMesh);\n }\n }\n\n public destroyRenderable(mesh: Mesh)\n {\n this._meshDataHash[mesh.uid] = null;\n\n const gpuMesh = this._gpuBatchableMeshHash[mesh.uid];\n\n if (gpuMesh)\n {\n BigPool.return(gpuMesh as PoolItem);\n this._gpuBatchableMeshHash[mesh.uid] = null;\n }\n }\n\n public execute({ mesh }: MeshInstruction)\n {\n if (!mesh.isRenderable) return;\n\n mesh.state.blendMode = mesh.groupBlendMode;\n\n const localUniforms = this.localUniforms;\n\n localUniforms.uniforms.uTransformMatrix = mesh.groupTransform;\n localUniforms.uniforms.uRound = this.renderer._roundPixels | mesh._roundPixels;\n localUniforms.update();\n\n color32BitToUniform(\n mesh.groupColorAlpha,\n localUniforms.uniforms.uColor,\n 0\n );\n\n this._adaptor.execute(this, mesh);\n }\n\n private _getMeshData(mesh: Mesh): MeshData\n {\n return this._meshDataHash[mesh.uid] || this._initMeshData(mesh);\n }\n\n private _initMeshData(mesh: Mesh): MeshData\n {\n this._meshDataHash[mesh.uid] = {\n batched: mesh.batched,\n indexSize: mesh._geometry.indices?.length,\n vertexSize: mesh._geometry.positions?.length,\n };\n\n mesh.on('destroyed', () =>\n {\n this.destroyRenderable(mesh);\n });\n\n return this._meshDataHash[mesh.uid];\n }\n\n private _getBatchableMesh(mesh: Mesh): BatchableMesh\n {\n return this._gpuBatchableMeshHash[mesh.uid] || this._initBatchableMesh(mesh);\n }\n\n private _initBatchableMesh(mesh: Mesh): BatchableMesh\n {\n // TODO - make this batchable graphics??\n const gpuMesh: BatchableMesh = BigPool.get(BatchableMesh);\n\n gpuMesh.mesh = mesh;\n gpuMesh.texture = mesh._texture;\n gpuMesh.roundPixels = (this.renderer._roundPixels | mesh._roundPixels) as 0 | 1;\n\n this._gpuBatchableMeshHash[mesh.uid] = gpuMesh;\n\n gpuMesh.mesh = mesh;\n\n return gpuMesh;\n }\n\n public destroy()\n {\n for (const i in this._gpuBatchableMeshHash)\n {\n if (this._gpuBatchableMeshHash[i])\n {\n BigPool.return(this._gpuBatchableMeshHash[i] as PoolItem);\n }\n }\n\n this._gpuBatchableMeshHash = null;\n this._meshDataHash = null;\n\n this.localUniforms = null;\n this.localUniformsBindGroup = null;\n\n this._adaptor.destroy();\n this._adaptor = null;\n\n this.renderer = null;\n }\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { MeshPipe } from './shared/MeshPipe';\n\nextensions.add(MeshPipe);\n","import type { Batch, BatchableObject, Batcher } from '../../rendering/batcher/shared/Batcher';\nimport type { IndexBufferArray } from '../../rendering/renderers/shared/geometry/Geometry';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { BoundsData } from '../container/bounds/Bounds';\nimport type { Container } from '../container/Container';\n\n/**\n * A batchable sprite object.\n * @ignore\n */\nexport class BatchableSprite implements BatchableObject\n{\n public indexStart: number;\n public renderable: Container;\n\n // batch specific..\n public vertexSize = 4;\n public indexSize = 6;\n public texture: Texture;\n\n public textureId: number;\n public location = 0; // location in the buffer\n public batcher: Batcher = null;\n public batch: Batch = null;\n public bounds: BoundsData;\n public roundPixels: 0 | 1 = 0;\n\n get blendMode() { return this.renderable.groupBlendMode; }\n\n public packAttributes(\n float32View: Float32Array,\n uint32View: Uint32Array,\n index: number,\n textureId: number,\n )\n {\n const sprite = this.renderable;\n const texture = this.texture;\n\n const wt = sprite.groupTransform;\n\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n\n const bounds = this.bounds;\n\n const w0 = bounds.maxX;\n const w1 = bounds.minX;\n const h0 = bounds.maxY;\n const h1 = bounds.minY;\n\n const uvs = texture.uvs;\n\n // _ _ _ _\n // a b g r\n const argb = sprite.groupColorAlpha;\n\n const textureIdAndRound = (textureId << 16) | (this.roundPixels & 0xFFFF);\n\n float32View[index + 0] = (a * w1) + (c * h1) + tx;\n float32View[index + 1] = (d * h1) + (b * w1) + ty;\n\n float32View[index + 2] = uvs.x0;\n float32View[index + 3] = uvs.y0;\n\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n\n // xy\n float32View[index + 6] = (a * w0) + (c * h1) + tx;\n float32View[index + 7] = (d * h1) + (b * w0) + ty;\n\n float32View[index + 8] = uvs.x1;\n float32View[index + 9] = uvs.y1;\n\n uint32View[index + 10] = argb;\n uint32View[index + 11] = textureIdAndRound;\n\n // xy\n float32View[index + 12] = (a * w0) + (c * h0) + tx;\n float32View[index + 13] = (d * h0) + (b * w0) + ty;\n\n float32View[index + 14] = uvs.x2;\n float32View[index + 15] = uvs.y2;\n\n uint32View[index + 16] = argb;\n uint32View[index + 17] = textureIdAndRound;\n\n // xy\n float32View[index + 18] = (a * w1) + (c * h0) + tx;\n float32View[index + 19] = (d * h0) + (b * w1) + ty;\n\n float32View[index + 20] = uvs.x3;\n float32View[index + 21] = uvs.y3;\n\n uint32View[index + 22] = argb;\n uint32View[index + 23] = textureIdAndRound;\n }\n\n public packIndex(indexBuffer: IndexBufferArray, index: number, indicesOffset: number)\n {\n indexBuffer[index] = indicesOffset + 0;\n indexBuffer[index + 1] = indicesOffset + 1;\n indexBuffer[index + 2] = indicesOffset + 2;\n\n indexBuffer[index + 3] = indicesOffset + 0;\n indexBuffer[index + 4] = indicesOffset + 2;\n indexBuffer[index + 5] = indicesOffset + 3;\n }\n\n public reset()\n {\n this.renderable = null;\n this.texture = null;\n this.batcher = null;\n this.batch = null;\n this.bounds = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { updateQuadBounds } from '../../../utils/data/updateQuadBounds';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\nimport { BatchableSprite } from '../../sprite/BatchableSprite';\n\nimport type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Renderer } from '../../../rendering/renderers/types';\nimport type { Text } from '../Text';\n\nexport class CanvasTextPipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'text',\n } as const;\n\n private _renderer: Renderer;\n\n private _gpuText: Record = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public validateRenderable(text: Text): boolean\n {\n const gpuText = this._getGpuText(text);\n\n const newKey = text._getKey();\n\n if (gpuText.currentKey !== newKey)\n {\n const resolution = text.resolution ?? this._renderer.resolution;\n\n const { width, height } = this._renderer.canvasText.getTextureSize(\n text.text,\n resolution,\n text._style,\n );\n\n if (\n // is only being used by this text:\n this._renderer.canvasText.getReferenceCount(gpuText.currentKey) === 1\n // check the size of the text is the same po2\n && width === gpuText.texture._source.width\n && height === gpuText.texture._source.height\n )\n {\n return false;\n }\n\n return true;\n }\n\n return false;\n }\n\n public addRenderable(text: Text, _instructionSet: InstructionSet)\n {\n const gpuText = this._getGpuText(text);\n\n const batchableSprite = gpuText.batchableSprite;\n\n if (text._didTextUpdate)\n {\n this._updateText(text);\n }\n\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n\n public updateRenderable(text: Text)\n {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n\n if (text._didTextUpdate)\n {\n this._updateText(text);\n }\n\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n\n public destroyRenderable(text: Text)\n {\n this._destroyRenderableById(text.uid);\n }\n\n private _destroyRenderableById(textUid: number)\n {\n const gpuText = this._gpuText[textUid];\n\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n\n BigPool.return(gpuText.batchableSprite);\n\n this._gpuText[textUid] = null;\n }\n\n private _updateText(text: Text)\n {\n const newKey = text._getKey();\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n\n if (gpuText.currentKey !== newKey)\n {\n this._updateGpuText(text);\n }\n\n text._didTextUpdate = false;\n\n const padding = text._style.padding;\n\n updateQuadBounds(batchableSprite.bounds, text._anchor, batchableSprite.texture, padding);\n }\n\n private _updateGpuText(text: Text)\n {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n\n if (gpuText.texture)\n {\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n }\n\n gpuText.texture = batchableSprite.texture = this._renderer.canvasText.getManagedTexture(text);\n\n gpuText.currentKey = text._getKey();\n batchableSprite.texture = gpuText.texture;\n }\n\n private _getGpuText(text: Text)\n {\n return this._gpuText[text.uid] || this.initGpuText(text);\n }\n\n public initGpuText(text: Text)\n {\n const gpuTextData: CanvasTextPipe['_gpuText'][number] = {\n texture: null,\n currentKey: '--',\n batchableSprite: BigPool.get(BatchableSprite),\n };\n\n gpuTextData.batchableSprite.renderable = text;\n gpuTextData.batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n gpuTextData.batchableSprite.roundPixels = (this._renderer._roundPixels | text._roundPixels) as 0 | 1;\n\n this._gpuText[text.uid] = gpuTextData;\n\n this._updateText(text);\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n text.on('destroyed', () =>\n {\n this.destroyRenderable(text);\n });\n\n return gpuTextData;\n }\n\n public destroy()\n {\n for (const i in this._gpuText)\n {\n this._destroyRenderableById(i as unknown as number);\n }\n\n this._gpuText = null;\n this._renderer = null;\n }\n}\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { nextPow2 } from '../../../../maths/misc/pow2';\n\nimport type { ICanvas, ICanvasRenderingContext2DSettings } from '../../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\n\nexport interface CanvasAndContext\n{\n canvas: ICanvas;\n context: ICanvasRenderingContext2D;\n}\n\n/**\n * Texture pool, used by FilterSystem and plugins.\n *\n * Stores collection of temporary pow2 or screen-sized renderTextures\n *\n * If you use custom RenderTexturePool for your filters, you can use methods\n * `getFilterTexture` and `returnFilterTexture` same as in\n * @name CanvasPool\n * @memberof rendering\n */\nexport class CanvasPoolClass\n{\n public canvasOptions: ICanvasRenderingContext2DSettings;\n\n /**\n * Allow renderTextures of the same size as screen, not just pow2\n *\n * Automatically sets to true after `setScreenSize`\n * @default false\n */\n public enableFullScreen: boolean;\n private _canvasPool: {[x in string | number]: CanvasAndContext[]};\n\n constructor(canvasOptions?: ICanvasRenderingContext2DSettings)\n {\n this._canvasPool = Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n private _createCanvasAndContext(pixelWidth: number, pixelHeight: number): CanvasAndContext\n {\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n\n const context = canvas.getContext('2d');\n\n return { canvas, context };\n }\n\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n public getOptimalCanvasAndContext(minWidth: number, minHeight: number, resolution = 1): CanvasAndContext\n {\n minWidth = Math.ceil((minWidth * resolution) - 1e-6);\n minHeight = Math.ceil((minHeight * resolution) - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n\n const key = (minWidth << 17) + (minHeight << 1);\n\n if (!this._canvasPool[key])\n {\n this._canvasPool[key] = [];\n }\n\n let canvasAndContext = this._canvasPool[key].pop();\n\n if (!canvasAndContext)\n {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n\n return canvasAndContext;\n }\n\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n public returnCanvasAndContext(canvasAndContext: CanvasAndContext): void\n {\n const { width, height } = canvasAndContext.canvas;\n\n const key = (width << 17) + (height << 1);\n\n this._canvasPool[key].push(canvasAndContext);\n }\n\n public clear(): void\n {\n this._canvasPool = {};\n }\n}\n\nexport const CanvasPool = new CanvasPoolClass();\n","import { nextPow2 } from '../../../../maths/misc/pow2';\nimport { TextureSource } from './sources/TextureSource';\nimport { Texture } from './Texture';\n\nimport type { TextureSourceOptions } from './sources/TextureSource';\n\nlet count = 0;\n\n/**\n * Texture pool, used by FilterSystem and plugins.\n *\n * Stores collection of temporary pow2 or screen-sized renderTextures\n *\n * If you use custom RenderTexturePool for your filters, you can use methods\n * `getFilterTexture` and `returnFilterTexture` same as in default pool\n * @memberof rendering\n * @name TexturePool\n */\nexport class TexturePoolClass\n{\n /** The default options for texture pool */\n public textureOptions: TextureSourceOptions;\n\n /**\n * Allow renderTextures of the same size as screen, not just pow2\n *\n * Automatically sets to true after `setScreenSize`\n * @default false\n */\n public enableFullScreen: boolean;\n\n private _texturePool: {[x in string | number]: Texture[]};\n private _poolKeyHash: Record = Object.create(null);\n\n /**\n * @param textureOptions - options that will be passed to BaseRenderTexture constructor\n * @param {SCALE_MODE} [textureOptions.scaleMode] - See {@link SCALE_MODE} for possible values.\n */\n constructor(textureOptions?: TextureSourceOptions)\n {\n this._texturePool = {};\n this.textureOptions = textureOptions || {};\n this.enableFullScreen = false;\n }\n\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n * @param antialias\n */\n public createTexture(pixelWidth: number, pixelHeight: number, antialias: boolean): Texture\n {\n const textureSource = new TextureSource({\n ...this.textureOptions,\n\n width: pixelWidth,\n height: pixelHeight,\n resolution: 1,\n antialias,\n autoGarbageCollect: true,\n });\n\n return new Texture({\n source: textureSource,\n label: `texturePool_${count++}`,\n });\n }\n\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param frameWidth - The minimum width of the render texture.\n * @param frameHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @param antialias\n * @returns The new render texture.\n */\n public getOptimalTexture(frameWidth: number, frameHeight: number, resolution = 1, antialias: boolean): Texture\n {\n let po2Width = Math.ceil((frameWidth * resolution) - 1e-6);\n let po2Height = Math.ceil((frameHeight * resolution) - 1e-6);\n\n po2Width = nextPow2(po2Width);\n po2Height = nextPow2(po2Height);\n\n const key = (po2Width << 17) + (po2Height << 1) + (antialias ? 1 : 0);\n\n if (!this._texturePool[key])\n {\n this._texturePool[key] = [];\n }\n\n let texture = this._texturePool[key].pop();\n\n if (!texture)\n {\n texture = this.createTexture(po2Width, po2Height, antialias);\n }\n\n texture.source._resolution = resolution;\n texture.source.width = po2Width / resolution;\n texture.source.height = po2Height / resolution;\n texture.source.pixelWidth = po2Width;\n texture.source.pixelHeight = po2Height;\n\n // fit the layout to the requested original size\n texture.frame.x = 0;\n texture.frame.y = 0;\n texture.frame.width = frameWidth;\n texture.frame.height = frameHeight;\n\n texture.updateUvs();\n\n this._poolKeyHash[texture.uid] = key;\n\n return texture;\n }\n\n /**\n * Gets extra texture of the same size as input renderTexture\n * @param texture - The texture to check what size it is.\n * @param antialias - Whether to use antialias.\n * @returns A texture that is a power of two\n */\n public getSameSizeTexture(texture: Texture, antialias = false)\n {\n const source = texture.source;\n\n return this.getOptimalTexture(texture.width, texture.height, source._resolution, antialias);\n }\n\n /**\n * Place a render texture back into the pool.\n * @param renderTexture - The renderTexture to free\n */\n public returnTexture(renderTexture: Texture): void\n {\n const key = this._poolKeyHash[renderTexture.uid];\n\n this._texturePool[key].push(renderTexture);\n }\n\n /**\n * Clears the pool.\n * @param destroyTextures - Destroy all stored textures.\n */\n public clear(destroyTextures?: boolean): void\n {\n destroyTextures = destroyTextures !== false;\n if (destroyTextures)\n {\n for (const i in this._texturePool)\n {\n const textures = this._texturePool[i];\n\n if (textures)\n {\n for (let j = 0; j < textures.length; j++)\n {\n textures[j].destroy(true);\n }\n }\n }\n }\n\n this._texturePool = {};\n }\n}\n\nexport const TexturePool = new TexturePoolClass();\n","import { Rectangle } from '../../maths/shapes/Rectangle';\n\nimport type { ICanvas } from '../../environment/canvas/ICanvas';\n\nfunction checkRow(data: Uint8ClampedArray, width: number, y: number)\n{\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4)\n {\n if (data[index + 3] !== 0) return false;\n }\n\n return true;\n}\n\nfunction checkColumn(data: Uint8ClampedArray, width: number, x: number, top: number, bottom: number)\n{\n const stride = 4 * width;\n\n for (let y = top, index = (top * stride) + (4 * x); y <= bottom; ++y, index += stride)\n {\n if (data[index + 3] !== 0) return false;\n }\n\n return true;\n}\n\n/**\n * Measuring the bounds of a canvas' visible (non-transparent) pixels.\n * @param canvas - The canvas to measure.\n * @param resolution - The resolution of the canvas.\n * @returns The bounding box of the canvas' visible pixels.\n * @since 7.1.0\n * @memberof utils\n */\nexport function getCanvasBoundingBox(canvas: ICanvas, resolution = 1): Rectangle\n{\n // https://gist.github.com/timdown/021d9c8f2aabc7092df564996f5afbbf\n\n const { width, height } = canvas;\n\n const context = canvas.getContext('2d', {\n willReadFrequently: true,\n });\n\n if (context === null)\n {\n throw new TypeError('Failed to get canvas 2D context');\n }\n\n const imageData = context.getImageData(0, 0, width, height);\n const data = imageData.data;\n\n let left = 0;\n let top = 0;\n let right = width - 1;\n let bottom = height - 1;\n\n while (top < height && checkRow(data, width, top)) ++top;\n if (top === height) return Rectangle.EMPTY;\n while (checkRow(data, width, bottom)) --bottom;\n while (checkColumn(data, width, left, top, bottom)) ++left;\n while (checkColumn(data, width, right, top, bottom)) --right;\n\n ++right;\n ++bottom;\n\n return new Rectangle(left / resolution, top / resolution, (right - left) / resolution, (bottom - top) / resolution);\n}\n","import type { Dict } from '../types';\n\n// A map of warning messages already fired\nconst warnings: Dict = {};\n\n/**\n * deprecation name for version 8.0.0\n * @ignore\n */\nexport const v8_0_0 = '8.0.0';\n\n/**\n * Helper for warning developers about deprecated features & settings.\n * A stack track for warnings is given; useful for tracking-down where\n * deprecated methods/properties/classes are being used within the code.\n * @memberof utils\n * @ignore\n * @function deprecation\n * @param {string} version - The version where the feature became deprecated\n * @param {string} message - Message should include what is deprecated, where, and the new solution\n * @param {number} [ignoreDepth=3] - The number of steps to ignore at the top of the error stack\n * this is mostly to ignore internal deprecation calls.\n */\nexport function deprecation(version: string, message: string, ignoreDepth = 3): void\n{\n // Ignore duplicat\n if (warnings[message])\n {\n return;\n }\n\n /* eslint-disable no-console */\n let stack = new Error().stack;\n\n // Handle IE < 10 and Safari < 6\n if (typeof stack === 'undefined')\n {\n console.warn('PixiJS Deprecation Warning: ', `${message}\\nDeprecated since v${version}`);\n }\n else\n {\n // chop off the stack trace which includes PixiJS internal calls\n stack = stack.split('\\n').splice(ignoreDepth).join('\\n');\n\n if (console.groupCollapsed)\n {\n console.groupCollapsed(\n '%cPixiJS Deprecation Warning: %c%s',\n 'color:#614108;background:#fffbe6',\n 'font-weight:normal;color:#614108;background:#fffbe6',\n `${message}\\nDeprecated since v${version}`\n );\n console.warn(stack);\n console.groupEnd();\n }\n else\n {\n console.warn('PixiJS Deprecation Warning: ', `${message}\\nDeprecated since v${version}`);\n console.warn(stack);\n }\n }\n /* eslint-enable no-console */\n\n warnings[message] = true;\n}\n","import { Color } from '../../../../color/Color';\nimport { DOMAdapter } from '../../../../environment/adapter';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { ImageSource } from '../../../../rendering/renderers/shared/texture/sources/ImageSource';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { uid } from '../../../../utils/data/uid';\n\nimport type { ColorSource } from '../../../../color/Color';\n\nexport type GradientType = 'linear' | 'radial';\n\n// export type GradientSource =\n// string // CSS gradient string: 'linear-gradient(...)'\n// | IGradientOptions // Gradient options: { x0, y0, x1, y1, ...}\n// | Gradient; // class Gradient itself\n\nexport interface LinearGradientFillStyle\n{\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n colors: number[];\n stops: number[];\n}\n\nexport class FillGradient implements CanvasGradient\n{\n public static defaultTextureSize = 256;\n\n public readonly uid = uid('fillGradient');\n public readonly type: GradientType = 'linear';\n\n public x0: number;\n public y0: number;\n public x1: number;\n public y1: number;\n\n public texture: Texture;\n public transform: Matrix;\n public gradientStops: Array<{ offset: number, color: string }> = [];\n\n constructor(x0: number, y0: number, x1: number, y1: number)\n {\n this.x0 = x0;\n this.y0 = y0;\n\n this.x1 = x1;\n this.y1 = y1;\n }\n\n public addColorStop(offset: number, color: ColorSource): this\n {\n this.gradientStops.push({ offset, color: Color.shared.setValue(color).toHex() });\n\n return this;\n }\n\n // TODO move to the system!\n public buildLinearGradient(): void\n {\n const defaultSize = FillGradient.defaultTextureSize;\n\n const { gradientStops } = this;\n\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = defaultSize;\n canvas.height = defaultSize;\n\n const ctx = canvas.getContext('2d');\n\n const gradient = ctx.createLinearGradient(0, 0, FillGradient.defaultTextureSize, 1);\n\n for (let i = 0; i < gradientStops.length; i++)\n {\n const stop = gradientStops[i];\n\n gradient.addColorStop(stop.offset, stop.color);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, defaultSize, defaultSize);\n\n this.texture = new Texture({\n source: new ImageSource({\n resource: canvas,\n addressModeU: 'clamp-to-edge',\n addressModeV: 'repeat',\n }),\n });\n\n // generate some UVS based on the gradient direction sent\n\n const { x0, y0, x1, y1 } = this;\n\n const m = new Matrix();\n\n // get angle\n const dx = x1 - x0;\n const dy = y1 - y0;\n\n const dist = Math.sqrt((dx * dx) + (dy * dy));\n\n const angle = Math.atan2(dy, dx);\n\n m.translate(-x0, -y0);\n m.scale(1 / defaultSize, 1 / defaultSize);\n m.rotate(-angle);\n m.scale(256 / dist, 1);\n\n this.transform = m;\n }\n}\n","\nmodule.exports = parse\n\n/**\n * expected argument lengths\n * @type {Object}\n */\n\nvar length = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0}\n\n/**\n * segment pattern\n * @type {RegExp}\n */\n\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig\n\n/**\n * parse an svg path data string. Generates an Array\n * of commands where each command is an Array of the\n * form `[command, arg1, arg2, ...]`\n *\n * @param {String} path\n * @return {Array}\n */\n\nfunction parse(path) {\n\tvar data = []\n\tpath.replace(segment, function(_, command, args){\n\t\tvar type = command.toLowerCase()\n\t\targs = parseValues(args)\n\n\t\t// overloaded moveTo\n\t\tif (type == 'm' && args.length > 2) {\n\t\t\tdata.push([command].concat(args.splice(0, 2)))\n\t\t\ttype = 'l'\n\t\t\tcommand = command == 'm' ? 'l' : 'L'\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (args.length == length[type]) {\n\t\t\t\targs.unshift(command)\n\t\t\t\treturn data.push(args)\n\t\t\t}\n\t\t\tif (args.length < length[type]) throw new Error('malformed path data')\n\t\t\tdata.push([command].concat(args.splice(0, length[type])))\n\t\t}\n\t})\n\treturn data\n}\n\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nfunction parseValues(args) {\n\tvar numbers = args.match(number)\n\treturn numbers ? numbers.map(Number) : []\n}\n","/* eslint-disable no-console */\nimport parse from 'parse-svg-path';\nimport { warn } from '../../../../utils/logging/warn';\n\nimport type { GraphicsPath } from '../path/GraphicsPath';\n\ninterface SubPath\n{\n startX: number;\n startY: number;\n}\n\n// TODO optimise and cache the paths?\nexport function SVGToGraphicsPath(svgPath: string, path: GraphicsPath): GraphicsPath\n{\n const commands = parse(svgPath);\n\n const subpaths: SubPath[] = [];\n let currentSubPath: SubPath | null = null;\n\n let lastX = 0;\n let lastY = 0;\n\n for (let i = 0; i < commands.length; i++)\n {\n const command = commands[i];\n const type = command[0];\n const data = command; // alias for 1-based referencing\n\n switch (type)\n {\n case 'M':\n lastX = data[1];\n lastY = data[2];\n\n path.moveTo(lastX, lastY);\n break;\n case 'm':\n\n lastX += data[1];\n lastY += data[2];\n\n path.moveTo(lastX, lastY);\n break;\n case 'H':\n lastX = data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'h':\n lastX += data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'V':\n lastY = data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'v':\n lastY += data[1];\n\n path.lineTo(lastX, lastY);\n break;\n case 'L':\n lastX = data[1];\n lastY = data[2];\n\n path.lineTo(lastX, lastY);\n break;\n case 'l':\n lastX += data[1];\n lastY += data[2];\n\n path.lineTo(lastX, lastY);\n break;\n case 'C':\n\n lastX = data[5];\n lastY = data[6];\n\n path.bezierCurveTo(\n data[1], data[2],\n data[3], data[4],\n lastX, lastY\n );\n break;\n case 'c':\n path.bezierCurveTo(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4],\n lastX + data[5], lastY + data[6]\n );\n\n lastX += data[5];\n lastY += data[6];\n break;\n case 'S':\n lastX = data[3];\n lastY = data[4];\n\n path.bezierCurveToShort(\n data[1], data[2],\n lastX, lastY\n );\n break;\n case 's':\n path.bezierCurveToShort(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4],\n );\n\n lastX += data[3];\n lastY += data[4];\n break;\n case 'Q':\n lastX = data[3];\n lastY = data[4];\n\n path.quadraticCurveTo(\n data[1], data[2],\n lastX, lastY\n );\n break;\n case 'q':\n path.quadraticCurveTo(\n lastX + data[1], lastY + data[2],\n lastX + data[3], lastY + data[4]\n );\n\n lastX += data[3];\n lastY += data[4];\n break;\n case 'T':\n lastX = data[1];\n lastY = data[2];\n\n path.quadraticCurveToShort(\n lastX, lastY\n );\n break;\n case 't':\n lastX += data[1];\n lastY += data[2];\n\n path.quadraticCurveToShort(\n lastX, lastY\n );\n break;\n case 'A':\n lastX = data[6];\n lastY = data[7];\n\n path.arcToSvg(\n data[1],\n data[2],\n data[3],\n data[4],\n data[5],\n lastX, lastY\n );\n break;\n case 'a':\n lastX += data[6];\n lastY += data[7];\n\n path.arcToSvg(\n data[1],\n data[2],\n data[3],\n data[4],\n data[5],\n lastX, lastY\n );\n break;\n case 'Z':\n case 'z':\n path.closePath();\n if (subpaths.length > 0)\n {\n currentSubPath = subpaths.pop();\n if (currentSubPath)\n {\n lastX = currentSubPath.startX;\n lastY = currentSubPath.startY;\n }\n else\n {\n lastX = 0;\n lastY = 0;\n }\n }\n currentSubPath = null;\n break;\n default:\n // #if _DEBUG\n warn(`Unknown SVG path command: ${type}`);\n // #endif\n }\n\n if (type !== 'Z' && type !== 'z')\n {\n if (currentSubPath === null)\n {\n currentSubPath = { startX: lastX, startY: lastY };\n subpaths.push(currentSubPath);\n }\n }\n }\n\n return path;\n}\n","import { Rectangle } from './Rectangle';\n\nimport type { SHAPE_PRIMITIVE } from '../misc/const';\nimport type { ShapePrimitive } from './ShapePrimitive';\n\n/**\n * The Circle object is used to help draw graphics and can also be used to specify a hit area for containers.\n * @memberof maths\n */\nexport class Circle implements ShapePrimitive\n{\n /**\n * The X coordinate of the center of this circle\n * @default 0\n */\n public x: number;\n\n /**\n * The Y coordinate of the center of this circle\n * @default 0\n */\n public y: number;\n\n /**\n * The radius of the circle\n * @default 0\n */\n public radius: number;\n\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'circle'\n */\n public readonly type: SHAPE_PRIMITIVE = 'circle';\n\n /**\n * @param x - The X coordinate of the center of this circle\n * @param y - The Y coordinate of the center of this circle\n * @param radius - The radius of the circle\n */\n constructor(x = 0, y = 0, radius = 0)\n {\n this.x = x;\n this.y = y;\n this.radius = radius;\n }\n\n /**\n * Creates a clone of this Circle instance\n * @returns A copy of the Circle\n */\n public clone(): Circle\n {\n return new Circle(this.x, this.y, this.radius);\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this circle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Circle\n */\n public contains(x: number, y: number): boolean\n {\n if (this.radius <= 0) return false;\n\n const r2 = this.radius * this.radius;\n let dx = (this.x - x);\n let dy = (this.y - y);\n\n dx *= dx;\n dy *= dy;\n\n return (dx + dy <= r2);\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this circle including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param width - The width of the line to check\n * @returns Whether the x/y coordinates are within this Circle\n */\n public strokeContains(x: number, y: number, width: number): boolean\n {\n if (this.radius === 0) return false;\n\n const dx = (this.x - x);\n const dy = (this.y - y);\n const r = this.radius;\n const w2 = width / 2;\n const distance = Math.sqrt((dx * dx) + (dy * dy));\n\n return (distance < r + w2 && distance > r - w2);\n }\n\n /**\n * Returns the framing rectangle of the circle as a Rectangle object\n * @param out\n * @returns The framing rectangle\n */\n public getBounds(out?: Rectangle): Rectangle\n {\n out = out || new Rectangle();\n\n out.x = this.x - this.radius;\n out.y = this.y - this.radius;\n out.width = this.radius * 2;\n out.height = this.radius * 2;\n\n return out;\n }\n\n /**\n * Copies another circle to this one.\n * @param circle - The circle to copy from.\n * @returns Returns itself.\n */\n public copyFrom(circle: Circle): this\n {\n this.x = circle.x;\n this.y = circle.y;\n this.radius = circle.radius;\n\n return this;\n }\n\n /**\n * Copies this circle to another one.\n * @param circle - The circle to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(circle: Circle): Circle\n {\n circle.copyFrom(this);\n\n return circle;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`;\n }\n // #endif\n}\n","import { Rectangle } from './Rectangle';\n\nimport type { ShapePrimitive } from './ShapePrimitive';\n\n/**\n * The Ellipse object is used to help draw graphics and can also be used to specify a hit area for containers.\n * ```js\n * import { Ellipse } from 'pixi.js';\n *\n * const ellipse = new Ellipse(0, 0, 20, 10); // 40x20 rectangle\n * const isPointInEllipse = ellipse.contains(0, 0); // true\n * ```\n * @memberof maths\n */\nexport class Ellipse implements ShapePrimitive\n{\n /**\n * The X coordinate of the center of this ellipse\n * @default 0\n */\n public x: number;\n\n /**\n * The Y coordinate of the center of this ellipse\n * @default 0\n */\n public y: number;\n\n /**\n * The half width of this ellipse\n * @default 0\n */\n public halfWidth: number;\n\n /**\n * The half height of this ellipse\n * @default 0\n */\n public halfHeight: number;\n\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'ellipse'\n */\n public readonly type = 'ellipse';\n\n /**\n * @param x - The X coordinate of the center of this ellipse\n * @param y - The Y coordinate of the center of this ellipse\n * @param halfWidth - The half width of this ellipse\n * @param halfHeight - The half height of this ellipse\n */\n constructor(x = 0, y = 0, halfWidth = 0, halfHeight = 0)\n {\n this.x = x;\n this.y = y;\n this.halfWidth = halfWidth;\n this.halfHeight = halfHeight;\n }\n\n /**\n * Creates a clone of this Ellipse instance\n * @returns {Ellipse} A copy of the ellipse\n */\n public clone(): Ellipse\n {\n return new Ellipse(this.x, this.y, this.halfWidth, this.halfHeight);\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this ellipse\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coords are within this ellipse\n */\n public contains(x: number, y: number): boolean\n {\n if (this.halfWidth <= 0 || this.halfHeight <= 0)\n {\n return false;\n }\n\n // normalize the coords to an ellipse with center 0,0\n let normx = ((x - this.x) / this.halfWidth);\n let normy = ((y - this.y) / this.halfHeight);\n\n normx *= normx;\n normy *= normy;\n\n return (normx + normy <= 1);\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this ellipse including stroke\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param width\n * @returns Whether the x/y coords are within this ellipse\n */\n public strokeContains(x: number, y: number, width: number): boolean\n {\n const { halfWidth, halfHeight } = this;\n\n if (halfWidth <= 0 || halfHeight <= 0)\n {\n return false;\n }\n\n const halfStrokeWidth = width / 2;\n const innerA = halfWidth - halfStrokeWidth;\n const innerB = halfHeight - halfStrokeWidth;\n const outerA = halfWidth + halfStrokeWidth;\n const outerB = halfHeight + halfStrokeWidth;\n\n const normalizedX = x - this.x;\n const normalizedY = y - this.y;\n\n const innerEllipse = ((normalizedX * normalizedX) / (innerA * innerA))\n + ((normalizedY * normalizedY) / (innerB * innerB));\n const outerEllipse = ((normalizedX * normalizedX) / (outerA * outerA))\n + ((normalizedY * normalizedY) / (outerB * outerB));\n\n return innerEllipse > 1 && outerEllipse <= 1;\n }\n\n /**\n * Returns the framing rectangle of the ellipse as a Rectangle object\n * @returns The framing rectangle\n */\n public getBounds(): Rectangle\n {\n return new Rectangle(this.x - this.halfWidth, this.y - this.halfHeight, this.halfWidth * 2, this.halfHeight * 2);\n }\n\n /**\n * Copies another ellipse to this one.\n * @param ellipse - The ellipse to copy from.\n * @returns Returns itself.\n */\n public copyFrom(ellipse: Ellipse): this\n {\n this.x = ellipse.x;\n this.y = ellipse.y;\n this.halfWidth = ellipse.halfWidth;\n this.halfHeight = ellipse.halfHeight;\n\n return this;\n }\n\n /**\n * Copies this ellipse to another one.\n * @param ellipse - The ellipse to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(ellipse: Ellipse): Ellipse\n {\n ellipse.copyFrom(this);\n\n return ellipse;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`;\n }\n // #endif\n}\n","export function squaredDistanceToLineSegment(\n x: number, y: number,\n x1: number, y1: number,\n x2: number, y2: number\n): number\n{\n const a = x - x1;\n const b = y - y1;\n const c = x2 - x1;\n const d = y2 - y1;\n\n const dot = (a * c) + (b * d);\n const lenSq = (c * c) + (d * d);\n let param = -1;\n\n if (lenSq !== 0)\n {\n param = dot / lenSq;\n }\n\n let xx; let\n yy;\n\n if (param < 0)\n {\n xx = x1;\n yy = y1;\n }\n else if (param > 1)\n {\n xx = x2;\n yy = y2;\n }\n\n else\n {\n xx = x1 + (param * c);\n yy = y1 + (param * d);\n }\n\n const dx = x - xx;\n const dy = y - yy;\n\n return (dx * dx) + (dy * dy);\n}\n","import { squaredDistanceToLineSegment } from '../misc/squaredDistanceToLineSegment';\nimport { Rectangle } from './Rectangle';\n\nimport type { SHAPE_PRIMITIVE } from '../misc/const';\nimport type { PointData } from '../point/PointData';\nimport type { ShapePrimitive } from './ShapePrimitive';\n\n/**\n * A class to define a shape via user defined coordinates.\n *\n *\n * `Polygon` can accept the following different constructor arguments:\n * - An array of `Point` objects\n * - An array of coordinate pairs\n *\n *\n * These can be passed as a single array, or as a sequence of arguments.\n * ```js\n * import { Polygon } from 'pixi.js';\n *\n * // create a polygon object from an array of points, or an array of coordinate pairs\n * const polygon1 = new Polygon([ new Point(0, 0), new Point(0, 100), new Point(100, 100) ]);\n * const polygon2 = new Polygon([ 0, 0, 0, 100, 100, 100 ]);\n *\n * // or create a polygon object from a sequence of points, or coordinate pairs\n * const polygon3 = new Polygon(new Point(0, 0), new Point(0, 100), new Point(100, 100));\n * const polygon4 = new Polygon(0, 0, 0, 100, 100, 100);\n * ```\n * @memberof maths\n */\nexport class Polygon implements ShapePrimitive\n{\n /** An array of the points of this polygon. */\n public points: number[];\n\n /** `false` after moveTo, `true` after `closePath`. In all other cases it is `true`. */\n public closePath: boolean;\n\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'polygon'\n */\n public readonly type: SHAPE_PRIMITIVE = 'polygon';\n\n constructor(points: PointData[] | number[]);\n constructor(...points: PointData[] | number[]);\n /**\n * @param points - This can be an array of Points\n * that form the polygon, a flat array of numbers that will be interpreted as [x,y, x,y, ...], or\n * the arguments passed can be all the points of the polygon e.g.\n * `new Polygon(new Point(), new Point(), ...)`, or the arguments passed can be flat\n * x,y values e.g. `new Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are Numbers.\n */\n constructor(...points: (PointData[] | number[])[] | PointData[] | number[])\n {\n let flat = Array.isArray(points[0]) ? points[0] : points;\n\n // if this is an array of points, convert it to a flat array of numbers\n if (typeof flat[0] !== 'number')\n {\n const p: number[] = [];\n\n for (let i = 0, il = flat.length; i < il; i++)\n {\n p.push((flat[i] as PointData).x, (flat[i] as PointData).y);\n }\n\n flat = p;\n }\n\n this.points = flat as number[];\n\n this.closePath = true;\n }\n\n /**\n * Creates a clone of this polygon.\n * @returns - A copy of the polygon.\n */\n public clone(): Polygon\n {\n const points = this.points.slice();\n const polygon = new Polygon(points);\n\n polygon.closePath = this.closePath;\n\n return polygon;\n }\n\n /**\n * Checks whether the x and y coordinates passed to this function are contained within this polygon.\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this polygon.\n */\n public contains(x: number, y: number): boolean\n {\n let inside = false;\n\n // use some raycasting to test hits\n // https://github.com/substack/point-in-polygon/blob/master/index.js\n const length = this.points.length / 2;\n\n for (let i = 0, j = length - 1; i < length; j = i++)\n {\n const xi = this.points[i * 2];\n const yi = this.points[(i * 2) + 1];\n const xj = this.points[j * 2];\n const yj = this.points[(j * 2) + 1];\n const intersect = ((yi > y) !== (yj > y)) && (x < ((xj - xi) * ((y - yi) / (yj - yi))) + xi);\n\n if (intersect)\n {\n inside = !inside;\n }\n }\n\n return inside;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this polygon including the stroke.\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @returns Whether the x/y coordinates are within this polygon\n */\n public strokeContains(x: number, y: number, strokeWidth: number): boolean\n {\n const halfStrokeWidth = strokeWidth / 2;\n const halfStrokeWidthSqrd = halfStrokeWidth * halfStrokeWidth;\n const { points } = this;\n const iterationLength = points.length - (this.closePath ? 0 : 2);\n\n for (let i = 0; i < iterationLength; i += 2)\n {\n const x1 = points[i];\n const y1 = points[i + 1];\n const x2 = points[(i + 2) % points.length];\n const y2 = points[(i + 3) % points.length];\n\n const distanceSqrd = squaredDistanceToLineSegment(x, y, x1, y1, x2, y2);\n\n if (distanceSqrd <= halfStrokeWidthSqrd)\n {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Returns the framing rectangle of the polygon as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n public getBounds(out?: Rectangle): Rectangle\n {\n out = out || new Rectangle();\n\n const points = this.points;\n\n let minX = Infinity;\n let maxX = -Infinity;\n\n let minY = Infinity;\n let maxY = -Infinity;\n\n for (let i = 0, n = points.length; i < n; i += 2)\n {\n const x = points[i];\n const y = points[i + 1];\n\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n\n out.x = minX;\n out.width = maxX - minX;\n\n out.y = minY;\n out.height = maxY - minY;\n\n return out;\n }\n\n /**\n * Copies another polygon to this one.\n * @param polygon - The polygon to copy from.\n * @returns Returns itself.\n */\n public copyFrom(polygon: Polygon): this\n {\n this.points = polygon.points.slice();\n this.closePath = polygon.closePath;\n\n return this;\n }\n\n /**\n * Copies this polygon to another one.\n * @param polygon - The polygon to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(polygon: Polygon): Polygon\n {\n polygon.copyFrom(this);\n\n return polygon;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Polygon`\n + `closeStroke=${this.closePath}`\n + `points=${this.points.reduce((pointsDesc, currentPoint) => `${pointsDesc}, ${currentPoint}`, '')}]`;\n }\n // #endif\n\n /**\n * Get the last X coordinate of the polygon\n * @readonly\n */\n get lastX(): number\n {\n return this.points[this.points.length - 2];\n }\n\n /**\n * Get the last Y coordinate of the polygon\n * @readonly\n */\n get lastY(): number\n {\n return this.points[this.points.length - 1];\n }\n\n /**\n * Get the first X coordinate of the polygon\n * @readonly\n */\n get x(): number\n {\n return this.points[this.points.length - 2];\n }\n /**\n * Get the first Y coordinate of the polygon\n * @readonly\n */\n get y(): number\n {\n return this.points[this.points.length - 1];\n }\n}\n\n","import { Rectangle } from './Rectangle';\n\nimport type { ShapePrimitive } from './ShapePrimitive';\n\n// Check corner within stroke width\nconst isCornerWithinStroke = (\n pX: number,\n pY: number,\n cornerX: number,\n cornerY: number,\n radius: number,\n halfStrokeWidth: number\n) =>\n{\n const dx = pX - cornerX;\n const dy = pY - cornerY;\n const distance = Math.sqrt((dx * dx) + (dy * dy));\n\n return distance >= radius - halfStrokeWidth && distance <= radius + halfStrokeWidth;\n};\n\n/**\n * The `RoundedRectangle` object is an area defined by its position, as indicated by its top-left corner\n * point (`x`, `y`) and by its `width` and its `height`, including a `radius` property that\n * defines the radius of the rounded corners.\n * @memberof maths\n */\nexport class RoundedRectangle implements ShapePrimitive\n{\n /**\n * The X coordinate of the upper-left corner of the rounded rectangle\n * @default 0\n */\n public x: number;\n\n /**\n * The Y coordinate of the upper-left corner of the rounded rectangle\n * @default 0\n */\n public y: number;\n\n /**\n * The overall width of this rounded rectangle\n * @default 0\n */\n public width: number;\n\n /**\n * The overall height of this rounded rectangle\n * @default 0\n */\n public height: number;\n\n /**\n * Controls the radius of the rounded corners\n * @default 20\n */\n public radius: number;\n\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'roundedRectangle'\n */\n public readonly type = 'roundedRectangle';\n\n /**\n * @param x - The X coordinate of the upper-left corner of the rounded rectangle\n * @param y - The Y coordinate of the upper-left corner of the rounded rectangle\n * @param width - The overall width of this rounded rectangle\n * @param height - The overall height of this rounded rectangle\n * @param radius - Controls the radius of the rounded corners\n */\n constructor(x = 0, y = 0, width = 0, height = 0, radius = 20)\n {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.radius = radius;\n }\n\n /**\n * Returns the framing rectangle of the rounded rectangle as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n public getBounds(out?: Rectangle): Rectangle\n {\n out = out || new Rectangle();\n\n out.x = this.x;\n out.y = this.y;\n out.width = this.width;\n out.height = this.height;\n\n return out;\n }\n\n /**\n * Creates a clone of this Rounded Rectangle.\n * @returns - A copy of the rounded rectangle.\n */\n public clone(): RoundedRectangle\n {\n return new RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);\n }\n\n /**\n * Copies another rectangle to this one.\n * @param rectangle - The rectangle to copy from.\n * @returns Returns itself.\n */\n public copyFrom(rectangle: RoundedRectangle): this\n {\n this.x = rectangle.x;\n this.y = rectangle.y;\n this.width = rectangle.width;\n this.height = rectangle.height;\n\n return this;\n }\n\n /**\n * Copies this rectangle to another one.\n * @param rectangle - The rectangle to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(rectangle: RoundedRectangle): RoundedRectangle\n {\n rectangle.copyFrom(this);\n\n return rectangle;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this Rounded Rectangle\n * @param x - The X coordinate of the point to test.\n * @param y - The Y coordinate of the point to test.\n * @returns - Whether the x/y coordinates are within this Rounded Rectangle.\n */\n public contains(x: number, y: number): boolean\n {\n if (this.width <= 0 || this.height <= 0)\n {\n return false;\n }\n if (x >= this.x && x <= this.x + this.width)\n {\n if (y >= this.y && y <= this.y + this.height)\n {\n const radius = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));\n\n if ((y >= this.y + radius && y <= this.y + this.height - radius)\n || (x >= this.x + radius && x <= this.x + this.width - radius))\n {\n return true;\n }\n let dx = x - (this.x + radius);\n let dy = y - (this.y + radius);\n const radius2 = radius * radius;\n\n if ((dx * dx) + (dy * dy) <= radius2)\n {\n return true;\n }\n dx = x - (this.x + this.width - radius);\n if ((dx * dx) + (dy * dy) <= radius2)\n {\n return true;\n }\n dy = y - (this.y + this.height - radius);\n if ((dx * dx) + (dy * dy) <= radius2)\n {\n return true;\n }\n dx = x - (this.x + radius);\n if ((dx * dx) + (dy * dy) <= radius2)\n {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this rectangle including the stroke.\n * @param pX - The X coordinate of the point to test\n * @param pY - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @returns Whether the x/y coordinates are within this rectangle\n */\n public strokeContains(pX: number, pY: number, strokeWidth: number): boolean\n {\n const { x, y, width, height, radius } = this;\n\n const halfStrokeWidth = strokeWidth / 2;\n const innerX = x + radius;\n const innerY = y + radius;\n const innerWidth = width - (radius * 2);\n const innerHeight = height - (radius * 2);\n const rightBound = x + width;\n const bottomBound = y + height;\n\n // Check if point is within the vertical edges (excluding corners)\n if (((pX >= x - halfStrokeWidth && pX <= x + halfStrokeWidth)\n || (pX >= rightBound - halfStrokeWidth && pX <= rightBound + halfStrokeWidth))\n && pY >= innerY && pY <= innerY + innerHeight)\n {\n return true;\n }\n\n // Check if point is within the horizontal edges (excluding corners)\n if (((pY >= y - halfStrokeWidth && pY <= y + halfStrokeWidth)\n || (pY >= bottomBound - halfStrokeWidth && pY <= bottomBound + halfStrokeWidth))\n && pX >= innerX && pX <= innerX + innerWidth)\n {\n return true;\n }\n\n // Top-left, top-right, bottom-right, bottom-left corners\n return (\n // Top-left\n (pX < innerX && pY < innerY\n && isCornerWithinStroke(pX, pY, innerX, innerY, radius, halfStrokeWidth))\n // top-right\n || (pX > rightBound - radius && pY < innerY\n && isCornerWithinStroke(pX, pY, rightBound - radius, innerY, radius, halfStrokeWidth))\n // bottom-right\n || (pX > rightBound - radius && pY > bottomBound - radius\n && isCornerWithinStroke(pX, pY, rightBound - radius, bottomBound - radius, radius, halfStrokeWidth))\n // bottom-left\n || (pX < innerX && pY > bottomBound - radius\n && isCornerWithinStroke(pX, pY, innerX, bottomBound - radius, radius, halfStrokeWidth)));\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}`\n + `width=${this.width} height=${this.height} radius=${this.radius}]`;\n }\n // #endif\n}\n","// thanks to https://github.com/mattdesl/adaptive-bezier-curve\n// for the original code!\n\nimport { GraphicsContextSystem } from '../GraphicsContextSystem';\n\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 1.19209290e-7;\nconst PATH_DISTANCE_EPSILON = 1.0;\n\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\nconst mCuspLimit = 0;\n\nexport function buildAdaptiveBezier(\n points: number[],\n sX: number, sY: number,\n cp1x: number, cp1y: number,\n cp2x: number, cp2y: number,\n eX: number, eY: number,\n smoothness?: number,\n)\n{\n // TODO expose as a parameter\n const scale = 1;\n const smoothing = Math.min(\n 0.99, // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n Math.max(0, smoothness ?? GraphicsContextSystem.defaultOptions.bezierSmoothness)\n );\n let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n\n distanceTolerance *= distanceTolerance;\n begin(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance);\n\n return points;\n}\n\n// //// Based on:\n// //// https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp\n\nfunction begin(\n sX: number, sY: number,\n cp1x: number, cp1y: number,\n cp2x: number, cp2y: number,\n eX: number, eY: number,\n points: number[],\n distanceTolerance: number\n)\n{\n // dont need to actually ad this!\n // points.push(sX, sY);\n recursive(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance, 0);\n points.push(eX, eY);\n}\n\n// eslint-disable-next-line max-params\nfunction recursive(\n x1: number, y1: number,\n x2: number, y2: number,\n x3: number, y3: number,\n x4: number, y4: number,\n points: number[],\n distanceTolerance: number,\n level: number)\n{\n if (level > RECURSION_LIMIT)\n { return; }\n\n const pi = Math.PI;\n\n // Calculate all the mid-points of the line segments\n // ----------------------\n const x12 = (x1 + x2) / 2;\n const y12 = (y1 + y2) / 2;\n const x23 = (x2 + x3) / 2;\n const y23 = (y2 + y3) / 2;\n const x34 = (x3 + x4) / 2;\n const y34 = (y3 + y4) / 2;\n const x123 = (x12 + x23) / 2;\n const y123 = (y12 + y23) / 2;\n const x234 = (x23 + x34) / 2;\n const y234 = (y23 + y34) / 2;\n const x1234 = (x123 + x234) / 2;\n const y1234 = (y123 + y234) / 2;\n\n if (level > 0)\n { // Enforce subdivision first time\n // Try to approximate the full cubic curve by a single straight line\n // ------------------\n let dx = x4 - x1;\n let dy = y4 - y1;\n\n const d2 = Math.abs(((x2 - x4) * dy) - ((y2 - y4) * dx));\n const d3 = Math.abs(((x3 - x4) * dy) - ((y3 - y4) * dx));\n\n let da1; let da2;\n\n if (d2 > FLT_EPSILON && d3 > FLT_EPSILON)\n {\n // Regular care\n // -----------------\n if ((d2 + d3) * (d2 + d3) <= distanceTolerance * ((dx * dx) + (dy * dy)))\n {\n // If the curvature doesn't exceed the distanceTolerance value\n // we tend to finish subdivisions.\n // ----------------------\n if (mAngleTolerance < curveAngleToleranceEpsilon)\n {\n points.push(x1234, y1234);\n\n return;\n }\n\n // Angle & Cusp Condition\n // ----------------------\n const a23 = Math.atan2(y3 - y2, x3 - x2);\n\n da1 = Math.abs(a23 - Math.atan2(y2 - y1, x2 - x1));\n da2 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - a23);\n if (da1 >= pi) da1 = (2 * pi) - da1;\n if (da2 >= pi) da2 = (2 * pi) - da2;\n\n if (da1 + da2 < mAngleTolerance)\n {\n // Finally we can stop the recursion\n // ----------------------\n points.push(x1234, y1234);\n\n return;\n }\n\n if (mCuspLimit !== 0.0)\n {\n if (da1 > mCuspLimit)\n {\n points.push(x2, y2);\n\n return;\n }\n\n if (da2 > mCuspLimit)\n {\n points.push(x3, y3);\n\n return;\n }\n }\n }\n }\n else if (d2 > FLT_EPSILON)\n {\n // p1,p3,p4 are collinear, p2 is considerable\n // ----------------------\n if (d2 * d2 <= distanceTolerance * ((dx * dx) + (dy * dy)))\n {\n if (mAngleTolerance < curveAngleToleranceEpsilon)\n {\n points.push(x1234, y1234);\n\n return;\n }\n\n // Angle Condition\n // ----------------------\n da1 = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n if (da1 >= pi) da1 = (2 * pi) - da1;\n\n if (da1 < mAngleTolerance)\n {\n points.push(x2, y2);\n points.push(x3, y3);\n\n return;\n }\n\n if (mCuspLimit !== 0.0)\n {\n if (da1 > mCuspLimit)\n {\n points.push(x2, y2);\n\n return;\n }\n }\n }\n }\n else if (d3 > FLT_EPSILON)\n {\n // p1,p2,p4 are collinear, p3 is considerable\n // ----------------------\n if (d3 * d3 <= distanceTolerance * ((dx * dx) + (dy * dy)))\n {\n if (mAngleTolerance < curveAngleToleranceEpsilon)\n {\n points.push(x1234, y1234);\n\n return;\n }\n\n // Angle Condition\n // ----------------------\n da1 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - Math.atan2(y3 - y2, x3 - x2));\n if (da1 >= pi) da1 = (2 * pi) - da1;\n\n if (da1 < mAngleTolerance)\n {\n points.push(x2, y2);\n points.push(x3, y3);\n\n return;\n }\n\n if (mCuspLimit !== 0.0)\n {\n if (da1 > mCuspLimit)\n {\n points.push(x3, y3);\n\n return;\n }\n }\n }\n }\n else\n {\n // Collinear case\n // -----------------\n dx = x1234 - ((x1 + x4) / 2);\n dy = y1234 - ((y1 + y4) / 2);\n if ((dx * dx) + (dy * dy) <= distanceTolerance)\n {\n points.push(x1234, y1234);\n\n return;\n }\n }\n }\n\n // Continue subdivision\n // ----------------------\n recursive(x1, y1, x12, y12, x123, y123, x1234, y1234, points, distanceTolerance, level + 1);\n recursive(x1234, y1234, x234, y234, x34, y34, x4, y4, points, distanceTolerance, level + 1);\n}\n\n","// thanks to https://github.com/mattdesl/adaptive-quadratic-curve\n// for the original code!\n\nimport { GraphicsContextSystem } from '../GraphicsContextSystem';\n\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 1.19209290e-7;\nconst PATH_DISTANCE_EPSILON = 1.0;\n\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\n\nexport function buildAdaptiveQuadratic(\n points: number[],\n sX: number, sY: number,\n cp1x: number, cp1y: number,\n eX: number, eY: number,\n smoothness?: number,\n)\n{\n const scale = 1.0;\n const smoothing = Math.min(\n 0.99, // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n Math.max(0, smoothness ?? GraphicsContextSystem.defaultOptions.bezierSmoothness)\n );\n let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n\n distanceTolerance *= distanceTolerance;\n begin(sX, sY, cp1x, cp1y, eX, eY, points, distanceTolerance);\n\n return points;\n}\n\n// //// Based on:\n// //// https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp\n\nfunction begin(\n sX: number, sY: number,\n cp1x: number, cp1y: number,\n eX: number, eY: number,\n points: number[],\n distanceTolerance: number\n)\n{\n recursive(points, sX, sY, cp1x, cp1y, eX, eY, distanceTolerance, 0);\n\n points.push(eX, eY);\n}\n\nfunction recursive(\n points: number[],\n x1: number, y1: number,\n x2: number, y2: number,\n x3: number, y3: number,\n distanceTolerance: number,\n level: number\n)\n{\n if (level > RECURSION_LIMIT)\n { return; }\n\n const pi = Math.PI;\n\n // Calculate all the mid-points of the line segments\n // ----------------------\n const x12 = (x1 + x2) / 2;\n const y12 = (y1 + y2) / 2;\n const x23 = (x2 + x3) / 2;\n const y23 = (y2 + y3) / 2;\n const x123 = (x12 + x23) / 2;\n const y123 = (y12 + y23) / 2;\n\n let dx = x3 - x1;\n let dy = y3 - y1;\n const d = Math.abs((((x2 - x3) * dy) - ((y2 - y3) * dx)));\n\n if (d > FLT_EPSILON)\n {\n // Regular care\n // -----------------\n if (d * d <= distanceTolerance * ((dx * dx) + (dy * dy)))\n {\n // If the curvature doesn't exceed the distance_tolerance value\n // we tend to finish subdivisions.\n // ----------------------\n if (mAngleTolerance < curveAngleToleranceEpsilon)\n {\n points.push(x123, y123);\n\n return;\n }\n\n // Angle & Cusp Condition\n // ----------------------\n let da = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n\n if (da >= pi) da = (2 * pi) - da;\n\n if (da < mAngleTolerance)\n {\n // Finally we can stop the recursion\n // ----------------------\n points.push(x123, y123);\n\n return;\n }\n }\n }\n else\n {\n // Collinear case\n // -----------------\n dx = x123 - ((x1 + x3) / 2);\n dy = y123 - ((y1 + y3) / 2);\n if ((dx * dx) + (dy * dy) <= distanceTolerance)\n {\n points.push(x123, y123);\n\n return;\n }\n }\n\n // Continue subdivision\n // ----------------------\n recursive(points, x1, y1, x12, y12, x123, y123, distanceTolerance, level + 1);\n recursive(points, x123, y123, x23, y23, x3, y3, distanceTolerance, level + 1);\n}\n\n","export function buildArc(\n points: number[],\n x: number, y: number,\n radius: number,\n start: number,\n end: number,\n clockwise: boolean,\n steps?: number\n)\n{\n // determine distance between the two angles\n // ...probably a nicer way of writing this\n let dist = Math.abs(start - end);\n\n if (!clockwise && start > end)\n {\n dist = (2 * Math.PI) - dist;\n }\n else if (clockwise && end > start)\n {\n dist = (2 * Math.PI) - dist;\n }\n\n // approximate the # of steps using the cube root of the radius\n\n steps = steps || Math.max(6, Math.floor(6 * Math.pow(radius, 1 / 3) * (dist / (Math.PI))));\n\n // ensure we have at least 3 steps..\n steps = Math.max(steps, 3);\n\n let f = dist / (steps);\n let t = start;\n\n // modify direction\n f *= clockwise ? -1 : 1;\n\n for (let i = 0; i < steps + 1; i++)\n {\n const cs = Math.cos(t);\n const sn = Math.sin(t);\n\n const nx = x + (cs * radius);\n const ny = y + (sn * radius);\n\n points.push(nx, ny);\n\n t += f;\n }\n}\n","import { buildArc } from './buildArc';\n\n/**\n * The arcTo() method creates an arc/curve between two tangents on the canvas.\n *\n * \"borrowed\" from https://code.google.com/p/fxcanvas/ - thanks google!\n * @param points\n * @param x1\n * @param y1\n * @param x2\n * @param y2\n * @param radius\n */\nexport function buildArcTo(\n points: number[],\n x1: number, y1: number,\n x2: number, y2: number,\n radius: number,\n): void\n{\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n\n const a1 = fromY - y1;\n const b1 = fromX - x1;\n const a2 = y2 - y1;\n const b2 = x2 - x1;\n const mm = Math.abs((a1 * b2) - (b1 * a2));\n\n if (mm < 1.0e-8 || radius === 0)\n {\n if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1)\n {\n points.push(x1, y1);\n }\n\n return;\n }\n\n const dd = (a1 * a1) + (b1 * b1);\n const cc = (a2 * a2) + (b2 * b2);\n const tt = (a1 * a2) + (b1 * b2);\n const k1 = radius * Math.sqrt(dd) / mm;\n const k2 = radius * Math.sqrt(cc) / mm;\n const j1 = k1 * tt / dd;\n const j2 = k2 * tt / cc;\n const cx = (k1 * b2) + (k2 * b1);\n const cy = (k1 * a2) + (k2 * a1);\n const px = b1 * (k2 + j1);\n const py = a1 * (k2 + j1);\n const qx = b2 * (k1 + j2);\n const qy = a2 * (k1 + j2);\n const startAngle = Math.atan2(py - cy, px - cx);\n const endAngle = Math.atan2(qy - cy, qx - cx);\n\n buildArc(points,\n (cx + x1),\n (cy + y1),\n radius,\n startAngle,\n endAngle,\n b1 * a2 > b2 * a1\n );\n}\n","import { buildAdaptiveBezier } from './buildAdaptiveBezier';\n\nconst TAU = Math.PI * 2;\n\nconst out = {\n centerX: 0,\n centerY: 0,\n ang1: 0,\n ang2: 0\n};\n\nconst mapToEllipse = (\n { x, y }: {x: number, y: number},\n rx: number, ry: number,\n cosPhi: number, sinPhi: number,\n centerX: number, centerY: number,\n out: {x: number, y: number}\n): {x: number, y: number} =>\n{\n x *= rx;\n y *= ry;\n\n const xp = (cosPhi * x) - (sinPhi * y);\n const yp = (sinPhi * x) + (cosPhi * y);\n\n out.x = xp + centerX;\n out.y = yp + centerY;\n\n return out;\n};\n\nfunction approxUnitArc(ang1: number, ang2: number): {x: number, y: number}[]\n{\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n\n const a1 = ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n const a = ang2 === 1.5707963267948966 ? 0.551915024494 : a1;\n\n const x1 = Math.cos(ang1);\n const y1 = Math.sin(ang1);\n const x2 = Math.cos(ang1 + ang2);\n const y2 = Math.sin(ang1 + ang2);\n\n return [\n {\n x: x1 - (y1 * a),\n y: y1 + (x1 * a)\n },\n {\n x: x2 + (y2 * a),\n y: y2 - (x2 * a)\n },\n {\n x: x2,\n y: y2\n }\n ];\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) =>\n{\n const sign = ((ux * vy) - (uy * vx) < 0) ? -1 : 1;\n\n let dot = (ux * vx) + (uy * vy);\n\n if (dot > 1)\n {\n dot = 1;\n }\n\n if (dot < -1)\n {\n dot = -1;\n }\n\n return sign * Math.acos(dot);\n};\n\nconst getArcCenter = (\n px: number,\n py: number,\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinPhi: number,\n cosPhi: number,\n pxp: number,\n pyp: number,\n out: {\n centerX: number,\n centerY: number,\n ang1: number,\n ang2: number\n }\n// eslint-disable-next-line max-params\n) =>\n{\n const rxSq = Math.pow(rx, 2);\n const rySq = Math.pow(ry, 2);\n const pxpSq = Math.pow(pxp, 2);\n const pypSq = Math.pow(pyp, 2);\n\n let radicant = (rxSq * rySq) - (rxSq * pypSq) - (rySq * pxpSq);\n\n if (radicant < 0)\n {\n radicant = 0;\n }\n\n radicant /= (rxSq * pypSq) + (rySq * pxpSq);\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n const centerXp = radicant * rx / ry * pyp;\n const centerYp = radicant * -ry / rx * pxp;\n\n const centerX = (cosPhi * centerXp) - (sinPhi * centerYp) + ((px + cx) / 2);\n const centerY = (sinPhi * centerXp) + (cosPhi * centerYp) + ((py + cy) / 2);\n\n const vx1 = (pxp - centerXp) / rx;\n const vy1 = (pyp - centerYp) / ry;\n const vx2 = (-pxp - centerXp) / rx;\n const vy2 = (-pyp - centerYp) / ry;\n\n const ang1 = vectorAngle(1, 0, vx1, vy1);\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n if (sweepFlag === 0 && ang2 > 0)\n {\n ang2 -= TAU;\n }\n\n if (sweepFlag === 1 && ang2 < 0)\n {\n ang2 += TAU;\n }\n\n out.centerX = centerX;\n out.centerY = centerY;\n out.ang1 = ang1;\n out.ang2 = ang2;\n};\n\nexport function buildArcToSvg(\n points: number[],\n px: number,\n py: number,\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n): void\n{\n if (rx === 0 || ry === 0)\n {\n return;\n }\n\n const sinPhi = Math.sin(xAxisRotation * TAU / 360);\n const cosPhi = Math.cos(xAxisRotation * TAU / 360);\n\n const pxp = (cosPhi * (px - cx) / 2) + (sinPhi * (py - cy) / 2);\n const pyp = (-sinPhi * (px - cx) / 2) + (cosPhi * (py - cy) / 2);\n\n if (pxp === 0 && pyp === 0)\n {\n return;\n }\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n const lambda = (Math.pow(pxp, 2) / Math.pow(rx, 2)) + (Math.pow(pyp, 2) / Math.pow(ry, 2));\n\n if (lambda > 1)\n {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n\n getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinPhi,\n cosPhi,\n pxp,\n pyp,\n out\n );\n\n let { ang1, ang2 } = out;\n const { centerX, centerY } = out;\n\n // If 'ang2' == 90.0000000001, then `ratio` will devalue to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unnecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4);\n\n if (Math.abs(1.0 - ratio) < 0.0000001)\n {\n ratio = 1.0;\n }\n\n const segments = Math.max(Math.ceil(ratio), 1);\n\n ang2 /= segments;\n\n let lastX = points[points.length - 2];\n let lastY = points[points.length - 1];\n\n const outCurvePoint = { x: 0, y: 0 };\n\n for (let i = 0; i < segments; i++)\n {\n const curve = approxUnitArc(ang1, ang2);\n\n const { x: x1, y: y1 } = mapToEllipse(curve[0], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n const { x: x2, y: y2 } = mapToEllipse(curve[1], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n const { x, y } = mapToEllipse(curve[2], rx, ry, cosPhi, sinPhi, centerX, centerY, outCurvePoint);\n\n buildAdaptiveBezier(\n points,\n lastX, lastY,\n x1, y1, x2, y2, x, y\n );\n\n lastX = x;\n lastY = y;\n\n ang1 += ang2;\n }\n}\n","import type { PointData } from '../../../../maths/point/PointData';\nimport type { ShapePath } from './ShapePath';\n\n/**\n * Typed and cleaned up version of:\n * https://stackoverflow.com/questions/44855794/html5-canvas-triangle-with-rounded-corners/44856925#44856925\n * @param g - Graphics to be drawn on.\n * @param points - Corners of the shape to draw. Minimum length is 3.\n * @param radius - Corners default radius.\n * @ignore\n */\nexport function roundedShapeArc(\n g: ShapePath,\n points: RoundedPoint[],\n radius: number\n): void\n{\n const vecFrom = (p: PointData, pp: PointData) =>\n {\n const x = pp.x - p.x;\n const y = pp.y - p.y;\n const len = Math.sqrt((x * x) + (y * y));\n const nx = x / len;\n const ny = y / len;\n\n return { len, nx, ny };\n };\n\n const sharpCorner = (i: number, p: PointData) =>\n {\n if (i === 0)\n {\n g.moveTo(p.x, p.y);\n }\n else\n {\n g.lineTo(p.x, p.y);\n }\n };\n\n let p1 = points[points.length - 1];\n\n for (let i = 0; i < points.length; i++)\n {\n const p2 = points[i % points.length];\n const pRadius = p2.radius ?? radius;\n\n if (pRadius <= 0)\n {\n sharpCorner(i, p2);\n p1 = p2;\n continue;\n }\n\n const p3 = points[(i + 1) % points.length];\n const v1 = vecFrom(p2, p1);\n const v2 = vecFrom(p2, p3);\n\n if (v1.len < 1e-4 || v2.len < 1e-4)\n {\n sharpCorner(i, p2);\n p1 = p2;\n continue;\n }\n\n let angle = Math.asin((v1.nx * v2.ny) - (v1.ny * v2.nx));\n let radDirection = 1;\n let drawDirection = false;\n\n if ((v1.nx * v2.nx) - (v1.ny * -v2.ny) < 0)\n {\n if (angle < 0)\n {\n angle = Math.PI + angle;\n }\n else\n {\n angle = Math.PI - angle;\n radDirection = -1;\n drawDirection = true;\n }\n }\n else if (angle > 0)\n {\n radDirection = -1;\n drawDirection = true;\n }\n\n const halfAngle = angle / 2;\n\n let cRadius: number;\n let lenOut = Math.abs(\n (Math.cos(halfAngle) * pRadius) / Math.sin(halfAngle)\n );\n\n if (lenOut > Math.min(v1.len / 2, v2.len / 2))\n {\n lenOut = Math.min(v1.len / 2, v2.len / 2);\n cRadius = Math.abs((lenOut * Math.sin(halfAngle)) / Math.cos(halfAngle));\n }\n else\n {\n cRadius = pRadius;\n }\n\n const cX = p2.x + (v2.nx * lenOut) + (-v2.ny * cRadius * radDirection);\n const cY = p2.y + (v2.ny * lenOut) + (v2.nx * cRadius * radDirection);\n const startAngle = Math.atan2(v1.ny, v1.nx) + ((Math.PI / 2) * radDirection);\n const endAngle = Math.atan2(v2.ny, v2.nx) - ((Math.PI / 2) * radDirection);\n\n if (i === 0)\n {\n g.moveTo(\n cX + (Math.cos(startAngle) * cRadius),\n cY + (Math.sin(startAngle) * cRadius)\n );\n }\n\n g.arc(cX, cY, cRadius, startAngle, endAngle, drawDirection);\n\n p1 = p2;\n }\n}\n\nexport type RoundedPoint = PointData & { radius?: number };\n\n/**\n * Typed and cleaned up version of:\n * https://stackoverflow.com/questions/44855794/html5-canvas-triangle-with-rounded-corners/56214413#56214413\n * @param g - Graphics to be drawn on.\n * @param points - Corners of the shape to draw. Minimum length is 3.\n * @param radius - Corners default radius.\n * @ignore\n */\nexport function roundedShapeQuadraticCurve(\n g: ShapePath,\n points: RoundedPoint[],\n radius: number,\n smoothness?: number,\n): void\n{\n const distance = (p1: PointData, p2: PointData) =>\n Math.sqrt(((p1.x - p2.x) ** 2) + ((p1.y - p2.y) ** 2));\n\n const pointLerp = (p1: PointData, p2: PointData, t: number) => ({\n x: p1.x + ((p2.x - p1.x) * t),\n y: p1.y + ((p2.y - p1.y) * t),\n });\n\n const numPoints = points.length;\n\n for (let i = 0; i < numPoints; i++)\n {\n const thisPoint = points[(i + 1) % numPoints];\n const pRadius = thisPoint.radius ?? radius;\n\n if (pRadius <= 0)\n {\n if (i === 0)\n {\n g.moveTo(thisPoint.x, thisPoint.y);\n }\n else\n {\n g.lineTo(thisPoint.x, thisPoint.y);\n }\n\n continue;\n }\n\n const lastPoint = points[i];\n const nextPoint = points[(i + 2) % numPoints];\n\n const lastEdgeLength = distance(lastPoint, thisPoint);\n let start;\n\n if (lastEdgeLength < 1e-4)\n {\n start = thisPoint;\n }\n else\n {\n const lastOffsetDistance = Math.min(lastEdgeLength / 2, pRadius);\n\n start = pointLerp(\n thisPoint,\n lastPoint,\n lastOffsetDistance / lastEdgeLength\n );\n }\n\n const nextEdgeLength = distance(nextPoint, thisPoint);\n let end;\n\n if (nextEdgeLength < 1e-4)\n {\n end = thisPoint;\n }\n else\n {\n const nextOffsetDistance = Math.min(nextEdgeLength / 2, pRadius);\n\n end = pointLerp(\n thisPoint,\n nextPoint,\n nextOffsetDistance / nextEdgeLength\n );\n }\n\n if (i === 0)\n {\n g.moveTo(start.x, start.y);\n }\n else\n {\n g.lineTo(start.x, start.y);\n }\n g.quadraticCurveTo(thisPoint.x, thisPoint.y, end.x, end.y, smoothness);\n }\n}\n","// a shape lets you build out a shape with lines and curves and primitives..\n\nimport { Circle } from '../../../../maths/shapes/Circle';\nimport { Ellipse } from '../../../../maths/shapes/Ellipse';\nimport { Polygon } from '../../../../maths/shapes/Polygon';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { RoundedRectangle } from '../../../../maths/shapes/RoundedRectangle';\nimport { Bounds } from '../../../container/bounds/Bounds';\nimport { buildAdaptiveBezier } from '../buildCommands/buildAdaptiveBezier';\nimport { buildAdaptiveQuadratic } from '../buildCommands/buildAdaptiveQuadratic';\nimport { buildArc } from '../buildCommands/buildArc';\nimport { buildArcTo } from '../buildCommands/buildArcTo';\nimport { buildArcToSvg } from '../buildCommands/buildArcToSvg';\nimport { roundedShapeArc, roundedShapeQuadraticCurve } from './roundShape';\n\nimport type { Matrix } from '../../../../maths/matrix/Matrix';\nimport type { PointData } from '../../../../maths/point/PointData';\nimport type { ShapePrimitive } from '../../../../maths/shapes/ShapePrimitive';\nimport type { GraphicsPath } from './GraphicsPath';\nimport type { RoundedPoint } from './roundShape';\n\nconst tempRectangle = new Rectangle();\n\n/**\n * The `ShapePath` class acts as a bridge between high-level drawing commands\n * and the lower-level `GraphicsContext` rendering engine.\n * It translates drawing commands, such as those for creating lines, arcs, ellipses, rectangles, and complex polygons, into a\n * format that can be efficiently processed by a `GraphicsContext`. This includes handling path starts,\n * ends, and transformations for shapes.\n *\n * It is used internally by `GraphicsPath` to build up the path.\n * @memberof scene\n */\nexport class ShapePath\n{\n /** The list of shape primitives that make up the path. */\n public shapePrimitives: { shape: ShapePrimitive, transform?: Matrix }[] = [];\n private _currentPoly: Polygon | null = null;\n private readonly _graphicsPath2D: GraphicsPath;\n private readonly _bounds = new Bounds();\n\n constructor(graphicsPath2D: GraphicsPath)\n {\n this._graphicsPath2D = graphicsPath2D;\n }\n\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n public moveTo(x: number, y: number): this\n {\n this.startPoly(x, y);\n\n return this;\n }\n\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n public lineTo(x: number, y: number): this\n {\n this._ensurePoly();\n\n const points = this._currentPoly.points;\n\n const fromX = points[points.length - 2];\n const fromY = points[points.length - 1];\n\n if (fromX !== x || fromY !== y)\n {\n points.push(x, y);\n }\n\n return this;\n }\n\n /**\n * Adds an arc to the path. The arc is centered at (x, y)\n * position with radius `radius` starting at `startAngle` and ending at `endAngle`.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The radius of the arc.\n * @param startAngle - The starting angle of the arc, in radians.\n * @param endAngle - The ending angle of the arc, in radians.\n * @param counterclockwise - Specifies whether the arc should be drawn in the anticlockwise direction. False by default.\n * @returns The instance of the current object for chaining.\n */\n public arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): this\n {\n // TODO - if its 360 degrees.. make it a circle object?\n\n this._ensurePoly(false);\n\n const points = this._currentPoly.points;\n\n buildArc(points, x, y, radius, startAngle, endAngle, counterclockwise);\n\n return this;\n }\n\n /**\n * Adds an arc to the path with the arc tangent to the line joining two specified points.\n * The arc radius is specified by `radius`.\n * @param x1 - The x-coordinate of the first point.\n * @param y1 - The y-coordinate of the first point.\n * @param x2 - The x-coordinate of the second point.\n * @param y2 - The y-coordinate of the second point.\n * @param radius - The radius of the arc.\n * @returns The instance of the current object for chaining.\n */\n public arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this\n {\n this._ensurePoly();\n\n const points = this._currentPoly.points;\n\n buildArcTo(points, x1, y1, x2, y2, radius);\n\n return this;\n }\n\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n public arcToSvg(\n rx: number, ry: number,\n xAxisRotation: number, largeArcFlag: number, sweepFlag: number,\n x: number, y: number\n ): this\n {\n const points = this._currentPoly.points;\n\n // this needs to work on both canvas and GPU backends so might want to move this to the Graphics2D path..\n buildArcToSvg(\n points,\n this._currentPoly.lastX,\n this._currentPoly.lastY,\n x,\n y,\n rx,\n ry,\n xAxisRotation,\n largeArcFlag,\n sweepFlag,\n );\n\n return this;\n }\n\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public bezierCurveTo(\n cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n x: number, y: number,\n smoothness?: number\n ): this\n {\n this._ensurePoly();\n\n const currentPoly = this._currentPoly;\n\n // ensure distance from last point to first control point is not too small\n\n // TODO - make this a plugin that people can override..\n buildAdaptiveBezier(\n this._currentPoly.points,\n currentPoly.lastX, currentPoly.lastY,\n cp1x, cp1y, cp2x, cp2y, x, y,\n smoothness,\n );\n\n return this;\n }\n\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the control point.\n * @param cp1y - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothing - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public quadraticCurveTo(cp1x: number, cp1y: number, x: number, y: number, smoothing?: number): this\n {\n this._ensurePoly();\n\n const currentPoly = this._currentPoly;\n\n // ensure distance from last point to first control point is not too small\n\n // TODO - make this a plugin that people can override..\n buildAdaptiveQuadratic(\n this._currentPoly.points,\n currentPoly.lastX, currentPoly.lastY,\n cp1x, cp1y, x, y,\n smoothing,\n );\n\n return this;\n }\n\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n public closePath(): this\n {\n this.endPoly(true);\n\n return this;\n }\n\n /**\n * Adds another path to the current path. This method allows for the combination of multiple paths into one.\n * @param path - The `GraphicsPath` object representing the path to add.\n * @param transform - An optional `Matrix` object to apply a transformation to the path before adding it.\n * @returns The instance of the current object for chaining.\n */\n public addPath(path: GraphicsPath, transform?: Matrix): this\n {\n this.endPoly();\n\n if (transform && !transform.isIdentity())\n {\n path = path.clone(true);\n path.transform(transform);\n }\n\n for (let i = 0; i < path.instructions.length; i++)\n {\n const instruction = path.instructions[i];\n\n // Sorry TS! this is the best we could do...\n this[instruction.action](...(instruction.data as [never, never, never, never, never, never, never]));\n // build out the path points\n }\n\n return this;\n }\n\n /**\n * Finalizes the drawing of the current path. Optionally, it can close the path.\n * @param closePath - A boolean indicating whether to close the path after finishing. False by default.\n */\n public finish(closePath = false)\n {\n this.endPoly(closePath);\n }\n\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public rect(x: number, y: number, w: number, h: number, transform?: Matrix): this\n {\n this.drawShape(new Rectangle(x, y, w, h), transform);\n\n return this;\n }\n\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @param transform - An optional `Matrix` object to apply a transformation to the circle.\n * @returns The instance of the current object for chaining.\n */\n public circle(x: number, y: number, radius: number, transform?: Matrix): this\n {\n this.drawShape(new Circle(x, y, radius), transform);\n\n return this;\n }\n\n /**\n * Draws a polygon shape. This method allows for the creation of complex polygons by specifying a sequence of points.\n * @param points - An array of numbers, or or an array of PointData objects eg [{x,y}, {x,y}, {x,y}]\n * representing the x and y coordinates of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n public poly(points: number[] | PointData[], close?: boolean, transform?: Matrix): this\n {\n const polygon = new Polygon(points);\n\n polygon.closePath = close;\n\n this.drawShape(polygon, transform);\n\n return this;\n }\n\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n public regularPoly(x: number, y: number, radius: number, sides: number, rotation = 0, transform?: Matrix): this\n {\n sides = Math.max(sides | 0, 3);\n const startAngle = (-1 * Math.PI / 2) + rotation;\n const delta = (Math.PI * 2) / sides;\n const polygon = [];\n\n for (let i = 0; i < sides; i++)\n {\n const angle = (i * delta) + startAngle;\n\n polygon.push(\n x + (radius * Math.cos(angle)),\n y + (radius * Math.sin(angle))\n );\n }\n\n this.poly(polygon, true, transform);\n\n return this;\n }\n\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param smoothness - Optional parameter to adjust the smoothness of the rounding.\n * @returns The instance of the current object for chaining.\n */\n public roundPoly(\n x: number, y: number,\n radius: number,\n sides: number, corner: number,\n rotation = 0,\n smoothness?: number,\n ): this\n {\n sides = Math.max((sides | 0), 3);\n\n if (corner <= 0)\n {\n return this.regularPoly(x, y, radius, sides, rotation);\n }\n\n const sideLength = (radius * Math.sin(Math.PI / sides)) - 0.001;\n\n corner = Math.min(corner, sideLength);\n\n const startAngle = (-1 * Math.PI / 2) + rotation;\n const delta = (Math.PI * 2) / sides;\n const internalAngle = ((sides - 2) * Math.PI) / sides / 2;\n\n for (let i = 0; i < sides; i++)\n {\n const angle = (i * delta) + startAngle;\n const x0 = x + (radius * Math.cos(angle));\n const y0 = y + (radius * Math.sin(angle));\n const a1 = angle + (Math.PI) + internalAngle;\n const a2 = angle - (Math.PI) - internalAngle;\n const x1 = x0 + (corner * Math.cos(a1));\n const y1 = y0 + (corner * Math.sin(a1));\n const x3 = x0 + (corner * Math.cos(a2));\n const y3 = y0 + (corner * Math.sin(a2));\n\n if (i === 0)\n {\n this.moveTo(x1, y1);\n }\n else\n {\n this.lineTo(x1, y1);\n }\n this.quadraticCurveTo(x0, y0, x3, y3, smoothness);\n }\n\n return this.closePath();\n }\n\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n public roundShape(points: RoundedPoint[], radius: number, useQuadratic = false, smoothness?: number): this\n {\n if (points.length < 3)\n {\n return this;\n }\n\n if (useQuadratic)\n {\n roundedShapeQuadraticCurve(this, points, radius, smoothness);\n }\n else\n {\n roundedShapeArc(this, points, radius);\n }\n\n return this.closePath();\n }\n\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n public filletRect(x: number, y: number, width: number, height: number, fillet: number): this\n {\n if (fillet === 0)\n {\n return this.rect(x, y, width, height);\n }\n\n const maxFillet = Math.min(width, height) / 2;\n const inset = Math.min(maxFillet, Math.max(-maxFillet, fillet));\n const right = x + width;\n const bottom = y + height;\n const dir = inset < 0 ? -inset : 0;\n const size = Math.abs(inset);\n\n return this\n .moveTo(x, y + size)\n .arcTo(x + dir, y + dir, x + size, y, size)\n .lineTo(right - size, y)\n .arcTo(right - dir, y + dir, right, y + size, size)\n .lineTo(right, bottom - size)\n .arcTo(right - dir, bottom - dir, x + width - size, bottom, size)\n .lineTo(x + size, bottom)\n .arcTo(x + dir, bottom - dir, x, bottom - size, size)\n .closePath();\n }\n\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n public chamferRect(x: number, y: number, width: number, height: number, chamfer: number, transform?: Matrix): this\n {\n if (chamfer <= 0)\n {\n return this.rect(x, y, width, height);\n }\n\n const inset = Math.min(chamfer, Math.min(width, height) / 2);\n const right = x + width;\n const bottom = y + height;\n const points = [\n x + inset, y,\n right - inset, y,\n right, y + inset,\n right, bottom - inset,\n right - inset, bottom,\n x + inset, bottom,\n x, bottom - inset,\n x, y + inset,\n ];\n\n // Remove overlapping points\n for (let i = points.length - 1; i >= 2; i -= 2)\n {\n if (points[i] === points[i - 2] && points[i - 1] === points[i - 3])\n {\n points.splice(i - 1, 2);\n }\n }\n\n return this.poly(points, true, transform);\n }\n\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n * @returns The instance of the current object for chaining.\n */\n public ellipse(x: number, y: number, radiusX: number, radiusY: number, transform?: Matrix): this\n {\n // TODO apply rotation to transform...\n\n this.drawShape(new Ellipse(x, y, radiusX, radiusY), transform);\n\n return this;\n }\n\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public roundRect(x: number, y: number, w: number, h: number, radius?: number, transform?: Matrix): this\n {\n this.drawShape(new RoundedRectangle(x, y, w, h, radius), transform);\n\n return this;\n }\n\n /**\n * Draws a given shape on the canvas.\n * This is a generic method that can draw any type of shape specified by the `ShapePrimitive` parameter.\n * An optional transformation matrix can be applied to the shape, allowing for complex transformations.\n * @param shape - The shape to draw, defined as a `ShapePrimitive` object.\n * @param matrix - An optional `Matrix` for transforming the shape. This can include rotations,\n * scaling, and translations.\n * @returns The instance of the current object for chaining.\n */\n public drawShape(shape: ShapePrimitive, matrix?: Matrix): this\n {\n this.endPoly();\n\n this.shapePrimitives.push({ shape, transform: matrix });\n\n return this;\n }\n\n /**\n * Starts a new polygon path from the specified starting point.\n * This method initializes a new polygon or ends the current one if it exists.\n * @param x - The x-coordinate of the starting point of the new polygon.\n * @param y - The y-coordinate of the starting point of the new polygon.\n * @returns The instance of the current object for chaining.\n */\n public startPoly(x: number, y: number): this\n {\n let currentPoly = this._currentPoly;\n\n if (currentPoly)\n {\n this.endPoly();\n }\n\n currentPoly = new Polygon();\n\n currentPoly.points.push(x, y);\n\n this._currentPoly = currentPoly;\n\n return this;\n }\n\n /**\n * Ends the current polygon path. If `closePath` is set to true,\n * the path is closed by connecting the last point to the first one.\n * This method finalizes the current polygon and prepares it for drawing or adding to the shape primitives.\n * @param closePath - A boolean indicating whether to close the polygon by connecting the last point\n * back to the starting point. False by default.\n * @returns The instance of the current object for chaining.\n */\n public endPoly(closePath = false): this\n {\n const shape = this._currentPoly;\n\n if (shape && shape.points.length > 2)\n {\n shape.closePath = closePath;\n\n this.shapePrimitives.push({ shape });\n }\n\n this._currentPoly = null;\n\n return this;\n }\n\n private _ensurePoly(start = true): void\n {\n if (this._currentPoly) return;\n\n this._currentPoly = new Polygon();\n\n if (start)\n {\n // get last points..\n const lastShape = this.shapePrimitives[this.shapePrimitives.length - 1];\n\n if (lastShape)\n {\n // i KNOW its a rect..\n let lx = lastShape.shape.x;\n let ly = lastShape.shape.y;\n\n if (!lastShape.transform.isIdentity())\n {\n const t = lastShape.transform;\n\n const tempX = lx;\n\n lx = (t.a * lx) + (t.c * ly) + t.tx;\n ly = (t.b * tempX) + (t.d * ly) + t.ty;\n }\n\n this._currentPoly.points.push(lx, ly);\n }\n else\n {\n this._currentPoly.points.push(0, 0);\n }\n }\n }\n\n /** Builds the path. */\n public buildPath()\n {\n const path = this._graphicsPath2D;\n\n this.shapePrimitives.length = 0;\n this._currentPoly = null;\n\n for (let i = 0; i < path.instructions.length; i++)\n {\n const instruction = path.instructions[i];\n\n // Sorry TS! this is the best we could do...\n this[instruction.action](...(instruction.data as [never, never, never, never, never, never, never]));\n }\n\n this.finish();\n }\n\n /** Gets the bounds of the path. */\n get bounds(): Bounds\n {\n const bounds = this._bounds;\n\n bounds.clear();\n\n const shapePrimitives = this.shapePrimitives;\n\n for (let i = 0; i < shapePrimitives.length; i++)\n {\n const shapePrimitive = shapePrimitives[i];\n\n const boundsRect = shapePrimitive.shape.getBounds(tempRectangle);\n\n if (shapePrimitive.transform)\n {\n bounds.addRect(boundsRect, shapePrimitive.transform);\n }\n else\n {\n bounds.addRect(boundsRect);\n }\n }\n\n return bounds;\n }\n}\n","import { Point } from '../../../../maths/point/Point';\nimport { uid } from '../../../../utils/data/uid';\nimport { warn } from '../../../../utils/logging/warn';\nimport { SVGToGraphicsPath } from '../svg/SVGToGraphicsPath';\nimport { ShapePath } from './ShapePath';\n\nimport type { Matrix } from '../../../../maths/matrix/Matrix';\nimport type { PointData } from '../../../../maths/point/PointData';\nimport type { Bounds } from '../../../container/bounds/Bounds';\nimport type { RoundedPoint } from './roundShape';\n\nexport interface PathInstruction\n{\n action: 'moveTo' | 'lineTo' | 'quadraticCurveTo' |\n 'bezierCurveTo' | 'arc' | 'closePath' |\n 'addPath' | 'arcTo' | 'ellipse' |\n 'rect' | 'roundRect' | 'arcToSvg' |\n 'poly' | 'circle' |\n 'regularPoly' | 'roundPoly' | 'roundShape' | 'filletRect' | 'chamferRect'\n data: any[];\n}\n\n/**\n * The `GraphicsPath` class is designed to represent a graphical path consisting of multiple drawing instructions.\n * This class serves as a collection of drawing commands that can be executed to render shapes and paths on a canvas or\n * similar graphical context. It supports high-level drawing operations like lines, arcs, curves, and more, enabling\n * complex graphic constructions with relative ease.\n */\nexport class GraphicsPath\n{\n public instructions: PathInstruction[] = [];\n\n public uid = uid('graphicsPath');\n\n private _dirty = true;\n // needed for hit testing and bounds calculations\n private _shapePath: ShapePath;\n\n /**\n * Provides access to the internal shape path, ensuring it is up-to-date with the current instructions.\n * @returns The `ShapePath` instance associated with this `GraphicsPath`.\n */\n get shapePath(): ShapePath\n {\n if (!this._shapePath)\n {\n this._shapePath = new ShapePath(this);\n }\n\n if (this._dirty)\n {\n this._dirty = false;\n this._shapePath.buildPath();\n }\n\n return this._shapePath;\n }\n\n /**\n * Creates a `GraphicsPath` instance optionally from an SVG path string or an array of `PathInstruction`.\n * @param instructions - An SVG path string or an array of `PathInstruction` objects.\n */\n constructor(instructions?: string | PathInstruction[])\n {\n if (typeof instructions === 'string')\n {\n SVGToGraphicsPath(instructions, this);\n }\n else\n {\n this.instructions = instructions?.slice() ?? [];\n }\n }\n\n /**\n * Adds another `GraphicsPath` to this path, optionally applying a transformation.\n * @param path - The `GraphicsPath` to add.\n * @param transform - An optional transformation to apply to the added path.\n * @returns The instance of the current object for chaining.\n */\n public addPath(path: GraphicsPath, transform?: Matrix): this\n {\n path = path.clone();\n this.instructions.push({ action: 'addPath', data: [path, transform] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds an arc to the path. The arc is centered at (x, y)\n * position with radius `radius` starting at `startAngle` and ending at `endAngle`.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The radius of the arc.\n * @param startAngle - The starting angle of the arc, in radians.\n * @param endAngle - The ending angle of the arc, in radians.\n * @param counterclockwise - Specifies whether the arc should be drawn in the anticlockwise direction. False by default.\n * @returns The instance of the current object for chaining.\n */\n public arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;\n public arc(...args: [number, number, number, number, number, boolean]): this\n {\n this.instructions.push({ action: 'arc', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds an arc to the path with the arc tangent to the line joining two specified points.\n * The arc radius is specified by `radius`.\n * @param x1 - The x-coordinate of the first point.\n * @param y1 - The y-coordinate of the first point.\n * @param x2 - The x-coordinate of the second point.\n * @param y2 - The y-coordinate of the second point.\n * @param radius - The radius of the arc.\n * @returns The instance of the current object for chaining.\n */\n public arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;\n public arcTo(...args: [number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'arcTo', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n // eslint-disable-next-line max-len\n public arcToSvg(rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, x: number, y: number): this;\n public arcToSvg(...args: [number, number, number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'arcToSvg', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public bezierCurveTo(\n cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n x: number, y: number,\n smoothness?: number\n ): this;\n public bezierCurveTo(...args: [number, number, number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'bezierCurveTo', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires two points: the second control point and the end point. The first control point is assumed to be\n * The starting point is the last point in the current path.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public bezierCurveToShort(cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): this\n {\n const last = this.instructions[this.instructions.length - 1];\n\n const lastPoint = this.getLastPoint(Point.shared);\n\n let cp1x = 0;\n let cp1y = 0;\n\n if (!last || last.action !== 'bezierCurveTo')\n {\n cp1x = lastPoint.x;\n cp1y = lastPoint.y;\n }\n else\n {\n cp1x = last.data[2];\n cp1y = last.data[3];\n\n const currentX = lastPoint.x;\n const currentY = lastPoint.y;\n\n cp1x = currentX + (currentX - cp1x);\n cp1y = currentY + (currentY - cp1y);\n }\n\n this.instructions.push({ action: 'bezierCurveTo', data: [cp1x, cp1y, cp2x, cp2y, x, y, smoothness] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n public closePath(): this\n {\n this.instructions.push({ action: 'closePath', data: [] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n * @returns The instance of the current object for chaining.\n */\n public ellipse(x: number, y: number, radiusX: number, radiusY: number, matrix?: Matrix): this;\n public ellipse(...args: [number, number, number, number, Matrix]): this\n {\n this.instructions.push({ action: 'ellipse', data: args });\n\n // TODO nail this!\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n public lineTo(x: number, y: number): this;\n public lineTo(...args: [number, number]): this\n {\n this.instructions.push({ action: 'lineTo', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n public moveTo(x: number, y: number): this;\n public moveTo(...args: [number, number]): this\n {\n this.instructions.push({ action: 'moveTo', data: args });\n\n return this;\n }\n\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the control point.\n * @param cp1y - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public quadraticCurveTo(cpx: number, cpy: number, x: number, y: number, smoothness?: number): this;\n public quadraticCurveTo(...args: [number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'quadraticCurveTo', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Adds a quadratic curve to the path. It uses the previous point as the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public quadraticCurveToShort(x: number, y: number, smoothness?: number): this\n {\n // check if we have a previous quadraticCurveTo\n const last = this.instructions[this.instructions.length - 1];\n\n const lastPoint = this.getLastPoint(Point.shared);\n\n let cpx1 = 0;\n let cpy1 = 0;\n\n if (!last || last.action !== 'quadraticCurveTo')\n {\n cpx1 = lastPoint.x;\n cpy1 = lastPoint.y;\n }\n else\n {\n cpx1 = last.data[0];\n cpy1 = last.data[1];\n\n const currentX = lastPoint.x;\n const currentY = lastPoint.y;\n\n cpx1 = currentX + (currentX - cpx1);\n cpy1 = currentY + (currentY - cpy1);\n }\n\n this.instructions.push({ action: 'quadraticCurveTo', data: [cpx1, cpy1, x, y, smoothness] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public rect(x: number, y: number, w: number, h: number, transform?: Matrix): this\n {\n this.instructions.push({ action: 'rect', data: [x, y, w, h, transform] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @param transform - An optional `Matrix` object to apply a transformation to the circle.\n * @returns The instance of the current object for chaining.\n */\n public circle(x: number, y: number, radius: number, transform?: Matrix): this\n {\n this.instructions.push({ action: 'circle', data: [x, y, radius, transform] });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public roundRect(x: number, y: number, w: number, h: number, radius?: number, transform?: Matrix): this;\n public roundRect(...args: [number, number, number, number, number, Matrix?]): this\n {\n this.instructions.push({ action: 'roundRect', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a polygon shape by specifying a sequence of points. This method allows for the creation of complex polygons,\n * which can be both open and closed. An optional transformation can be applied, enabling the polygon to be scaled,\n * rotated, or translated as needed.\n * @param points - An array of numbers representing the x and y coordinates of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n public poly(points: number[] | PointData[], close?: boolean, transform?: Matrix): this;\n public poly(...args: [number[] | PointData[], boolean, Matrix?]): this\n {\n this.instructions.push({ action: 'poly', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n public regularPoly(x: number, y: number, radius: number, sides: number, rotation?: number, transform?: Matrix): this;\n public regularPoly(...args: [number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'regularPoly', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @returns The instance of the current object for chaining.\n */\n public roundPoly(x: number, y: number, radius: number, sides: number, corner: number, rotation?: number): this;\n public roundPoly(...args: [number, number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'roundPoly', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n public roundShape(points: RoundedPoint[], radius: number, useQuadratic?: boolean, smoothness?: number): this;\n public roundShape(...args: [RoundedPoint[], number, boolean, number]): this\n {\n this.instructions.push({ action: 'roundShape', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n public filletRect(x: number, y: number, width: number, height: number, fillet: number): this;\n public filletRect(...args: [number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'filletRect', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n public chamferRect(x: number, y: number, width: number, height: number, chamfer: number, transform?: Matrix): this;\n public chamferRect(...args: [number, number, number, number, number]): this\n {\n this.instructions.push({ action: 'chamferRect', data: args });\n\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Draws a star shape centered at a specified location. This method allows for the creation\n * of stars with a variable number of points, outer radius, optional inner radius, and rotation.\n * The star is drawn as a closed polygon with alternating outer and inner vertices to create the star's points.\n * An optional transformation can be applied to scale, rotate, or translate the star as needed.\n * @param x - The x-coordinate of the center of the star.\n * @param y - The y-coordinate of the center of the star.\n * @param points - The number of points of the star.\n * @param radius - The outer radius of the star (distance from the center to the outer points).\n * @param innerRadius - Optional. The inner radius of the star\n * (distance from the center to the inner points between the outer points).\n * If not provided, defaults to half of the `radius`.\n * @param rotation - Optional. The rotation of the star in radians, where 0 is aligned with the y-axis.\n * Defaults to 0, meaning one point is directly upward.\n * @param transform - An optional `Matrix` object to apply a transformation to the star.\n * This can include rotations, scaling, and translations.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n // eslint-disable-next-line max-len\n public star(x: number, y: number, points: number, radius: number, innerRadius?: number, rotation?: number, transform?: Matrix): this\n {\n innerRadius = innerRadius || radius / 2;\n\n const startAngle = (-1 * Math.PI / 2) + rotation;\n const len = points * 2;\n const delta = (Math.PI * 2) / len;\n const polygon = [];\n\n for (let i = 0; i < len; i++)\n {\n const r = i % 2 ? innerRadius : radius;\n const angle = (i * delta) + startAngle;\n\n polygon.push(\n x + (r * Math.cos(angle)),\n y + (r * Math.sin(angle))\n );\n }\n\n this.poly(polygon, true, transform);\n\n return this;\n }\n\n /**\n * Creates a copy of the current `GraphicsPath` instance. This method supports both shallow and deep cloning.\n * A shallow clone copies the reference of the instructions array, while a deep clone creates a new array and\n * copies each instruction individually, ensuring that modifications to the instructions of the cloned `GraphicsPath`\n * do not affect the original `GraphicsPath` and vice versa.\n * @param deep - A boolean flag indicating whether the clone should be deep.\n * @returns A new `GraphicsPath` instance that is a clone of the current instance.\n */\n public clone(deep = false): GraphicsPath\n {\n const newGraphicsPath2D = new GraphicsPath();\n\n if (!deep)\n {\n newGraphicsPath2D.instructions = this.instructions.slice();\n }\n else\n {\n for (let i = 0; i < this.instructions.length; i++)\n {\n const instruction = this.instructions[i];\n\n newGraphicsPath2D.instructions.push({ action: instruction.action, data: instruction.data.slice() });\n }\n }\n\n return newGraphicsPath2D;\n }\n\n public clear(): this\n {\n this.instructions.length = 0;\n this._dirty = true;\n\n return this;\n }\n\n /**\n * Applies a transformation matrix to all drawing instructions within the `GraphicsPath`.\n * This method enables the modification of the path's geometry according to the provided\n * transformation matrix, which can include translations, rotations, scaling, and skewing.\n *\n * Each drawing instruction in the path is updated to reflect the transformation,\n * ensuring the visual representation of the path is consistent with the applied matrix.\n *\n * Note: The transformation is applied directly to the coordinates and control points of the drawing instructions,\n * not to the path as a whole. This means the transformation's effects are baked into the individual instructions,\n * allowing for fine-grained control over the path's appearance.\n * @param matrix - A `Matrix` object representing the transformation to apply.\n * @returns The instance of the current object for chaining further operations.\n */\n public transform(matrix: Matrix): this\n {\n if (matrix.isIdentity()) return this;\n\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n\n let x = 0;\n let y = 0;\n\n let cpx1 = 0;\n let cpy1 = 0;\n let cpx2 = 0;\n let cpy2 = 0;\n\n let rx = 0;\n let ry = 0;\n\n for (let i = 0; i < this.instructions.length; i++)\n {\n const instruction = this.instructions[i];\n const data = instruction.data as any[];\n\n switch (instruction.action)\n {\n case 'moveTo':\n case 'lineTo':\n\n x = data[0];\n y = data[1];\n\n data[0] = (a * x) + (c * y) + tx;\n data[1] = (b * x) + (d * y) + ty;\n break;\n case 'bezierCurveTo':\n\n cpx1 = data[0];\n cpy1 = data[1];\n cpx2 = data[2];\n cpy2 = data[3];\n\n x = data[4];\n y = data[5];\n\n data[0] = (a * cpx1) + (c * cpy1) + tx;\n data[1] = (b * cpx1) + (d * cpy1) + ty;\n data[2] = (a * cpx2) + (c * cpy2) + tx;\n data[3] = (b * cpx2) + (d * cpy2) + ty;\n data[4] = (a * x) + (c * y) + tx;\n data[5] = (b * x) + (d * y) + ty;\n break;\n\n case 'quadraticCurveTo':\n\n cpx1 = data[0];\n cpy1 = data[1];\n\n x = data[2];\n y = data[3];\n\n data[0] = (a * cpx1) + (c * cpy1) + tx;\n data[1] = (b * cpx1) + (d * cpy1) + ty;\n\n data[2] = (a * x) + (c * y) + tx;\n data[3] = (b * x) + (d * y) + ty;\n\n break;\n\n case 'arcToSvg':\n\n x = data[5];\n y = data[6];\n\n rx = data[0];\n ry = data[1];\n\n // multiply the radius by the transform..\n\n data[0] = (a * rx) + (c * ry);\n data[1] = (b * rx) + (d * ry);\n\n data[5] = (a * x) + (c * y) + tx;\n data[6] = (b * x) + (d * y) + ty;\n\n break;\n\n case 'circle':\n data[4] = adjustTransform(data[3], matrix);\n break;\n case 'rect':\n data[4] = adjustTransform(data[4], matrix);\n break;\n case 'ellipse':\n data[8] = adjustTransform(data[8], matrix);\n break;\n case 'roundRect':\n data[5] = adjustTransform(data[5], matrix);\n break;\n case 'addPath':\n data[0].transform(matrix);\n break;\n case 'poly':\n data[2] = adjustTransform(data[2], matrix);\n break;\n default:\n // #if _DEBUG\n warn('unknown transform action', instruction.action);\n // #endif\n break;\n }\n }\n\n this._dirty = true;\n\n return this;\n }\n\n get bounds(): Bounds\n {\n return this.shapePath.bounds;\n }\n\n /**\n * Retrieves the last point from the current drawing instructions in the `GraphicsPath`.\n * This method is useful for operations that depend on the path's current endpoint,\n * such as connecting subsequent shapes or paths. It supports various drawing instructions,\n * ensuring the last point's position is accurately determined regardless of the path's complexity.\n *\n * If the last instruction is a `closePath`, the method iterates backward through the instructions\n * until it finds an actionable instruction that defines a point (e.g., `moveTo`, `lineTo`,\n * `quadraticCurveTo`, etc.). For compound paths added via `addPath`, it recursively retrieves\n * the last point from the nested path.\n * @param out - A `Point` object where the last point's coordinates will be stored.\n * This object is modified directly to contain the result.\n * @returns The `Point` object containing the last point's coordinates.\n */\n public getLastPoint(out: Point): Point\n {\n let index = this.instructions.length - 1;\n\n let lastInstruction = this.instructions[index];\n\n if (!lastInstruction)\n {\n out.x = 0;\n out.y = 0;\n\n return out;\n }\n\n while (lastInstruction.action === 'closePath')\n {\n index--;\n\n if (index < 0)\n {\n out.x = 0;\n out.y = 0;\n\n return out;\n }\n\n lastInstruction = this.instructions[index];\n }\n\n switch (lastInstruction.action)\n {\n case 'moveTo':\n case 'lineTo':\n out.x = lastInstruction.data[0];\n out.y = lastInstruction.data[1];\n break;\n case 'quadraticCurveTo':\n out.x = lastInstruction.data[2];\n out.y = lastInstruction.data[3];\n break;\n case 'bezierCurveTo':\n out.x = lastInstruction.data[4];\n out.y = lastInstruction.data[5];\n break;\n case 'arc':\n case 'arcToSvg':\n out.x = lastInstruction.data[5];\n out.y = lastInstruction.data[6];\n break;\n case 'addPath':\n // TODO prolly should transform the last point of the path\n lastInstruction.data[0].getLastPoint(out);\n break;\n }\n\n return out;\n }\n}\n\nfunction adjustTransform(currentMatrix?: Matrix, transform?: Matrix): Matrix\n{\n if (currentMatrix)\n {\n return currentMatrix.prepend(transform);\n }\n\n return transform.clone();\n}\n","import { Color } from '../../../../color/Color';\nimport { GraphicsPath } from '../path/GraphicsPath';\n\nimport type {\n ConvertedFillStyle,\n ConvertedStrokeStyle,\n FillStyle,\n GraphicsContext,\n StrokeStyle,\n} from '../GraphicsContext';\n\ninterface Session\n{\n context: GraphicsContext;\n path: GraphicsPath;\n}\n\nexport function SVGParser(\n svg: string | SVGElement | SVGSVGElement,\n graphicsContext?: GraphicsContext\n): GraphicsContext\n{\n if (typeof svg === 'string')\n {\n const div = document.createElement('div');\n\n div.innerHTML = svg.trim();\n svg = div.querySelector('svg') as SVGElement;\n }\n\n const session = {\n context: graphicsContext,\n path: new GraphicsPath(),\n };\n\n renderChildren(svg, session, null, null);\n\n return graphicsContext;\n}\n\nfunction renderChildren(svg: SVGElement, session: Session, fillStyle: FillStyle, strokeStyle: StrokeStyle): void\n{\n const children = svg.children;\n\n const { fillStyle: f1, strokeStyle: s1 } = parseStyle(svg);\n\n if (f1 && fillStyle)\n {\n fillStyle = { ...fillStyle, ...f1 };\n }\n else if (f1)\n {\n fillStyle = f1;\n }\n\n if (s1 && strokeStyle)\n {\n strokeStyle = { ...strokeStyle, ...s1 };\n }\n else if (s1)\n {\n strokeStyle = s1;\n }\n\n session.context.fillStyle = fillStyle;\n session.context.strokeStyle = strokeStyle;\n\n let x;\n let y;\n let x1;\n let y1;\n let x2;\n let y2;\n let cx;\n let cy;\n let r;\n let rx;\n let ry;\n let points;\n let pointsString;\n let d;\n let graphicsPath;\n let width;\n let height;\n\n switch (svg.nodeName.toLowerCase())\n {\n case 'path':\n d = svg.getAttribute('d') as string;\n\n graphicsPath = new GraphicsPath(d);\n\n session.context.path(graphicsPath);\n\n if (fillStyle) session.context.fill();\n if (strokeStyle) session.context.stroke();\n\n break;\n case 'circle':\n cx = parseFloatAttribute(svg, 'cx', 0);\n cy = parseFloatAttribute(svg, 'cy', 0);\n\n r = parseFloatAttribute(svg, 'r', 0);\n\n session.context.ellipse(cx, cy, r, r);\n\n if (fillStyle) session.context.fill();\n if (strokeStyle) session.context.stroke();\n\n break;\n case 'rect':\n x = parseFloatAttribute(svg, 'x', 0);\n y = parseFloatAttribute(svg, 'y', 0);\n\n width = parseFloatAttribute(svg, 'width', 0);\n height = parseFloatAttribute(svg, 'height', 0);\n\n rx = parseFloatAttribute(svg, 'rx', 0);\n ry = parseFloatAttribute(svg, 'ry', 0);\n\n if (rx || ry)\n {\n session.context.roundRect(x, y, width, height, rx || ry);\n }\n else\n {\n session.context.rect(x, y, width, height);\n }\n\n if (fillStyle) session.context.fill();\n if (strokeStyle) session.context.stroke();\n\n break;\n case 'ellipse':\n cx = parseFloatAttribute(svg, 'cx', 0);\n cy = parseFloatAttribute(svg, 'cy', 0);\n\n rx = parseFloatAttribute(svg, 'rx', 0);\n ry = parseFloatAttribute(svg, 'ry', 0);\n\n session.context.beginPath();\n session.context.ellipse(cx, cy, rx, ry); // , 0, Math.PI * 2);\n\n if (fillStyle) session.context.fill();\n if (strokeStyle) session.context.stroke();\n\n break;\n case 'line':\n x1 = parseFloatAttribute(svg, 'x1', 0);\n y1 = parseFloatAttribute(svg, 'y1', 0);\n\n x2 = parseFloatAttribute(svg, 'x2', 0);\n y2 = parseFloatAttribute(svg, 'y2', 0);\n\n session.context.beginPath();\n session.context.moveTo(x1, y1);\n session.context.lineTo(x2, y2);\n\n if (strokeStyle) session.context.stroke();\n\n break;\n\n case 'polygon':\n pointsString = svg.getAttribute('points') as string;\n\n points = pointsString.match(/\\d+/g).map((n) => parseInt(n, 10));\n\n session.context.poly(points, true);\n\n if (fillStyle) session.context.fill();\n if (strokeStyle) session.context.stroke();\n\n break;\n case 'polyline':\n pointsString = svg.getAttribute('points') as string;\n\n points = pointsString.match(/\\d+/g).map((n) => parseInt(n, 10));\n\n session.context.poly(points, false);\n\n if (strokeStyle) session.context.stroke();\n\n break;\n // children will cover these two..\n case 'g':\n case 'svg':\n break;\n default: {\n // eslint-disable-next-line no-console\n console.info(`[SVG parser] <${svg.nodeName}> elements unsupported`);\n break;\n }\n }\n\n for (let i = 0; i < children.length; i++)\n {\n renderChildren(children[i] as SVGElement, session, fillStyle, strokeStyle);\n }\n}\n\nfunction parseFloatAttribute(svg: SVGElement, id: string, defaultValue: number): number\n{\n const value = svg.getAttribute(id) as string;\n\n return value ? Number(value) : defaultValue;\n}\n\nfunction parseStyle(svg: SVGElement): { strokeStyle: ConvertedStrokeStyle; fillStyle: ConvertedFillStyle }\n{\n const style = svg.getAttribute('style');\n\n const strokeStyle: StrokeStyle = {};\n\n const fillStyle: FillStyle = {};\n\n let useFill = false;\n let useStroke = false;\n\n if (style)\n {\n const styleParts = style.split(';');\n\n for (let i = 0; i < styleParts.length; i++)\n {\n const stylePart = styleParts[i];\n\n const [key, value] = stylePart.split(':');\n\n switch (key)\n {\n case 'stroke':\n if (value !== 'none')\n {\n strokeStyle.color = Color.shared.setValue(value).toNumber();\n useStroke = true;\n }\n\n break;\n case 'stroke-width':\n strokeStyle.width = Number(value);\n break;\n case 'fill':\n if (value !== 'none')\n {\n useFill = true;\n fillStyle.color = Color.shared.setValue(value).toNumber();\n }\n break;\n case 'fill-opacity':\n fillStyle.alpha = Number(value);\n break;\n case 'stroke-opacity':\n strokeStyle.alpha = Number(value);\n break;\n case 'opacity':\n fillStyle.alpha = Number(value);\n strokeStyle.alpha = Number(value);\n break;\n }\n }\n }\n else\n {\n const stroke = svg.getAttribute('stroke');\n\n if (stroke && stroke !== 'none')\n {\n useStroke = true;\n strokeStyle.color = Color.shared.setValue(stroke).toNumber();\n\n strokeStyle.width = parseFloatAttribute(svg, 'stroke-width', 1);\n }\n\n const fill = svg.getAttribute('fill');\n\n if (fill && fill !== 'none')\n {\n useFill = true;\n fillStyle.color = Color.shared.setValue(fill).toNumber();\n }\n }\n\n return {\n strokeStyle: useStroke ? (strokeStyle as ConvertedStrokeStyle) : null,\n fillStyle: useFill ? (fillStyle as ConvertedFillStyle) : null,\n };\n}\n","import { Matrix } from '../../../../maths/matrix/Matrix';\nimport { uid } from '../../../../utils/data/uid';\n\nimport type { WRAP_MODE } from '../../../../rendering/renderers/shared/texture/const';\nimport type { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\n\nexport type PatternRepetition = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repetitionMap = {\n repeat: {\n addressModeU: 'repeat',\n addressModeV: 'repeat',\n },\n 'repeat-x': {\n addressModeU: 'repeat',\n addressModeV: 'clamp-to-edge',\n },\n 'repeat-y': {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'repeat',\n },\n 'no-repeat': {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n },\n};\n\nexport class FillPattern implements CanvasPattern\n{\n public readonly uid = uid('fillPattern');\n public texture: Texture;\n public transform = new Matrix();\n\n constructor(texture: Texture, repetition?: PatternRepetition)\n {\n this.texture = texture;\n\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n\n if (repetition)\n {\n texture.source.style.addressModeU = repetitionMap[repetition].addressModeU as WRAP_MODE;\n texture.source.style.addressModeV = repetitionMap[repetition].addressModeV as WRAP_MODE;\n }\n }\n\n public setTransform(transform?: Matrix): void\n {\n const texture = this.texture;\n\n this.transform.copyFrom(transform);\n this.transform.invert();\n // transform.scale\n this.transform.scale(\n 1 / texture.frame.width,\n 1 / texture.frame.height\n );\n }\n}\n","import { Color } from '../../../../color/Color';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { FillGradient } from '../fill/FillGradient';\nimport { FillPattern } from '../fill/FillPattern';\n\nimport type { ColorSource } from '../../../../color/Color';\nimport type {\n ConvertedFillStyle,\n FillStyle,\n FillStyleInputs,\n PatternFillStyle,\n} from '../GraphicsContext';\n\nexport function convertFillInputToFillStyle(\n value: FillStyleInputs,\n defaultStyle: ConvertedFillStyle\n): ConvertedFillStyle\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n let fillStyleToParse: ConvertedFillStyle;\n let styleToMerge: FillStyleInputs;\n\n if ((value as PatternFillStyle)?.fill)\n {\n styleToMerge = (value as PatternFillStyle).fill;\n fillStyleToParse = { ...defaultStyle, ...(value as PatternFillStyle) };\n }\n else\n {\n styleToMerge = value;\n fillStyleToParse = defaultStyle;\n }\n\n if (Color.isColorLike(styleToMerge as ColorSource))\n {\n const temp = Color.shared.setValue(styleToMerge as ColorSource ?? 0);\n const opts: ConvertedFillStyle = {\n ...fillStyleToParse,\n color: temp.toNumber(),\n alpha: temp.alpha === 1 ? fillStyleToParse.alpha : temp.alpha,\n texture: Texture.WHITE,\n };\n\n return opts;\n }\n else if (styleToMerge instanceof FillPattern)\n {\n const pattern = styleToMerge as FillPattern;\n\n return {\n ...fillStyleToParse,\n color: 0xffffff,\n texture: pattern.texture,\n matrix: pattern.transform,\n fill: fillStyleToParse.fill ?? null,\n };\n }\n\n // // TODO Texture\n else if (styleToMerge instanceof FillGradient)\n {\n const gradient = styleToMerge as FillGradient;\n\n gradient.buildLinearGradient();\n\n return {\n ...fillStyleToParse,\n color: 0xffffff,\n texture: gradient.texture,\n matrix: gradient.transform,\n };\n }\n\n const style: FillStyle = { ...defaultStyle, ...(value as FillStyle) };\n\n if (style.texture)\n {\n if (style.texture !== Texture.WHITE)\n {\n const m = style.matrix?.invert() || new Matrix();\n\n m.scale(\n 1 / style.texture.frame.width,\n 1 / style.texture.frame.height\n );\n\n style.matrix = m;\n }\n\n const sourceStyle = style.texture.source.style;\n\n if (sourceStyle.addressMode === 'clamp-to-edge')\n {\n sourceStyle.addressMode = 'repeat';\n }\n }\n\n const color = Color.shared.setValue(style.color);\n\n style.alpha *= color.alpha;\n style.color = color.toNumber();\n style.matrix = style.matrix ? style.matrix.clone() : null; // todo: lets optimise this!\n\n // its a regular fill style!\n return style as ConvertedFillStyle;\n}\n","/* eslint-disable max-len */\nimport EventEmitter from 'eventemitter3';\nimport { Color, type ColorSource } from '../../../color/Color';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { Point } from '../../../maths/point/Point';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { uid } from '../../../utils/data/uid';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Bounds } from '../../container/bounds/Bounds';\nimport { GraphicsPath } from './path/GraphicsPath';\nimport { SVGParser } from './svg/SVGParser';\nimport { convertFillInputToFillStyle } from './utils/convertFillInputToFillStyle';\n\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport type { TextureDestroyOptions, TypeOrBool } from '../../container/destroyTypes';\nimport type { LineCap, LineJoin } from './const';\nimport type { FillGradient } from './fill/FillGradient';\nimport type { FillPattern } from './fill/FillPattern';\nimport type { RoundedPoint } from './path/roundShape';\n\n/**\n * A fill style object.\n * @memberof scene\n */\nexport interface FillStyle\n{\n /** The color to use for the fill. */\n color?: ColorSource;\n /** The alpha value to use for the fill. */\n alpha?: number;\n /** The texture to use for the fill. */\n texture?: Texture | null;\n /** The matrix to apply. */\n matrix?: Matrix | null;\n /** The fill pattern to use. */\n fill?: FillPattern | FillGradient | null;\n}\n\nexport type ConvertedFillStyle = Omit, 'color'> & { color: number };\n\nexport interface PatternFillStyle\n{\n fill?: FillPattern | FillGradient;\n color?: number;\n alpha?: number;\n}\n\n/**\n * A stroke style object.\n * @memberof scene\n */\nexport interface StrokeStyle extends FillStyle\n{\n /** The width of the stroke. */\n width?: number;\n /** The alignment of the stroke. */\n alignment?: number;\n // native?: boolean;\n /** The line cap style to use. */\n cap?: LineCap;\n /** The line join style to use. */\n join?: LineJoin;\n /** The miter limit to use. */\n miterLimit?: number;\n}\n\nexport type ConvertedStrokeStyle = Omit & ConvertedFillStyle;\n\nconst tmpPoint = new Point();\n\nexport type BatchMode = 'auto' | 'batch' | 'no-batch';\n\nexport type FillStyleInputs = ColorSource | FillGradient | CanvasPattern | PatternFillStyle | FillStyle | ConvertedFillStyle | StrokeStyle | ConvertedStrokeStyle;\n\nexport interface FillInstruction\n{\n action: 'fill' | 'cut'\n data: { style: ConvertedFillStyle, path: GraphicsPath, hole?: GraphicsPath }\n}\n\nexport interface StrokeInstruction\n{\n action: 'stroke'\n data: { style: ConvertedStrokeStyle, path: GraphicsPath, hole?: GraphicsPath }\n}\n\nexport interface TextureInstruction\n{\n action: 'texture'\n data: {\n image: Texture,\n\n dx: number\n dy: number\n\n dw: number\n dh: number\n\n transform: Matrix\n alpha: number\n style: number,\n }\n}\n\nexport type GraphicsInstructions = FillInstruction | StrokeInstruction | TextureInstruction;\n\nconst tempMatrix = new Matrix();\n\n/**\n * The GraphicsContext class allows for the creation of lightweight objects that contain instructions for drawing shapes and paths.\n * It is used internally by the Graphics class to draw shapes and paths, and can be used directly and shared between Graphics objects,\n *\n * This sharing of a `GraphicsContext` means that the intensive task of converting graphics instructions into GPU-ready geometry is done once, and the results are reused,\n * much like sprites reusing textures.\n * @memberof scene\n */\nexport class GraphicsContext extends EventEmitter<{\n update: GraphicsContext\n destroy: GraphicsContext\n}>\n{\n /** The default fill style to use when none is provided. */\n public static defaultFillStyle: ConvertedFillStyle = {\n /** The color to use for the fill. */\n color: 0xffffff,\n /** The alpha value to use for the fill. */\n alpha: 1,\n /** The texture to use for the fill. */\n texture: Texture.WHITE,\n /** The matrix to apply. */\n matrix: null,\n /** The fill pattern to use. */\n fill: null,\n };\n\n /** The default stroke style to use when none is provided. */\n public static defaultStrokeStyle: ConvertedStrokeStyle = {\n /** The width of the stroke. */\n width: 1,\n /** The color to use for the stroke. */\n color: 0xffffff,\n /** The alpha value to use for the stroke. */\n alpha: 1,\n /** The alignment of the stroke. */\n alignment: 0.5,\n /** The miter limit to use. */\n miterLimit: 10,\n /** The line cap style to use. */\n cap: 'butt',\n /** The line join style to use. */\n join: 'miter',\n /** The texture to use for the fill. */\n texture: Texture.WHITE,\n /** The matrix to apply. */\n matrix: null,\n /** The fill pattern to use. */\n fill: null,\n };\n\n public uid = uid('graphicsContext');\n public dirty = true;\n public batchMode: BatchMode = 'auto';\n public instructions: GraphicsInstructions[] = [];\n public customShader?: Shader;\n\n private _activePath: GraphicsPath = new GraphicsPath();\n private _transform: Matrix = new Matrix();\n\n private _fillStyle: ConvertedFillStyle = { ...GraphicsContext.defaultFillStyle };\n private _strokeStyle: ConvertedStrokeStyle = { ...GraphicsContext.defaultStrokeStyle };\n private _stateStack: { fillStyle: ConvertedFillStyle; strokeStyle: ConvertedStrokeStyle, transform: Matrix }[] = [];\n\n private _tick = 0;\n\n private _bounds = new Bounds();\n private _boundsDirty = true;\n\n /**\n * Creates a new GraphicsContext object that is a clone of this instance, copying all properties,\n * including the current drawing state, transformations, styles, and instructions.\n * @returns A new GraphicsContext instance with the same properties and state as this one.\n */\n public clone(): GraphicsContext\n {\n const clone = new GraphicsContext();\n\n clone.batchMode = this.batchMode;\n clone.instructions = this.instructions.slice();\n clone._activePath = this._activePath.clone();\n clone._transform = this._transform.clone();\n clone._fillStyle = { ...this._fillStyle };\n clone._strokeStyle = { ...this._strokeStyle };\n clone._stateStack = this._stateStack.slice();\n clone._bounds = this._bounds.clone();\n clone._boundsDirty = true;\n\n return clone;\n }\n\n /**\n * The current fill style of the graphics context. This can be a color, gradient, pattern, or a more complex style defined by a FillStyle object.\n */\n get fillStyle(): ConvertedFillStyle\n {\n return this._fillStyle;\n }\n\n set fillStyle(value: FillStyleInputs)\n {\n this._fillStyle = convertFillInputToFillStyle(value, GraphicsContext.defaultFillStyle);\n }\n\n /**\n * The current stroke style of the graphics context. Similar to fill styles, stroke styles can encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n */\n get strokeStyle(): ConvertedStrokeStyle\n {\n return this._strokeStyle;\n }\n\n set strokeStyle(value: FillStyleInputs)\n {\n this._strokeStyle = convertFillInputToFillStyle(value, GraphicsContext.defaultStrokeStyle) as ConvertedStrokeStyle;\n }\n\n /**\n * Sets the current fill style of the graphics context. The fill style can be a color, gradient,\n * pattern, or a more complex style defined by a FillStyle object.\n * @param style - The fill style to apply. This can be a simple color, a gradient or pattern object,\n * or a FillStyle or ConvertedFillStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setFillStyle(style: FillStyleInputs): this\n {\n this._fillStyle = convertFillInputToFillStyle(style, GraphicsContext.defaultFillStyle);\n\n return this;\n }\n\n /**\n * Sets the current stroke style of the graphics context. Similar to fill styles, stroke styles can\n * encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n * @param style - The stroke style to apply. Can be defined as a color, a gradient or pattern,\n * or a StrokeStyle or ConvertedStrokeStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setStrokeStyle(style: FillStyleInputs): this\n {\n this._strokeStyle = convertFillInputToFillStyle(style, GraphicsContext.defaultStrokeStyle) as ConvertedStrokeStyle;\n\n return this;\n }\n\n /**\n * Adds a texture to the graphics context. This method supports multiple overloads for specifying the texture, tint, and dimensions.\n * If only a texture is provided, it uses the texture's width and height for drawing. Additional parameters allow for specifying\n * a tint color, and custom dimensions for the texture drawing area.\n * @param texture - The Texture object to use.\n * @param tint - (Optional) A ColorSource to tint the texture. If not provided, defaults to white (0xFFFFFF).\n * @param dx - (Optional) The x-coordinate in the destination canvas at which to place the top-left corner of the source image.\n * @param dy - (Optional) The y-coordinate in the destination canvas at which to place the top-left corner of the source image.\n * @param dw - (Optional) The width of the rectangle within the source image to draw onto the destination canvas. If not provided, uses the texture's frame width.\n * @param dh - (Optional) The height of the rectangle within the source image to draw onto the destination canvas. If not provided, uses the texture's frame height.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public texture(texture: Texture): this;\n public texture(texture: Texture, tint: ColorSource): this;\n public texture(texture: Texture, tint: ColorSource, dx: number, dy: number): this;\n public texture(texture: Texture, tint: ColorSource, dx: number, dy: number, dw: number, dh: number): this;\n public texture(texture: Texture, tint?: ColorSource, dx?: number, dy?: number, dw?: number, dh?: number): this\n {\n this.instructions.push({\n action: 'texture',\n data: {\n image: texture,\n\n dx: dx || 0,\n dy: dy || 0,\n\n dw: dw || texture.frame.width,\n dh: dh || texture.frame.height,\n\n transform: this._transform.clone(),\n alpha: this._fillStyle.alpha,\n style: tint ? Color.shared.setValue(tint).toNumber() : 0xFFFFFF,\n }\n });\n\n this.onUpdate();\n\n return this;\n }\n\n /**\n * Resets the current path. Any previous path and its commands are discarded and a new path is\n * started. This is typically called before beginning a new shape or series of drawing commands.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public beginPath(): this\n {\n this._activePath = new GraphicsPath();\n\n return this;\n }\n\n /**\n * Fills the current or given path with the current fill style. This method can optionally take\n * a color and alpha for a simple fill, or a more complex FillStyleInputs object for advanced fills.\n * @param style - (Optional) The style to fill the path with. Can be a color, gradient, pattern, or a complex style object. If omitted, uses the current fill style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public fill(style?: FillStyleInputs): this;\n /** @deprecated 8.0.0 */\n public fill(color: ColorSource, alpha: number): this;\n public fill(style?: FillStyleInputs, alpha?: number): this\n {\n let path: GraphicsPath;\n\n const lastInstruction = this.instructions[this.instructions.length - 1];\n\n if (this._tick === 0 && lastInstruction && lastInstruction.action === 'stroke')\n {\n path = lastInstruction.data.path;\n }\n else\n {\n path = this._activePath.clone();\n }\n\n if (!path) return this;\n\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (style != null)\n {\n if (alpha !== undefined && typeof style === 'number')\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead');\n // #endif\n\n style = { color: style, alpha };\n }\n this._fillStyle = convertFillInputToFillStyle(style, GraphicsContext.defaultFillStyle);\n }\n\n // TODO not a fan of the clone!!\n this.instructions.push({\n action: 'fill',\n // TODO copy fill style!\n data: { style: this.fillStyle, path }\n });\n\n this.onUpdate();\n\n this._initNextPathLocation();\n this._tick = 0;\n\n return this;\n }\n\n private _initNextPathLocation()\n {\n // Reset the _activePath with the last point of the current path\n const { x, y } = this._activePath.getLastPoint(Point.shared);\n\n this._activePath.clear();\n this._activePath.moveTo(x, y);\n }\n\n /**\n * Strokes the current path with the current stroke style. This method can take an optional\n * FillStyleInputs parameter to define the stroke's appearance, including its color, width, and other properties.\n * @param style - (Optional) The stroke style to apply. Can be defined as a simple color or a more complex style object. If omitted, uses the current stroke style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public stroke(style?: FillStyleInputs): this\n {\n let path: GraphicsPath;\n\n const lastInstruction = this.instructions[this.instructions.length - 1];\n\n if (this._tick === 0 && lastInstruction && lastInstruction.action === 'fill')\n {\n path = lastInstruction.data.path;\n }\n else\n {\n path = this._activePath.clone();\n }\n\n if (!path) return this;\n\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (style != null)\n {\n this._strokeStyle = convertFillInputToFillStyle(style, GraphicsContext.defaultStrokeStyle);\n }\n\n // TODO not a fan of the clone!!\n this.instructions.push({\n action: 'stroke',\n // TODO copy fill style!\n data: { style: this.strokeStyle, path }\n });\n\n this.onUpdate();\n\n this._initNextPathLocation();\n this._tick = 0;\n\n return this;\n }\n\n /**\n * Applies a cutout to the last drawn shape. This is used to create holes or complex shapes by\n * subtracting a path from the previously drawn path. If a hole is not completely in a shape, it will\n * fail to cut correctly!\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public cut(): this\n {\n for (let i = 0; i < 2; i++)\n {\n const lastInstruction = this.instructions[this.instructions.length - 1 - i];\n\n const holePath = this._activePath.clone();\n\n if (lastInstruction)\n {\n if (lastInstruction.action === 'stroke' || lastInstruction.action === 'fill')\n {\n if (lastInstruction.data.hole)\n {\n lastInstruction.data.hole.addPath(holePath);\n }\n else\n {\n lastInstruction.data.hole = holePath;\n break;\n }\n }\n }\n }\n\n this._initNextPathLocation();\n\n return this;\n }\n\n /**\n * Adds an arc to the current path, which is centered at (x, y) with the specified radius,\n * starting and ending angles, and direction.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The arc's radius.\n * @param startAngle - The starting angle, in radians.\n * @param endAngle - The ending angle, in radians.\n * @param counterclockwise - (Optional) Specifies whether the arc is drawn counterclockwise (true) or clockwise (false). Defaults to false.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this\n {\n this._tick++;\n\n const t = this._transform;\n\n this._activePath.arc(\n (t.a * x) + (t.c * y) + t.tx,\n (t.b * x) + (t.d * y) + t.ty,\n radius,\n startAngle,\n endAngle,\n counterclockwise,\n );\n\n return this;\n }\n\n /**\n * Adds an arc to the current path with the given control points and radius, connected to the previous point\n * by a straight line if necessary.\n * @param x1 - The x-coordinate of the first control point.\n * @param y1 - The y-coordinate of the first control point.\n * @param x2 - The x-coordinate of the second control point.\n * @param y2 - The y-coordinate of the second control point.\n * @param radius - The arc's radius.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this\n {\n this._tick++;\n\n const t = this._transform;\n\n this._activePath.arcTo(\n (t.a * x1) + (t.c * y1) + t.tx,\n (t.b * x1) + (t.d * y1) + t.ty,\n (t.a * x2) + (t.c * y2) + t.tx,\n (t.b * x2) + (t.d * y2) + t.ty,\n radius,\n );\n\n return this;\n }\n\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n public arcToSvg(\n rx: number, ry: number,\n xAxisRotation: number,\n largeArcFlag: number,\n sweepFlag: number,\n x: number, y: number\n ): this\n {\n this._tick++;\n\n const t = this._transform;\n\n this._activePath.arcToSvg(\n rx, ry,\n xAxisRotation, // should we rotate this with transform??\n largeArcFlag,\n sweepFlag,\n (t.a * x) + (t.c * y) + t.tx,\n (t.b * x) + (t.d * y) + t.ty,\n );\n\n return this;\n }\n\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): this\n {\n this._tick++;\n\n // TODO optimize for no transform\n const t = this._transform;\n\n this._activePath.bezierCurveTo(\n (t.a * cp1x) + (t.c * cp1y) + t.tx,\n (t.b * cp1x) + (t.d * cp1y) + t.ty,\n (t.a * cp2x) + (t.c * cp2y) + t.tx,\n (t.b * cp2x) + (t.d * cp2y) + t.ty,\n (t.a * x) + (t.c * y) + t.tx,\n (t.b * x) + (t.d * y) + t.ty,\n smoothness,\n );\n\n return this;\n }\n\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n public closePath(): this\n {\n this._tick++;\n\n this._activePath?.closePath();\n\n return this;\n }\n\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @returns The instance of the current object for chaining.\n */\n public ellipse(x: number, y: number, radiusX: number, radiusY: number): this\n {\n this._tick++;\n\n this._activePath.ellipse(x, y, radiusX, radiusY, this._transform.clone());\n\n return this;\n }\n\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @returns The instance of the current object for chaining.\n */\n public circle(x: number, y: number, radius: number): this\n {\n this._tick++;\n\n this._activePath.circle(x, y, radius, this._transform.clone());\n\n return this;\n }\n\n /**\n * Adds another `GraphicsPath` to this path, optionally applying a transformation.\n * @param path - The `GraphicsPath` to add.\n * @returns The instance of the current object for chaining.\n */\n public path(path: GraphicsPath): this\n {\n this._tick++;\n\n this._activePath.addPath(path, this._transform.clone());\n\n return this;\n }\n\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n public lineTo(x: number, y: number): this\n {\n this._tick++;\n\n const t = this._transform;\n\n this._activePath.lineTo(\n (t.a * x) + (t.c * y) + t.tx,\n (t.b * x) + (t.d * y) + t.ty\n );\n\n return this;\n }\n\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n public moveTo(x: number, y: number): this\n {\n this._tick++;\n\n const t = this._transform;\n\n const instructions = this._activePath.instructions;\n\n const transformedX = (t.a * x) + (t.c * y) + t.tx;\n const transformedY = (t.b * x) + (t.d * y) + t.ty;\n\n if (instructions.length === 1 && instructions[0].action === 'moveTo')\n {\n instructions[0].data[0] = transformedX;\n instructions[0].data[1] = transformedY;\n\n return this;\n }\n this._activePath.moveTo(\n transformedX,\n transformedY\n );\n\n return this;\n }\n\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cpx - The x-coordinate of the control point.\n * @param cpy - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public quadraticCurveTo(cpx: number, cpy: number, x: number, y: number, smoothness?: number): this\n {\n this._tick++;\n\n const t = this._transform;\n\n this._activePath.quadraticCurveTo(\n (t.a * cpx) + (t.c * cpy) + t.tx,\n (t.b * cpx) + (t.d * cpy) + t.ty,\n (t.a * x) + (t.c * y) + t.tx,\n (t.b * x) + (t.d * y) + t.ty,\n smoothness,\n );\n\n return this;\n }\n\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public rect(x: number, y: number, w: number, h: number): this\n {\n this._tick++;\n\n this._activePath.rect(x, y, w, h, this._transform.clone());\n\n return this;\n }\n\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @returns The instance of the current object for chaining.\n */\n public roundRect(x: number, y: number, w: number, h: number, radius?: number): this\n {\n this._tick++;\n\n this._activePath.roundRect(x, y, w, h, radius, this._transform.clone());\n\n return this;\n }\n\n /**\n * Draws a polygon shape by specifying a sequence of points. This method allows for the creation of complex polygons,\n * which can be both open and closed. An optional transformation can be applied, enabling the polygon to be scaled,\n * rotated, or translated as needed.\n * @param points - An array of numbers, or an array of PointData objects eg [{x,y}, {x,y}, {x,y}]\n * representing the x and y coordinates, of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n */\n public poly(points: number[] | PointData[], close?: boolean): this\n {\n this._tick++;\n\n this._activePath.poly(points, close, this._transform.clone());\n\n return this;\n }\n\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n public regularPoly(x: number, y: number, radius: number, sides: number, rotation = 0, transform?: Matrix): this\n {\n this._tick++;\n this._activePath.regularPoly(x, y, radius, sides, rotation, transform);\n\n return this;\n }\n\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @returns The instance of the current object for chaining.\n */\n public roundPoly(x: number, y: number, radius: number, sides: number, corner: number, rotation?: number): this\n {\n this._tick++;\n this._activePath.roundPoly(x, y, radius, sides, corner, rotation);\n\n return this;\n }\n\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n public roundShape(points: RoundedPoint[], radius: number, useQuadratic?: boolean, smoothness?: number): this\n {\n this._tick++;\n this._activePath.roundShape(points, radius, useQuadratic, smoothness);\n\n return this;\n }\n\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n public filletRect(x: number, y: number, width: number, height: number, fillet: number): this\n {\n this._tick++;\n this._activePath.filletRect(x, y, width, height, fillet);\n\n return this;\n }\n\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n public chamferRect(x: number, y: number, width: number, height: number, chamfer: number, transform?: Matrix): this\n {\n this._tick++;\n this._activePath.chamferRect(x, y, width, height, chamfer, transform);\n\n return this;\n }\n\n /**\n * Draws a star shape centered at a specified location. This method allows for the creation\n * of stars with a variable number of points, outer radius, optional inner radius, and rotation.\n * The star is drawn as a closed polygon with alternating outer and inner vertices to create the star's points.\n * An optional transformation can be applied to scale, rotate, or translate the star as needed.\n * @param x - The x-coordinate of the center of the star.\n * @param y - The y-coordinate of the center of the star.\n * @param points - The number of points of the star.\n * @param radius - The outer radius of the star (distance from the center to the outer points).\n * @param innerRadius - Optional. The inner radius of the star\n * (distance from the center to the inner points between the outer points).\n * If not provided, defaults to half of the `radius`.\n * @param rotation - Optional. The rotation of the star in radians, where 0 is aligned with the y-axis.\n * Defaults to 0, meaning one point is directly upward.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n public star(x: number, y: number, points: number, radius: number, innerRadius = 0, rotation = 0): this\n {\n this._tick++;\n\n this._activePath.star(x, y, points, radius, innerRadius, rotation, this._transform.clone());\n\n return this;\n }\n\n /**\n * Parses and renders an SVG string into the graphics context. This allows for complex shapes and paths\n * defined in SVG format to be drawn within the graphics context.\n * @param svg - The SVG string to be parsed and rendered.\n */\n public svg(svg: string): this\n {\n this._tick++;\n\n SVGParser(svg, this);\n\n return this;\n }\n\n /**\n * Restores the most recently saved graphics state by popping the top of the graphics state stack.\n * This includes transformations, fill styles, and stroke styles.\n */\n public restore(): this\n {\n const state = this._stateStack.pop();\n\n if (state)\n {\n this._transform = state.transform;\n this._fillStyle = state.fillStyle;\n this._strokeStyle = state.strokeStyle;\n }\n\n return this;\n }\n\n /** Saves the current graphics state, including transformations, fill styles, and stroke styles, onto a stack. */\n public save(): this\n {\n this._stateStack.push({\n transform: this._transform.clone(),\n fillStyle: { ...this._fillStyle },\n strokeStyle: { ...this._strokeStyle },\n });\n\n return this;\n }\n\n /**\n * Returns the current transformation matrix of the graphics context.\n * @returns The current transformation matrix.\n */\n public getTransform(): Matrix\n {\n return this._transform;\n }\n\n /**\n * Resets the current transformation matrix to the identity matrix, effectively removing any transformations (rotation, scaling, translation) previously applied.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public resetTransform(): this\n {\n this._transform.identity();\n\n return this;\n }\n\n /**\n * Applies a rotation transformation to the graphics context around the current origin.\n * @param angle - The angle of rotation in radians.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public rotate(angle: number): this\n {\n this._transform.rotate(angle);\n\n return this;\n }\n\n /**\n * Applies a scaling transformation to the graphics context, scaling drawings by x horizontally and by y vertically.\n * @param x - The scale factor in the horizontal direction.\n * @param y - (Optional) The scale factor in the vertical direction. If not specified, the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public scale(x: number, y: number = x): this\n {\n this._transform.scale(x, y);\n\n return this;\n }\n\n /**\n * Sets the current transformation matrix of the graphics context to the specified matrix or values.\n * This replaces the current transformation matrix.\n * @param a - The value for the a property of the matrix, or a Matrix object to use directly.\n * @param b - The value for the b property of the matrix.\n * @param c - The value for the c property of the matrix.\n * @param d - The value for the d property of the matrix.\n * @param dx - The value for the tx (translate x) property of the matrix.\n * @param dy - The value for the ty (translate y) property of the matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setTransform(transform: Matrix): this;\n public setTransform(a: number, b: number, c: number, d: number, dx: number, dy: number): this;\n public setTransform(a: number | Matrix, b?: number, c?: number, d?: number, dx?: number, dy?: number): this\n {\n if (a instanceof Matrix)\n {\n this._transform.set(a.a, a.b, a.c, a.d, a.tx, a.ty);\n\n return this;\n }\n\n this._transform.set(a, b, c, d, dx, dy);\n\n return this;\n }\n\n /**\n * Applies the specified transformation matrix to the current graphics context by multiplying the current matrix with the specified matrix.\n * @param a - The value for the a property of the matrix, or a Matrix object to use directly.\n * @param b - The value for the b property of the matrix.\n * @param c - The value for the c property of the matrix.\n * @param d - The value for the d property of the matrix.\n * @param dx - The value for the tx (translate x) property of the matrix.\n * @param dy - The value for the ty (translate y) property of the matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public transform(transform: Matrix): this;\n public transform(a: number, b: number, c: number, d: number, dx: number, dy: number): this;\n public transform(a: number | Matrix, b?: number, c?: number, d?: number, dx?: number, dy?: number): this\n {\n if (a instanceof Matrix)\n {\n this._transform.append(a);\n\n return this;\n }\n\n tempMatrix.set(a, b, c, d, dx, dy);\n this._transform.append(tempMatrix);\n\n return this;\n }\n\n /**\n * Applies a translation transformation to the graphics context, moving the origin by the specified amounts.\n * @param x - The amount to translate in the horizontal direction.\n * @param y - (Optional) The amount to translate in the vertical direction. If not specified, the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public translate(x: number, y: number = x): this\n {\n this._transform.translate(x, y);\n\n return this;\n }\n\n /**\n * Clears all drawing commands from the graphics context, effectively resetting it. This includes clearing the path,\n * and optionally resetting transformations to the identity matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public clear(): this\n {\n this.instructions.length = 0;\n this.resetTransform();\n\n this.onUpdate();\n\n return this;\n }\n\n protected onUpdate(): void\n {\n if (this.dirty) return;\n\n this.emit('update', this, 0x10);\n this.dirty = true;\n this._boundsDirty = true;\n }\n\n /** The bounds of the graphic shape. */\n get bounds(): Bounds\n {\n if (!this._boundsDirty) return this._bounds;\n\n // TODO switch to idy dirty with tick..\n const bounds = this._bounds;\n\n bounds.clear();\n\n for (let i = 0; i < this.instructions.length; i++)\n {\n const instruction = this.instructions[i];\n const action = instruction.action;\n\n if (action === 'fill')\n {\n const data = instruction.data as FillInstruction['data'];\n\n bounds.addBounds(data.path.bounds);\n }\n else if (action === 'texture')\n {\n const data = instruction.data as TextureInstruction['data'];\n\n bounds.addFrame(data.dx, data.dy, data.dx + data.dw, data.dy + data.dh, data.transform);\n }\n if (action === 'stroke')\n {\n const data = instruction.data as StrokeInstruction['data'];\n\n const padding = data.style.width / 2;\n\n const _bounds = data.path.bounds;\n\n bounds.addFrame(\n _bounds.minX - padding,\n _bounds.minY - padding,\n _bounds.maxX + padding,\n _bounds.maxY + padding\n );\n }\n }\n\n return bounds;\n }\n\n /**\n * Check to see if a point is contained within this geometry.\n * @param point - Point to check if it's contained.\n * @returns {boolean} `true` if the point is contained within geometry.\n */\n public containsPoint(point: PointData): boolean\n {\n // early out if the bounding box is not hit\n if (!this.bounds.containsPoint(point.x, point.y)) return false;\n\n const instructions = this.instructions;\n let hasHit = false;\n\n for (let k = 0; k < instructions.length; k++)\n {\n const instruction = instructions[k];\n\n const data = instruction.data as FillInstruction['data'];\n const path = data.path;\n\n if (!instruction.action || !path) continue;\n\n const style = data.style;\n const shapes = path.shapePath.shapePrimitives;\n\n for (let i = 0; i < shapes.length; i++)\n {\n const shape = shapes[i].shape;\n\n if (!style || !shape) continue;\n\n const transform = shapes[i].transform;\n\n const transformedPoint = transform ? transform.applyInverse(point, tmpPoint) : point;\n\n if (instruction.action === 'fill')\n {\n hasHit = shape.contains(transformedPoint.x, transformedPoint.y);\n }\n else\n {\n hasHit = shape.strokeContains(transformedPoint.x, transformedPoint.y, (style as ConvertedStrokeStyle).width);\n }\n\n const holes = data.hole;\n\n if (holes)\n {\n const holeShapes = holes.shapePath?.shapePrimitives;\n\n if (holeShapes)\n {\n for (let j = 0; j < holeShapes.length; j++)\n {\n if (holeShapes[j].shape.contains(transformedPoint.x, transformedPoint.y))\n {\n hasHit = false;\n }\n }\n }\n }\n\n if (hasHit)\n {\n return true;\n }\n }\n }\n\n return hasHit;\n }\n\n /**\n * Destroys the GraphicsData object.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the fill/stroke style?\n * @param {boolean} [options.textureSource=false] - Should it destroy the texture source of the fill/stroke style?\n */\n public destroy(options: TypeOrBool = false): void\n {\n this._stateStack.length = 0;\n this._transform = null;\n\n this.emit('destroy', this);\n this.removeAllListeners();\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n if (this._fillStyle.texture)\n {\n this._fillStyle.texture.destroy(destroyTextureSource);\n }\n\n if (this._strokeStyle.texture)\n {\n this._strokeStyle.texture.destroy(destroyTextureSource);\n }\n }\n\n this._fillStyle = null;\n this._strokeStyle = null;\n\n this.instructions = null;\n this._activePath = null;\n this._bounds = null;\n this._stateStack = null;\n this.customShader = null;\n this._transform = null;\n }\n}\n","import type { FillGradient } from '../../graphics/shared/fill/FillGradient';\nimport type { ConvertedFillStyle, ConvertedStrokeStyle } from '../../graphics/shared/GraphicsContext';\nimport type { TextStyle } from '../TextStyle';\n\nconst valuesToIterateForKeys = [\n '_fontFamily',\n '_fontStyle',\n '_fontSize',\n '_fontVariant',\n '_fontWeight',\n '_breakWords',\n '_align',\n '_leading',\n '_letterSpacing',\n '_lineHeight',\n '_textBaseline',\n '_whiteSpace',\n '_wordWrap',\n '_wordWrapWidth',\n '_padding',\n '_cssOverrides',\n '_trim'\n];\n\n/**\n * Generates a unique key for the text style.\n * @param style - The style to generate a key for.\n * @returns the key for the style.\n */\nexport function generateTextStyleKey(style: TextStyle): string\n{\n const key = [];\n\n let index = 0;\n\n for (let i = 0; i < valuesToIterateForKeys.length; i++)\n {\n const prop = valuesToIterateForKeys[i];\n\n key[index++] = style[prop as keyof typeof style];\n }\n\n index = addFillStyleKey(style._fill, key as string[], index);\n index = addStokeStyleKey(style._stroke, key as string[], index);\n\n // TODO - we need to add some shadow stuff here!\n\n return key.join('-');\n}\n\nfunction addFillStyleKey(fillStyle: ConvertedFillStyle, key: (number | string)[], index: number)\n{\n if (!fillStyle) return index;\n\n key[index++] = fillStyle.color;\n key[index++] = fillStyle.alpha;\n key[index++] = (fillStyle.fill as FillGradient)?.uid;\n\n return index;\n}\n\nfunction addStokeStyleKey(strokeStyle: ConvertedStrokeStyle, key: (number | string)[], index: number)\n{\n if (!strokeStyle) return index;\n\n index = addFillStyleKey(strokeStyle, key, index);\n\n key[index++] = strokeStyle.width;\n key[index++] = strokeStyle.alignment;\n key[index++] = strokeStyle.cap;\n key[index++] = strokeStyle.join;\n key[index++] = strokeStyle.miterLimit;\n\n return index;\n}\n","import EventEmitter from 'eventemitter3';\nimport { Color, type ColorSource } from '../../color/Color';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { FillGradient } from '../graphics/shared/fill/FillGradient';\nimport { GraphicsContext } from '../graphics/shared/GraphicsContext';\nimport { convertFillInputToFillStyle } from '../graphics/shared/utils/convertFillInputToFillStyle';\nimport { generateTextStyleKey } from './utils/generateTextStyleKey';\n\nimport type { TextureDestroyOptions, TypeOrBool } from '../container/destroyTypes';\nimport type {\n ConvertedFillStyle,\n ConvertedStrokeStyle,\n FillStyle,\n FillStyleInputs\n} from '../graphics/shared/GraphicsContext';\n\nexport type TextStyleAlign = 'left' | 'center' | 'right' | 'justify';\nexport type TextStyleFill = string | string[] | number | number[] | CanvasGradient | CanvasPattern;\nexport type TextStyleFontStyle = 'normal' | 'italic' | 'oblique';\nexport type TextStyleFontVariant = 'normal' | 'small-caps';\n// eslint-disable-next-line max-len\nexport type TextStyleFontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\nexport type TextStyleLineJoin = 'miter' | 'round' | 'bevel';\nexport type TextStyleTextBaseline = 'alphabetic' | 'top' | 'hanging' | 'middle' | 'ideographic' | 'bottom';\nexport type TextStyleWhiteSpace = 'normal' | 'pre' | 'pre-line';\n\n/**\n * A collection of text related classes.\n * @namespace text\n */\n\n/**\n * A drop shadow effect.\n * @memberof text\n */\nexport type TextDropShadow = {\n /** Set alpha for the drop shadow */\n alpha: number;\n /** Set a angle of the drop shadow */\n angle: number;\n /** Set a shadow blur radius */\n blur: number;\n /** A fill style to be used on the e.g., 'red', '#00FF00' */\n color: ColorSource;\n /** Set a distance of the drop shadow */\n distance: number;\n};\n\n/**\n * Constructor options used for `TextStyle` instances.\n * ```js\n * const textStyle = new TextStyle({\n * fontSize: 12,\n * fill: 'black',\n * });\n * ```\n * @see {@link text.TextStyle}\n * @memberof text\n */\nexport interface TextStyleOptions\n{\n /**\n * Alignment for multiline text, does not affect single line text\n * @type {'left'|'center'|'right'|'justify'}\n */\n align?: TextStyleAlign;\n /** Indicates if lines can be wrapped within words, it needs `wordWrap` to be set to `true` */\n breakWords?: boolean;\n /** Set a drop shadow for the text */\n dropShadow?: boolean | Partial;\n /**\n * A canvas fillstyle that will be used on the text e.g., 'red', '#00FF00'.\n * Can be an array to create a gradient, e.g., `['#000000','#FFFFFF']`\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle|MDN}\n * @type {string|string[]|number|number[]|CanvasGradient|CanvasPattern}\n */\n fill?: FillStyleInputs;\n /** The font family, can be a single font name, or a list of names where the first is the preferred font. */\n fontFamily?: string | string[];\n /** The font size (as a number it converts to px, but as a string, equivalents are '26px','20pt','160%' or '1.6em') */\n fontSize?: number | string;\n /**\n * The font style.\n * @type {'normal'|'italic'|'oblique'}\n */\n fontStyle?: TextStyleFontStyle;\n /**\n * The font variant.\n * @type {'normal'|'small-caps'}\n */\n fontVariant?: TextStyleFontVariant;\n /**\n * The font weight.\n * @type {'normal'|'bold'|'bolder'|'lighter'|'100'|'200'|'300'|'400'|'500'|'600'|'700'|'800'|'900'}\n */\n fontWeight?: TextStyleFontWeight;\n /** The height of the line, a number that represents the vertical space that a letter uses. */\n leading?: number;\n /** The amount of spacing between letters, default is 0 */\n letterSpacing?: number;\n /** The line height, a number that represents the vertical space that a letter uses */\n lineHeight?: number;\n /**\n * Occasionally some fonts are cropped. Adding some padding will prevent this from\n * happening by adding padding to all sides of the text.\n */\n padding?: number;\n /** A canvas fillstyle that will be used on the text stroke, e.g., 'blue', '#FCFF00' */\n stroke?: FillStyleInputs;\n /**\n * The baseline of the text that is rendered.\n * @type {'alphabetic'|'top'|'hanging'|'middle'|'ideographic'|'bottom'}\n */\n textBaseline?: TextStyleTextBaseline;\n trim?: boolean,\n /**\n * Determines whether newlines & spaces are collapsed or preserved \"normal\"\n * (collapse, collapse), \"pre\" (preserve, preserve) | \"pre-line\" (preserve,\n * collapse). It needs wordWrap to be set to true.\n * @type {'normal'|'pre'|'pre-line'}\n */\n whiteSpace?: TextStyleWhiteSpace;\n /** Indicates if word wrap should be used */\n wordWrap?: boolean;\n /** The width at which text will wrap, it needs wordWrap to be set to true */\n wordWrapWidth?: number;\n}\n\n/**\n * A TextStyle Object contains information to decorate a Text objects.\n *\n * An instance can be shared between multiple Text objects; then changing the style will update all text objects using it.\n * @memberof text\n * @example\n * import { TextStyle } from 'pixi.js';\n * const style = new TextStyle({\n * fontFamily: ['Helvetica', 'Arial', 'sans-serif'],\n * fontSize: 36,\n * });\n */\nexport class TextStyle extends EventEmitter<{\n update: TextDropShadow\n}>\n{\n /** The default drop shadow settings */\n public static defaultDropShadow: TextDropShadow = {\n /** Set alpha for the drop shadow */\n alpha: 1,\n /** Set a angle of the drop shadow */\n angle: Math.PI / 6,\n /** Set a shadow blur radius */\n blur: 0,\n /** A fill style to be used on the e.g., 'red', '#00FF00' */\n color: 'black',\n /** Set a distance of the drop shadow */\n distance: 5,\n };\n\n /** The default text style settings */\n public static defaultTextStyle: TextStyleOptions = {\n /**\n * See {@link TextStyle.align}\n * @type {'left'|'center'|'right'|'justify'}\n */\n align: 'left',\n /** See {@link TextStyle.breakWords} */\n breakWords: false,\n /** See {@link TextStyle.dropShadow} */\n dropShadow: null,\n /**\n * See {@link TextStyle.fill}\n * @type {string|string[]|number|number[]|CanvasGradient|CanvasPattern}\n */\n fill: 'black',\n /**\n * See {@link TextStyle.fontFamily}\n * @type {string|string[]}\n */\n fontFamily: 'Arial',\n /**\n * See {@link TextStyle.fontSize}\n * @type {number|string}\n */\n fontSize: 26,\n /**\n * See {@link TextStyle.fontStyle}\n * @type {'normal'|'italic'|'oblique'}\n */\n fontStyle: 'normal',\n /**\n * See {@link TextStyle.fontVariant}\n * @type {'normal'|'small-caps'}\n */\n fontVariant: 'normal',\n /**\n * See {@link TextStyle.fontWeight}\n * @type {'normal'|'bold'|'bolder'|'lighter'|'100'|'200'|'300'|'400'|'500'|'600'|'700'|'800'|'900'}\n */\n fontWeight: 'normal',\n /** See {@link TextStyle.leading} */\n leading: 0,\n /** See {@link TextStyle.letterSpacing} */\n letterSpacing: 0,\n /** See {@link TextStyle.lineHeight} */\n lineHeight: 0,\n /** See {@link TextStyle.padding} */\n padding: 0,\n /**\n * See {@link TextStyle.stroke}\n * @type {string|number}\n */\n stroke: null,\n /**\n * See {@link TextStyle.textBaseline}\n * @type {'alphabetic'|'top'|'hanging'|'middle'|'ideographic'|'bottom'}\n */\n textBaseline: 'alphabetic',\n /** See {@link TextStyle.trim} */\n trim: false,\n /**\n * See {@link TextStyle.whiteSpace}\n * @type {'normal'|'pre'|'pre-line'}\n */\n whiteSpace: 'pre',\n /** See {@link TextStyle.wordWrap} */\n wordWrap: false,\n /** See {@link TextStyle.wordWrapWidth} */\n wordWrapWidth: 100,\n };\n\n // colors!!\n public _fill: ConvertedFillStyle;\n private _originalFill: FillStyleInputs;\n\n public _stroke: ConvertedStrokeStyle;\n private _originalStroke: FillStyleInputs;\n\n private _dropShadow: TextDropShadow;\n\n private _fontFamily: string | string[];\n private _fontSize: number;\n private _fontStyle: TextStyleFontStyle;\n private _fontVariant: TextStyleFontVariant;\n private _fontWeight: TextStyleFontWeight;\n\n private _breakWords: boolean;\n private _align: TextStyleAlign;\n private _leading: number;\n private _letterSpacing: number;\n private _lineHeight: number;\n\n private _textBaseline: TextStyleTextBaseline;\n private _whiteSpace: TextStyleWhiteSpace;\n private _wordWrap: boolean;\n private _wordWrapWidth: number;\n\n private _padding: number;\n\n protected _styleKey: string;\n private _trim: boolean;\n\n constructor(style: Partial = {})\n {\n super();\n\n convertV7Tov8Style(style);\n\n const fullStyle = { ...TextStyle.defaultTextStyle, ...style };\n\n for (const key in fullStyle)\n {\n const thisKey = key as keyof typeof this;\n\n this[thisKey] = fullStyle[key as keyof TextStyleOptions] as any;\n }\n\n this.update();\n }\n\n /**\n * Alignment for multiline text, does not affect single line text.\n * @member {'left'|'center'|'right'|'justify'}\n */\n get align(): TextStyleAlign { return this._align; }\n set align(value: TextStyleAlign) { this._align = value; this.update(); }\n /** Indicates if lines can be wrapped within words, it needs wordWrap to be set to true. */\n get breakWords(): boolean { return this._breakWords; }\n set breakWords(value: boolean) { this._breakWords = value; this.update(); }\n /** Set a drop shadow for the text. */\n get dropShadow(): TextDropShadow { return this._dropShadow; }\n set dropShadow(value: boolean | TextDropShadow)\n {\n if (value !== null && typeof value === 'object')\n {\n this._dropShadow = {\n ...TextStyle.defaultDropShadow as TextDropShadow,\n ...value as TextDropShadow\n };\n }\n else\n {\n this._dropShadow = value ? {\n ...TextStyle.defaultDropShadow as TextDropShadow\n } : null;\n }\n\n this.update();\n }\n /** The font family, can be a single font name, or a list of names where the first is the preferred font. */\n get fontFamily(): string | string[] { return this._fontFamily; }\n set fontFamily(value: string | string[]) { this._fontFamily = value; this.update(); }\n /** The font size (as a number it converts to px, but as a string, equivalents are '26px','20pt','160%' or '1.6em') */\n get fontSize(): number { return this._fontSize; }\n set fontSize(value: string | number)\n {\n if (typeof value === 'string')\n {\n // eg '34px' to number\n this._fontSize = parseInt(value as string, 10);\n }\n else\n {\n this._fontSize = value as number;\n }\n this.update();\n }\n /**\n * The font style.\n * @member {'normal'|'italic'|'oblique'}\n */\n get fontStyle(): TextStyleFontStyle { return this._fontStyle; }\n set fontStyle(value: TextStyleFontStyle) { this._fontStyle = value; this.update(); }\n /**\n * The font variant.\n * @member {'normal'|'small-caps'}\n */\n get fontVariant(): TextStyleFontVariant { return this._fontVariant; }\n set fontVariant(value: TextStyleFontVariant) { this._fontVariant = value; this.update(); }\n /**\n * The font weight.\n * @member {'normal'|'bold'|'bolder'|'lighter'|'100'|'200'|'300'|'400'|'500'|'600'|'700'|'800'|'900'}\n */\n get fontWeight(): TextStyleFontWeight { return this._fontWeight; }\n set fontWeight(value: TextStyleFontWeight) { this._fontWeight = value; this.update(); }\n /** The space between lines. */\n get leading(): number { return this._leading; }\n set leading(value: number) { this._leading = value; this.update(); }\n /** The amount of spacing between letters, default is 0. */\n get letterSpacing(): number { return this._letterSpacing; }\n set letterSpacing(value: number) { this._letterSpacing = value; this.update(); }\n /** The line height, a number that represents the vertical space that a letter uses. */\n get lineHeight(): number { return this._lineHeight; }\n set lineHeight(value: number) { this._lineHeight = value; this.update(); }\n /**\n * Occasionally some fonts are cropped. Adding some padding will prevent this from happening\n * by adding padding to all sides of the text.\n */\n get padding(): number { return this._padding; }\n set padding(value: number) { this._padding = value; this.update(); }\n\n /** Trim transparent borders. This is an expensive operation so only use this if you have to! */\n get trim(): boolean { return this._trim; }\n set trim(value: boolean) { this._trim = value; this.update(); }\n /**\n * The baseline of the text that is rendered.\n * @member {'alphabetic'|'top'|'hanging'|'middle'|'ideographic'|'bottom'}\n */\n get textBaseline(): TextStyleTextBaseline { return this._textBaseline; }\n set textBaseline(value: TextStyleTextBaseline) { this._textBaseline = value; this.update(); }\n /**\n * How newlines and spaces should be handled.\n * Default is 'pre' (preserve, preserve).\n *\n * value | New lines | Spaces\n * --- | --- | ---\n * 'normal' | Collapse | Collapse\n * 'pre' | Preserve | Preserve\n * 'pre-line' | Preserve | Collapse\n * @member {'normal'|'pre'|'pre-line'}\n */\n get whiteSpace(): TextStyleWhiteSpace { return this._whiteSpace; }\n set whiteSpace(value: TextStyleWhiteSpace) { this._whiteSpace = value; this.update(); }\n /** Indicates if word wrap should be used. */\n get wordWrap(): boolean { return this._wordWrap; }\n set wordWrap(value: boolean) { this._wordWrap = value; this.update(); }\n /** The width at which text will wrap, it needs wordWrap to be set to true. */\n get wordWrapWidth(): number { return this._wordWrapWidth; }\n set wordWrapWidth(value: number) { this._wordWrapWidth = value; this.update(); }\n\n /** A fillstyle that will be used on the text e.g., 'red', '#00FF00'. */\n get fill(): FillStyleInputs\n {\n return this._originalFill;\n }\n\n set fill(value: FillStyleInputs)\n {\n if (value === this._originalFill) return;\n\n this._originalFill = value;\n this._fill = convertFillInputToFillStyle(\n value === 0x0 ? 'black' : value,\n GraphicsContext.defaultFillStyle\n );\n this.update();\n }\n\n /** A fillstyle that will be used on the text stroke, e.g., 'blue', '#FCFF00'. */\n get stroke(): FillStyleInputs\n {\n return this._originalStroke;\n }\n\n set stroke(value: FillStyleInputs)\n {\n if (value === this._originalStroke) return;\n\n this._originalStroke = value;\n this._stroke = convertFillInputToFillStyle(value, GraphicsContext.defaultStrokeStyle);\n this.update();\n }\n\n protected _generateKey(): string\n {\n this._styleKey = generateTextStyleKey(this);\n\n return this._styleKey;\n }\n\n public update()\n {\n this._styleKey = null;\n this.emit('update', this);\n }\n\n /** Resets all properties to the default values */\n public reset()\n {\n const defaultStyle = TextStyle.defaultTextStyle;\n\n for (const key in defaultStyle)\n {\n this[key as keyof typeof this] = defaultStyle[key as keyof TextStyleOptions] as any;\n }\n }\n\n get styleKey()\n {\n return this._styleKey || this._generateKey();\n }\n\n /**\n * Creates a new TextStyle object with the same values as this one.\n * @returns New cloned TextStyle object\n */\n public clone(): TextStyle\n {\n return new TextStyle({\n align: this.align,\n breakWords: this.breakWords,\n dropShadow: this.dropShadow,\n fill: this._fill,\n fontFamily: this.fontFamily,\n fontSize: this.fontSize,\n fontStyle: this.fontStyle,\n fontVariant: this.fontVariant,\n fontWeight: this.fontWeight,\n leading: this.leading,\n letterSpacing: this.letterSpacing,\n lineHeight: this.lineHeight,\n padding: this.padding,\n stroke: this._stroke,\n textBaseline: this.textBaseline,\n whiteSpace: this.whiteSpace,\n wordWrap: this.wordWrap,\n wordWrapWidth: this.wordWrapWidth,\n });\n }\n\n /**\n * Destroys this text style.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the texture of the this style\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the this style\n */\n public destroy(options: TypeOrBool = false)\n {\n this.removeAllListeners();\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n if (this._fill?.texture)\n {\n this._fill.texture.destroy(destroyTextureSource);\n }\n\n if ((this._originalFill as FillStyle)?.texture)\n {\n (this._originalFill as FillStyle).texture.destroy(destroyTextureSource);\n }\n\n if (this._stroke?.texture)\n {\n this._stroke.texture.destroy(destroyTextureSource);\n }\n\n if ((this._originalStroke as FillStyle)?.texture)\n {\n (this._originalStroke as FillStyle).texture.destroy(destroyTextureSource);\n }\n }\n\n this._fill = null;\n this._stroke = null;\n this.dropShadow = null;\n this._originalStroke = null;\n this._originalFill = null;\n }\n}\n\nfunction convertV7Tov8Style(style: TextStyleOptions)\n{\n const oldStyle = style as any;\n\n if (typeof oldStyle.dropShadow === 'boolean' && oldStyle.dropShadow)\n {\n const defaults = TextStyle.defaultDropShadow;\n\n style.dropShadow = {\n alpha: oldStyle.dropShadowAlpha ?? defaults.alpha,\n angle: oldStyle.dropShadowAngle ?? defaults.angle,\n blur: oldStyle.dropShadowBlur ?? defaults.blur,\n color: oldStyle.dropShadowColor ?? defaults.color,\n distance: oldStyle.dropShadowDistance ?? defaults.distance,\n };\n }\n\n if (oldStyle.strokeThickness !== undefined)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'strokeThickness is now a part of stroke');\n // #endif\n\n const color = oldStyle.stroke;\n\n style.stroke = {\n color,\n width: oldStyle.strokeThickness\n };\n }\n\n if (Array.isArray(oldStyle.fill))\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'gradient fill is now a fill pattern: `new FillGradient(...)`');\n // #endif\n\n const gradientFill = new FillGradient(0, 0, 0, (style.fontSize as number) * 1.7);\n\n const fills: number[] = oldStyle.fill.map((color: ColorSource) => Color.shared.setValue(color).toNumber());\n\n fills.forEach((number, index) =>\n {\n const ratio = oldStyle.fillGradientStops[index] ?? index / fills.length;\n\n gradientFill.addColorStop(ratio, number);\n });\n\n style.fill = {\n fill: gradientFill\n };\n }\n}\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool';\nimport { Bounds } from '../../container/bounds/Bounds';\n\nimport type { ICanvas } from '../../../environment/canvas/ICanvas';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\n\nconst tempBounds = new Bounds();\n\n/**\n * Takes an image and creates a texture from it, using a power of 2 texture from the texture pool.\n * Remember to return the texture when you don't need it any more!\n * @param image - The image to create a texture from\n * @param width - the frame width of the texture\n * @param height - the frame height of the texture\n * @param resolution - The resolution of the texture\n * @returns - The texture\n */\nexport function getPo2TextureFromSource(\n image: HTMLImageElement | HTMLCanvasElement | ICanvas,\n width: number,\n height: number,\n resolution: number\n): Texture\n{\n const bounds = tempBounds;\n\n bounds.minX = 0;\n bounds.minY = 0;\n\n bounds.maxX = (image.width / resolution) | 0;\n bounds.maxY = (image.height / resolution) | 0;\n\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n false\n );\n\n texture.source.uploadMethodId = 'image';\n texture.source.resource = image;\n texture.source.alphaMode = 'premultiply-alpha-on-upload';\n\n texture.frame.width = width / resolution;\n texture.frame.height = height / resolution;\n\n // We want to update the resource on the GPU,\n // but we do not want to resize the texture.\n // calling `texture.source.update` will fit the resource to the texture\n // causing a resize of the texture on the GPU.\n // which is not what we want!\n texture.source.emit('update', texture.source);\n\n texture.updateUvs();\n\n return texture;\n}\n","import type { TextStyle } from '../../TextStyle';\n\nconst genericFontFamilies = [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n];\n\n/**\n * Generates a font style string to use for `TextMetrics.measureFont()`.\n * @param style\n * @returns Font style string, for passing to `TextMetrics.measureFont()`\n */\nexport function fontStringFromTextStyle(style: TextStyle): string\n{\n // build canvas api font setting from individual components. Convert a numeric style.fontSize to px\n const fontSizeString = (typeof style.fontSize === 'number') ? `${style.fontSize}px` : style.fontSize;\n\n // Clean-up fontFamily property by quoting each font name\n // this will support font names with spaces\n let fontFamilies: string | string[] = style.fontFamily;\n\n if (!Array.isArray(style.fontFamily))\n {\n fontFamilies = style.fontFamily.split(',');\n }\n\n for (let i = fontFamilies.length - 1; i >= 0; i--)\n {\n // Trim any extra white-space\n let fontFamily = fontFamilies[i].trim();\n\n // Check if font already contains strings\n if (!(/([\\\"\\'])[^\\'\\\"]+\\1/).test(fontFamily) && !genericFontFamilies.includes(fontFamily))\n {\n fontFamily = `\"${fontFamily}\"`;\n }\n (fontFamilies as string[])[i] = fontFamily;\n }\n\n // eslint-disable-next-line max-len\n return `${style.fontStyle} ${style.fontVariant} ${style.fontWeight} ${fontSizeString} ${(fontFamilies as string[]).join(',')}`;\n}\n","import { DOMAdapter } from '../../../environment/adapter';\nimport { fontStringFromTextStyle } from './utils/fontStringFromTextStyle';\n\nimport type { ICanvas, ICanvasRenderingContext2DSettings } from '../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../environment/canvas/ICanvasRenderingContext2D';\nimport type { TextStyle, TextStyleWhiteSpace } from '../TextStyle';\n\n// The type for Intl.Segmenter is only available since TypeScript 4.7.2, so let's make a polyfill for it.\ninterface ISegmentData\n{\n segment: string;\n}\ninterface ISegments\n{\n [Symbol.iterator](): IterableIterator;\n}\ninterface ISegmenter\n{\n segment(input: string): ISegments;\n}\ninterface IIntl\n{\n Segmenter?: {\n prototype: ISegmenter;\n new(): ISegmenter;\n };\n}\n\n/**\n * A number, or a string containing a number.\n * @memberof text\n * @typedef {object} FontMetrics\n * @property {number} ascent - Font ascent\n * @property {number} descent - Font descent\n * @property {number} fontSize - Font size\n */\nexport interface FontMetrics\n{\n ascent: number;\n descent: number;\n fontSize: number;\n}\n\ntype CharacterWidthCache = Record;\n\n// Default settings used for all getContext calls\nconst contextSettings: ICanvasRenderingContext2DSettings = {\n // TextMetrics requires getImageData readback for measuring fonts.\n willReadFrequently: true,\n};\n\n/**\n * The TextMetrics object represents the measurement of a block of text with a specified style.\n * @example\n * import { TextMetrics, TextStyle } from 'pixi.js';\n *\n * const style = new TextStyle({\n * fontFamily: 'Arial',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * });\n * const textMetrics = TextMetrics.measureText('Your text', style);\n * @memberof text\n */\nexport class CanvasTextMetrics\n{\n /** The text that was measured. */\n public text: string;\n\n /** The style that was measured. */\n public style: TextStyle;\n\n /** The measured width of the text. */\n public width: number;\n\n /** The measured height of the text. */\n public height: number;\n\n /** An array of lines of the text broken by new lines and wrapping is specified in style. */\n public lines: string[];\n\n /** An array of the line widths for each line matched to `lines`. */\n public lineWidths: number[];\n\n /** The measured line height for this style. */\n public lineHeight: number;\n\n /** The maximum line width for all measured lines. */\n public maxLineWidth: number;\n\n /** The font properties object from TextMetrics.measureFont. */\n public fontProperties: FontMetrics;\n\n /**\n * String used for calculate font metrics.\n * These characters are all tall to help calculate the height required for text.\n */\n public static METRICS_STRING = '|ÉqÅ';\n\n /** Baseline symbol for calculate font metrics. */\n public static BASELINE_SYMBOL = 'M';\n\n /** Baseline multiplier for calculate font metrics. */\n public static BASELINE_MULTIPLIER = 1.4;\n\n /** Height multiplier for setting height of canvas to calculate font metrics. */\n public static HEIGHT_MULTIPLIER = 2.0;\n\n /**\n * A Unicode \"character\", or \"grapheme cluster\", can be composed of multiple Unicode code points,\n * such as letters with diacritical marks (e.g. `'\\u0065\\u0301'`, letter e with acute)\n * or emojis with modifiers (e.g. `'\\uD83E\\uDDD1\\u200D\\uD83D\\uDCBB'`, technologist).\n * The new `Intl.Segmenter` API in ES2022 can split the string into grapheme clusters correctly. If it is not available,\n * PixiJS will fallback to use the iterator of String, which can only spilt the string into code points.\n * If you want to get full functionality in environments that don't support `Intl.Segmenter` (such as Firefox),\n * you can use other libraries such as [grapheme-splitter]{@link https://www.npmjs.com/package/grapheme-splitter}\n * or [graphemer]{@link https://www.npmjs.com/package/graphemer} to create a polyfill. Since these libraries can be\n * relatively large in size to handle various Unicode grapheme clusters properly, PixiJS won't use them directly.\n */\n public static graphemeSegmenter: (s: string) => string[] = (() =>\n {\n if (typeof (Intl as IIntl)?.Segmenter === 'function')\n {\n const segmenter = new (Intl as IIntl).Segmenter();\n\n return (s: string) => [...segmenter.segment(s)].map((x) => x.segment);\n }\n\n return (s: string) => [...s];\n })();\n\n public static _experimentalLetterSpacingSupported?: boolean;\n\n /**\n * Checking that we can use modern canvas 2D API.\n *\n * Note: This is an unstable API, Chrome < 94 use `textLetterSpacing`, later versions use `letterSpacing`.\n * @see TextMetrics.experimentalLetterSpacing\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ICanvasRenderingContext2D/letterSpacing\n * @see https://developer.chrome.com/origintrials/#/view_trial/3585991203293757441\n */\n public static get experimentalLetterSpacingSupported(): boolean\n {\n let result = CanvasTextMetrics._experimentalLetterSpacingSupported;\n\n if (result !== undefined)\n {\n const proto = DOMAdapter.get().getCanvasRenderingContext2D().prototype;\n\n result\n = CanvasTextMetrics._experimentalLetterSpacingSupported\n = 'letterSpacing' in proto || 'textLetterSpacing' in proto;\n }\n\n return result;\n }\n\n /**\n * New rendering behavior for letter-spacing which uses Chrome's new native API. This will\n * lead to more accurate letter-spacing results because it does not try to manually draw\n * each character. However, this Chrome API is experimental and may not serve all cases yet.\n * @see TextMetrics.experimentalLetterSpacingSupported\n */\n public static experimentalLetterSpacing = false;\n\n /** Cache of {@see TextMetrics.FontMetrics} objects. */\n private static _fonts: Record = {};\n\n /** Cache of new line chars. */\n private static readonly _newlines: number[] = [\n 0x000A, // line feed\n 0x000D, // carriage return\n ];\n\n /** Cache of breaking spaces. */\n private static readonly _breakingSpaces: number[] = [\n 0x0009, // character tabulation\n 0x0020, // space\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 0x2008, // punctuation space\n 0x2009, // thin space\n 0x200A, // hair space\n 0x205F, // medium mathematical space\n 0x3000, // ideographic space\n ];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private static __canvas: ICanvas;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private static __context: ICanvasRenderingContext2D;\n\n private static readonly _measurementCache: Record = {};\n\n /**\n * @param text - the text that was measured\n * @param style - the style that was measured\n * @param width - the measured width of the text\n * @param height - the measured height of the text\n * @param lines - an array of the lines of text broken by new lines and wrapping if specified in style\n * @param lineWidths - an array of the line widths for each line matched to `lines`\n * @param lineHeight - the measured line height for this style\n * @param maxLineWidth - the maximum line width for all measured lines\n * @param {FontMetrics} fontProperties - the font properties object from TextMetrics.measureFont\n */\n constructor(text: string, style: TextStyle, width: number, height: number, lines: string[], lineWidths: number[],\n lineHeight: number, maxLineWidth: number, fontProperties: FontMetrics)\n {\n this.text = text;\n this.style = style;\n this.width = width;\n this.height = height;\n this.lines = lines;\n this.lineWidths = lineWidths;\n this.lineHeight = lineHeight;\n this.maxLineWidth = maxLineWidth;\n this.fontProperties = fontProperties;\n }\n\n /**\n * Measures the supplied string of text and returns a Rectangle.\n * @param text - The text to measure.\n * @param style - The text style to use for measuring\n * @param canvas - optional specification of the canvas to use for measuring.\n * @param wordWrap\n * @returns Measured width and height of the text.\n */\n public static measureText(\n text = ' ',\n style: TextStyle,\n canvas: ICanvas = CanvasTextMetrics._canvas,\n wordWrap: boolean = style.wordWrap,\n ): CanvasTextMetrics\n {\n const textKey = `${text}:${style.styleKey}`;\n\n // TODO - if we find this starts to go nuts with memory, we can remove the cache\n // or instead just stick a usage tick that we increment each time we return it.\n // if some are not used, we can just tidy them up!\n if (CanvasTextMetrics._measurementCache[textKey]) return CanvasTextMetrics._measurementCache[textKey];\n\n const font = fontStringFromTextStyle(style);\n const fontProperties = CanvasTextMetrics.measureFont(font);\n\n // fallback in case UA disallow canvas data extraction\n if (fontProperties.fontSize === 0)\n {\n fontProperties.fontSize = style.fontSize as number;\n fontProperties.ascent = style.fontSize as number;\n }\n\n const context = CanvasTextMetrics.__context; // canvas.getContext('2d', contextSettings);\n\n context.font = font;\n\n const outputText = wordWrap ? CanvasTextMetrics._wordWrap(text, style, canvas) : text;\n const lines = outputText.split(/(?:\\r\\n|\\r|\\n)/);\n const lineWidths = new Array(lines.length);\n let maxLineWidth = 0;\n\n for (let i = 0; i < lines.length; i++)\n {\n const lineWidth = CanvasTextMetrics._measureText(lines[i], style.letterSpacing, context);\n\n lineWidths[i] = lineWidth;\n maxLineWidth = Math.max(maxLineWidth, lineWidth);\n }\n\n const strokeWidth = style._stroke?.width || 0;\n\n let width = maxLineWidth + strokeWidth;\n\n if (style.dropShadow)\n {\n width += style.dropShadow.distance;\n }\n\n const lineHeight = style.lineHeight || fontProperties.fontSize + strokeWidth;\n\n let height = Math.max(lineHeight, fontProperties.fontSize + (strokeWidth * 2))\n + ((lines.length - 1) * (lineHeight + style.leading));\n\n if (style.dropShadow)\n {\n height += style.dropShadow.distance;\n }\n\n const measurements = new CanvasTextMetrics(\n text,\n style,\n width,\n height,\n lines,\n lineWidths,\n lineHeight + style.leading,\n maxLineWidth,\n fontProperties\n );\n\n // CanvasTextMetrics._measurementCache[textKey] = measurements;\n\n return measurements;\n }\n\n private static _measureText(\n text: string,\n letterSpacing: number,\n context: ICanvasRenderingContext2D\n )\n {\n let useExperimentalLetterSpacing = false;\n\n if (CanvasTextMetrics.experimentalLetterSpacingSupported)\n {\n if (CanvasTextMetrics.experimentalLetterSpacing)\n {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n }\n else\n {\n context.letterSpacing = '0px';\n context.textLetterSpacing = '0px';\n }\n }\n\n let width = context.measureText(text).width;\n\n if (width > 0)\n {\n if (useExperimentalLetterSpacing)\n {\n width -= letterSpacing;\n }\n else\n {\n width += (CanvasTextMetrics.graphemeSegmenter(text).length - 1) * letterSpacing;\n }\n }\n\n return width;\n }\n\n /**\n * Applies newlines to a string to have it optimally fit into the horizontal\n * bounds set by the Text object's wordWrapWidth property.\n * @param text - String to apply word wrapping to\n * @param style - the style to use when wrapping\n * @param canvas - optional specification of the canvas to use for measuring.\n * @returns New string with new lines applied where required\n */\n private static _wordWrap(\n text: string,\n style: TextStyle,\n canvas: ICanvas = CanvasTextMetrics._canvas\n ): string\n {\n const context = canvas.getContext('2d', contextSettings);\n\n let width = 0;\n let line = '';\n let lines = '';\n\n const cache: CharacterWidthCache = Object.create(null);\n const { letterSpacing, whiteSpace } = style;\n\n // How to handle whitespaces\n const collapseSpaces = CanvasTextMetrics._collapseSpaces(whiteSpace);\n const collapseNewlines = CanvasTextMetrics._collapseNewlines(whiteSpace);\n\n // whether or not spaces may be added to the beginning of lines\n let canPrependSpaces = !collapseSpaces;\n\n // There is letterSpacing after every char except the last one\n // t_h_i_s_' '_i_s_' '_a_n_' '_e_x_a_m_p_l_e_' '_!\n // so for convenience the above needs to be compared to width + 1 extra letterSpace\n // t_h_i_s_' '_i_s_' '_a_n_' '_e_x_a_m_p_l_e_' '_!_\n // ________________________________________________\n // And then the final space is simply no appended to each line\n const wordWrapWidth = style.wordWrapWidth + letterSpacing;\n\n // break text into words, spaces and newline chars\n const tokens = CanvasTextMetrics._tokenize(text);\n\n for (let i = 0; i < tokens.length; i++)\n {\n // get the word, space or newlineChar\n let token = tokens[i];\n\n // if word is a new line\n if (CanvasTextMetrics._isNewline(token))\n {\n // keep the new line\n if (!collapseNewlines)\n {\n lines += CanvasTextMetrics._addLine(line);\n canPrependSpaces = !collapseSpaces;\n line = '';\n width = 0;\n continue;\n }\n\n // if we should collapse new lines\n // we simply convert it into a space\n token = ' ';\n }\n\n // if we should collapse repeated whitespaces\n if (collapseSpaces)\n {\n // check both this and the last tokens for spaces\n const currIsBreakingSpace = CanvasTextMetrics.isBreakingSpace(token);\n const lastIsBreakingSpace = CanvasTextMetrics.isBreakingSpace(line[line.length - 1]);\n\n if (currIsBreakingSpace && lastIsBreakingSpace)\n {\n continue;\n }\n }\n\n // get word width from cache if possible\n const tokenWidth = CanvasTextMetrics._getFromCache(token, letterSpacing, cache, context);\n\n // word is longer than desired bounds\n if (tokenWidth > wordWrapWidth)\n {\n // if we are not already at the beginning of a line\n if (line !== '')\n {\n // start newlines for overflow words\n lines += CanvasTextMetrics._addLine(line);\n line = '';\n width = 0;\n }\n\n // break large word over multiple lines\n if (CanvasTextMetrics.canBreakWords(token, style.breakWords))\n {\n // break word into characters\n const characters = CanvasTextMetrics.wordWrapSplit(token);\n\n // loop the characters\n for (let j = 0; j < characters.length; j++)\n {\n let char = characters[j];\n let lastChar = char;\n\n let k = 1;\n\n // we are not at the end of the token\n while (characters[j + k])\n {\n const nextChar = characters[j + k];\n\n // should not split chars\n if (!CanvasTextMetrics.canBreakChars(lastChar, nextChar, token, j, style.breakWords))\n {\n // combine chars & move forward one\n char += nextChar;\n }\n else\n {\n break;\n }\n\n lastChar = nextChar;\n k++;\n }\n\n j += k - 1;\n\n const characterWidth = CanvasTextMetrics._getFromCache(char, letterSpacing, cache, context);\n\n if (characterWidth + width > wordWrapWidth)\n {\n lines += CanvasTextMetrics._addLine(line);\n canPrependSpaces = false;\n line = '';\n width = 0;\n }\n\n line += char;\n width += characterWidth;\n }\n }\n\n // run word out of the bounds\n else\n {\n // if there are words in this line already\n // finish that line and start a new one\n if (line.length > 0)\n {\n lines += CanvasTextMetrics._addLine(line);\n line = '';\n width = 0;\n }\n\n const isLastToken = i === tokens.length - 1;\n\n // give it its own line if it's not the end\n lines += CanvasTextMetrics._addLine(token, !isLastToken);\n canPrependSpaces = false;\n line = '';\n width = 0;\n }\n }\n\n // word could fit\n else\n {\n // word won't fit because of existing words\n // start a new line\n if (tokenWidth + width > wordWrapWidth)\n {\n // if its a space we don't want it\n canPrependSpaces = false;\n\n // add a new line\n lines += CanvasTextMetrics._addLine(line);\n\n // start a new line\n line = '';\n width = 0;\n }\n\n // don't add spaces to the beginning of lines\n if (line.length > 0 || !CanvasTextMetrics.isBreakingSpace(token) || canPrependSpaces)\n {\n // add the word to the current line\n line += token;\n\n // update width counter\n width += tokenWidth;\n }\n }\n }\n\n lines += CanvasTextMetrics._addLine(line, false);\n\n return lines;\n }\n\n /**\n * Convienience function for logging each line added during the wordWrap method.\n * @param line - The line of text to add\n * @param newLine - Add new line character to end\n * @returns A formatted line\n */\n private static _addLine(line: string, newLine = true): string\n {\n line = CanvasTextMetrics._trimRight(line);\n\n line = (newLine) ? `${line}\\n` : line;\n\n return line;\n }\n\n /**\n * Gets & sets the widths of calculated characters in a cache object\n * @param key - The key\n * @param letterSpacing - The letter spacing\n * @param cache - The cache\n * @param context - The canvas context\n * @returns The from cache.\n */\n private static _getFromCache(key: string, letterSpacing: number, cache: CharacterWidthCache,\n context: ICanvasRenderingContext2D): number\n {\n let width = cache[key];\n\n if (typeof width !== 'number')\n {\n width = CanvasTextMetrics._measureText(key, letterSpacing, context) + letterSpacing;\n cache[key] = width;\n }\n\n return width;\n }\n\n /**\n * Determines whether we should collapse breaking spaces.\n * @param whiteSpace - The TextStyle property whiteSpace\n * @returns Should collapse\n */\n private static _collapseSpaces(whiteSpace: TextStyleWhiteSpace): boolean\n {\n return (whiteSpace === 'normal' || whiteSpace === 'pre-line');\n }\n\n /**\n * Determines whether we should collapse newLine chars.\n * @param whiteSpace - The white space\n * @returns should collapse\n */\n private static _collapseNewlines(whiteSpace: TextStyleWhiteSpace): boolean\n {\n return (whiteSpace === 'normal');\n }\n\n /**\n * Trims breaking whitespaces from string.\n * @param text - The text\n * @returns Trimmed string\n */\n private static _trimRight(text: string): string\n {\n if (typeof text !== 'string')\n {\n return '';\n }\n\n for (let i = text.length - 1; i >= 0; i--)\n {\n const char = text[i];\n\n if (!CanvasTextMetrics.isBreakingSpace(char))\n {\n break;\n }\n\n text = text.slice(0, -1);\n }\n\n return text;\n }\n\n /**\n * Determines if char is a newline.\n * @param char - The character\n * @returns True if newline, False otherwise.\n */\n private static _isNewline(char: string): boolean\n {\n if (typeof char !== 'string')\n {\n return false;\n }\n\n return CanvasTextMetrics._newlines.includes(char.charCodeAt(0));\n }\n\n /**\n * Determines if char is a breaking whitespace.\n *\n * It allows one to determine whether char should be a breaking whitespace\n * For example certain characters in CJK langs or numbers.\n * It must return a boolean.\n * @param char - The character\n * @param [_nextChar] - The next character\n * @returns True if whitespace, False otherwise.\n */\n public static isBreakingSpace(char: string, _nextChar?: string): boolean\n {\n if (typeof char !== 'string')\n {\n return false;\n }\n\n return CanvasTextMetrics._breakingSpaces.includes(char.charCodeAt(0));\n }\n\n /**\n * Splits a string into words, breaking-spaces and newLine characters\n * @param text - The text\n * @returns A tokenized array\n */\n private static _tokenize(text: string): string[]\n {\n const tokens: string[] = [];\n let token = '';\n\n if (typeof text !== 'string')\n {\n return tokens;\n }\n\n for (let i = 0; i < text.length; i++)\n {\n const char = text[i];\n const nextChar = text[i + 1];\n\n if (CanvasTextMetrics.isBreakingSpace(char, nextChar) || CanvasTextMetrics._isNewline(char))\n {\n if (token !== '')\n {\n tokens.push(token);\n token = '';\n }\n\n tokens.push(char);\n\n continue;\n }\n\n token += char;\n }\n\n if (token !== '')\n {\n tokens.push(token);\n }\n\n return tokens;\n }\n\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It allows one to customise which words should break\n * Examples are if the token is CJK or numbers.\n * It must return a boolean.\n * @param _token - The token\n * @param breakWords - The style attr break words\n * @returns Whether to break word or not\n */\n public static canBreakWords(_token: string, breakWords: boolean): boolean\n {\n return breakWords;\n }\n\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It allows one to determine whether a pair of characters\n * should be broken by newlines\n * For example certain characters in CJK langs or numbers.\n * It must return a boolean.\n * @param _char - The character\n * @param _nextChar - The next character\n * @param _token - The token/word the characters are from\n * @param _index - The index in the token of the char\n * @param _breakWords - The style attr break words\n * @returns whether to break word or not\n */\n public static canBreakChars(_char: string, _nextChar: string, _token: string, _index: number,\n _breakWords: boolean): boolean\n {\n return true;\n }\n\n /**\n * Overridable helper method used internally by TextMetrics, exposed to allow customizing the class's behavior.\n *\n * It is called when a token (usually a word) has to be split into separate pieces\n * in order to determine the point to break a word.\n * It must return an array of characters.\n * @param token - The token to split\n * @returns The characters of the token\n * @see CanvasTextMetrics.graphemeSegmenter\n */\n public static wordWrapSplit(token: string): string[]\n {\n return CanvasTextMetrics.graphemeSegmenter(token);\n }\n\n /**\n * Calculates the ascent, descent and fontSize of a given font-style\n * @param font - String representing the style of the font\n * @returns Font properties object\n */\n public static measureFont(font: string): FontMetrics\n {\n // as this method is used for preparing assets, don't recalculate things if we don't need to\n if (CanvasTextMetrics._fonts[font])\n {\n return CanvasTextMetrics._fonts[font];\n }\n\n const context = CanvasTextMetrics._context;\n\n context.font = font;\n const metrics = context.measureText(CanvasTextMetrics.METRICS_STRING + CanvasTextMetrics.BASELINE_SYMBOL);\n\n const properties = {\n ascent: metrics.actualBoundingBoxAscent,\n descent: metrics.actualBoundingBoxDescent,\n fontSize: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n\n CanvasTextMetrics._fonts[font] = properties;\n\n return properties;\n }\n\n /**\n * Clear font metrics in metrics cache.\n * @param {string} [font] - font name. If font name not set then clear cache for all fonts.\n */\n public static clearMetrics(font = ''): void\n {\n if (font)\n {\n delete CanvasTextMetrics._fonts[font];\n }\n else\n {\n CanvasTextMetrics._fonts = {};\n }\n }\n\n /**\n * Cached canvas element for measuring text\n * TODO: this should be private, but isn't because of backward compat, will fix later.\n * @ignore\n */\n public static get _canvas(): ICanvas\n {\n if (!CanvasTextMetrics.__canvas)\n {\n let canvas: ICanvas;\n\n try\n {\n // OffscreenCanvas2D measureText can be up to 40% faster.\n const c = new OffscreenCanvas(0, 0);\n const context = c.getContext('2d', contextSettings);\n\n if (context?.measureText)\n {\n CanvasTextMetrics.__canvas = c as ICanvas;\n\n return c as ICanvas;\n }\n\n canvas = DOMAdapter.get().createCanvas();\n }\n catch (ex)\n {\n canvas = DOMAdapter.get().createCanvas();\n }\n canvas.width = canvas.height = 10;\n CanvasTextMetrics.__canvas = canvas;\n }\n\n return CanvasTextMetrics.__canvas;\n }\n\n /**\n * TODO: this should be private, but isn't because of backward compat, will fix later.\n * @ignore\n */\n public static get _context(): ICanvasRenderingContext2D\n {\n if (!CanvasTextMetrics.__context)\n {\n CanvasTextMetrics.__context = CanvasTextMetrics._canvas.getContext('2d', contextSettings);\n }\n\n return CanvasTextMetrics.__context;\n }\n}\n","import { Color } from '../../../../color/Color';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../../utils/logging/warn';\nimport { FillGradient } from '../../../graphics/shared/fill/FillGradient';\nimport { FillPattern } from '../../../graphics/shared/fill/FillPattern';\n\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\nimport type { ConvertedFillStyle } from '../../../graphics/shared/GraphicsContext';\n\nexport function getCanvasFillStyle(\n fillStyle: ConvertedFillStyle,\n context: ICanvasRenderingContext2D): string | CanvasGradient | CanvasPattern\n{\n if (fillStyle.texture === Texture.WHITE && !fillStyle.fill)\n {\n return Color.shared.setValue(fillStyle.color).toHex();\n }\n else if (!fillStyle.fill)\n {\n // fancy set up...\n const pattern = context.createPattern(fillStyle.texture.source.resource, 'repeat');\n\n // create an inverted scale matrix..\n const tempMatrix = fillStyle.matrix.copyTo(Matrix.shared);\n\n tempMatrix.scale(fillStyle.texture.frame.width, fillStyle.texture.frame.height);\n\n pattern.setTransform(tempMatrix);\n\n return pattern;\n }\n else if (fillStyle.fill instanceof FillPattern)\n {\n const fillPattern = fillStyle.fill as FillPattern;\n\n const pattern = context.createPattern(fillPattern.texture.source.resource, 'repeat');\n\n const tempMatrix = fillPattern.transform.copyTo(Matrix.shared);\n\n tempMatrix.scale(\n fillPattern.texture.frame.width,\n fillPattern.texture.frame.height\n );\n\n pattern.setTransform(tempMatrix);\n\n return pattern;\n }\n else if (fillStyle.fill instanceof FillGradient)\n {\n const fillGradient = fillStyle.fill as FillGradient;\n\n if (fillGradient.type === 'linear')\n {\n const gradient = context.createLinearGradient(\n fillGradient.x0,\n fillGradient.y0,\n fillGradient.x1,\n fillGradient.y1\n );\n\n fillGradient.gradientStops.forEach((stop) =>\n {\n gradient.addColorStop(stop.offset, Color.shared.setValue(stop.color).toHex());\n });\n\n return gradient;\n }\n }\n\n // #if _DEBUG\n warn('FillStyle not recognised', fillStyle);\n // #endif\n\n return 'red';\n}\n","import { Color } from '../../../color/Color';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { nextPow2 } from '../../../maths/misc/pow2';\nimport { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool';\nimport { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool';\nimport { getCanvasBoundingBox } from '../../../utils/canvas/getCanvasBoundingBox';\nimport { deprecation } from '../../../utils/logging/deprecation';\nimport { TextStyle } from '../TextStyle';\nimport { getPo2TextureFromSource } from '../utils/getPo2TextureFromSource';\nimport { CanvasTextMetrics } from './CanvasTextMetrics';\nimport { fontStringFromTextStyle } from './utils/fontStringFromTextStyle';\nimport { getCanvasFillStyle } from './utils/getCanvasFillStyle';\n\nimport type { ICanvas } from '../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../environment/canvas/ICanvasRenderingContext2D';\nimport type { System } from '../../../rendering/renderers/shared/system/System';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Renderer } from '../../../rendering/renderers/types';\nimport type { TextOptions } from '../AbstractText';\nimport type { Text } from '../Text';\n\ninterface CanvasAndContext\n{\n canvas: ICanvas;\n context: ICanvasRenderingContext2D;\n}\n\n/**\n * System plugin to the renderer to manage canvas text.\n * @memberof rendering\n */\nexport class CanvasTextSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'canvasText',\n } as const;\n\n private _activeTextures: Record = {};\n\n private readonly _renderer: Renderer;\n\n constructor(_renderer: Renderer)\n {\n this._renderer = _renderer;\n }\n\n public getTextureSize(text: string, resolution: number, style: TextStyle): { width: number, height: number }\n {\n const measured = CanvasTextMetrics.measureText(text || ' ', style);\n\n let width = Math.ceil(Math.ceil((Math.max(1, measured.width) + (style.padding * 2))) * resolution);\n let height = Math.ceil(Math.ceil((Math.max(1, measured.height) + (style.padding * 2))) * resolution);\n\n width = Math.ceil((width) - 1e-6);\n height = Math.ceil((height) - 1e-6);\n width = nextPow2(width);\n height = nextPow2(height);\n\n return { width, height };\n }\n\n /**\n * This is a function that will create a texture from a text string, style and resolution.\n * Useful if you want to make a texture of your text and use if for various other pixi things!\n * @param options - The options of the text that will be used to generate the texture.\n * @param options.text - the text to render\n * @param options.style - the style of the text\n * @param options.resolution - the resolution of the texture\n * @returns the newly created texture\n */\n /** @deprecated since 8.0.0 */\n public getTexture(text: string, resolution: number, style: TextStyle, textKey: string): Texture;\n public getTexture(options: TextOptions): Texture;\n public getTexture(options: TextOptions | string, resolution?: number, style?: TextStyle, _textKey?: string): Texture\n {\n if (typeof options === 'string')\n {\n deprecation('8.0.0', 'CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments');\n\n options = {\n text: options,\n style,\n resolution,\n };\n }\n\n if (!(options.style instanceof TextStyle))\n {\n options.style = new TextStyle(options.style);\n }\n\n const { texture, canvasAndContext } = this.createTextureAndCanvas(\n options as {text: string, style: TextStyle, resolution?: number}\n );\n\n this._renderer.texture.initSource(texture._source);\n\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n\n return texture;\n }\n\n public createTextureAndCanvas(options: {text: string, style: TextStyle, resolution?: number})\n {\n const { text, style } = options;\n\n const resolution = options.resolution ?? this._renderer.resolution;\n\n // create a canvas with the word hello on it\n const measured = CanvasTextMetrics.measureText(text || ' ', style);\n\n const width = Math.ceil(Math.ceil((Math.max(1, measured.width) + (style.padding * 2))) * resolution);\n const height = Math.ceil(Math.ceil((Math.max(1, measured.height) + (style.padding * 2))) * resolution);\n\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(width, height);\n\n // create a texture from the canvas\n const { canvas } = canvasAndContext;\n\n this.renderTextToCanvas(text, style, resolution, canvasAndContext);\n\n const texture = getPo2TextureFromSource(canvas, width, height, resolution);\n\n if (style.trim)\n {\n const trimmed = getCanvasBoundingBox(canvas, resolution);\n\n texture.frame.copyFrom(trimmed);\n\n texture.updateUvs();\n }\n\n return { texture, canvasAndContext };\n }\n\n public getManagedTexture(text: Text)\n {\n const textKey = text._getKey();\n\n if (this._activeTextures[textKey])\n {\n this._increaseReferenceCount(textKey);\n\n return this._activeTextures[textKey].texture;\n }\n\n const { texture, canvasAndContext } = this.createTextureAndCanvas(text);\n\n this._activeTextures[textKey] = {\n canvasAndContext,\n texture,\n usageCount: 1,\n };\n\n return texture;\n }\n\n private _increaseReferenceCount(textKey: string)\n {\n this._activeTextures[textKey].usageCount++;\n }\n\n public decreaseReferenceCount(textKey: string)\n {\n const activeTexture = this._activeTextures[textKey];\n\n activeTexture.usageCount--;\n\n if (activeTexture.usageCount === 0)\n {\n CanvasPool.returnCanvasAndContext(activeTexture.canvasAndContext);\n TexturePool.returnTexture(activeTexture.texture);\n\n const source = activeTexture.texture.source;\n\n source.resource = null;\n source.uploadMethodId = 'unknown';\n source.alphaMode = 'no-premultiply-alpha';\n\n this._activeTextures[textKey] = null;\n }\n }\n\n public getReferenceCount(textKey: string)\n {\n return this._activeTextures[textKey].usageCount;\n }\n\n /**\n * Renders text to its canvas, and updates its texture.\n *\n * By default this is used internally to ensure the texture is correct before rendering,\n * but it can be used called externally, for example from this class to 'pre-generate' the texture from a piece of text,\n * and then shared across multiple Sprites.\n * @param text\n * @param style\n * @param resolution\n * @param canvasAndContext\n */\n public renderTextToCanvas(text: string, style: TextStyle, resolution: number, canvasAndContext: CanvasAndContext): void\n {\n const { canvas, context } = canvasAndContext;\n\n const font = fontStringFromTextStyle(style);\n\n const measured = CanvasTextMetrics.measureText(text || ' ', style);// , canvas);\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n\n const height = canvas.height;\n\n context.resetTransform();\n\n context.scale(resolution, resolution);\n\n const padding = style.padding * 2;\n\n context.clearRect(0, 0, measured.width + 4 + padding, measured.height + 4 + padding);\n\n // set stroke styles..\n\n if (style._stroke?.width)\n {\n const strokeStyle = style._stroke;\n\n context.lineWidth = strokeStyle.width;\n\n context.miterLimit = strokeStyle.miterLimit;\n context.lineJoin = strokeStyle.join;\n context.lineCap = strokeStyle.cap;\n }\n\n // return;\n context.font = font;\n\n let linePositionX: number;\n let linePositionY: number;\n\n // require 2 passes if a shadow; the first to draw the drop shadow, the second to draw the text\n const passesCount = style.dropShadow ? 2 : 1;\n\n // For v4, we drew text at the colours of the drop shadow underneath the normal text. This gave the correct zIndex,\n // but features such as alpha and shadowblur did not look right at all, since we were using actual text as a shadow.\n //\n // For v5.0.0, we moved over to just use the canvas API for drop shadows, which made them look much nicer and more\n // visually please, but now because the stroke is drawn and then the fill, drop shadows would appear on both the fill\n // and the stroke; and fill drop shadows would appear over the top of the stroke.\n //\n // For v5.1.1, the new route is to revert to v4 style of drawing text first to get the drop shadows underneath normal\n // text, but instead drawing text in the correct location, we'll draw it off screen (-paddingY), and then adjust the\n // drop shadow so only that appears on screen (+paddingY). Now we'll have the correct draw order of the shadow\n // beneath the text, whilst also having the proper text shadow styling.\n for (let i = 0; i < passesCount; ++i)\n {\n const isShadowPass = style.dropShadow && i === 0;\n // we only want the drop shadow, so put text way off-screen\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + (style.padding * 2)) : 0;\n const dsOffsetShadow = dsOffsetText * resolution;\n\n if (isShadowPass)\n {\n // On Safari, text with gradient and drop shadows together do not position correctly\n // if the scale of the canvas is not 1: https://bugs.webkit.org/show_bug.cgi?id=197689\n // Therefore we'll set the styles to be a plain black whilst generating this drop shadow\n context.fillStyle = 'black';\n context.strokeStyle = 'black';\n\n const shadowOptions = style.dropShadow;\n\n const dropShadowColor = shadowOptions.color;\n const dropShadowAlpha = shadowOptions.alpha;\n\n context.shadowColor = Color.shared\n .setValue(dropShadowColor)\n .setAlpha(dropShadowAlpha)\n .toRgbaString();\n\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = (Math.sin(shadowOptions.angle) * dropShadowDistance) + dsOffsetShadow;\n }\n else\n {\n context.globalAlpha = style._fill?.alpha ?? 1;\n context.fillStyle = style._fill ? getCanvasFillStyle(style._fill, context) : null;\n\n if (style._stroke?.width)\n {\n context.strokeStyle = getCanvasFillStyle(style._stroke, context);\n }\n\n context.shadowColor = 'black';\n }\n\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n\n if (lineHeight - fontProperties.fontSize < 0)\n {\n linePositionYShift = 0;\n }\n\n const strokeWidth = style._stroke?.width ?? 0;\n\n // draw lines line by line\n for (let i = 0; i < lines.length; i++)\n {\n linePositionX = strokeWidth / 2;\n linePositionY = ((strokeWidth / 2) + (i * lineHeight)) + fontProperties.ascent + linePositionYShift;\n\n if (style.align === 'right')\n {\n linePositionX += maxLineWidth - lineWidths[i];\n }\n else if (style.align === 'center')\n {\n linePositionX += (maxLineWidth - lineWidths[i]) / 2;\n }\n\n if (style._stroke?.width)\n {\n this._drawLetterSpacing(\n lines[i],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText,\n true\n );\n }\n\n if (style._fill !== undefined)\n {\n this._drawLetterSpacing(\n lines[i],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText\n );\n }\n }\n }\n }\n\n /**\n * Render the text with letter-spacing.\n * @param text - The text to draw\n * @param style\n * @param canvasAndContext\n * @param x - Horizontal position to draw the text\n * @param y - Vertical position to draw the text\n * @param isStroke - Is this drawing for the outside stroke of the\n * text? If not, it's for the inside fill\n */\n private _drawLetterSpacing(\n text: string,\n style: TextStyle,\n canvasAndContext: CanvasAndContext,\n x: number, y: number,\n isStroke = false\n ): void\n {\n const { context } = canvasAndContext;\n\n // letterSpacing of 0 means normal\n const letterSpacing = style.letterSpacing;\n\n let useExperimentalLetterSpacing = false;\n\n if (CanvasTextMetrics.experimentalLetterSpacingSupported)\n {\n if (CanvasTextMetrics.experimentalLetterSpacing)\n {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n }\n else\n {\n context.letterSpacing = '0px';\n context.textLetterSpacing = '0px';\n }\n }\n\n if (letterSpacing === 0 || useExperimentalLetterSpacing)\n {\n if (isStroke)\n {\n context.strokeText(text, x, y);\n }\n else\n {\n context.fillText(text, x, y);\n }\n\n return;\n }\n\n let currentPosition = x;\n\n const stringArray = CanvasTextMetrics.graphemeSegmenter(text);\n let previousWidth = context.measureText(text).width;\n let currentWidth = 0;\n\n for (let i = 0; i < stringArray.length; ++i)\n {\n const currentChar = stringArray[i];\n\n if (isStroke)\n {\n context.strokeText(currentChar, currentPosition, y);\n }\n else\n {\n context.fillText(currentChar, currentPosition, y);\n }\n let textStr = '';\n\n for (let j = i + 1; j < stringArray.length; ++j)\n {\n textStr += stringArray[j];\n }\n currentWidth = context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n\n public destroy(): void\n {\n this._activeTextures = null;\n }\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { CanvasTextPipe } from './canvas/CanvasTextPipe';\nimport { CanvasTextSystem } from './canvas/CanvasTextSystem';\n\nextensions.add(CanvasTextSystem);\nextensions.add(CanvasTextPipe);\n","import EventEmitter from 'eventemitter3';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\n\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { FontMetrics } from '../text/canvas/CanvasTextMetrics';\n\n/** @memberof text */\nexport interface CharData\n{\n /** Unique id of character */\n id: number;\n /** x-offset to apply when rendering character */\n xOffset: number;\n /** y-offset to apply when rendering character. */\n yOffset: number;\n /** Advancement to apply to next character. */\n xAdvance: number;\n /** The kerning values for this character. */\n kerning: Record;\n /** The texture of the character. */\n texture?: Texture;\n}\n\n/**\n * The raw data of a character in a bitmap font.\n * @memberof text\n */\nexport interface RawCharData extends Omit\n{\n /** The page of the font texture that the character is on. */\n page: number;\n /** The x position of the character in the page. */\n x: number;\n /** The y position of the character in the page. */\n y: number;\n /** The width of the character in the page. */\n width: number;\n /** The height of the character in the page. */\n height: number;\n /** The letter of the character. */\n letter: string;\n}\n\n/**\n * The raw data of a bitmap font.\n * @memberof text\n */\nexport interface BitmapFontData\n{\n /** The offset of the font face from the baseline. */\n baseLineOffset: number;\n /** The map of characters by character code. */\n chars: Record;\n /** The map of base page textures (i.e., sheets of glyphs). */\n pages: {\n /** Unique id for bitmap texture */\n id: number;\n /** File name */\n file: string\n }[];\n /** The line-height of the font face in pixels. */\n lineHeight: number;\n /** The size of the font face in pixels. */\n fontSize: number;\n /** The name of the font face. */\n fontFamily: string;\n /** The range and type of the distance field for this font. */\n distanceField?: {\n /** Type of distance field */\n type: 'sdf' | 'msdf' | 'none';\n /** Range of the distance field in pixels */\n range: number;\n };\n}\n\ninterface BitmapFontEvents\n{\n destroy: [Type];\n}\n\n/**\n * An abstract representation of a bitmap font.\n * @memberof text\n */\nexport abstract class AbstractBitmapFont\n extends EventEmitter>\n implements Omit\n{\n /** The map of characters by character code. */\n public readonly chars: Record = Object.create(null);\n\n /**\n * The line-height of the font face in pixels.\n * @type {number}\n */\n public readonly lineHeight: BitmapFontData['lineHeight'] = 0;\n\n /**\n * The name of the font face\n * @type {string}\n */\n public readonly fontFamily: BitmapFontData['fontFamily'] = '';\n /** The metrics of the font face. */\n public readonly fontMetrics: FontMetrics = { fontSize: 0, ascent: 0, descent: 0 };\n /**\n * The offset of the font face from the baseline.\n * @type {number}\n */\n public readonly baseLineOffset: BitmapFontData['baseLineOffset'] = 0;\n /** The range and type of the distance field for this font. */\n public readonly distanceField: BitmapFontData['distanceField'] = { type: 'none', range: 0 };\n /** The map of base page textures (i.e., sheets of glyphs). */\n public readonly pages: { texture: Texture }[] = [];\n\n /** The size of the font face in pixels. */\n public readonly baseMeasurementFontSize: number = 100;\n protected baseRenderedFontSize = 100;\n\n /**\n * The name of the font face.\n * @deprecated since 8.0.0 Use `fontFamily` instead.\n */\n public get font(): BitmapFontData['fontFamily']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.');\n // #endif\n\n return this.fontFamily;\n }\n\n /**\n * The map of base page textures (i.e., sheets of glyphs).\n * @deprecated since 8.0.0 Use `pages` instead.\n */\n public get pageTextures(): AbstractBitmapFont['pages']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.');\n // #endif\n\n return this.pages;\n }\n\n /**\n * The size of the font face in pixels.\n * @deprecated since 8.0.0 Use `fontMetrics.fontSize` instead.\n */\n public get size(): BitmapFontData['fontSize']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.');\n // #endif\n\n return this.fontMetrics.fontSize;\n }\n\n /**\n * The kind of distance field for this font or \"none\".\n * @deprecated since 8.0.0 Use `distanceField.type` instead.\n */\n public get distanceFieldRange(): NonNullable['range']\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.');\n // #endif\n\n return this.distanceField.range;\n }\n\n /**\n * The range of the distance field in pixels.\n * @deprecated since 8.0.0 Use `distanceField.range` instead.\n */\n public get distanceFieldType(): NonNullable['type']\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.');\n // #endif\n\n return this.distanceField.type;\n }\n\n public destroy(destroyTextures = false): void\n {\n this.emit('destroy', this as unknown as FontType);\n\n this.removeAllListeners();\n\n for (const i in this.chars)\n {\n this.chars[i].texture.destroy();\n }\n\n (this.chars as null) = null;\n\n if (destroyTextures)\n {\n this.pages.forEach((page) => page.texture.destroy(true));\n (this.pages as any) = null;\n }\n }\n}\n","/**\n * Processes the passed character set data and returns a flattened array of all the characters.\n *\n * Ignored because not directly exposed.\n * @ignore\n * @param {string | string[] | string[][] } chars\n * @returns {string[]} the flattened array of characters\n */\n\nexport function resolveCharacters(chars: string | (string | string[])[]): string[]\n{\n // Skip unexpected 'empty set' check at end\n if (chars === '')\n {\n return [];\n }\n\n // Split the chars string into individual characters\n if (typeof chars === 'string')\n {\n chars = [chars];\n }\n\n // Handle an array of characters+ranges\n const result: string[] = [];\n\n for (let i = 0, j = chars.length; i < j; i++)\n {\n const item = chars[i];\n\n // Handle range delimited by start/end chars\n if (Array.isArray(item))\n {\n if (item.length !== 2)\n {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n if (item[0].length === 0 || item[1].length === 0)\n {\n throw new Error('[BitmapFont]: Invalid character delimiter.');\n }\n\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n\n if (endCode < startCode)\n {\n throw new Error('[BitmapFont]: Invalid character range.');\n }\n\n for (let i = startCode, j = endCode; i <= j; i++)\n {\n result.push(String.fromCharCode(i));\n }\n }\n else\n {\n result.push(...Array.from(item));\n }\n }\n\n if (result.length === 0)\n {\n throw new Error('[BitmapFont]: Empty set when resolving characters.');\n }\n\n return result;\n}\n","import { Color } from '../../color/Color';\nimport { Rectangle } from '../../maths/shapes/Rectangle';\nimport { CanvasPool } from '../../rendering/renderers/shared/texture/CanvasPool';\nimport { ImageSource } from '../../rendering/renderers/shared/texture/sources/ImageSource';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { CanvasTextMetrics } from '../text/canvas/CanvasTextMetrics';\nimport { fontStringFromTextStyle } from '../text/canvas/utils/fontStringFromTextStyle';\nimport { getCanvasFillStyle } from '../text/canvas/utils/getCanvasFillStyle';\nimport { AbstractBitmapFont } from './AbstractBitmapFont';\nimport { resolveCharacters } from './utils/resolveCharacters';\n\nimport type { ICanvasRenderingContext2D } from '../../environment/canvas/ICanvasRenderingContext2D';\nimport type { CanvasAndContext } from '../../rendering/renderers/shared/texture/CanvasPool';\nimport type { FontMetrics } from '../text/canvas/CanvasTextMetrics';\nimport type { TextStyle } from '../text/TextStyle';\n\nexport interface DynamicBitmapFontOptions\n{\n style: TextStyle\n skipKerning?: boolean\n resolution?: number\n padding?: number\n overrideFill?: boolean\n overrideSize?: boolean\n}\n\n/**\n * A BitmapFont that generates its glyphs dynamically.\n * @memberof text\n * @ignore\n */\nexport class DynamicBitmapFont extends AbstractBitmapFont\n{\n /**\n * this is a resolution modifier for the font size..\n * texture resolution will also be used to scale texture according to its font size also\n */\n public resolution = 1;\n /** The pages of the font. */\n public override readonly pages: {canvasAndContext?: CanvasAndContext, texture: Texture}[] = [];\n\n private readonly _padding: number = 4;\n private readonly _measureCache: Record = Object.create(null);\n private _currentChars: string[] = [];\n private _currentX = 0;\n private _currentY = 0;\n private _currentPageIndex = -1;\n private readonly _style: TextStyle;\n private readonly _skipKerning: boolean = false;\n\n /**\n * @param options - The options for the dynamic bitmap font.\n */\n constructor(options: DynamicBitmapFontOptions)\n {\n super();\n\n const dynamicOptions = options;\n const style = dynamicOptions.style.clone();\n\n if (dynamicOptions.overrideFill)\n {\n // assuming no shape fill..\n style._fill.color = 0xffffff;\n style._fill.alpha = 1;\n style._fill.texture = Texture.WHITE;\n style._fill.fill = null;\n }\n\n const requestedFontSize = style.fontSize;\n\n // adjust font size to match the base measurement size\n style.fontSize = this.baseMeasurementFontSize;\n\n const font = fontStringFromTextStyle(style);\n\n if (dynamicOptions.overrideSize)\n {\n if (style._stroke)\n {\n // we want the stroke to fit the size of the requested text, so we need to scale it\n // accordingly (eg font size 20, with stroke 10 - stroke is 50% of size,\n // as dynamic font is size 100, the stroke should be adjusted to 50 to make it look right)\n style._stroke.width *= this.baseRenderedFontSize / requestedFontSize;\n }\n }\n else\n {\n style.fontSize = this.baseRenderedFontSize = requestedFontSize;\n }\n\n this._style = style;\n this._skipKerning = dynamicOptions.skipKerning ?? false;\n this.resolution = dynamicOptions.resolution ?? 1;\n this._padding = dynamicOptions.padding ?? 4;\n\n (this.fontMetrics as FontMetrics) = CanvasTextMetrics.measureFont(font);\n (this.lineHeight as number) = style.lineHeight || this.fontMetrics.fontSize || style.fontSize;\n }\n\n public ensureCharacters(chars: string): void\n {\n const charList = resolveCharacters(chars)\n .filter((char) => !this._currentChars.includes(char))\n .filter((char, index, self) => self.indexOf(char) === index);\n // filter returns..\n\n if (!charList.length) return;\n\n this._currentChars = [...this._currentChars, ...charList];\n\n let pageData;\n\n if (this._currentPageIndex === -1)\n {\n pageData = this._nextPage();\n }\n else\n {\n pageData = this.pages[this._currentPageIndex];\n }\n\n let { canvas, context } = pageData.canvasAndContext;\n let textureSource = pageData.texture.source;\n\n const style = this._style;\n\n let currentX = this._currentX;\n let currentY = this._currentY;\n\n const fontScale = this.baseRenderedFontSize / this.baseMeasurementFontSize;\n const padding = this._padding * fontScale;\n\n const widthScale = style.fontStyle === 'italic' ? 2 : 1;\n let maxCharHeight = 0;\n let skipTexture = false;\n\n for (let i = 0; i < charList.length; i++)\n {\n const char = charList[i];\n\n const metrics = CanvasTextMetrics.measureText(char, style, canvas, false);\n\n // override the line height.. we want this to be the glyps heigh\n // not the user specified one.\n metrics.lineHeight = metrics.height;\n\n const width = (widthScale * metrics.width) * fontScale;\n const height = (metrics.height) * fontScale;\n\n const paddedWidth = width + (padding * 2);\n const paddedHeight = height + (padding * 2);\n\n skipTexture = false;\n // don't let empty characters count towards the maxCharHeight\n if (char !== '\\n' && char !== '\\r' && char !== '\\t' && char !== ' ')\n {\n skipTexture = true;\n maxCharHeight = Math.ceil(Math.max(paddedHeight, maxCharHeight));// / 1.5;\n }\n\n if (currentX + paddedWidth > 512)\n {\n currentY += maxCharHeight;\n\n // reset the line x and height..\n maxCharHeight = paddedHeight;\n currentX = 0;\n\n if (currentY + maxCharHeight > 512)\n {\n textureSource.update();\n\n const pageData = this._nextPage();\n\n canvas = pageData.canvasAndContext.canvas;\n context = pageData.canvasAndContext.context;\n textureSource = pageData.texture.source;\n\n currentY = 0;\n }\n }\n\n const xAdvance = (width / fontScale)\n - (style.dropShadow?.distance ?? 0)\n - (style._stroke?.width ?? 0);\n\n // This is in coord space of the measurements.. not the texture\n this.chars[char] = {\n id: char.codePointAt(0),\n xOffset: -this._padding,\n yOffset: -this._padding,\n xAdvance,\n kerning: {},\n };\n\n if (skipTexture)\n {\n this._drawGlyph(\n context,\n metrics,\n currentX + padding,\n currentY + padding,\n fontScale,\n style,\n );\n\n const px = textureSource.width * fontScale;\n const py = textureSource.height * fontScale;\n\n const frame = new Rectangle(\n ((currentX) / px) * textureSource.width,\n ((currentY) / py) * textureSource.height,\n ((paddedWidth) / px) * textureSource.width,\n ((paddedHeight) / py) * textureSource.height,\n );\n\n this.chars[char].texture = new Texture({\n source: textureSource,\n frame,\n });\n\n currentX += Math.ceil(paddedWidth);\n }\n\n // now add it to the font data..\n }\n\n textureSource.update();\n\n this._currentX = currentX;\n this._currentY = currentY;\n\n // now apply kerning..\n this._skipKerning && this._applyKerning(charList, context);\n }\n\n /**\n * @deprecated since 8.0.0\n * The map of base page textures (i.e., sheets of glyphs).\n */\n public override get pageTextures(): DynamicBitmapFont['pages']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.');\n // #endif\n\n return this.pages;\n }\n\n private _applyKerning(newChars: string[], context: ICanvasRenderingContext2D): void\n {\n const measureCache = this._measureCache;\n\n for (let i = 0; i < newChars.length; i++)\n {\n const first = newChars[i];\n\n for (let j = 0; j < this._currentChars.length; j++)\n {\n // first go through new char being first\n const second = this._currentChars[j];\n\n let c1 = measureCache[first];\n\n if (!c1) c1 = measureCache[first] = context.measureText(first).width;\n\n let c2 = measureCache[second];\n\n if (!c2) c2 = measureCache[second] = context.measureText(second).width;\n\n let total = context.measureText(first + second).width;\n let amount = total - (c1 + c2);\n\n if (amount)\n {\n this.chars[first].kerning[second] = amount;\n }\n\n // then go through new char being second\n total = context.measureText(first + second).width;\n amount = total - (c1 + c2);\n\n if (amount)\n {\n this.chars[second].kerning[first] = amount;\n }\n }\n }\n }\n\n private _nextPage(): {canvasAndContext: CanvasAndContext, texture: Texture}\n {\n this._currentPageIndex++;\n\n const textureResolution = this.resolution;\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(512, 512, textureResolution);\n\n this._setupContext(canvasAndContext.context, this._style, textureResolution);\n\n const resolution = textureResolution * (this.baseRenderedFontSize / this.baseMeasurementFontSize);\n const texture = new Texture({\n source: new ImageSource({\n resource: canvasAndContext.canvas,\n resolution,\n alphaMode: 'premultiply-alpha-on-upload'\n }),\n\n });\n\n const pageData = {\n canvasAndContext,\n texture,\n };\n\n this.pages[this._currentPageIndex] = pageData;\n\n return pageData;\n }\n\n // canvas style!\n private _setupContext(context: ICanvasRenderingContext2D, style: TextStyle, resolution: number): void\n {\n style.fontSize = this.baseRenderedFontSize;\n context.scale(resolution, resolution);\n context.font = fontStringFromTextStyle(style);\n style.fontSize = this.baseMeasurementFontSize;\n context.textBaseline = style.textBaseline;\n\n const stroke = style._stroke;\n const strokeThickness = stroke?.width ?? 0;\n\n if (stroke)\n {\n context.lineWidth = strokeThickness;\n context.lineJoin = stroke.join;\n context.miterLimit = stroke.miterLimit;\n\n // TODO prolly cache this??\n context.strokeStyle = getCanvasFillStyle(stroke, context);\n }\n\n if (style._fill)\n {\n // set canvas text styles\n context.fillStyle = getCanvasFillStyle(style._fill, context);\n }\n\n if (style.dropShadow)\n {\n const shadowOptions = style.dropShadow;\n const rgb = Color.shared.setValue(shadowOptions.color).toArray();\n\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${shadowOptions.alpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance;\n }\n else\n {\n context.shadowColor = 'black';\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n }\n\n private _drawGlyph(\n context: ICanvasRenderingContext2D,\n metrics: CanvasTextMetrics,\n x: number,\n y: number,\n fontScale: number,\n style: TextStyle\n ): void\n {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n const stroke = style._stroke;\n\n const strokeThickness = (stroke?.width ?? 0) * fontScale;\n\n const tx = x + (strokeThickness / 2);\n const ty = y - (strokeThickness / 2);\n\n const descent = fontProperties.descent * fontScale;\n const lineHeight = metrics.lineHeight * fontScale;\n\n if (style.stroke && strokeThickness)\n {\n context.strokeText(char, tx, ty + lineHeight - descent);\n }\n\n if (style._fill)\n {\n context.fillText(char, tx, ty + lineHeight - descent);\n }\n }\n\n public override destroy(): void\n {\n super.destroy();\n\n for (let i = 0; i < this.pages.length; i++)\n {\n const { canvasAndContext, texture } = this.pages[i];\n\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n texture.destroy(true);\n }\n\n (this.pages as null) = null;\n }\n}\n","import type { TextStyle } from '../../text/TextStyle';\nimport type { AbstractBitmapFont } from '../AbstractBitmapFont';\n\nexport interface BitmapTextLayoutData\n{\n width: number;\n height: number;\n scale: number;\n offsetY: number;\n lines: {\n width: number\n charPositions: number[],\n chars: string[],\n // / spaces: number\n spaceWidth: number\n spacesIndex: number[]\n }[];\n}\n\nexport function getBitmapTextLayout(chars: string[], style: TextStyle, font: AbstractBitmapFont): BitmapTextLayoutData\n{\n const layoutData: BitmapTextLayoutData = {\n width: 0,\n height: 0,\n offsetY: 0,\n scale: style.fontSize / font.baseMeasurementFontSize,\n lines: [{\n width: 0,\n charPositions: [] as number[],\n spaceWidth: 0,\n spacesIndex: [],\n chars: [],\n }]\n };\n\n layoutData.offsetY = font.baseLineOffset;\n\n let currentLine = layoutData.lines[0];\n\n let previousChar: string = null;\n let firstWord = true;\n // let spaceCount = 0;\n\n const currentWord = {\n spaceWord: false,\n width: 0,\n start: 0,\n index: 0, // use index to not modify the array as we use it a lot!\n positions: [] as number[],\n chars: [] as string[],\n };\n\n const nextWord = (word: typeof currentWord) =>\n {\n const start = currentLine.width;\n\n for (let j = 0; j < currentWord.index; j++)\n {\n const position = word.positions[j];\n\n currentLine.chars.push(word.chars[j]);\n currentLine.charPositions.push(position + start);\n }\n\n currentLine.width += word.width;\n\n firstWord = false;\n\n // reset the word..\n currentWord.width = 0;\n currentWord.index = 0;\n currentWord.chars.length = 0;\n\n // spaceCount = 0;\n };\n\n const nextLine = () =>\n {\n let index = currentLine.chars.length - 1;\n let lastChar = currentLine.chars[index];\n\n while (lastChar === ' ')\n {\n currentLine.width -= font.chars[lastChar].xAdvance;\n lastChar = currentLine.chars[--index];\n }\n\n layoutData.width = Math.max(layoutData.width, currentLine.width);\n\n currentLine = {\n width: 0,\n charPositions: [],\n chars: [],\n spaceWidth: 0,\n spacesIndex: [],\n };\n\n firstWord = true;\n layoutData.lines.push(currentLine);\n layoutData.height += font.lineHeight;\n };\n\n const scale = font.baseMeasurementFontSize / style.fontSize;\n\n const adjustedLetterSpacing = style.letterSpacing * scale;\n const adjustedWordWrapWidth = style.wordWrapWidth * scale;\n\n // loop an extra time to force a line break..\n for (let i = 0; i < chars.length + 1; i++)\n {\n let char: string;\n\n const isEnd = i === chars.length;\n\n if (!isEnd)\n {\n char = chars[i];\n }\n\n const charData = font.chars[char] || font.chars[' '];\n\n const isSpace = (/(?:\\s)/).test(char);\n const isWordBreak = isSpace || char === '\\r' || char === '\\n' || isEnd;\n\n // spaceCount++;\n // wasSpace = isSpace;\n\n if (isWordBreak)\n {\n const addWordToNextLine = !firstWord\n && style.wordWrap\n && (currentLine.width + currentWord.width - adjustedLetterSpacing) > adjustedWordWrapWidth;\n\n if (addWordToNextLine)\n {\n nextLine();\n\n nextWord(currentWord);\n\n if (!isEnd)\n {\n currentLine.charPositions.push(0);\n }\n }\n else\n {\n currentWord.start = currentLine.width;\n\n nextWord(currentWord);\n\n if (!isEnd)\n {\n currentLine.charPositions.push(0);\n }\n }\n\n if (char === '\\r' || char === '\\n')\n {\n if (currentLine.width !== 0)\n {\n nextLine();\n }\n }\n else if (!isEnd)\n {\n const spaceWidth = charData.xAdvance + (charData.kerning[previousChar] || 0) + adjustedLetterSpacing;\n\n currentLine.width += spaceWidth;\n\n currentLine.spaceWidth = spaceWidth;\n currentLine.spacesIndex.push(currentLine.charPositions.length);\n currentLine.chars.push(char);\n\n // spaceCount++;\n }\n }\n else\n {\n const kerning = charData.kerning[previousChar] || 0;\n\n const nextCharWidth = charData.xAdvance + kerning + adjustedLetterSpacing;\n\n currentWord.positions[currentWord.index++] = currentWord.width + kerning;\n currentWord.chars.push(char);\n\n currentWord.width += nextCharWidth;\n }\n\n previousChar = char;\n // lastChar = char;\n }\n\n nextLine();\n\n if (style.align === 'center')\n {\n alignCenter(layoutData);\n }\n else if (style.align === 'right')\n {\n alignRight(layoutData);\n }\n else if (style.align === 'justify')\n {\n alignJustify(layoutData);\n }\n\n return layoutData;\n}\n\nfunction alignCenter(measurementData: BitmapTextLayoutData)\n{\n for (let i = 0; i < measurementData.lines.length; i++)\n {\n const line = measurementData.lines[i];\n const offset = ((measurementData.width / 2) - (line.width / 2));\n\n for (let j = 0; j < line.charPositions.length; j++)\n {\n line.charPositions[j] += offset;\n }\n }\n}\n\nfunction alignRight(measurementData: BitmapTextLayoutData)\n{\n for (let i = 0; i < measurementData.lines.length; i++)\n {\n const line = measurementData.lines[i];\n const offset = ((measurementData.width) - (line.width));\n\n for (let j = 0; j < line.charPositions.length; j++)\n {\n line.charPositions[j] += offset;\n }\n }\n}\n\nfunction alignJustify(measurementData: BitmapTextLayoutData)\n{\n const width = measurementData.width;\n\n for (let i = 0; i < measurementData.lines.length; i++)\n {\n const line = measurementData.lines[i];\n\n let indy = 0;\n let spaceIndex = line.spacesIndex[indy++];\n\n let offset = 0;\n\n const totalSpaces = line.spacesIndex.length;\n\n const newSpaceWidth = (width - line.width) / totalSpaces;\n\n const spaceWidth = newSpaceWidth;\n\n for (let j = 0; j < line.charPositions.length; j++)\n {\n if (j === spaceIndex)\n {\n spaceIndex = line.spacesIndex[indy++];\n\n offset += spaceWidth;\n }\n\n line.charPositions[j] += offset;\n }\n }\n}\n","import { Cache } from '../../assets/cache/Cache';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { TextStyle } from '../text/TextStyle';\nimport { DynamicBitmapFont } from './DynamicBitmapFont';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout';\nimport { resolveCharacters } from './utils/resolveCharacters';\n\nimport type { TextStyleOptions } from '../text/TextStyle';\nimport type { BitmapFont } from './BitmapFont';\nimport type { BitmapTextLayoutData } from './utils/getBitmapTextLayout';\n\n/**\n *\n * The options for installing a new BitmapFont. Once installed the font will be available for use in the BitmapText.\n * It can be accessed by the `fontFamily` property of the TextStyle.\n *\n * Install a new BitmapFont will create the characters provided for the font and store them in the cache.\n * But don't worry, if a character is requested that hasn't been generated yet, it will be created on the fly.\n * @memberof text\n */\nexport interface BitmapFontInstallOptions\n{\n /** the name of the font, this will be the name you use in the fontFamily of text style to access this font */\n name?: string;\n /**\n * Characters included in the font set. You can also use ranges.\n * For example, `[['a', 'z'], ['A', 'Z'], \"!@#$%^&*()~{}[] \"]`.\n * Don't forget to include spaces ' ' in your character set!\n * @default BitmapFont.ALPHANUMERIC\n */\n chars?: string | (string | string[])[];\n /**\n * Render resolution for glyphs.\n * @default 1\n */\n resolution?: number;\n /**\n * Padding between glyphs on texture atlas. Lower values could mean more visual artifacts\n * and bleeding from other glyphs, larger values increase the space required on the texture.\n * @default 4\n */\n padding?: number;\n /**\n * Skip generation of kerning information for the BitmapFont.\n * If true, this could potentially increase the performance, but may impact the rendered text appearance.\n * @default false\n */\n skipKerning?: boolean;\n /** Style options to render with BitmapFont. */\n style?: TextStyle | TextStyleOptions;\n}\n\n/**\n * The BitmapFontManager is a helper that exists to install and uninstall fonts\n * into the cache for BitmapText objects.\n * @memberof text\n * @name BitmapFontManager\n * @example\n * import { BitmapFontManager, BitmapText } from 'pixi.js';\n *\n * BitmapFontManager.install({\n * name: 'TitleFont',\n * style: {}\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', style: { fontFamily: 'TitleFont' }});\n */\nclass BitmapFontManagerClass\n{\n /**\n * This character set includes all the letters in the alphabet (both lower- and upper- case).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.ALPHA })\n */\n public readonly ALPHA = [['a', 'z'], ['A', 'Z'], ' '];\n\n /**\n * This character set includes all decimal digits (from 0 to 9).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.NUMERIC })\n */\n public readonly NUMERIC = [['0', '9']];\n\n /**\n * This character set is the union of `BitmapFont.ALPHA` and `BitmapFont.NUMERIC`.\n * @type {string[][]}\n */\n public readonly ALPHANUMERIC = [['a', 'z'], ['A', 'Z'], ['0', '9'], ' '];\n\n /**\n * This character set consists of all the ASCII table.\n * @member {string[][]}\n * @see http://www.asciitable.com/\n */\n public readonly ASCII = [[' ', '~']];\n\n /** Default options for installing a new BitmapFont. */\n public defaultOptions: Omit = {\n chars: this.ALPHANUMERIC,\n resolution: 1,\n padding: 4,\n skipKerning: false,\n };\n\n /**\n * Get a font for the specified text and style.\n * @param text - The text to get the font for\n * @param style - The style to use\n */\n public getFont(text: string, style: TextStyle): BitmapFont\n {\n let fontFamilyKey = `${style.fontFamily as string}-bitmap`;\n let overrideFill = true;\n\n // assuming there is no texture we can use a tint!\n if (style._fill.fill)\n {\n fontFamilyKey += style._fill.fill.uid;\n overrideFill = false;\n }\n\n // first get us the the right font...\n if (!Cache.has(fontFamilyKey))\n {\n const fnt = new DynamicBitmapFont({\n style,\n overrideFill,\n overrideSize: true,\n ...this.defaultOptions,\n });\n\n fnt.once('destroy', () => Cache.remove(fontFamilyKey));\n\n Cache.set(\n fontFamilyKey as string,\n fnt\n );\n }\n\n const dynamicFont = Cache.get(fontFamilyKey);\n\n (dynamicFont as DynamicBitmapFont).ensureCharacters?.(text);\n\n return dynamicFont;\n }\n\n /**\n * Get the layout of a text for the specified style.\n * @param text - The text to get the layout for\n * @param style - The style to use\n */\n public getLayout(text: string, style: TextStyle): BitmapTextLayoutData\n {\n const bitmapFont = this.getFont(text, style);\n\n return getBitmapTextLayout(text.split(''), style, bitmapFont);\n }\n\n /**\n * Measure the text using the specified style.\n * @param text - The text to measure\n * @param style - The style to use\n */\n public measureText(text: string, style: TextStyle): { width: number; height: number; scale: number; offsetY: number }\n {\n return this.getLayout(text, style);\n }\n\n /**\n * Generates a bitmap-font for the given style and character set\n * @param options - Setup options for font generation.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFontManager, BitmapText } from 'pixi.js';\n *\n * BitmapFontManager.install('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', fontFamily: 'TitleFont' });\n */\n public install(options: BitmapFontInstallOptions): BitmapFont;\n /** @deprecated since 7.0.0 */\n public install(name: string, style?: TextStyle | TextStyleOptions, options?: BitmapFontInstallOptions): BitmapFont;\n // eslint-disable-next-line max-len\n public install(...args: [string | BitmapFontInstallOptions, (TextStyle | TextStyleOptions)?, BitmapFontInstallOptions?]): BitmapFont\n {\n let options = args[0] as BitmapFontInstallOptions;\n\n if (typeof options === 'string')\n {\n options = {\n name: options,\n style: args[1],\n chars: args[2]?.chars,\n resolution: args[2]?.resolution,\n padding: args[2]?.padding,\n skipKerning: args[2]?.skipKerning,\n } as BitmapFontInstallOptions;\n\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})');\n // #endif\n }\n\n const name = options?.name;\n\n if (!name)\n {\n throw new Error('[BitmapFontManager] Property `name` is required.');\n }\n\n options = { ...this.defaultOptions, ...options };\n\n const textStyle = options.style;\n\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const overrideFill = style._fill.fill !== null && style._fill.fill !== undefined;\n const font = new DynamicBitmapFont({\n style,\n overrideFill,\n skipKerning: options.skipKerning,\n padding: options.padding,\n resolution: options.resolution,\n overrideSize: false\n });\n\n const flatChars = resolveCharacters(options.chars);\n\n font.ensureCharacters(flatChars.join(''));\n\n Cache.set(`${name}-bitmap`, font);\n\n font.once('destroy', () => Cache.remove(`${name}-bitmap`));\n\n return font;\n }\n\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n public uninstall(name: string)\n {\n const cacheKey = `${name}-bitmap`;\n const font = Cache.get(cacheKey);\n\n if (font)\n {\n Cache.remove(cacheKey);\n font.destroy();\n }\n }\n}\n\nexport const BitmapFontManager = new BitmapFontManagerClass();\n","import { Rectangle } from '../../maths/shapes/Rectangle';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { AbstractBitmapFont } from './AbstractBitmapFont';\nimport { BitmapFontManager } from './BitmapFontManager';\n\nimport type { FontMetrics } from '../text/canvas/CanvasTextMetrics';\nimport type { BitmapFontData } from './AbstractBitmapFont';\nimport type { BitmapFontInstallOptions } from './BitmapFontManager';\n\n/**\n * Options for creating a BitmapFont.\n * @memberof text\n */\nexport interface BitmapFontOptions\n{\n data: BitmapFontData\n textures: Texture[]\n}\n\n/**\n * A BitmapFont object represents a particular font face, size, and style.\n * @memberof text\n */\nexport class BitmapFont extends AbstractBitmapFont\n{\n /** the url of the font */\n public url?: string;\n\n constructor(options: BitmapFontOptions, url?: string)\n {\n super();\n\n const { textures, data } = options;\n\n Object.keys(data.pages).forEach((key: string) =>\n {\n const pageData = data.pages[parseInt(key, 10)];\n\n const texture = textures[pageData.id];\n\n this.pages.push({ texture });\n });\n\n Object.keys(data.chars).forEach((key: string) =>\n {\n const charData = data.chars[key];\n const {\n frame: textureFrame,\n source: textureSource,\n } = textures[charData.page];\n\n const frameReal = new Rectangle(\n charData.x + textureFrame.x,\n charData.y + textureFrame.y,\n charData.width,\n charData.height,\n );\n\n const texture = new Texture({\n source: textureSource,\n frame: frameReal\n });\n\n this.chars[key] = {\n id: key.codePointAt(0),\n xOffset: charData.xOffset,\n yOffset: charData.yOffset,\n xAdvance: charData.xAdvance,\n kerning: charData.kerning ?? {},\n texture,\n };\n });\n\n this.baseRenderedFontSize = data.fontSize;\n\n (this.baseMeasurementFontSize as number) = data.fontSize;\n (this.fontMetrics as FontMetrics) = {\n ascent: 0,\n descent: 0,\n fontSize: data.fontSize,\n };\n (this.baseLineOffset as number) = data.baseLineOffset;\n (this.lineHeight as number) = data.lineHeight;\n (this.fontFamily as string) = data.fontFamily;\n (this.distanceField as { type: string, range: number }) = data.distanceField ?? {\n type: 'none',\n range: 0,\n };\n\n this.url = url;\n }\n\n /** Destroys the BitmapFont object. */\n public override destroy(): void\n {\n super.destroy();\n\n for (let i = 0; i < this.pages.length; i++)\n {\n const { texture } = this.pages[i];\n\n texture.destroy(true);\n }\n\n (this.pages as null) = null;\n }\n\n /**\n * Generates a bitmap-font for the given style and character set\n * @param options - Setup options for font generation.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFont, BitmapText } from 'pixi.js';\n *\n * BitmapFont.install('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', fontFamily: 'TitleFont' });\n */\n public static install(options: BitmapFontInstallOptions)\n {\n BitmapFontManager.install(options);\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n public static uninstall(name: string)\n {\n BitmapFontManager.uninstall(name);\n }\n}\n","import type { BitmapFontData, RawCharData } from '../AbstractBitmapFont';\n\n/**\n * Internal data format used to convert to BitmapFontData.\n * @private\n */\nexport interface BitmapFontRawData\n{\n info: {\n face: string;\n size: string;\n }[];\n common: { lineHeight: string, base: string }[];\n page: {\n id: string;\n file: string;\n }[];\n chars: {\n count: number;\n }[];\n char: {\n id: string\n page: string\n xoffset: string\n yoffset: string\n xadvance: string,\n x: string\n y: string\n width: string\n height: string\n letter?: string\n char?: string\n }[];\n kernings?: {\n count: number;\n }[];\n kerning?: {\n first: string;\n second: string;\n amount: string;\n }[];\n distanceField?: {\n fieldType: 'sdf' | 'msdf' | 'none';\n distanceRange: string;\n }[]\n}\n\nexport const bitmapFontTextParser = {\n test(data: string | XMLDocument | BitmapFontData): boolean\n {\n return typeof data === 'string' && data.startsWith('info face=');\n },\n\n parse(txt: string): BitmapFontData\n {\n // Retrieve data item\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData: BitmapFontRawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: [],\n };\n\n for (const i in items)\n {\n // Extract item name\n const name = items[i].match(/^[a-z]+/gm)[0] as keyof BitmapFontRawData;\n\n // Extract item attribute list as string ex.: \"width=10\"\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n\n // Convert attribute list into an object\n const itemData: any = {};\n\n for (const i in attributeList)\n {\n // Split key-value pairs\n const split = attributeList[i].split('=');\n const key = split[0];\n\n // Remove eventual quotes from value\n const strValue = split[1].replace(/\"/gm, '');\n\n // Try to convert value into float\n const floatValue = parseFloat(strValue);\n\n // Use string value case float value is NaN\n const value = isNaN(floatValue) ? strValue : floatValue;\n\n itemData[key] = value;\n }\n\n // Push current item to the resulting data\n rawData[name].push(itemData);\n }\n\n const font: BitmapFontData = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: '',\n distanceField: null,\n baseLineOffset: 0,\n };\n\n const [info] = rawData.info;\n const [common] = rawData.common;\n const [distanceField] = rawData.distanceField ?? [];\n\n if (distanceField)\n {\n font.distanceField = {\n range: parseInt(distanceField.distanceRange, 10),\n type: distanceField.fieldType\n };\n }\n\n font.fontSize = parseInt(info.size, 10);\n font.fontFamily = info.face;\n font.lineHeight = parseInt(common.lineHeight, 10);\n\n const page = rawData.page;\n\n for (let i = 0; i < page.length; i++)\n {\n font.pages.push({\n id: parseInt(page[i].id, 10) || 0,\n file: page[i].file,\n });\n }\n\n const map: Record = {};\n\n font.baseLineOffset = font.lineHeight - parseInt(common.base, 10);\n\n const char = rawData.char;\n\n for (let i = 0; i < char.length; i++)\n {\n const charNode = char[i];\n const id = parseInt(charNode.id, 10);\n\n let letter = charNode.letter ?? charNode.char ?? String.fromCharCode(id);\n\n if (letter === 'space')letter = ' ';\n\n map[id] = letter;\n\n font.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.page, 10) || 0,\n x: parseInt(charNode.x, 10),\n y: parseInt(charNode.y, 10),\n width: parseInt(charNode.width, 10),\n height: parseInt(charNode.height, 10),\n xOffset: parseInt(charNode.xoffset, 10),\n yOffset: parseInt(charNode.yoffset, 10),\n xAdvance: parseInt(charNode.xadvance, 10),\n kerning: {},\n } as RawCharData;\n }\n\n const kerning = rawData.kerning || [];\n\n for (let i = 0; i < kerning.length; i++)\n {\n const first = parseInt(kerning[i].first, 10);\n const second = parseInt(kerning[i].second, 10);\n const amount = parseInt(kerning[i].amount, 10);\n\n font.chars[map[second]].kerning[map[first]] = amount;\n }\n\n return font;\n }\n};\n","import type { BitmapFontData, RawCharData } from '../AbstractBitmapFont';\n\nexport const bitmapFontXMLParser = {\n test(data: string | XMLDocument | BitmapFontData): boolean\n {\n const xml = data as Document;\n\n return typeof xml !== 'string'\n && 'getElementsByTagName' in xml\n && xml.getElementsByTagName('page').length\n && xml.getElementsByTagName('info')[0].getAttribute('face') !== null;\n },\n\n parse(xml: Document): BitmapFontData\n {\n const data: BitmapFontData = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: '',\n distanceField: null,\n baseLineOffset: 0,\n };\n\n const info = xml.getElementsByTagName('info')[0];\n const common = xml.getElementsByTagName('common')[0];\n const distanceField = xml.getElementsByTagName('distanceField')[0];\n\n if (distanceField)\n {\n data.distanceField = {\n type: distanceField.getAttribute('fieldType') as 'sdf' | 'msdf' | 'none',\n range: parseInt(distanceField.getAttribute('distanceRange'), 10),\n };\n }\n\n // pages and chars:\n const page = xml.getElementsByTagName('page');\n const char = xml.getElementsByTagName('char');\n const kerning = xml.getElementsByTagName('kerning');\n\n data.fontSize = parseInt(info.getAttribute('size'), 10);\n data.fontFamily = info.getAttribute('face');\n data.lineHeight = parseInt(common.getAttribute('lineHeight'), 10);\n\n for (let i = 0; i < page.length; i++)\n {\n data.pages.push({\n id: parseInt(page[i].getAttribute('id'), 10) || 0,\n file: page[i].getAttribute('file'),\n });\n }\n\n const map: Record = {};\n\n data.baseLineOffset = data.lineHeight - parseInt(common.getAttribute('base'), 10);\n\n for (let i = 0; i < char.length; i++)\n {\n const charNode = char[i];\n const id = parseInt(charNode.getAttribute('id'), 10);\n\n let letter = charNode.getAttribute('letter') ?? charNode.getAttribute('char') ?? String.fromCharCode(id);\n\n if (letter === 'space')letter = ' ';\n\n map[id] = letter;\n\n data.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.getAttribute('page'), 10) || 0,\n x: parseInt(charNode.getAttribute('x'), 10),\n y: parseInt(charNode.getAttribute('y'), 10),\n width: parseInt(charNode.getAttribute('width'), 10),\n height: parseInt(charNode.getAttribute('height'), 10),\n\n // render deets..\n xOffset: parseInt(charNode.getAttribute('xoffset'), 10),\n yOffset: parseInt(charNode.getAttribute('yoffset'), 10), // + baseLineOffset,\n xAdvance: parseInt(charNode.getAttribute('xadvance'), 10),\n kerning: {},\n } as RawCharData;\n }\n\n for (let i = 0; i < kerning.length; i++)\n {\n const first = parseInt(kerning[i].getAttribute('first'), 10);\n const second = parseInt(kerning[i].getAttribute('second'), 10);\n const amount = parseInt(kerning[i].getAttribute('amount'), 10);\n\n data.chars[map[second]].kerning[map[first]] = amount;// * 10000;\n }\n\n return data;\n }\n};\n","import { DOMAdapter } from '../../../environment/adapter';\nimport { bitmapFontXMLParser } from './bitmapFontXMLParser';\n\nimport type { BitmapFontData } from '../AbstractBitmapFont';\n\nexport const bitmapFontXMLStringParser = {\n test(data: string | XMLDocument | BitmapFontData): boolean\n {\n if (typeof data === 'string' && data.includes(''))\n {\n return bitmapFontXMLParser.test(DOMAdapter.get().parseXML(data));\n }\n\n return false;\n },\n\n parse(data: string): BitmapFontData\n {\n return bitmapFontXMLParser.parse(DOMAdapter.get().parseXML(data));\n }\n};\n","import { LoaderParserPriority } from '../../../assets/loader/parsers/LoaderParser';\nimport { copySearchParams } from '../../../assets/utils/copySearchParams';\nimport { DOMAdapter } from '../../../environment/adapter';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { path } from '../../../utils/path';\nimport { BitmapFont } from '../BitmapFont';\nimport { bitmapFontTextParser } from './bitmapFontTextParser';\nimport { bitmapFontXMLStringParser } from './bitmapFontXMLStringParser';\n\nimport type { Loader } from '../../../assets/loader/Loader';\nimport type { LoaderParser } from '../../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../../assets/types';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\n\nconst validExtensions = ['.xml', '.fnt'];\n\n/** simple loader plugin for loading in bitmap fonts! */\nexport const bitmapFontCachePlugin = {\n extension: ExtensionType.CacheParser,\n test: (asset: BitmapFont) => asset instanceof BitmapFont,\n getCacheableAssets(keys: string[], asset: BitmapFont)\n {\n const out: Record = {};\n\n keys.forEach((key) =>\n {\n out[key] = asset;\n });\n\n out[`${asset.fontFamily}-bitmap`] = asset;\n\n return out;\n }\n};\n\nexport const loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal,\n },\n\n test(url: string): boolean\n {\n return validExtensions.includes(path.extname(url).toLowerCase());\n },\n\n async testParse(data: string): Promise\n {\n return bitmapFontTextParser.test(data) || bitmapFontXMLStringParser.test(data);\n },\n\n async parse(asset: string, data: ResolvedAsset, loader: Loader): Promise\n {\n const bitmapFontData = bitmapFontTextParser.test(asset)\n ? bitmapFontTextParser.parse(asset)\n : bitmapFontXMLStringParser.parse(asset);\n\n const { src } = data;\n const { pages } = bitmapFontData;\n const textureUrls = [];\n\n for (let i = 0; i < pages.length; ++i)\n {\n const pageFile = pages[i].file;\n let imagePath = path.join(path.dirname(src), pageFile);\n\n imagePath = copySearchParams(imagePath, src);\n\n textureUrls.push(imagePath);\n }\n\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n\n const bitmapFont = new BitmapFont({\n data: bitmapFontData,\n textures\n }, src);\n\n return bitmapFont;\n },\n\n async load(url: string, _options: ResolvedAsset): Promise\n {\n const response = await DOMAdapter.get().fetch(url);\n\n return await response.text();\n },\n\n async unload(bitmapFont: BitmapFont, _resolvedAsset, loader): Promise\n {\n await Promise.all(bitmapFont.pages.map((page) => loader.unload(page.texture.source._sourceOrigin)));\n\n bitmapFont.destroy();\n }\n} as LoaderParser;\n","import { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Container } from '../../container/Container';\nimport { GraphicsContext } from './GraphicsContext';\n\nimport type { ColorSource } from '../../../color/Color';\nimport type { Matrix } from '../../../maths/matrix/Matrix';\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Instruction } from '../../../rendering/renderers/shared/instructions/Instruction';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { View } from '../../../rendering/renderers/shared/view/View';\nimport type { Bounds } from '../../container/bounds/Bounds';\nimport type { ContainerOptions } from '../../container/Container';\nimport type { ContextDestroyOptions, DestroyOptions } from '../../container/destroyTypes';\nimport type { FillStyle, FillStyleInputs, StrokeStyle } from './GraphicsContext';\nimport type { GraphicsPath } from './path/GraphicsPath';\nimport type { RoundedPoint } from './path/roundShape';\n\n/**\n * Constructor options used for `Graphics` instances.\n * ```js\n * const graphics = new Graphics({\n * fillStyle: { color: 0xff0000, alpha: 0.5 },\n * strokeStyle: { color: 0x00ff00, width: 2 },\n * });\n * ```\n * @see {@link scene.Graphics}\n * @memberof scene\n */\nexport interface GraphicsOptions extends ContainerOptions\n{\n /** The GraphicsContext to use, useful for reuse and optimisation */\n context?: GraphicsContext;\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n\n/**\n * The Graphics class is primarily used to render primitive shapes such as lines, circles and\n * rectangles to the display, and to color and fill them. However, you can also use a Graphics\n * object to build a list of primitives to use as a mask, or as a complex hitArea.\n * @memberof scene\n * @extends scene.Container\n */\nexport class Graphics extends Container implements View, Instruction\n{\n public readonly canBundle = true;\n public readonly renderPipeId = 'graphics';\n public batched: boolean;\n\n public _roundPixels: 0 | 1 = 0;\n\n public _didGraphicsUpdate: boolean;\n\n private _context: GraphicsContext;\n private readonly _ownedContext: GraphicsContext;\n\n /**\n * @param options - Options for the Graphics.\n */\n constructor(options?: GraphicsOptions | GraphicsContext)\n {\n if (options instanceof GraphicsContext)\n {\n options = { context: options };\n }\n\n const { context, roundPixels, ...rest } = options || {};\n\n super({\n label: 'Graphics',\n ...rest\n });\n\n if (!context)\n {\n this._context = this._ownedContext = new GraphicsContext();\n }\n else\n {\n this._context = context;\n }\n\n this._context.on('update', this.onViewUpdate, this);\n\n this.allowChildren = false;\n this.roundPixels = roundPixels ?? false;\n }\n\n set context(context: GraphicsContext)\n {\n if (context === this._context) return;\n\n this._context.off('update', this.onViewUpdate, this);\n\n this._context = context;\n\n // TODO store this bound function somewhere else..\n this._context.on('update', this.onViewUpdate, this);\n\n this.onViewUpdate();\n }\n\n get context(): GraphicsContext\n {\n return this._context;\n }\n\n /**\n * The local bounds of the graphic.\n * @type {rendering.Bounds}\n */\n get bounds(): Bounds\n {\n return this._context.bounds;\n }\n\n /**\n * Adds the bounds of this object to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n bounds.addBounds(this._context.bounds);\n }\n\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: PointData)\n {\n return this._context.containsPoint(point);\n }\n\n /**\n * Whether or not to round the x/y position of the graphic.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n protected onViewUpdate()\n {\n // increment from the 12th bit!\n this._didChangeId += 1 << 12;\n this._didGraphicsUpdate = true;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n /**\n * Destroys this graphics renderable and optionally its context.\n * @param options - Options parameter. A boolean will act as if all options\n *\n * If the context was created by this graphics and `destroy(false)` or `destroy()` is called\n * then the context will still be destroyed.\n *\n * If you want to explicitly not destroy this context that this graphics created,\n * then you should pass destroy({ context: false })\n *\n * If the context was passed in as an argument to the constructor then it will not be destroyed\n * @param {boolean} [options.texture=false] - Should destroy the texture of the graphics context\n * @param {boolean} [options.textureSource=false] - Should destroy the texture source of the graphics context\n * @param {boolean} [options.context=false] - Should destroy the context\n */\n public destroy(options?: DestroyOptions): void\n {\n if (this._ownedContext && !options)\n {\n this._ownedContext.destroy(options);\n }\n else if (options === true || (options as ContextDestroyOptions)?.context === true)\n {\n this._context.destroy(options);\n }\n\n (this._ownedContext as null) = null;\n this._context = null;\n\n super.destroy(options);\n }\n\n private _callContextMethod(method: keyof GraphicsContext, args: any[]): this\n {\n (this.context as any)[method](...args);\n\n return this;\n }\n\n // --------------------------------------- GraphicsContext methods ---------------------------------------\n /**\n * Sets the current fill style of the graphics context. The fill style can be a color, gradient,\n * pattern, or a more complex style defined by a FillStyle object.\n * @param {FillStyleInputs} args - The fill style to apply. This can be a simple color, a gradient or\n * pattern object, or a FillStyle or ConvertedFillStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setFillStyle(...args: Parameters): this\n {\n return this._callContextMethod('setFillStyle', args);\n }\n\n /**\n * Sets the current stroke style of the graphics context. Similar to fill styles, stroke styles can\n * encompass colors, gradients, patterns, or more detailed configurations via a StrokeStyle object.\n * @param {FillStyleInputs} args - The stroke style to apply. Can be defined as a color, a gradient or pattern,\n * or a StrokeStyle or ConvertedStrokeStyle object.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setStrokeStyle(...args: Parameters): this\n {\n return this._callContextMethod('setStrokeStyle', args);\n }\n\n /**\n * Fills the current or given path with the current fill style. This method can optionally take\n * a color and alpha for a simple fill, or a more complex FillStyleInputs object for advanced fills.\n * @param {FillStyleInputs} style - (Optional) The style to fill the path with. Can be a color, gradient, pattern, or a\n * complex style object. If omitted, uses the current fill style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public fill(style?: FillStyleInputs): this;\n /** @deprecated 8.0.0 */\n public fill(color: ColorSource, alpha: number): this;\n public fill(...args: [FillStyleInputs, ColorSource?]): this\n {\n return this._callContextMethod('fill', args);\n }\n /**\n * Strokes the current path with the current stroke style. This method can take an optional\n * FillStyleInputs parameter to define the stroke's appearance, including its color, width, and other properties.\n * @param {FillStyleInputs} args - (Optional) The stroke style to apply. Can be defined as a simple color or a more\n * complex style object. If omitted, uses the current stroke style.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public stroke(...args: Parameters): this\n {\n return this._callContextMethod('stroke', args);\n }\n /**\n * Adds a texture to the graphics context. This method supports multiple overloads for specifying the texture,\n * tint, and dimensions. If only a texture is provided, it uses the texture's width and height for drawing.\n * Additional parameters allow for specifying a tint color, and custom dimensions for the texture drawing area.\n * @param texture - The Texture object to use.\n * @param tint - (Optional) A ColorSource to tint the texture. If not provided, defaults to white (0xFFFFFF).\n * @param dx - (Optional) The x-coordinate in the destination canvas at which to place the top-left corner of\n * the source image.\n * @param dy - (Optional) The y-coordinate in the destination canvas at which to place the top-left corner of\n * the source image.\n * @param dw - (Optional) The width of the rectangle within the source image to draw onto the destination canvas.\n * If not provided, uses the texture's frame width.\n * @param dh - (Optional) The height of the rectangle within the source image to draw onto the destination canvas.\n * If not provided, uses the texture's frame height.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public texture(texture: Texture, tint?: ColorSource, dx?: number, dy?: number, dw?: number, dh?: number): this;\n public texture(texture: Texture): this;\n public texture(...args: [Texture, number?, number?, number?, number?, number?]): this\n {\n return this._callContextMethod('texture', args);\n }\n /**\n * Resets the current path. Any previous path and its commands are discarded and a new path is\n * started. This is typically called before beginning a new shape or series of drawing commands.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public beginPath(): this\n {\n return this._callContextMethod('beginPath', []);\n }\n /**\n * Applies a cutout to the last drawn shape. This is used to create holes or complex shapes by\n * subtracting a path from the previously drawn path. If a hole is not completely in a shape, it will\n * fail to cut correctly!\n */\n public cut(): this\n {\n return this._callContextMethod('cut', []);\n }\n /**\n * Adds an arc to the current path, which is centered at (x, y) with the specified radius,\n * starting and ending angles, and direction.\n * @param x - The x-coordinate of the arc's center.\n * @param y - The y-coordinate of the arc's center.\n * @param radius - The arc's radius.\n * @param startAngle - The starting angle, in radians.\n * @param endAngle - The ending angle, in radians.\n * @param counterclockwise - (Optional) Specifies whether the arc is drawn counterclockwise (true) or clockwise\n * (false). Defaults to false.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;\n public arc(...args: Parameters): this\n {\n return this._callContextMethod('arc', args);\n }\n /**\n * Adds an arc to the current path with the given control points and radius, connected to the previous point\n * by a straight line if necessary.\n * @param x1 - The x-coordinate of the first control point.\n * @param y1 - The y-coordinate of the first control point.\n * @param x2 - The x-coordinate of the second control point.\n * @param y2 - The y-coordinate of the second control point.\n * @param radius - The arc's radius.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;\n public arcTo(...args: Parameters): this\n {\n return this._callContextMethod('arcTo', args);\n }\n /**\n * Adds an SVG-style arc to the path, allowing for elliptical arcs based on the SVG spec.\n * @param rx - The x-radius of the ellipse.\n * @param ry - The y-radius of the ellipse.\n * @param xAxisRotation - The rotation of the ellipse's x-axis relative\n * to the x-axis of the coordinate system, in degrees.\n * @param largeArcFlag - Determines if the arc should be greater than or less than 180 degrees.\n * @param sweepFlag - Determines if the arc should be swept in a positive angle direction.\n * @param x - The x-coordinate of the arc's end point.\n * @param y - The y-coordinate of the arc's end point.\n * @returns The instance of the current object for chaining.\n */\n public arcToSvg(\n rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, x: number, y: number\n ): this;\n public arcToSvg(...args: Parameters): this\n {\n return this._callContextMethod('arcToSvg', args);\n }\n /**\n * Adds a cubic Bezier curve to the path.\n * It requires three points: the first two are control points and the third one is the end point.\n * The starting point is the last point in the current path.\n * @param cp1x - The x-coordinate of the first control point.\n * @param cp1y - The y-coordinate of the first control point.\n * @param cp2x - The x-coordinate of the second control point.\n * @param cp2y - The y-coordinate of the second control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public bezierCurveTo(\n cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number\n ): this;\n public bezierCurveTo(...args: Parameters): this\n {\n return this._callContextMethod('bezierCurveTo', args);\n }\n /**\n * Closes the current path by drawing a straight line back to the start.\n * If the shape is already closed or there are no points in the path, this method does nothing.\n * @returns The instance of the current object for chaining.\n */\n public closePath(): this\n {\n return this._callContextMethod('closePath', []);\n }\n /**\n * Draws an ellipse at the specified location and with the given x and y radii.\n * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n * @param x - The x-coordinate of the center of the ellipse.\n * @param y - The y-coordinate of the center of the ellipse.\n * @param radiusX - The horizontal radius of the ellipse.\n * @param radiusY - The vertical radius of the ellipse.\n * @returns The instance of the current object for chaining.\n */\n public ellipse(x: number, y: number, radiusX: number, radiusY: number): this;\n public ellipse(...args: Parameters): this\n {\n return this._callContextMethod('ellipse', args);\n }\n /**\n * Draws a circle shape. This method adds a new circle path to the current drawing.\n * @param x - The x-coordinate of the center of the circle.\n * @param y - The y-coordinate of the center of the circle.\n * @param radius - The radius of the circle.\n * @returns The instance of the current object for chaining.\n */\n public circle(x: number, y: number, radius: number): this;\n public circle(...args: Parameters): this\n {\n return this._callContextMethod('circle', args);\n }\n /**\n * Adds another `GraphicsPath` to this path, optionally applying a transformation.\n * @param path - The `GraphicsPath` to add.\n * @returns The instance of the current object for chaining.\n */\n public path(path: GraphicsPath): this;\n public path(...args: Parameters): this\n {\n return this._callContextMethod('path', args);\n }\n /**\n * Connects the current point to a new point with a straight line. This method updates the current path.\n * @param x - The x-coordinate of the new point to connect to.\n * @param y - The y-coordinate of the new point to connect to.\n * @returns The instance of the current object for chaining.\n */\n public lineTo(x: number, y: number): this;\n public lineTo(...args: Parameters): this\n {\n return this._callContextMethod('lineTo', args);\n }\n /**\n * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n * @param x - The x-coordinate for the starting point.\n * @param y - The y-coordinate for the starting point.\n * @returns The instance of the current object for chaining.\n */\n public moveTo(x: number, y: number): this;\n public moveTo(...args: Parameters): this\n {\n return this._callContextMethod('moveTo', args);\n }\n /**\n * Adds a quadratic curve to the path. It requires two points: the control point and the end point.\n * The starting point is the last point in the current path.\n * @param cpx - The x-coordinate of the control point.\n * @param cpy - The y-coordinate of the control point.\n * @param x - The x-coordinate of the end point.\n * @param y - The y-coordinate of the end point.\n * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n * @returns The instance of the current object for chaining.\n */\n public quadraticCurveTo(cpx: number, cpy: number, x: number, y: number, smoothness?: number): this;\n public quadraticCurveTo(...args: Parameters): this\n {\n return this._callContextMethod('quadraticCurveTo', args);\n }\n /**\n * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @returns The instance of the current object for chaining.\n */\n public rect(x: number, y: number, w: number, h: number): this;\n public rect(...args: Parameters): this\n {\n return this._callContextMethod('rect', args);\n }\n /**\n * Draws a rectangle with rounded corners.\n * The corner radius can be specified to determine how rounded the corners should be.\n * An optional transformation can be applied, which allows for rotation, scaling, and translation of the rectangle.\n * @param x - The x-coordinate of the top-left corner of the rectangle.\n * @param y - The y-coordinate of the top-left corner of the rectangle.\n * @param w - The width of the rectangle.\n * @param h - The height of the rectangle.\n * @param radius - The radius of the rectangle's corners. If not specified, corners will be sharp.\n * @returns The instance of the current object for chaining.\n */\n public roundRect(x: number, y: number, w: number, h: number, radius?: number): this;\n public roundRect(...args: Parameters): this\n {\n return this._callContextMethod('roundRect', args);\n }\n /**\n * Draws a polygon shape by specifying a sequence of points. This method allows for the creation of complex polygons,\n * which can be both open and closed. An optional transformation can be applied, enabling the polygon to be scaled,\n * rotated, or translated as needed.\n * @param points - An array of numbers, or an array of PointData objects eg [{x,y}, {x,y}, {x,y}]\n * representing the x and y coordinates, of the polygon's vertices, in sequence.\n * @param close - A boolean indicating whether to close the polygon path. True by default.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n public poly(points: number[] | PointData[], close?: boolean): this;\n public poly(...args: Parameters): this\n {\n return this._callContextMethod('poly', args);\n }\n /**\n * Draws a regular polygon with a specified number of sides. All sides and angles are equal.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @param transform - An optional `Matrix` object to apply a transformation to the polygon.\n * @returns The instance of the current object for chaining.\n */\n public regularPoly(x: number, y: number, radius: number, sides: number, rotation?: number, transform?: Matrix): this;\n public regularPoly(...args: Parameters): this\n {\n return this._callContextMethod('regularPoly', args);\n }\n /**\n * Draws a polygon with rounded corners.\n * Similar to `regularPoly` but with the ability to round the corners of the polygon.\n * @param x - The x-coordinate of the center of the polygon.\n * @param y - The y-coordinate of the center of the polygon.\n * @param radius - The radius of the circumscribed circle of the polygon.\n * @param sides - The number of sides of the polygon. Must be 3 or more.\n * @param corner - The radius of the rounding of the corners.\n * @param rotation - The rotation angle of the polygon, in radians. Zero by default.\n * @returns The instance of the current object for chaining.\n */\n public roundPoly(x: number, y: number, radius: number, sides: number, corner: number, rotation?: number): this;\n public roundPoly(...args: Parameters): this\n {\n return this._callContextMethod('roundPoly', args);\n }\n /**\n * Draws a shape with rounded corners. This function supports custom radius for each corner of the shape.\n * Optionally, corners can be rounded using a quadratic curve instead of an arc, providing a different aesthetic.\n * @param points - An array of `RoundedPoint` representing the corners of the shape to draw.\n * A minimum of 3 points is required.\n * @param radius - The default radius for the corners.\n * This radius is applied to all corners unless overridden in `points`.\n * @param useQuadratic - If set to true, rounded corners are drawn using a quadraticCurve\n * method instead of an arc method. Defaults to false.\n * @param smoothness - Specifies the smoothness of the curve when `useQuadratic` is true.\n * Higher values make the curve smoother.\n * @returns The instance of the current object for chaining.\n */\n public roundShape(points: RoundedPoint[], radius: number, useQuadratic?: boolean, smoothness?: number): this;\n public roundShape(...args: Parameters): this\n {\n return this._callContextMethod('roundShape', args);\n }\n /**\n * Draw Rectangle with fillet corners. This is much like rounded rectangle\n * however it support negative numbers as well for the corner radius.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param fillet - accept negative or positive values\n */\n public filletRect(x: number, y: number, width: number, height: number, fillet: number): this;\n public filletRect(...args: Parameters): this\n {\n return this._callContextMethod('filletRect', args);\n }\n /**\n * Draw Rectangle with chamfer corners. These are angled corners.\n * @param x - Upper left corner of rect\n * @param y - Upper right corner of rect\n * @param width - Width of rect\n * @param height - Height of rect\n * @param chamfer - non-zero real number, size of corner cutout\n * @param transform\n */\n public chamferRect(x: number, y: number, width: number, height: number, chamfer: number, transform?: Matrix): this;\n public chamferRect(...args: Parameters): this\n {\n return this._callContextMethod('chamferRect', args);\n }\n /**\n * Draws a star shape centered at a specified location. This method allows for the creation\n * of stars with a variable number of points, outer radius, optional inner radius, and rotation.\n * The star is drawn as a closed polygon with alternating outer and inner vertices to create the star's points.\n * An optional transformation can be applied to scale, rotate, or translate the star as needed.\n * @param x - The x-coordinate of the center of the star.\n * @param y - The y-coordinate of the center of the star.\n * @param points - The number of points of the star.\n * @param radius - The outer radius of the star (distance from the center to the outer points).\n * @param innerRadius - Optional. The inner radius of the star\n * (distance from the center to the inner points between the outer points).\n * If not provided, defaults to half of the `radius`.\n * @param rotation - Optional. The rotation of the star in radians, where 0 is aligned with the y-axis.\n * Defaults to 0, meaning one point is directly upward.\n * @returns The instance of the current object for chaining further drawing commands.\n */\n public star(x: number, y: number, points: number, radius: number, innerRadius?: number, rotation?: number): this;\n public star(...args: Parameters): this\n {\n return this._callContextMethod('star', args);\n }\n /**\n * Parses and renders an SVG string into the graphics context. This allows for complex shapes and paths\n * defined in SVG format to be drawn within the graphics context.\n * @param svg - The SVG string to be parsed and rendered.\n */\n public svg(svg: string): this;\n public svg(...args: Parameters): this\n {\n return this._callContextMethod('svg', args);\n }\n /**\n * Restores the most recently saved graphics state by popping the top of the graphics state stack.\n * This includes transformations, fill styles, and stroke styles.\n */\n public restore(): this;\n public restore(...args: Parameters): this\n {\n return this._callContextMethod('restore', args);\n }\n /** Saves the current graphics state, including transformations, fill styles, and stroke styles, onto a stack. */\n public save(): this\n {\n return this._callContextMethod('save', []);\n }\n /**\n * Returns the current transformation matrix of the graphics context.\n * @returns The current transformation matrix.\n */\n public getTransform(): Matrix\n {\n return this.context.getTransform();\n }\n /**\n * Resets the current transformation matrix to the identity matrix, effectively removing\n * any transformations (rotation, scaling, translation) previously applied.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public resetTransform(): this\n {\n return this._callContextMethod('resetTransform', []);\n }\n /**\n * Applies a rotation transformation to the graphics context around the current origin.\n * @param angle - The angle of rotation in radians.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public rotateTransform(angle: number): this;\n public rotateTransform(...args: Parameters): this\n {\n return this._callContextMethod('rotate', args);\n }\n /**\n * Applies a scaling transformation to the graphics context, scaling drawings by x horizontally and by y vertically.\n * @param x - The scale factor in the horizontal direction.\n * @param y - (Optional) The scale factor in the vertical direction.\n * If not specified, the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public scaleTransform(x: number, y?: number): this;\n public scaleTransform(...args: Parameters): this\n {\n return this._callContextMethod('scale', args);\n }\n /**\n * Sets the current transformation matrix of the graphics context to the specified matrix or values.\n * This replaces the current transformation matrix.\n * @param a - The value for the a property of the matrix, or a Matrix object to use directly.\n * @param b - The value for the b property of the matrix.\n * @param c - The value for the c property of the matrix.\n * @param d - The value for the d property of the matrix.\n * @param dx - The value for the tx (translate x) property of the matrix.\n * @param dy - The value for the ty (translate y) property of the matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public setTransform(transform: Matrix): this;\n public setTransform(a: number, b: number, c: number, d: number, dx: number, dy: number): this;\n public setTransform(a: number | Matrix, b?: number, c?: number, d?: number, dx?: number, dy?: number): this;\n public setTransform(...args: [Matrix] | [number, number, number, number, number, number]): this\n {\n return this._callContextMethod('setTransform', args);\n }\n /**\n * Applies the specified transformation matrix to the current graphics context by multiplying\n * the current matrix with the specified matrix.\n * @param a - The value for the a property of the matrix, or a Matrix object to use directly.\n * @param b - The value for the b property of the matrix.\n * @param c - The value for the c property of the matrix.\n * @param d - The value for the d property of the matrix.\n * @param dx - The value for the tx (translate x) property of the matrix.\n * @param dy - The value for the ty (translate y) property of the matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public transform(transform: Matrix): this;\n public transform(a: number, b: number, c: number, d: number, dx: number, dy: number): this;\n public transform(a: number | Matrix, b?: number, c?: number, d?: number, dx?: number, dy?: number): this;\n public transform(...args: [Matrix] | [number, number, number, number, number, number]): this\n {\n return this._callContextMethod('transform', args);\n }\n /**\n * Applies a translation transformation to the graphics context, moving the origin by the specified amounts.\n * @param x - The amount to translate in the horizontal direction.\n * @param y - (Optional) The amount to translate in the vertical direction. If not specified,\n * the x value is used for both directions.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public translateTransform(x: number, y?: number): this;\n public translateTransform(...args: Parameters): this\n {\n return this._callContextMethod('translate', args);\n }\n /**\n * Clears all drawing commands from the graphics context, effectively resetting it. This includes clearing the path,\n * and optionally resetting transformations to the identity matrix.\n * @returns The instance of the current GraphicsContext for method chaining.\n */\n public clear(): this\n {\n return this._callContextMethod('clear', []);\n }\n /**\n * The fill style to use.\n * @type {ConvertedFillStyle}\n */\n get fillStyle(): GraphicsContext['fillStyle']\n {\n return this._context.fillStyle;\n }\n set fillStyle(value: FillStyleInputs)\n {\n this._context.fillStyle = value;\n }\n /**\n * The stroke style to use.\n * @type {ConvertedStrokeStyle}\n */\n get strokeStyle(): GraphicsContext['strokeStyle']\n {\n return this._context.strokeStyle;\n }\n set strokeStyle(value: FillStyleInputs)\n {\n this._context.strokeStyle = value;\n }\n\n /**\n * Creates a new Graphics object.\n * Note that only the context of the object is cloned, not its transform (position,scale,etc)\n * @param deep - Whether to create a deep clone of the graphics object. If false, the context\n * will be shared between the two objects (default false). If true, the context will be\n * cloned (recommended if you need to modify the context in any way).\n * @returns - A clone of the graphics object\n */\n public clone(deep = false): Graphics\n {\n if (deep)\n {\n return new Graphics(this._context.clone());\n }\n\n (this._ownedContext as null) = null;\n const clone = new Graphics(this._context);\n\n return clone;\n }\n\n // -------- v7 deprecations ---------\n\n /**\n * @param width\n * @param color\n * @param alpha\n * @deprecated since 8.0.0 Use {@link Graphics#setStrokeStyle} instead\n */\n public lineStyle(width?: number, color?: ColorSource, alpha?: number): this\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.');\n // #endif\n\n const strokeStyle: Partial = {};\n\n // avoid undefined assignment\n width && (strokeStyle.width = width);\n color && (strokeStyle.color = color);\n alpha && (strokeStyle.alpha = alpha);\n\n this.context.strokeStyle = strokeStyle;\n\n return this;\n }\n\n /**\n * @param color\n * @param alpha\n * @deprecated since 8.0.0 Use {@link Graphics#fill} instead\n */\n public beginFill(color: ColorSource, alpha?: number)\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.');\n // #endif\n\n const fillStyle: Partial = {};\n\n // avoid undefined assignment\n color && (fillStyle.color = color);\n alpha && (fillStyle.alpha = alpha);\n\n this.context.fillStyle = fillStyle;\n\n return this;\n }\n\n /**\n * @deprecated since 8.0.0 Use {@link Graphics#fill} instead\n */\n public endFill()\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.');\n // #endif\n\n this.context.fill();\n const strokeStyle = this.context.strokeStyle;\n\n if (strokeStyle.width !== GraphicsContext.defaultStrokeStyle.width\n || strokeStyle.color !== GraphicsContext.defaultStrokeStyle.color\n || strokeStyle.alpha !== GraphicsContext.defaultStrokeStyle.alpha)\n {\n this.context.stroke();\n }\n\n return this;\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#circle} instead\n */\n public drawCircle(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawCircle has been renamed to Graphics#circle');\n // #endif\n\n return this._callContextMethod('circle', args);\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#ellipse} instead\n */\n public drawEllipse(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawEllipse has been renamed to Graphics#ellipse');\n // #endif\n\n return this._callContextMethod('ellipse', args);\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#poly} instead\n */\n public drawPolygon(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawPolygon has been renamed to Graphics#poly');\n // #endif\n\n return this._callContextMethod('poly', args);\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#rect} instead\n */\n public drawRect(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawRect has been renamed to Graphics#rect');\n // #endif\n\n return this._callContextMethod('rect', args);\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#roundRect} instead\n */\n public drawRoundedRect(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawRoundedRect has been renamed to Graphics#roundRect');\n // #endif\n\n return this._callContextMethod('roundRect', args);\n }\n\n /**\n * @param {...any} args\n * @deprecated since 8.0.0 Use {@link Graphics#star} instead\n */\n public drawStar(...args: Parameters): this\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Graphics#drawStar has been renamed to Graphics#star');\n // #endif\n\n return this._callContextMethod('star', args);\n }\n}\n","import { DOMAdapter } from '../../../../../environment/adapter';\n\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\n\nlet context: GlRenderingContext;\n\n/**\n * returns a little WebGL context to use for program inspection.\n * @static\n * @private\n * @returns {WebGLRenderingContext} a gl context to test with\n */\nexport function getTestContext(): GlRenderingContext\n{\n if (!context || context?.isContextLost())\n {\n const canvas = DOMAdapter.get().createCanvas();\n\n context = canvas.getContext('webgl', {}) as GlRenderingContext;\n }\n\n return context;\n}\n","import { getTestContext } from './getTestContext';\n\nimport type { PRECISION } from '../const';\n\nlet maxFragmentPrecision: PRECISION;\n\nexport function getMaxFragmentPrecision(): PRECISION\n{\n if (!maxFragmentPrecision)\n {\n maxFragmentPrecision = 'mediump';\n const gl = getTestContext();\n\n if (gl)\n {\n if (gl.getShaderPrecisionFormat)\n {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\n maxFragmentPrecision = shaderFragment.precision ? 'highp' : 'mediump';\n }\n }\n }\n\n return maxFragmentPrecision;\n}\n","export function addProgramDefines(src: string, isES300: boolean, isFragment?: boolean)\n{\n if (isES300) return src;\n\n if (isFragment)\n {\n src = src.replace('out vec4 finalColor;', '');\n\n return `\n \n #ifdef GL_ES // This checks if it is WebGL1\n #define in varying\n #define finalColor gl_FragColor\n #define texture texture2D\n #endif\n ${src}\n `;\n }\n\n return `\n \n #ifdef GL_ES // This checks if it is WebGL1\n #define in attribute\n #define out varying\n #endif\n ${src}\n `;\n}\n","import type { PRECISION } from '../../const';\n\ninterface EnsurePrecisionOptions\n{\n requestedVertexPrecision: PRECISION;\n requestedFragmentPrecision: PRECISION;\n maxSupportedVertexPrecision: PRECISION;\n maxSupportedFragmentPrecision: PRECISION;\n}\n\n/**\n * Sets the float precision on the shader, ensuring the device supports the request precision.\n * If the precision is already present, it just ensures that the device is able to handle it.\n * @param src\n * @param options\n * @param options.requestedVertexPrecision\n * @param options.requestedFragmentPrecision\n * @param options.maxSupportedVertexPrecision\n * @param options.maxSupportedFragmentPrecision\n * @param isFragment\n * @private\n */\nexport function ensurePrecision(\n src: string,\n options: EnsurePrecisionOptions,\n isFragment: boolean,\n): string\n{\n const maxSupportedPrecision = isFragment ? options.maxSupportedFragmentPrecision : options.maxSupportedVertexPrecision;\n\n if (src.substring(0, 9) !== 'precision')\n {\n // no precision supplied, so PixiJS will add the requested level.\n let precision = isFragment ? options.requestedFragmentPrecision : options.requestedVertexPrecision;\n\n // If highp is requested but not supported, downgrade precision to a level all devices support.\n if (precision === 'highp' && maxSupportedPrecision !== 'highp')\n {\n precision = 'mediump';\n }\n\n return `precision ${precision} float;\\n${src}`;\n }\n else if (maxSupportedPrecision !== 'highp' && src.substring(0, 15) === 'precision highp')\n {\n // precision was supplied, but at a level this device does not support, so downgrading to mediump.\n return src.replace('precision highp', 'precision mediump');\n }\n\n return src;\n}\n","export function insertVersion(src: string, isES300: boolean): string\n{\n if (!isES300) return src;\n\n return `#version 300 es\\n${src}`;\n}\n","const fragmentNameCache: { [key: string]: number } = {};\nconst VertexNameCache: { [key: string]: number } = {};\n\nexport function setProgramName(src: string, { name = `pixi-program` }: { name: string; }, isFragment = true)\n{\n name = name.replace(/\\s+/g, '-');\n\n name += isFragment ? '-fragment' : '-vertex';\n\n const nameCache = isFragment ? fragmentNameCache : VertexNameCache;\n\n if (nameCache[name])\n {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n }\n else\n {\n nameCache[name] = 1;\n }\n\n // if it already contains the define return\n if (src.indexOf('#define SHADER_NAME') !== -1) return src;\n\n const shaderName = `#define SHADER_NAME ${name}`;\n\n return `${shaderName}\\n${src}`;\n}\n","export function stripVersion(src: string, isES300: boolean): string\n{\n if (!isES300) return src;\n\n return src.replace('#version 300 es', '');\n}\n","import { createIdFromString } from '../../shared/utils/createIdFromString';\nimport { getMaxFragmentPrecision } from './program/getMaxFragmentPrecision';\nimport { addProgramDefines } from './program/preprocessors/addProgramDefines';\nimport { ensurePrecision } from './program/preprocessors/ensurePrecision';\nimport { insertVersion } from './program/preprocessors/insertVersion';\nimport { setProgramName } from './program/preprocessors/setProgramName';\nimport { stripVersion } from './program/preprocessors/stripVersion';\n\nimport type { TypedArray } from '../../shared/buffer/Buffer';\nimport type { ExtractedAttributeData } from './program/extractAttributesFromGlProgram';\n\nexport interface GlAttributeData\n{\n type: string;\n size: number;\n location: number;\n name: string;\n}\n\nexport interface GlUniformData\n{\n name: string;\n index: number;\n type: string;\n size: number;\n isArray: boolean;\n value: any;\n}\n\nexport interface GlUniformBlockData\n{\n index: number;\n name: string;\n size: number;\n value?: TypedArray;\n}\n\n/**\n * The options for the gl program\n * @memberof rendering\n */\nexport interface GlProgramOptions\n{\n /** The fragment glsl shader source. */\n fragment: string;\n /** The vertex glsl shader source. */\n vertex: string;\n /** the name of the program, defaults to 'pixi-program' */\n name?: string;\n /** the preferred vertex precision for the shader, this may not be used if the device does not support it */\n preferredVertexPrecision?: string;\n /** the preferred fragment precision for the shader, this may not be used if the device does not support it */\n preferredFragmentPrecision?: string;\n}\n\nconst processes: Record string)> = {\n // strips any version headers..\n stripVersion,\n // adds precision string if not already present\n ensurePrecision,\n // add some defines if WebGL1 to make it more compatible with WebGL2 shaders\n addProgramDefines,\n // add the program name to the shader\n setProgramName,\n // add the version string to the shader header\n insertVersion,\n};\n\nconst programCache: Record = Object.create(null);\n\n/**\n * A wrapper for a WebGL Program. You can create one and then pass it to a shader.\n * This will manage the WebGL program that is compiled and uploaded to the GPU.\n *\n * To get the most out of this class, you should be familiar with glsl shaders and how they work.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram\n * @example\n *\n * // Create a new program\n * const program = new GlProgram({\n * vertex: '...',\n * fragment: '...',\n * });\n *\n *\n * There are a few key things that pixi shader will do for you automatically:\n *
\n * - If no precision is provided in the shader, it will be injected into the program source for you.\n * This precision will be taken form the options provided, if none is provided,\n * then the program will default to the defaultOptions.\n *
\n * - It will inject the program name into the shader source if none is provided.\n *
\n * - It will set the program version to 300 es.\n *\n * For optimal usage and best performance, its best to reuse programs as much as possible.\n * You should use the {@link GlProgram.from} helper function to create programs.\n * @class\n * @memberof rendering\n */\nexport class GlProgram\n{\n /** The default options used by the program. */\n public static defaultOptions: Partial = {\n preferredVertexPrecision: 'highp',\n preferredFragmentPrecision: 'mediump',\n };\n\n /** the fragment glsl shader source. */\n public readonly fragment?: string;\n /** the vertex glsl shader source */\n public readonly vertex?: string;\n /**\n * attribute data extracted from the program once created this happens when the program is used for the first time\n * @internal\n * @ignore\n */\n public _attributeData: Record;\n /**\n * uniform data extracted from the program once created this happens when the program is used for the first time\n * @internal\n * @ignore\n */\n public _uniformData: Record;\n /**\n * uniform data extracted from the program once created this happens when the program is used for the first time\n * @internal\n * @ignore\n */\n public _uniformBlockData: Record;\n /** details on how to use this program with transform feedback */\n public transformFeedbackVaryings?: {names: string[], bufferMode: 'separate' | 'interleaved'};\n /**\n * the key that identifies the program via its source vertex + fragment\n * @internal\n * @ignore\n */\n public readonly _key: number;\n\n /**\n * Creates a shiny new GlProgram. Used by WebGL renderer.\n * @param options - The options for the program.\n */\n constructor(options: GlProgramOptions)\n {\n options = { ...GlProgram.defaultOptions, ...options };\n\n // only need to check one as they both need to be the same or\n // errors ensue!\n const isES300 = options.fragment.indexOf('#version 300 es') !== -1;\n\n const preprocessorOptions = {\n stripVersion: isES300,\n ensurePrecision: {\n requestedFragmentPrecision: options.preferredFragmentPrecision,\n requestedVertexPrecision: options.preferredVertexPrecision,\n maxSupportedVertexPrecision: 'highp',\n maxSupportedFragmentPrecision: getMaxFragmentPrecision(),\n },\n setProgramName: {\n name: options.name,\n },\n addProgramDefines: isES300,\n insertVersion: isES300\n };\n\n let fragment = options.fragment;\n let vertex = options.vertex;\n\n Object.keys(processes).forEach((processKey) =>\n {\n const processOptions = preprocessorOptions[processKey as keyof typeof preprocessorOptions];\n\n fragment = processes[processKey](fragment, processOptions, true);\n vertex = processes[processKey](vertex, processOptions, false);\n });\n\n this.fragment = fragment;\n this.vertex = vertex;\n\n this._key = createIdFromString(`${this.vertex}:${this.fragment}`, 'gl-program');\n }\n\n /** destroys the program */\n public destroy(): void\n {\n (this.fragment as null) = null;\n (this.vertex as null) = null;\n\n this._attributeData = null;\n this._uniformData = null;\n this._uniformBlockData = null;\n\n this.transformFeedbackVaryings = null;\n }\n\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n public static from(options: GlProgramOptions): GlProgram\n {\n const key = `${options.vertex}:${options.fragment}`;\n\n if (!programCache[key])\n {\n programCache[key] = new GlProgram(options);\n }\n\n return programCache[key];\n }\n}\n","import type { VertexFormat } from '../const';\n\nconst attributeFormatData = {\n uint8x2: { size: 2, stride: 2, normalised: false },\n uint8x4: { size: 4, stride: 4, normalised: false },\n sint8x2: { size: 2, stride: 2, normalised: false },\n sint8x4: { size: 4, stride: 4, normalised: false },\n unorm8x2: { size: 2, stride: 2, normalised: true },\n unorm8x4: { size: 4, stride: 4, normalised: true },\n snorm8x2: { size: 2, stride: 2, normalised: true },\n snorm8x4: { size: 4, stride: 4, normalised: true },\n uint16x2: { size: 2, stride: 4, normalised: false },\n uint16x4: { size: 4, stride: 8, normalised: false },\n sint16x2: { size: 2, stride: 4, normalised: false },\n sint16x4: { size: 4, stride: 8, normalised: false },\n unorm16x2: { size: 2, stride: 4, normalised: true },\n unorm16x4: { size: 4, stride: 8, normalised: true },\n snorm16x2: { size: 2, stride: 4, normalised: true },\n snorm16x4: { size: 4, stride: 8, normalised: true },\n float16x2: { size: 2, stride: 4, normalised: false },\n float16x4: { size: 4, stride: 8, normalised: false },\n float32: { size: 1, stride: 4, normalised: false },\n float32x2: { size: 2, stride: 8, normalised: false },\n float32x3: { size: 3, stride: 12, normalised: false },\n float32x4: { size: 4, stride: 16, normalised: false },\n uint32: { size: 1, stride: 4, normalised: false },\n uint32x2: { size: 2, stride: 8, normalised: false },\n uint32x3: { size: 3, stride: 12, normalised: false },\n uint32x4: { size: 4, stride: 16, normalised: false },\n sint32: { size: 1, stride: 4, normalised: false },\n sint32x2: { size: 2, stride: 8, normalised: false },\n sint32x3: { size: 3, stride: 12, normalised: false },\n sint32x4: { size: 4, stride: 16, normalised: false },\n};\n\nexport function getAttributeInfoFromFormat(format: VertexFormat): { size: number; stride: number; normalised: boolean }\n{\n return attributeFormatData[format] ?? attributeFormatData.float32;\n}\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat';\n\nimport type { ExtractedAttributeData } from '../../../gl/shader/program/extractAttributesFromGlProgram';\nimport type { VertexFormat } from '../../../shared/geometry/const';\nimport type { ProgramSource } from '../GpuProgram';\n\nconst WGSL_TO_VERTEX_TYPES: Record = {\n\n f32: 'float32',\n 'vec2': 'float32x2',\n 'vec3': 'float32x3',\n 'vec4': 'float32x4',\n vec2f: 'float32x2',\n vec3f: 'float32x3',\n vec4f: 'float32x4',\n\n i32: 'sint32',\n 'vec2': 'sint32x2',\n 'vec3': 'sint32x3',\n 'vec4': 'sint32x4',\n\n u32: 'uint32',\n 'vec2': 'uint32x2',\n 'vec3': 'uint32x3',\n 'vec4': 'uint32x4',\n\n bool: 'uint32',\n 'vec2': 'uint32x2',\n 'vec3': 'uint32x3',\n 'vec4': 'uint32x4',\n};\n\nexport function extractAttributesFromGpuProgram(\n { source, entryPoint }: ProgramSource\n): Record\n{\n const results: Record = {};\n\n // Step 1: Find the start of the mainVert function using string methods\n const mainVertStart = source.indexOf(`fn ${entryPoint}`);\n\n if (mainVertStart !== -1)\n {\n // Step 2: Find the index of the next '->' after the start of the mainVert function\n const arrowFunctionStart = source.indexOf('->', mainVertStart);\n\n if (arrowFunctionStart !== -1)\n {\n const functionArgsSubstring = source.substring(mainVertStart, arrowFunctionStart);\n\n // Apply the inputs regex directly to the trimmed string\n const inputsRegex = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|$)/g;\n let match;\n\n while ((match = inputsRegex.exec(functionArgsSubstring)) !== null)\n {\n const format = WGSL_TO_VERTEX_TYPES[match[3] as VertexFormat] ?? 'float32';\n\n results[match[2]] = {\n location: parseInt(match[1], 10),\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0,\n };\n }\n }\n }\n\n return results;\n}\n","export interface StructsAndGroups\n{\n groups: {\n group: number;\n binding: number;\n name: string;\n isUniform: boolean;\n type: string;\n }[];\n structs: {\n name: string;\n members: Record;\n }[];\n}\n\nexport function extractStructAndGroups(wgsl: string): StructsAndGroups\n{\n // Patterns for parsing the WGSL file\n const linePattern = /(^|[^/])@(group|binding)\\(\\d+\\)[^;]+;/g;\n const groupPattern = /@group\\((\\d+)\\)/;\n const bindingPattern = /@binding\\((\\d+)\\)/;\n const namePattern = /var(<[^>]+>)? (\\w+)/;\n const typePattern = /:\\s*(\\w+)/;\n const structPattern = /struct\\s+(\\w+)\\s*{([^}]+)}/g;\n const structMemberPattern = /(\\w+)\\s*:\\s*([\\w\\<\\>]+)/g;\n const structName = /struct\\s+(\\w+)/;\n\n // Find the @group and @binding annotations\n const groups = wgsl.match(linePattern)?.map((item) => ({\n group: parseInt(item.match(groupPattern)[1], 10),\n binding: parseInt(item.match(bindingPattern)[1], 10),\n name: item.match(namePattern)[2],\n isUniform: item.match(namePattern)[1] === '',\n type: item.match(typePattern)[1],\n }));\n\n if (!groups)\n {\n return {\n groups: [],\n structs: [],\n };\n }\n\n // Find the structs\n const structs = wgsl\n .match(structPattern)\n ?.map((struct) =>\n {\n const name = struct.match(structName)[1];\n const members = struct.match(structMemberPattern).reduce((acc: Record, member) =>\n {\n const [name, type] = member.split(':');\n\n acc[name.trim()] = type.trim();\n\n return acc;\n }, {});\n\n if (!members)\n {\n return null;\n }\n\n return { name, members };\n // Only include the structs mentioned in the @group/@binding annotations\n })\n .filter(({ name }) => groups.some((group) => group.type === name)) ?? [];\n\n return {\n groups,\n structs,\n };\n}\n","export enum ShaderStage\n {\n VERTEX = 1,\n FRAGMENT = 2,\n COMPUTE = 4\n}\n","import { ShaderStage } from '../../../shared/shader/const';\n\nimport type { ProgramPipelineLayoutDescription } from '../GpuProgram';\nimport type { StructsAndGroups } from './extractStructAndGroups';\n\nexport function generateGpuLayoutGroups({ groups }: StructsAndGroups): ProgramPipelineLayoutDescription\n{\n const layout: ProgramPipelineLayoutDescription = [];\n\n for (let i = 0; i < groups.length; i++)\n {\n const group = groups[i];\n\n if (!layout[group.group])\n {\n layout[group.group] = [];\n }\n\n if (group.isUniform)\n {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.VERTEX | ShaderStage.FRAGMENT,\n buffer: {\n type: 'uniform'\n }\n });\n }\n else if (group.type === 'sampler')\n {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n sampler: {\n type: 'filtering'\n }\n });\n }\n else if (group.type === 'texture_2d')\n {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: 'float',\n viewDimension: '2d',\n multisampled: false,\n }\n });\n }\n }\n\n return layout;\n}\n","import type { ProgramLayout } from '../GpuProgram';\nimport type { StructsAndGroups } from './extractStructAndGroups';\n\nexport function generateLayoutHash({ groups }: StructsAndGroups): ProgramLayout\n{\n const layout: ProgramLayout = [];\n\n for (let i = 0; i < groups.length; i++)\n {\n const group = groups[i];\n\n if (!layout[group.group])\n {\n layout[group.group] = {};\n }\n\n layout[group.group][group.name] = group.binding;\n }\n\n return layout;\n}\n","import type { StructsAndGroups } from './extractStructAndGroups';\n\nexport function removeStructAndGroupDuplicates(\n vertexStructsAndGroups: StructsAndGroups,\n fragmentStructsAndGroups: StructsAndGroups\n)\n{\n const structNameSet = new Set();\n const dupeGroupKeySet = new Set();\n\n const structs = [...vertexStructsAndGroups.structs, ...fragmentStructsAndGroups.structs]\n .filter((struct) =>\n {\n if (structNameSet.has(struct.name))\n {\n return false;\n }\n structNameSet.add(struct.name);\n\n return true;\n });\n\n const groups = [...vertexStructsAndGroups.groups, ...fragmentStructsAndGroups.groups]\n .filter((group) =>\n {\n const key = `${group.name}-${group.binding}`;\n\n if (dupeGroupKeySet.has(key))\n {\n return false;\n }\n dupeGroupKeySet.add(key);\n\n return true;\n });\n\n return { structs, groups };\n}\n","import { createIdFromString } from '../../shared/utils/createIdFromString';\nimport { extractAttributesFromGpuProgram } from './utils/extractAttributesFromGpuProgram';\nimport { extractStructAndGroups } from './utils/extractStructAndGroups';\nimport { generateGpuLayoutGroups } from './utils/generateGpuLayoutGroups';\nimport { generateLayoutHash } from './utils/generateLayoutHash';\nimport { removeStructAndGroupDuplicates } from './utils/removeStructAndGroupDuplicates';\n\nimport type { ExtractedAttributeData } from '../../gl/shader/program/extractAttributesFromGlProgram';\nimport type { StructsAndGroups } from './utils/extractStructAndGroups';\n\n/**\n * a WebGPU descriptions of how the program is layed out\n * @see https://gpuweb.github.io/gpuweb/#gpupipelinelayout\n * @memberof rendering\n */\nexport type ProgramPipelineLayoutDescription = GPUBindGroupLayoutEntry[][];\n/**\n * a map the maps names of uniforms to group indexes\n * @memberof rendering\n */\nexport type ProgramLayout = Record[];\n\n/**\n * the program source\n * @memberof rendering\n */\nexport interface ProgramSource\n{\n /** The wgsl source code of the shader. */\n source: string;\n /** The main function to run in this shader */\n entryPoint?: string;\n}\n\n/**\n * The options for the gpu program\n * @memberof rendering\n */\nexport interface GpuProgramOptions\n{\n /**\n * the name of the program, this is added to the label of the GPU Program created\n * under the hood. Makes it much easier to debug!\n */\n name?: string;\n /** The fragment glsl shader source. */\n fragment?: ProgramSource;\n /** The vertex glsl shader source. */\n vertex?: ProgramSource;\n /** The layout of the program. If not provided, it will be generated from the shader sources. */\n layout?: ProgramLayout;\n /** The gpu layout of the program. If not provided, it will be generated from the shader sources. */\n gpuLayout?: ProgramPipelineLayoutDescription;\n}\n\nconst programCache: Record = Object.create(null);\n\n/**\n * A wrapper for a WebGPU Program, specifically designed for the WebGPU renderer.\n * This class facilitates the creation and management of shader code that integrates with the WebGPU pipeline.\n *\n * To leverage the full capabilities of this class, familiarity with WGSL shaders is recommended.\n * @see https://gpuweb.github.io/gpuweb/#index\n * @example\n *\n * // Create a new program\n * const program = new GpuProgram({\n * vertex: {\n * source: '...',\n * entryPoint: 'main',\n * },\n * fragment:{\n * source: '...',\n * entryPoint: 'main',\n * },\n * });\n *\n *\n * Note: Both fragment and vertex shader sources can coexist within a single WGSL source file\n * this can make things a bit simpler.\n *\n * For optimal usage and best performance, it help to reuse programs whenever possible.\n * The {@link GpuProgram.from} helper function is designed for this purpose, utilizing an\n * internal cache to efficiently manage and retrieve program instances.\n * By leveraging this function, you can significantly reduce overhead and enhance the performance of your rendering pipeline.\n *\n * An important distinction between WebGL and WebGPU regarding program data retrieval:\n * While WebGL allows extraction of program information directly from its compiled state,\n * WebGPU does not offer such a capability. Therefore, in the context of WebGPU, we're required\n * to manually extract the program layout information from the source code itself.\n * @memberof rendering\n */\nexport class GpuProgram\n{\n /** The fragment glsl shader source. */\n public readonly fragment?: ProgramSource;\n /** The vertex glsl shader source */\n public readonly vertex?: ProgramSource;\n\n /**\n * Mapping of uniform names to group indexes for organizing shader program uniforms.\n * Automatically generated from shader sources if not provided.\n * @example\n * // Assuming a shader with two uniforms, `u_time` and `u_resolution`, grouped respectively:\n * [\n * { \"u_time\": 0 },\n * { \"u_resolution\": 1 }\n * ]\n */\n public readonly layout: ProgramLayout;\n\n /**\n * Configuration for the WebGPU bind group layouts, detailing resource organization for the shader.\n * Generated from shader sources if not explicitly provided.\n * @example\n * // Assuming a shader program that requires two bind groups:\n * [\n * // First bind group layout entries\n * [{ binding: 0, visibility: GPUShaderStage.VERTEX, type: \"uniform-buffer\" }],\n * // Second bind group layout entries\n * [{ binding: 1, visibility: GPUShaderStage.FRAGMENT, type: \"sampler\" },\n * { binding: 2, visibility: GPUShaderStage.FRAGMENT, type: \"sampled-texture\" }]\n * ]\n */\n public readonly gpuLayout: ProgramPipelineLayoutDescription;\n\n /**\n * @internal\n * @ignore\n */\n public _layoutKey = 0;\n\n /** the structs and groups extracted from the shader sources */\n public readonly structsAndGroups: StructsAndGroups;\n /**\n * the name of the program, this is added to the label of the GPU Program created under the hood.\n * Makes it much easier to debug!\n */\n public readonly name: string;\n private _attributeData: Record;\n\n /** if true, the program will automatically assign global uniforms to group[0] */\n public autoAssignGlobalUniforms: boolean;\n /** if true, the program will automatically assign local uniforms to group[1] */\n public autoAssignLocalUniforms: boolean;\n\n /**\n * Create a new GpuProgram\n * @param options - The options for the gpu program\n */\n constructor(options: GpuProgramOptions)\n {\n const { fragment, vertex, layout, gpuLayout, name } = options;\n\n this.name = name;\n\n this.fragment = fragment;\n this.vertex = vertex;\n\n // TODO this should be cached - or dealt with at a system level.\n if (fragment.source === vertex.source)\n {\n const structsAndGroups = extractStructAndGroups(fragment.source);\n\n this.structsAndGroups = structsAndGroups;\n }\n else\n {\n const vertexStructsAndGroups = extractStructAndGroups(vertex.source);\n const fragmentStructsAndGroups = extractStructAndGroups(fragment.source);\n\n this.structsAndGroups = removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups);\n }\n\n // todo layout\n this.layout = layout ?? generateLayoutHash(this.structsAndGroups);\n\n // struct properties!\n\n this.gpuLayout = gpuLayout ?? generateGpuLayoutGroups(this.structsAndGroups);\n\n this.autoAssignGlobalUniforms = !!(this.layout[0]?.globalUniforms !== undefined);\n this.autoAssignLocalUniforms = !!(this.layout[1]?.localUniforms !== undefined);\n\n this._generateProgramKey();\n }\n\n // TODO maker this pure\n private _generateProgramKey()\n {\n const { vertex, fragment } = this;\n\n const bigKey = vertex.source + fragment.source + vertex.entryPoint + fragment.entryPoint;\n\n this._layoutKey = createIdFromString(bigKey, 'program');\n }\n\n get attributeData()\n {\n this._attributeData ??= extractAttributesFromGpuProgram(this.vertex);\n\n return this._attributeData;\n }\n /** destroys the program */\n public destroy(): void\n {\n (this.gpuLayout as null) = null;\n (this.layout as null) = null;\n (this.structsAndGroups as null) = null;\n (this.fragment as null) = null;\n (this.vertex as null) = null;\n }\n\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n public static from(options: GpuProgramOptions): GpuProgram\n {\n // eslint-disable-next-line max-len\n const key = `${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:${options.vertex.entryPoint}`;\n\n if (!programCache[key])\n {\n programCache[key] = new GpuProgram(options);\n }\n\n return programCache[key];\n }\n}\n\n","import { warn } from '../../../../utils/logging/warn';\n\n/**\n * takes the HighFragment source parts and adds them to the hook hash\n * @param srcParts - the hash of hook arrays\n * @param parts - the code to inject into the hooks\n * @param name - optional the name of the part to add\n */\nexport function addBits(srcParts: Record, parts: Record, name?: string)\n{\n if (srcParts)\n {\n for (const i in srcParts)\n {\n const id = i.toLocaleLowerCase();\n\n const part = parts[id];\n\n if (part)\n {\n let sanitisedPart = srcParts[i];\n\n if (i === 'header')\n {\n sanitisedPart = sanitisedPart\n .replace(/@in\\s+[^;]+;\\s*/g, '')\n .replace(/@out\\s+[^;]+;\\s*/g, '');\n }\n\n if (name)\n {\n part.push(`//----${name}----//`);\n }\n part.push(sanitisedPart);\n }\n\n else\n {\n // #if _DEBUG\n warn(`${i} placement hook does not exist in shader`);\n // #endif\n }\n }\n }\n}\n","export const findHooksRx = /\\{\\{(.*?)\\}\\}/g;\n\n/**\n * takes a program string and returns an hash mapping the hooks to empty arrays\n * @param programSrc - the program containing hooks\n */\nexport function compileHooks(programSrc: string): Record\n{\n const parts: Record = {};\n\n const partMatches = programSrc\n .match(findHooksRx)\n ?.map((hook) => hook.replace(/[{()}]/g, '')) ?? [];\n\n partMatches.forEach((hook) =>\n {\n parts[hook] = [];\n });\n\n return parts;\n}\n","function extractInputs(fragmentSource: string, out: string[])\n{\n let match;\n const regex = /@in\\s+([^;]+);/g;\n\n while ((match = regex.exec(fragmentSource)) !== null)\n {\n out.push(match[1]);\n }\n}\n\nexport function compileInputs(fragments: any[], template: string, sort = false)\n{\n // get all the inputs from the fragments..\n const results: string[] = [];\n\n extractInputs(template, results);\n\n fragments.forEach((fragment) =>\n {\n if (fragment.header)\n {\n extractInputs(fragment.header, results);\n }\n });\n\n // build the input:\n const mainInput = results;\n\n if (sort)\n {\n mainInput.sort();\n }\n\n const finalString = mainInput\n .map((inValue, i) => ` @location(${i}) ${inValue},`)\n .join('\\n');\n\n // Remove lines from original string\n let cleanedString = template.replace(/@in\\s+[^;]+;\\s*/g, '');\n\n cleanedString = cleanedString.replace('{{in}}', `\\n${finalString}\\n`);\n\n return cleanedString;\n}\n","function extractOutputs(fragmentSource: string, out: string[])\n{\n let match;\n const regex = /@out\\s+([^;]+);/g;\n\n while ((match = regex.exec(fragmentSource)) !== null)\n {\n out.push(match[1]);\n }\n}\n\nfunction extractVariableName(value: string)\n{\n const regex = /\\b(\\w+)\\s*:/g;\n\n const match = regex.exec(value);\n\n return match ? match[1] : '';\n}\n\nfunction stripVariable(value: string)\n{\n const regex = /@.*?\\s+/g;\n\n return value.replace(regex, '');\n}\n\nexport function compileOutputs(fragments: any[], template: string)\n{\n // get all the inputs from the fragments..\n const results: string[] = [];\n\n extractOutputs(template, results);\n\n fragments.forEach((fragment) =>\n {\n if (fragment.header)\n {\n extractOutputs(fragment.header, results);\n }\n });\n\n let index = 0;\n\n // generate the output struct\n const mainStruct = results\n .sort()\n .map((inValue) =>\n {\n if (inValue.indexOf('builtin') > -1)\n {\n return inValue;\n }\n\n return `@location(${index++}) ${inValue}`;\n })\n .join(',\\n');\n\n // generate the variables we will set:\n const mainStart = results\n .sort()\n .map((inValue) => ` var ${stripVariable(inValue)};`)\n .join('\\n');\n\n // generate the return object\n const mainEnd = `return VSOutput(\n ${results\n .sort()\n .map((inValue) => ` ${extractVariableName(inValue)}`)\n .join(',\\n')});`;\n\n // Remove lines from original string\n let compiledCode = template.replace(/@out\\s+[^;]+;\\s*/g, '');\n\n compiledCode = compiledCode.replace('{{struct}}', `\\n${mainStruct}\\n`);\n compiledCode = compiledCode.replace('{{start}}', `\\n${mainStart}\\n`);\n compiledCode = compiledCode.replace('{{return}}', `\\n${mainEnd}\\n`);\n\n return compiledCode;\n}\n","/**\n * takes a shader src and replaces any hooks with the HighFragment code.\n * @param templateSrc - the program src template\n * @param fragmentParts - the fragments to inject\n */\nexport function injectBits(templateSrc: string, fragmentParts: Record): string\n{\n let out = templateSrc;\n\n for (const i in fragmentParts)\n {\n const parts = fragmentParts[i];\n\n const toInject = parts.join('\\n');\n\n if (toInject.length)\n {\n out = out.replace(`{{${i}}}`, `//-----${i} START-----//\\n${parts.join('\\n')}\\n//----${i} FINISH----//`);\n }\n\n else\n {\n out = out.replace(`{{${i}}}`, '');\n }\n }\n\n return out;\n}\n","import { addBits } from './utils/addBits';\nimport { compileHooks } from './utils/compileHooks';\nimport { compileInputs } from './utils/compileInputs';\nimport { compileOutputs } from './utils/compileOutputs';\nimport { injectBits } from './utils/injectBits';\n\nimport type { HighShaderBit, HighShaderSource } from './types';\n\n/** A high template consists of vertex and fragment source */\nexport interface HighShaderTemplate\n{\n name?: string;\n fragment: string;\n vertex: string;\n}\n\nexport interface CompileHighShaderOptions\n{\n template: HighShaderTemplate;\n bits: HighShaderBit[];\n}\n\nconst cacheMap: {[key: string]: HighShaderSource} = Object.create(null);\nconst bitCacheMap: Map = new Map();\n\nlet CACHE_UID = 0;\n\n/**\n * This function will take a HighShader template, some High fragments and then merge them in to a shader source.\n * @param options\n * @param options.template\n * @param options.bits\n */\nexport function compileHighShader({\n template,\n bits\n}: CompileHighShaderOptions): HighShaderSource\n{\n const cacheId = generateCacheId(template, bits);\n\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n\n const { vertex, fragment } = compileInputsAndOutputs(template, bits);\n\n cacheMap[cacheId] = compileBits(vertex, fragment, bits);\n\n return cacheMap[cacheId];\n}\n\nexport function compileHighShaderGl({\n template,\n bits\n}: CompileHighShaderOptions): HighShaderSource\n{\n const cacheId = generateCacheId(template, bits);\n\n if (cacheMap[cacheId]) return cacheMap[cacheId];\n\n cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);\n\n return cacheMap[cacheId];\n}\n\nfunction compileInputsAndOutputs(template: HighShaderTemplate, bits: HighShaderBit[])\n{\n const vertexFragments = bits.map((shaderBit) => shaderBit.vertex).filter((v) => !!v);\n const fragmentFragments = bits.map((shaderBit) => shaderBit.fragment).filter((v) => !!v);\n\n // WebGPU compile inputs and outputs..\n let compiledVertex = compileInputs(vertexFragments, template.vertex, true);\n\n compiledVertex = compileOutputs(vertexFragments, compiledVertex);\n\n const compiledFragment = compileInputs(fragmentFragments, template.fragment, true);\n\n return {\n vertex: compiledVertex,\n fragment: compiledFragment,\n };\n}\n\nfunction generateCacheId(template: HighShaderTemplate, bits: HighShaderBit[]): string\n{\n return bits\n .map((highFragment) =>\n {\n if (!bitCacheMap.has(highFragment))\n {\n bitCacheMap.set(highFragment, CACHE_UID++);\n }\n\n return bitCacheMap.get(highFragment);\n })\n .sort((a, b) => a - b)\n .join('-') + template.vertex + template.fragment;\n}\n\nfunction compileBits(vertex: string, fragment: string, bits: HighShaderBit[])\n{\n const vertexParts = compileHooks(vertex);\n const fragmentParts = compileHooks(fragment);\n\n bits.forEach((shaderBit) =>\n {\n addBits(shaderBit.vertex, vertexParts, shaderBit.name);\n addBits(shaderBit.fragment, fragmentParts, shaderBit.name);\n });\n\n return {\n vertex: injectBits(vertex, vertexParts),\n fragment: injectBits(fragment, fragmentParts),\n };\n}\n","const vertexGPUTemplate = /* wgsl */`\n @in aPosition: vec2;\n @in aUV: vec2;\n\n @out @builtin(position) vPosition: vec4;\n @out vUV : vec2;\n @out vColor : vec4;\n\n {{header}}\n\n struct VSOutput {\n {{struct}}\n };\n\n @vertex\n fn main( {{in}} ) -> VSOutput {\n\n var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;\n var modelMatrix = mat3x3(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n var position = aPosition;\n var uv = aUV;\n\n {{start}}\n \n vColor = vec4(1., 1., 1., 1.);\n\n {{main}}\n\n vUV = uv;\n\n var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n vPosition = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n \n vColor *= globalUniforms.uWorldColorAlpha;\n\n {{end}}\n\n {{return}}\n };\n`;\n\nconst fragmentGPUTemplate = /* wgsl */`\n @in vUV : vec2;\n @in vColor : vec4;\n \n {{header}}\n\n @fragment\n fn main(\n {{in}}\n ) -> @location(0) vec4 {\n \n {{start}}\n\n var outColor:vec4;\n \n {{main}}\n \n return outColor * vColor;\n };\n`;\n\nconst vertexGlTemplate = /* glsl */`\n in vec2 aPosition;\n in vec2 aUV;\n\n out vec4 vColor;\n out vec2 vUV;\n\n {{header}}\n\n void main(void){\n\n mat3 worldTransformMatrix = uWorldTransformMatrix;\n mat3 modelMatrix = mat3(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n );\n vec2 position = aPosition;\n vec2 uv = aUV;\n \n {{start}}\n \n vColor = vec4(1.);\n \n {{main}}\n \n vUV = uv;\n \n mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;\n\n gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n\n vColor *= uWorldColorAlpha;\n\n {{end}}\n }\n`;\n\nconst fragmentGlTemplate = /* glsl */`\n \n in vec4 vColor;\n in vec2 vUV;\n\n out vec4 finalColor;\n\n {{header}}\n\n void main(void) {\n \n {{start}}\n\n vec4 outColor;\n \n {{main}}\n \n finalColor = outColor * vColor;\n }\n`;\n\nexport {\n fragmentGlTemplate,\n fragmentGPUTemplate,\n vertexGlTemplate,\n vertexGPUTemplate\n};\n","export const globalUniformsBit = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* wgsl */`\n struct GlobalUniforms {\n uProjectionMatrix:mat3x3,\n uWorldTransformMatrix:mat3x3,\n uWorldColorAlpha: vec4,\n uResolution: vec2,\n }\n\n @group(0) @binding(0) var globalUniforms : GlobalUniforms;\n `\n }\n};\n\nexport const globalUniformsUBOBitGl = {\n name: 'global-uniforms-ubo-bit',\n vertex: {\n header: /* glsl */`\n uniform globalUniforms {\n mat3 uProjectionMatrix;\n mat3 uWorldTransformMatrix;\n vec4 uWorldColorAlpha;\n vec2 uResolution;\n };\n `\n }\n};\n\nexport const globalUniformsBitGl = {\n name: 'global-uniforms-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uProjectionMatrix;\n uniform mat3 uWorldTransformMatrix;\n uniform vec4 uWorldColorAlpha;\n uniform vec2 uResolution;\n `\n }\n\n};\n","import { GlProgram } from '../renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../renderers/gpu/shader/GpuProgram';\nimport { compileHighShader, compileHighShaderGl } from './compiler/compileHighShader';\nimport { fragmentGlTemplate, fragmentGPUTemplate, vertexGlTemplate, vertexGPUTemplate } from './defaultProgramTemplate';\nimport { globalUniformsBit, globalUniformsBitGl } from './shader-bits/globalUniformsBit';\n\nimport type { HighShaderBit } from './compiler/types';\n\nexport function compileHighShaderGpuProgram({ bits, name }: {bits: HighShaderBit[], name: string}): GpuProgram\n{\n const source = compileHighShader({\n template: {\n fragment: fragmentGPUTemplate,\n vertex: vertexGPUTemplate,\n },\n bits: [\n globalUniformsBit,\n ...bits,\n ]\n });\n\n return GpuProgram.from({\n name,\n vertex: {\n source: source.vertex,\n entryPoint: 'main',\n },\n fragment: {\n source: source.fragment,\n entryPoint: 'main',\n },\n });\n}\n\nexport function compileHighShaderGlProgram({ bits, name }: {bits: HighShaderBit[], name: string}): GlProgram\n{\n return new GlProgram({\n name,\n ...compileHighShaderGl({\n template: {\n vertex: vertexGlTemplate,\n fragment: fragmentGlTemplate,\n },\n bits: [\n globalUniformsBitGl,\n ...bits,\n ]\n })\n });\n}\n","export const colorBit = {\n name: 'color-bit',\n vertex: {\n header: /* wgsl */`\n @in aColor: vec4;\n `,\n main: /* wgsl */`\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n\nexport const colorBitGl = {\n name: 'color-bit',\n vertex: {\n header: /* glsl */`\n in vec4 aColor;\n `,\n main: /* glsl */`\n vColor *= vec4(aColor.rgb * aColor.a, aColor.a);\n `\n }\n};\n","import type { HighShaderBit } from '../compiler/types';\n\nconst textureBatchBitGpuCache: Record = {};\n\n/**\n *\n * @param maxTextures - the max textures the shader can use.\n * @returns a shader bit that will allow the shader to sample multiple textures AND round pixels.\n */\nfunction generateBindingSrc(maxTextures: number): string\n{\n const src = [];\n\n if (maxTextures === 1)\n {\n src.push('@group(1) @binding(0) var textureSource1: texture_2d;');\n src.push('@group(1) @binding(1) var textureSampler1: sampler;');\n }\n else\n {\n let bindingIndex = 0;\n\n for (let i = 0; i < maxTextures; i++)\n {\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSource${i + 1}: texture_2d;`);\n src.push(`@group(1) @binding(${bindingIndex++}) var textureSampler${i + 1}: sampler;`);\n }\n }\n\n return src.join('\\n');\n}\n\nfunction generateSampleSrc(maxTextures: number): string\n{\n const src = [];\n\n if (maxTextures === 1)\n {\n src.push('outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);');\n }\n else\n {\n src.push('switch vTextureId {');\n\n for (let i = 0; i < maxTextures; i++)\n {\n if (i === maxTextures - 1)\n {\n src.push(` default:{`);\n }\n else\n {\n src.push(` case ${i}:{`);\n }\n src.push(` outColor = textureSampleGrad(textureSource${i + 1}, textureSampler${i + 1}, vUV, uvDx, uvDy);`);\n src.push(` break;}`);\n }\n\n src.push(`}`);\n }\n\n return src.join('\\n');\n}\n\nexport function generateTextureBatchBit(maxTextures: number): HighShaderBit\n{\n if (!textureBatchBitGpuCache[maxTextures])\n {\n textureBatchBitGpuCache[maxTextures] = {\n name: 'texture-batch-bit',\n vertex: {\n header: `\n @in aTextureIdAndRound: vec2;\n @out @interpolate(flat) vTextureId : u32;\n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n fragment: {\n header: `\n @in @interpolate(flat) vTextureId: u32;\n \n ${generateBindingSrc(16)}\n `,\n main: `\n var uvDx = dpdx(vUV);\n var uvDy = dpdy(vUV);\n \n ${generateSampleSrc(16)}\n `\n }\n };\n }\n\n return textureBatchBitGpuCache[maxTextures];\n}\n\nconst textureBatchBitGlCache: Record = {};\n\n/**\n *\n * @param maxTextures - the max textures the shader can use.\n * @returns a shader bit that will allow the shader to sample multiple textures AND round pixels.\n */\nfunction generateSampleGlSrc(maxTextures: number): string\n{\n const src = [];\n\n for (let i = 0; i < maxTextures; i++)\n {\n if (i > 0)\n {\n src.push('else');\n }\n\n if (i < maxTextures - 1)\n {\n src.push(`if(vTextureId < ${i}.5)`);\n }\n\n src.push('{');\n src.push(`\\toutColor = texture(uTextures[${i}], vUV);`);\n src.push('}');\n }\n\n return src.join('\\n');\n}\n\nexport function generateTextureBatchBitGl(maxTextures: number): HighShaderBit\n{\n if (!textureBatchBitGlCache[maxTextures])\n {\n textureBatchBitGlCache[maxTextures] = {\n name: 'texture-batch-bit',\n vertex: {\n header: `\n in vec2 aTextureIdAndRound;\n out float vTextureId;\n \n `,\n main: `\n vTextureId = aTextureIdAndRound.y;\n `,\n end: `\n if(aTextureIdAndRound.x == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n fragment: {\n header: `\n in float vTextureId;\n \n uniform sampler2D uTextures[${maxTextures}];\n \n `,\n main: `\n \n ${generateSampleGlSrc(16)}\n `\n }\n };\n }\n\n return textureBatchBitGlCache[maxTextures];\n}\n","export const roundPixelsBit = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* wgsl */`\n fn roundPixels(position: vec2, targetSize: vec2) -> vec2 \n {\n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\nexport const roundPixelsBitGl = {\n name: 'round-pixels-bit',\n vertex: {\n header: /* glsl */` \n vec2 roundPixels(vec2 position, vec2 targetSize)\n { \n return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;\n }\n `\n }\n};\n\n","import { MAX_TEXTURES } from '../../../batcher/shared/const';\nimport { UniformGroup } from '../../shared/shader/UniformGroup';\n\nconst sampleValues = new Int32Array(MAX_TEXTURES);\n\nfor (let i = 0; i < MAX_TEXTURES; i++)\n{\n sampleValues[i] = i;\n}\n\nexport const batchSamplersUniformGroup = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: MAX_TEXTURES }\n}, { isStatic: true });\n","import type { ICanvas } from '../../environment/canvas/ICanvas';\nimport type { WebGLOptions, WebGLPipes, WebGLRenderer } from './gl/WebGLRenderer';\nimport type { WebGPUOptions, WebGPUPipes, WebGPURenderer } from './gpu/WebGPURenderer';\n\n/** A generic renderer. */\nexport type Renderer = WebGLRenderer | WebGPURenderer;\nexport type RenderPipes = WebGLPipes | WebGPUPipes;\nexport interface RendererOptions extends WebGLOptions, WebGPUOptions {}\n\n/* eslint-disable @typescript-eslint/indent */\n/**\n * Ids for the different render types.\n * The idea is that you can use bitwise operations to filter weather or not you want to do somthing in a certain render type.\n * Filters for example can be compatible for both webGL or WebGPU but not compatible with canvas.\n * So internally if it works with both we set filter.compatibleRenderers = RendererType.WEBGL | RendererType.WEBGPU\n * if it only works with webgl we set filter.compatibleRenderers = RendererType.WEBGL\n *\n */\nexport enum RendererType\n{\n WEBGL = 0b01,\n WEBGPU = 0b10,\n BOTH = 0b11\n}\n\nexport type GpuPowerPreference = 'low-power' | 'high-performance';\n","/* eslint-disable no-new */\nimport EventEmitter from 'eventemitter3';\nimport { GlProgram } from '../../gl/shader/GlProgram';\nimport { BindGroup } from '../../gpu/shader/BindGroup';\nimport { GpuProgram } from '../../gpu/shader/GpuProgram';\nimport { RendererType } from '../../types';\nimport { UniformGroup } from './UniformGroup';\n\nimport type { GlProgramOptions } from '../../gl/shader/GlProgram';\nimport type { BindResource } from '../../gpu/shader/BindResource';\nimport type { GpuProgramOptions } from '../../gpu/shader/GpuProgram';\n\n/**\n * A record of {@link BindGroup}'s used by the shader.\n *\n * `Record`\n * @memberof rendering\n */\nexport type ShaderGroups = Record;\n\ninterface ShaderBase\n{\n /** The WebGL program used by the WebGL renderer. */\n glProgram?: GlProgram\n /** The WebGPU program used by the WebGPU renderer. */\n gpuProgram?: GpuProgram\n /**\n * A number that uses two bits on whether the shader is compatible with the WebGL renderer and/or the WebGPU renderer.\n * 0b00 - not compatible with either\n * 0b01 - compatible with WebGL\n * 0b10 - compatible with WebGPU\n * This is automatically set based on if a {@link GlProgram} or {@link GpuProgram} is provided.\n */\n compatibleRenderers?: number\n}\n\ninterface GlShaderWith extends ShaderBase\n{\n /** The WebGL program used by the WebGL renderer. */\n glProgram: GlProgram\n}\n\ninterface GpuShaderWith extends ShaderBase\n{\n /** The WebGPU program used by the WebGPU renderer. */\n gpuProgram: GpuProgram\n}\n\ninterface ShaderWithGroupsDescriptor\n{\n /** A record of {@link BindGroup}'s used by the shader. */\n groups: ShaderGroups;\n /** an optional map of how to bind the groups. This is automatically generated by reading the WebGPU program */\n groupMap?: Record>;\n}\n\ninterface ShaderWithResourcesDescriptor\n{\n /**\n * A key value of uniform resources used by the shader.\n * Under the hood pixi will look at the provided shaders and figure out where\n * the resources are mapped. Its up to you to make sure the resource key\n * matches the uniform name in the webGPU program. WebGL is a little more forgiving!\n */\n resources?: Record;\n}\n\ninterface GroupsData\n{\n group: number\n binding: number\n name: string\n}\n\n/**\n * A descriptor for a shader\n * @memberof rendering\n */\nexport type ShaderWith = GlShaderWith | GpuShaderWith;\n\n/**\n * A descriptor for a shader with groups.\n * @memberof rendering\n */\nexport type ShaderWithGroups = ShaderWithGroupsDescriptor & ShaderWith;\nexport interface IShaderWithGroups extends ShaderWithGroupsDescriptor, ShaderBase {}\n\n/**\n * A descriptor for a shader with resources. This is an easier way to work with uniforms.\n * especially when you are not working with bind groups\n * @memberof rendering\n */\nexport type ShaderWithResources = ShaderWithResourcesDescriptor & ShaderWith;\nexport interface IShaderWithResources extends ShaderWithResourcesDescriptor, ShaderBase {}\n\nexport type ShaderDescriptor = ShaderWithGroups & ShaderWithResources;\n\ntype GlShaderFromWith = {\n gpu?: GpuProgramOptions,\n gl: GlProgramOptions\n};\ntype GpuShaderFromWith = {\n gpu: GpuProgramOptions,\n gl?: GlProgramOptions\n};\nexport type ShaderFromGroups = (GlShaderFromWith | GpuShaderFromWith) & Omit;\nexport type ShaderFromResources = (GlShaderFromWith | GpuShaderFromWith)\n& Omit;\n\n/**\n * The Shader class is an integral part of the PixiJS graphics pipeline.\n * Central to rendering in PixiJS are two key elements: A [shader] and a [geometry].\n * The shader incorporates a {@link GlProgram} for WebGL or a {@link GpuProgram} for WebGPU,\n * instructing the respective technology on how to render the geometry.\n *\n * The primary goal of the Shader class is to offer a unified interface compatible with both WebGL and WebGPU.\n * When constructing a shader, you need to provide both a WebGL program and a WebGPU program due to the distinctions\n * between the two rendering engines. If only one is provided, the shader won't function with the omitted renderer.\n *\n * Both WebGL and WebGPU utilize the same resource object when passed into the shader.\n * Post-creation, the shader's interface remains consistent across both WebGL and WebGPU.\n * The sole distinction lies in whether a glProgram or a gpuProgram is employed.\n *\n * Modifying shader uniforms, which can encompass:\n * - TextureSampler {@link TextureStyle}\n * - TextureSource {@link TextureSource}\n * - UniformsGroups {@link UniformGroup}\n * @example\n *\n * const shader = new Shader({\n * glProgram: glProgram,\n * gpuProgram: gpuProgram,\n * resources: {\n * uTexture: texture.source,\n * uSampler: texture.sampler,\n * uColor: [1, 0, 0, 1],\n * },\n * });\n *\n * // update the uniforms\n * shader.resources.uColor[1] = 1;\n * shader.resources.uTexture = texture2.source;\n * @class\n * @memberof rendering\n */\nexport class Shader extends EventEmitter<{'destroy': Shader}>\n{\n /** An instance of the GPU program used by the WebGPU renderer */\n public gpuProgram: GpuProgram;\n /** An instance of the GL program used by the WebGL renderer */\n public glProgram: GlProgram;\n /**\n * A number that uses two bits on whether the shader is compatible with the WebGL renderer and/or the WebGPU renderer.\n * 0b00 - not compatible with either\n * 0b01 - compatible with WebGL\n * 0b10 - compatible with WebGPU\n * This is automatically set based on if a {@link GlProgram} or {@link GpuProgram} is provided.\n */\n public readonly compatibleRenderers: number;\n /** */\n public groups: Record;\n /** A record of the resources used by the shader. */\n public resources: Record;\n /**\n * A record of the uniform groups and resources used by the shader.\n * This is used by WebGL renderer to sync uniform data.\n * @internal\n * @ignore\n */\n public _uniformBindMap: Record> = Object.create(null);\n private readonly _ownedBindGroups: BindGroup[] = [];\n\n /**\n * Fired after rendering finishes.\n * @event rendering.Shader#destroy\n */\n\n /**\n * There are two ways to create a shader.\n * one is to pass in resources which is a record of uniform groups and resources.\n * another is to pass in groups which is a record of {@link BindGroup}s.\n * this second method is really to make use of shared {@link BindGroup}s.\n * For most cases you will want to use resources as they are easier to work with.\n * USe Groups if you want to share {@link BindGroup}s between shaders.\n * you cannot mix and match - either use resources or groups.\n * @param {ShaderWithResourcesDescriptor} options - The options for the shader using ShaderWithResourcesDescriptor.\n */\n constructor(options: ShaderWithResources);\n constructor(options: ShaderWithGroups);\n constructor(options: ShaderDescriptor)\n {\n super();\n\n /* eslint-disable prefer-const */\n let {\n gpuProgram,\n glProgram,\n groups,\n resources,\n compatibleRenderers,\n groupMap\n } = options;\n /* eslint-enable prefer-const */\n\n this.gpuProgram = gpuProgram;\n this.glProgram = glProgram;\n\n if (compatibleRenderers === undefined)\n {\n compatibleRenderers = 0;\n\n if (gpuProgram)compatibleRenderers |= RendererType.WEBGPU;\n if (glProgram)compatibleRenderers |= RendererType.WEBGL;\n }\n\n this.compatibleRenderers = compatibleRenderers;\n\n const nameHash: Record = {};\n\n if (!resources && !groups)\n {\n resources = {};\n }\n\n if (resources && groups)\n {\n throw new Error('[Shader] Cannot have both resources and groups');\n }\n else if (!gpuProgram && groups && !groupMap)\n {\n throw new Error('[Shader] No group map or WebGPU shader provided - consider using resources instead.');\n }\n else if (!gpuProgram && groups && groupMap)\n {\n for (const i in groupMap)\n {\n for (const j in groupMap[i])\n {\n const uniformName = groupMap[i][j];\n\n nameHash[uniformName] = {\n group: i as unknown as number,\n binding: j as unknown as number,\n name: uniformName\n };\n }\n }\n }\n else if (gpuProgram && groups && !groupMap)\n {\n const groupData = gpuProgram.structsAndGroups.groups;\n\n groupMap = {};\n\n groupData.forEach((data) =>\n {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n\n nameHash[data.name] = data;\n });\n }\n else if (resources)\n {\n if (!gpuProgram)\n {\n // build out a dummy bind group..\n groupMap = {};\n groups = {\n 99: new BindGroup(),\n };\n\n this._ownedBindGroups.push(groups[99]);\n\n let bindTick = 0;\n\n for (const i in resources)\n {\n // Yes i know this is a little strange, but wil line up the shaders neatly\n // basically we want to be driven by how webGPU does things.\n // so making a fake group will work and not affect gpu as it means no gpu shader was provided..\n nameHash[i] = { group: 99, binding: bindTick, name: i };\n\n groupMap[99] = groupMap[99] || {};\n groupMap[99][bindTick] = i;\n\n bindTick++;\n }\n }\n else\n {\n const groupData = gpuProgram.structsAndGroups.groups;\n\n groupMap = {};\n\n groupData.forEach((data) =>\n {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n\n nameHash[data.name] = data;\n });\n }\n\n groups = {};\n\n for (const i in resources)\n {\n const name = i;\n let value = resources[i];\n\n if (!(value.source) && !(value as BindResource)._resourceType)\n {\n value = new UniformGroup(value);\n }\n\n const data = nameHash[name];\n\n if (data)\n {\n if (!groups[data.group])\n {\n groups[data.group] = new BindGroup();\n\n this._ownedBindGroups.push(groups[data.group]);\n }\n\n groups[data.group].setResource(value, data.binding);\n }\n }\n }\n\n this.groups = groups;\n this._uniformBindMap = groupMap;\n\n this.resources = this._buildResourceAccessor(groups, nameHash);\n }\n\n /**\n * Sometimes a resource group will be provided later (for example global uniforms)\n * In such cases, this method can be used to let the shader know about the group.\n * @param name - the name of the resource group\n * @param groupIndex - the index of the group (should match the webGPU shader group location)\n * @param bindIndex - the index of the bind point (should match the webGPU shader bind point)\n */\n public addResource(name: string, groupIndex: number, bindIndex: number): void\n {\n this._uniformBindMap[groupIndex] ||= {};\n\n this._uniformBindMap[groupIndex][bindIndex] ||= name;\n\n if (!this.groups[groupIndex])\n {\n this.groups[groupIndex] = new BindGroup();\n this._ownedBindGroups.push(this.groups[groupIndex]);\n }\n }\n\n private _buildResourceAccessor(groups: ShaderGroups, nameHash: Record)\n {\n const uniformsOut = {};\n\n for (const i in nameHash)\n {\n const data = nameHash[i];\n\n // add getter setter for uniforms\n Object.defineProperty(uniformsOut, data.name, {\n get()\n {\n return groups[data.group].getResource(data.binding);\n },\n set(value)\n {\n groups[data.group].setResource(value, data.binding);\n }\n });\n }\n\n return uniformsOut;\n }\n\n /**\n * Use to destroy the shader when its not longer needed.\n * It will destroy the resources and remove listeners.\n * @param destroyPrograms - if the programs should be destroyed as well.\n * Make sure its not being used by other shaders!\n */\n public destroy(destroyPrograms = false): void\n {\n this.emit('destroy', this);\n\n if (destroyPrograms)\n {\n this.gpuProgram?.destroy();\n this.glProgram?.destroy();\n }\n\n this.gpuProgram = null;\n this.glProgram = null;\n\n this.removeAllListeners();\n\n this._uniformBindMap = null;\n\n this._ownedBindGroups.forEach((bindGroup) =>\n {\n bindGroup.destroy();\n });\n\n (this._ownedBindGroups as null) = null;\n\n this.resources = null;\n this.groups = null;\n }\n\n /**\n * A short hand function to create a shader based of a vertex and fragment shader.\n * @param options\n * @returns A shiny new PixiJS shader!\n */\n public static from(options: ShaderFromGroups): Shader;\n public static from(options: ShaderFromResources): Shader;\n public static from(options: ShaderFromGroups & ShaderFromResources): Shader\n {\n const { gpu, gl, ...rest } = options;\n\n let gpuProgram: GpuProgram;\n let glProgram: GlProgram;\n\n if (gpu)\n {\n gpuProgram = GpuProgram.from(gpu);\n }\n\n if (gl)\n {\n glProgram = GlProgram.from(gl);\n }\n\n return new Shader({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n}\n","// TODO eventually we should not use this bit, but instead use the localUniformBit\n// have the MSDF bit be merged in with the localUniformBit\n\nexport const localUniformMSDFBit = {\n name: 'local-uniform-msdf-bit',\n vertex: {\n header: /* wgsl */`\n struct LocalUniforms {\n uColor:vec4,\n uTransformMatrix:mat3x3,\n uDistance: f32,\n uRound:f32,\n }\n\n @group(2) @binding(0) var localUniforms : LocalUniforms;\n `,\n main: /* wgsl */`\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `,\n end: /* wgsl */`\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n fragment: {\n header: /* wgsl */`\n struct LocalUniforms {\n uColor:vec4,\n uTransformMatrix:mat3x3,\n uDistance: f32\n }\n\n @group(2) @binding(0) var localUniforms : LocalUniforms;\n `,\n main: /* wgsl */` \n outColor = vColor * calculateMSDFAlpha(outColor, localUniforms.uDistance);\n `\n\n }\n};\n\nexport const localUniformMSDFBitGl = {\n name: 'local-uniform-msdf-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `,\n main: /* glsl */`\n vColor *= uColor;\n modelMatrix *= uTransformMatrix;\n `,\n end: /* glsl */`\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n fragment: {\n header: /* glsl */`\n uniform float uDistance;\n `,\n main: /* glsl */` \n outColor = vColor * calculateMSDFAlpha(outColor, uDistance);\n `\n\n }\n};\n","export const mSDFBit = {\n name: 'msdf-bit',\n fragment: {\n header: /* wgsl */`\n fn calculateMSDFAlpha(msdfColor:vec4, distance:f32) -> f32 {\n \n // MSDF\n var median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n\n var screenPxDistance = distance * (median - 0.5);\n var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `,\n }\n\n};\n\nexport const mSDFBitGl = {\n name: 'msdf-bit',\n fragment: {\n header: /* glsl */`\n float calculateMSDFAlpha(vec4 msdfColor, float distance) {\n \n // MSDF\n float median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n \n float screenPxDistance = distance * (median - 0.5);\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n \n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `,\n }\n\n};\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const';\nimport {\n compileHighShaderGlProgram,\n compileHighShaderGpuProgram\n} from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { colorBit, colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit';\nimport {\n generateTextureBatchBit,\n generateTextureBatchBitGl\n} from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { batchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/batchSamplersUniformGroup';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { localUniformMSDFBit, localUniformMSDFBitGl } from './shader-bits/localUniformMSDFBit';\nimport { mSDFBit, mSDFBitGl } from './shader-bits/mSDFBit';\n\nexport class SdfShader extends Shader\n{\n constructor()\n {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4' },\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n uDistance: { value: 4, type: 'f32' },\n uRound: { value: 0, type: 'f32' },\n });\n\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'sdf-shader',\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformMSDFBit,\n mSDFBit,\n roundPixelsBit\n ]\n });\n\n const glProgram = compileHighShaderGlProgram({\n name: 'sdf-shader',\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n localUniformMSDFBitGl,\n mSDFBitGl,\n roundPixelsBitGl,\n ]\n });\n\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: batchSamplersUniformGroup,\n }\n });\n }\n}\n","import { Cache } from '../../assets/cache/Cache';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { Graphics } from '../graphics/shared/Graphics';\nimport { SdfShader } from '../text/sdfShader/SdfShader';\nimport { BitmapFontManager } from './BitmapFontManager';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderable } from '../../rendering/renderers/shared/Renderable';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { PoolItem } from '../../utils/pool/Pool';\nimport type { BitmapText } from './BitmapText';\n\nexport class BitmapTextPipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'bitmapText',\n } as const;\n\n private _renderer: Renderer;\n private _gpuBitmapText: Record = {};\n private _sdfShader: SdfShader;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public validateRenderable(bitmapText: BitmapText): boolean\n {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n\n if (bitmapText._didTextUpdate)\n {\n bitmapText._didTextUpdate = false;\n\n this._updateContext(bitmapText, graphicsRenderable);\n }\n\n return this._renderer.renderPipes.graphics.validateRenderable(graphicsRenderable);\n\n // TODO - need to shift all the verts in the graphicsData to the new anchor\n\n // update the anchor...\n }\n\n public addRenderable(bitmapText: BitmapText, instructionSet: InstructionSet)\n {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n\n // sync..\n syncWithProxy(bitmapText, graphicsRenderable);\n\n if (bitmapText._didTextUpdate)\n {\n bitmapText._didTextUpdate = false;\n\n this._updateContext(bitmapText, graphicsRenderable);\n }\n\n this._renderer.renderPipes.graphics.addRenderable(graphicsRenderable, instructionSet);\n\n if (graphicsRenderable.context.customShader)\n {\n this._updateDistanceField(bitmapText);\n }\n }\n\n public destroyRenderable(bitmapText: BitmapText)\n {\n this._destroyRenderableByUid(bitmapText.uid);\n }\n\n private _destroyRenderableByUid(renderableUid: number)\n {\n BigPool.return(this._gpuBitmapText[renderableUid] as PoolItem);\n this._gpuBitmapText[renderableUid] = null;\n }\n\n public updateRenderable(bitmapText: BitmapText)\n {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n\n // sync..\n syncWithProxy(bitmapText, graphicsRenderable);\n\n this._renderer.renderPipes.graphics.updateRenderable(graphicsRenderable);\n\n if (graphicsRenderable.context.customShader)\n {\n this._updateDistanceField(bitmapText);\n }\n }\n\n private _updateContext(bitmapText: BitmapText, proxyGraphics: Graphics)\n {\n const { context } = proxyGraphics;\n\n const bitmapFont = BitmapFontManager.getFont(bitmapText.text, bitmapText._style);\n\n context.clear();\n\n if (bitmapFont.distanceField.type !== 'none')\n {\n if (!context.customShader)\n {\n if (!this._sdfShader)\n {\n this._sdfShader = new SdfShader();\n }\n\n context.customShader = this._sdfShader;\n }\n }\n\n const chars = Array.from(bitmapText.text);\n const style = bitmapText._style;\n\n let currentY = (style._stroke?.width || 0) / 2;\n\n currentY += bitmapFont.baseLineOffset;\n\n // measure our text...\n const bitmapTextLayout = getBitmapTextLayout(chars, style, bitmapFont);\n\n let index = 0;\n\n const padding = style.padding;\n const scale = bitmapTextLayout.scale;\n\n context\n .translate(\n (-bitmapText._anchor._x * bitmapTextLayout.width) - padding,\n (-bitmapText._anchor._y * (bitmapTextLayout.height + bitmapTextLayout.offsetY)) - padding)\n .scale(scale, scale);\n\n const tint = style._fill.color;\n\n for (let i = 0; i < bitmapTextLayout.lines.length; i++)\n {\n const line = bitmapTextLayout.lines[i];\n\n for (let j = 0; j < line.charPositions.length; j++)\n {\n const char = chars[index++];\n\n const charData = bitmapFont.chars[char];\n\n if (charData?.texture)\n {\n context.texture(\n charData.texture,\n tint ? tint : 'black',\n Math.round(line.charPositions[j] + charData.xOffset),\n Math.round(currentY + charData.yOffset),\n );\n }\n }\n\n currentY += bitmapFont.lineHeight;\n }\n }\n\n private _getGpuBitmapText(bitmapText: BitmapText)\n {\n return this._gpuBitmapText[bitmapText.uid] || this.initGpuText(bitmapText);\n }\n\n public initGpuText(bitmapText: BitmapText)\n {\n // TODO we could keep a bunch of contexts around and reuse one that hav the same style!\n const proxyRenderable = BigPool.get(Graphics);\n\n this._gpuBitmapText[bitmapText.uid] = proxyRenderable;\n\n this._updateContext(bitmapText, proxyRenderable);\n\n bitmapText.on('destroyed', () =>\n {\n this.destroyRenderable(bitmapText);\n });\n\n return this._gpuBitmapText[bitmapText.uid];\n }\n\n private _updateDistanceField(bitmapText: BitmapText)\n {\n const context = this._getGpuBitmapText(bitmapText).context;\n\n const fontFamily = bitmapText._style.fontFamily as string;\n const dynamicFont = Cache.get(`${fontFamily as string}-bitmap`);\n\n // Inject the shader code with the correct value\n const { a, b, c, d } = bitmapText.groupTransform;\n\n const dx = Math.sqrt((a * a) + (b * b));\n const dy = Math.sqrt((c * c) + (d * d));\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n\n const fontScale = dynamicFont.baseRenderedFontSize / bitmapText._style.fontSize;\n\n const resolution = bitmapText.resolution ?? this._renderer.resolution;\n const distance = worldScale * dynamicFont.distanceField.range * (1 / fontScale) * resolution;\n\n context.customShader.resources.localUniforms.uniforms.uDistance = distance;\n }\n\n public destroy()\n {\n for (const uid in this._gpuBitmapText)\n {\n this._destroyRenderableByUid(uid as unknown as number);\n }\n\n this._gpuBitmapText = null;\n\n this._sdfShader?.destroy(true);\n this._sdfShader = null;\n\n this._renderer = null;\n }\n}\n\nfunction syncWithProxy(container: Renderable, proxy: Renderable)\n{\n proxy.groupTransform = container.groupTransform;\n proxy.groupColorAlpha = container.groupColorAlpha;\n proxy.groupColor = container.groupColor;\n proxy.groupBlendMode = container.groupBlendMode;\n proxy.globalDisplayStatus = container.globalDisplayStatus;\n proxy.groupTransform = container.groupTransform;\n proxy.localDisplayStatus = container.localDisplayStatus;\n proxy.groupAlpha = container.groupAlpha;\n proxy._roundPixels = container._roundPixels;\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { bitmapFontCachePlugin, loadBitmapFont } from './asset/loadBitmapFont';\nimport { BitmapTextPipe } from './BitmapTextPipe';\n\nextensions.add(BitmapTextPipe, loadBitmapFont, bitmapFontCachePlugin);\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { BatchableSprite } from '../sprite/BatchableSprite';\n\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { HTMLText } from './HTMLText';\nimport type { HTMLTextStyle } from './HtmlTextStyle';\n\nexport class HTMLTextPipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'htmlText',\n } as const;\n\n private _renderer: Renderer;\n\n private _gpuText: Record = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public validateRenderable(htmlText: HTMLText): boolean\n {\n const gpuText = this._getGpuText(htmlText);\n\n const newKey = htmlText._getKey();\n\n if (gpuText.textureNeedsUploading)\n {\n gpuText.textureNeedsUploading = false;\n\n return true;\n }\n\n if (gpuText.currentKey !== newKey)\n {\n // TODO - could look into optimising this a tad!\n // if its a single texture, then we could just swap it?\n // same for CanvasText..\n return true;\n }\n\n return false;\n }\n\n public addRenderable(htmlText: HTMLText)\n {\n const gpuText = this._getGpuText(htmlText);\n\n const batchableSprite = gpuText.batchableSprite;\n\n if (htmlText._didTextUpdate)\n {\n this._updateText(htmlText);\n }\n\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n\n public updateRenderable(htmlText: HTMLText)\n {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n\n if (htmlText._didTextUpdate)\n {\n this._updateText(htmlText);\n }\n\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n\n public destroyRenderable(htmlText: HTMLText)\n {\n this._destroyRenderableById(htmlText.uid);\n }\n\n private _destroyRenderableById(htmlTextUid: number)\n {\n const gpuText = this._gpuText[htmlTextUid];\n\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n\n BigPool.return(gpuText.batchableSprite);\n\n this._gpuText[htmlTextUid] = null;\n }\n\n private _updateText(htmlText: HTMLText)\n {\n const newKey = htmlText._getKey();\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n\n if (gpuText.currentKey !== newKey)\n {\n this._updateGpuText(htmlText).catch((e) =>\n {\n console.error(e);\n });\n }\n\n htmlText._didTextUpdate = false;\n\n const padding = htmlText._style.padding;\n\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n\n private async _updateGpuText(htmlText: HTMLText)\n {\n htmlText._didTextUpdate = false;\n\n const gpuText = this._getGpuText(htmlText);\n\n if (gpuText.generatingTexture) return;\n\n const newKey = htmlText._getKey();\n\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n\n gpuText.generatingTexture = true;\n\n gpuText.currentKey = newKey;\n\n const resolution = htmlText.resolution ?? this._renderer.resolution;\n\n const texture = await this._renderer.htmlText.getManagedTexture(\n htmlText.text,\n resolution,\n htmlText._style as HTMLTextStyle,\n htmlText._getKey()\n );\n\n const batchableSprite = gpuText.batchableSprite;\n\n batchableSprite.texture = gpuText.texture = texture;\n\n gpuText.generatingTexture = false;\n\n gpuText.textureNeedsUploading = true;\n htmlText.onViewUpdate();\n\n const padding = htmlText._style.padding;\n\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n\n private _getGpuText(htmlText: HTMLText)\n {\n return this._gpuText[htmlText.uid] || this.initGpuText(htmlText);\n }\n\n public initGpuText(htmlText: HTMLText)\n {\n const gpuTextData: HTMLTextPipe['_gpuText'][number] = {\n texture: Texture.EMPTY,\n currentKey: '--',\n batchableSprite: BigPool.get(BatchableSprite),\n textureNeedsUploading: false,\n generatingTexture: false,\n };\n\n const batchableSprite = gpuTextData.batchableSprite;\n\n batchableSprite.renderable = htmlText;\n batchableSprite.texture = Texture.EMPTY;\n batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n batchableSprite.roundPixels = (this._renderer._roundPixels | htmlText._roundPixels) as 0 | 1;\n\n this._gpuText[htmlText.uid] = gpuTextData;\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n htmlText.on('destroyed', () =>\n {\n this.destroyRenderable(htmlText);\n });\n\n return gpuTextData;\n }\n\n public destroy()\n {\n for (const i in this._gpuText)\n {\n this._destroyRenderableById(i as unknown as number);\n }\n\n this._gpuText = null;\n this._renderer = null;\n }\n}\n\n","import { DOMAdapter } from '../../environment/adapter';\n\nexport function isSafari(): boolean\n{\n const { userAgent } = DOMAdapter.get().getNavigator();\n\n return (/^((?!chrome|android).)*safari/i).test(userAgent);\n}\n","import type { CanvasAndContext } from '../../rendering/renderers/shared/texture/CanvasPool';\n\nexport const nssvg = 'http://www.w3.org/2000/svg';\nexport const nsxhtml = 'http://www.w3.org/1999/xhtml';\n\nexport class HTMLTextRenderData\n{\n public svgRoot = document.createElementNS(nssvg, 'svg');\n public foreignObject = document.createElementNS(nssvg, 'foreignObject');\n public domElement = document.createElementNS(nsxhtml, 'div');\n public styleElement = document.createElementNS(nsxhtml, 'style');\n public image = new Image();\n public canvasAndContext?: CanvasAndContext;\n\n constructor()\n {\n const { foreignObject, svgRoot, styleElement, domElement } = this;\n // Arbitrary max size\n\n foreignObject.setAttribute('width', '10000');\n foreignObject.setAttribute('height', '10000');\n foreignObject.style.overflow = 'hidden';\n\n svgRoot.appendChild(foreignObject);\n\n foreignObject.appendChild(styleElement);\n foreignObject.appendChild(domElement);\n }\n}\n","import { Color } from '../../../color/Color';\n\nimport type { StrokeStyle } from '../../graphics/shared/GraphicsContext';\nimport type { TextStyle } from '../../text/TextStyle';\nimport type { HTMLTextStyle, HTMLTextStyleOptions } from '../HtmlTextStyle';\n\n/**\n * Internally converts all of the style properties into CSS equivalents.\n * @param style\n * @returns The CSS style string, for setting `style` property of root HTMLElement.\n */\nexport function textStyleToCSS(style: HTMLTextStyle): string\n{\n const stroke = style._stroke;\n const fill = style._fill;\n\n const cssStyleString = [\n `color: ${Color.shared.setValue(fill.color).toHex()}`,\n `font-size: ${(style.fontSize as number)}px`,\n `font-family: ${style.fontFamily}`,\n `font-weight: ${style.fontWeight}`,\n `font-style: ${style.fontStyle}`,\n `font-variant: ${style.fontVariant}`,\n `letter-spacing: ${style.letterSpacing}px`,\n `text-align: ${style.align}`,\n `padding: ${style.padding}px`,\n `white-space: ${(style.whiteSpace === 'pre' && style.wordWrap) ? 'pre-wrap' : style.whiteSpace}`,\n ...style.lineHeight ? [`line-height: ${style.lineHeight}px`] : [],\n ...style.wordWrap ? [\n `word-wrap: ${style.breakWords ? 'break-all' : 'break-word'}`,\n `max-width: ${style.wordWrapWidth}px`\n ] : [],\n ...stroke ? [strokeToCSS(stroke)] : [],\n ...style.dropShadow ? [dropShadowToCSS(style.dropShadow)] : [],\n ...style.cssOverrides,\n ].join(';');\n\n const cssStyles = [`div { ${cssStyleString} }`];\n\n tagStyleToCSS(style.tagStyles, cssStyles);\n\n return cssStyles.join(' ');\n}\n\nfunction dropShadowToCSS(dropShadowStyle: TextStyle['dropShadow']): string\n{\n const color = Color.shared.setValue(dropShadowStyle.color).setAlpha(dropShadowStyle.alpha).toHexa();\n const x = Math.round(Math.cos(dropShadowStyle.angle) * dropShadowStyle.distance);\n const y = Math.round(Math.sin(dropShadowStyle.angle) * dropShadowStyle.distance);\n\n const position = `${x}px ${y}px`;\n\n if (dropShadowStyle.blur > 0)\n {\n return `text-shadow: ${position} ${dropShadowStyle.blur}px ${color}`;\n }\n\n return `text-shadow: ${position} ${color}`;\n}\n\nfunction strokeToCSS(stroke: StrokeStyle): string\n{\n return [\n `-webkit-text-stroke-width: ${stroke.width}px`,\n `-webkit-text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n `text-stroke-width: ${stroke.width}px`,\n `text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n 'paint-order: stroke',\n ].join(';');\n}\n\n/** Converts the tag styles into CSS. */\nconst templates = {\n fontSize: `font-size: {{VALUE}}px`,\n fontFamily: `font-family: {{VALUE}}`,\n fontWeight: `font-weight: {{VALUE}}`,\n fontStyle: `font-style: {{VALUE}}`,\n fontVariant: `font-variant: {{VALUE}}`,\n letterSpacing: `letter-spacing: {{VALUE}}px`,\n align: `text-align: {{VALUE}}`,\n padding: `padding: {{VALUE}}px`,\n whiteSpace: `white-space: {{VALUE}}`,\n lineHeight: `line-height: {{VALUE}}px`,\n wordWrapWidth: `max-width: {{VALUE}}px`,\n};\n\n/** Converts the tag styles into CSS if modifications are required */\nconst transform = {\n fill: (value: string) => `color: ${Color.shared.setValue(value).toHex()}`,\n breakWords: (value: string) => `word-wrap: ${value ? 'break-all' : 'break-word'}`,\n stroke: strokeToCSS,\n dropShadow: dropShadowToCSS\n};\n\nfunction tagStyleToCSS(tagStyles: Record, out: string[])\n{\n for (const i in tagStyles)\n {\n const tagStyle = tagStyles[i];\n const cssTagStyle = [];\n\n for (const j in tagStyle)\n {\n if (transform[j as keyof typeof transform])\n {\n // eslint-disable-next-line max-len\n cssTagStyle.push(transform[j as keyof typeof transform](tagStyle[j as keyof HTMLTextStyleOptions] as any));\n }\n else if (templates[j as keyof typeof templates])\n {\n // eslint-disable-next-line max-len\n cssTagStyle.push(templates[j as keyof typeof templates].replace('{{VALUE}}', tagStyle[j as keyof HTMLTextStyleOptions] as any));\n }\n }\n\n out.push(`${i} { ${cssTagStyle.join(';')} }`);\n }\n}\n","/* eslint-disable accessor-pairs */\nimport { warn } from '../../utils/logging/warn';\nimport { TextStyle } from '../text/TextStyle';\nimport { generateTextStyleKey } from '../text/utils/generateTextStyleKey';\nimport { textStyleToCSS } from './utils/textStyleToCSS';\n\nimport type { FillStyleInputs } from '../graphics/shared/GraphicsContext';\nimport type { TextStyleOptions } from '../text/TextStyle';\n\n/**\n * Options for HTML text style, extends {@link TextStyle}.\n * @memberof text\n * @extends text.TextStyleOptions\n * @property {string[]} [cssOverrides] - CSS style(s) to add.\n * @property {Record} [tagStyles] - Tag styles.\n */\nexport interface HTMLTextStyleOptions extends Omit\n{\n cssOverrides?: string[];\n tagStyles?: Record;\n}\n\n/**\n * A TextStyle object rendered by the HTMLTextSystem.\n * @memberof text\n */\nexport class HTMLTextStyle extends TextStyle\n{\n private _cssOverrides: string[] = [];\n private _cssStyle: string;\n /**\n * List of styles per tag.\n * @example\n * new HTMLText({\n * text:'Red,Blue,Green',\n * style:{\n * fontFamily: 'DM Sans',\n * fill: 'white',\n * fontSize:100,\n * tagStyles:{\n * red:{\n * fill:'red',\n * },\n * blue:{\n * fill:'blue',\n * },\n * green:{\n * fill:'green',\n * }\n * }\n * }\n * );\n */\n public tagStyles: Record;\n\n constructor(options: HTMLTextStyleOptions = {})\n {\n super(options);\n\n this.cssOverrides ??= options.cssOverrides;\n this.tagStyles = options.tagStyles ?? {};\n }\n\n /** List of style overrides that will be applied to the HTML text. */\n set cssOverrides(value: string | string[])\n {\n this._cssOverrides = value instanceof Array ? value : [value];\n this.update();\n }\n\n get cssOverrides(): string[]\n {\n return this._cssOverrides;\n }\n\n protected override _generateKey(): string\n {\n this._styleKey = generateTextStyleKey(this) + this._cssOverrides.join('-');\n\n return this._styleKey;\n }\n\n public update()\n {\n this._cssStyle = null;\n super.update();\n }\n\n /**\n * Creates a new HTMLTextStyle object with the same values as this one.\n * @returns New cloned HTMLTextStyle object\n */\n public clone(): HTMLTextStyle\n {\n return new HTMLTextStyle({\n align: this.align,\n breakWords: this.breakWords,\n dropShadow: this.dropShadow,\n fill: this._fill,\n fontFamily: this.fontFamily,\n fontSize: this.fontSize,\n fontStyle: this.fontStyle,\n fontVariant: this.fontVariant,\n fontWeight: this.fontWeight,\n letterSpacing: this.letterSpacing,\n lineHeight: this.lineHeight,\n padding: this.padding,\n stroke: this._stroke,\n whiteSpace: this.whiteSpace,\n wordWrap: this.wordWrap,\n wordWrapWidth: this.wordWrapWidth,\n cssOverrides: this.cssOverrides,\n });\n }\n\n get cssStyle(): string\n {\n if (!this._cssStyle)\n {\n this._cssStyle = textStyleToCSS(this);\n }\n\n return this._cssStyle;\n }\n\n /**\n * Add a style override, this can be any CSS property\n * it will override any built-in style. This is the\n * property and the value as a string (e.g., `color: red`).\n * This will override any other internal style.\n * @param {string} value - CSS style(s) to add.\n * @example\n * style.addOverride('background-color: red');\n */\n public addOverride(...value: string[]): void\n {\n const toAdd = value.filter((v) => !this.cssOverrides.includes(v));\n\n if (toAdd.length > 0)\n {\n this.cssOverrides.push(...toAdd);\n this.update();\n }\n }\n\n /**\n * Remove any overrides that match the value.\n * @param {string} value - CSS style to remove.\n * @example\n * style.removeOverride('background-color: red');\n */\n public removeOverride(...value: string[]): void\n {\n const toRemove = value.filter((v) => this.cssOverrides.includes(v));\n\n if (toRemove.length > 0)\n {\n this.cssOverrides = this.cssOverrides.filter((v) => !toRemove.includes(v));\n this.update();\n }\n }\n\n override set fill(value: FillStyleInputs)\n {\n // if its not a string or a number, then its a texture!\n if (typeof value !== 'string' && typeof value !== 'number')\n {\n // #if _DEBUG\n warn('[HTMLTextStyle] only color fill is not supported by HTMLText');\n // #endif\n }\n\n super.fill = value;\n }\n\n override set stroke(value: FillStyleInputs)\n {\n // if its not a string or a number, then its a texture!\n if (value && typeof value !== 'string' && typeof value !== 'number')\n {\n // #if _DEBUG\n warn('[HTMLTextStyle] only color stroke is not supported by HTMLText');\n // #endif\n }\n\n super.stroke = value;\n }\n}\n","import type { HTMLTextStyle } from '../HtmlTextStyle';\n\n/**\n * Extracts font families from text. It will extract font families from the style, tagStyles and any font families\n * embedded in the text. It should also strip out duplicates as it goes.\n * @param text - The text to extract font families from\n * @param style - The style to extract font families from\n * @returns {string[]} - The font families as an array of strings\n */\nexport function extractFontFamilies(text: string, style: HTMLTextStyle): string[]\n{\n const fontFamily = style.fontFamily;\n const fontFamilies: string[] = [];\n const dedupe: Record = {};\n\n // first ensure fonts are loaded inline..\n // find any font..\n const regex = /font-family:([^;\"\\s]+)/g;\n\n const matches = text.match(regex);\n\n function addFontFamily(fontFamily: string)\n {\n if (!dedupe[fontFamily])\n {\n fontFamilies.push(fontFamily);\n\n dedupe[fontFamily] = true;\n }\n }\n\n if (Array.isArray(fontFamily))\n {\n for (let i = 0; i < fontFamily.length; i++)\n {\n addFontFamily(fontFamily[i]);\n }\n }\n else\n {\n addFontFamily(fontFamily);\n }\n\n if (matches)\n {\n matches.forEach((match) =>\n {\n const fontFamily = match.split(':')[1].trim();\n\n addFontFamily(fontFamily);\n });\n }\n\n for (const i in style.tagStyles)\n {\n const fontFamily = style.tagStyles[i].fontFamily;\n\n addFontFamily(fontFamily as string);\n }\n\n return fontFamilies;\n}\n","import { DOMAdapter } from '../../../environment/adapter';\n\n/**\n * Resolves a font url to a base64 string\n * @param url - The url to load the font from\n * @returns - The font as a base64 string\n */\nexport async function loadFontAsBase64(url: string): Promise\n{\n const response = await DOMAdapter.get().fetch(url);\n\n const blob = await response.blob();\n\n const reader = new FileReader();\n\n const dataSrc: string = await new Promise((resolve, reject) =>\n {\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n\n return dataSrc;\n}\n","import { loadFontAsBase64 } from './loadFontAsBase64';\n\nexport interface FontCSSStyleOptions\n{\n fontFamily: string | string[]\n fontWeight: string\n fontStyle: string\n}\n\n/**\n * This will take a font url and a style and return a css string that can be injected into a style tag\n * This will contain inlined base64 font and the font family information\n * @param style - the style to generate the css for\n * @param url - The url to load the font from\n * @returns - The css string\n */\nexport async function loadFontCSS(style: FontCSSStyleOptions, url: string): Promise\n{\n const dataSrc = await loadFontAsBase64(url);\n\n return `@font-face {\n font-family: \"${style.fontFamily}\";\n src: url('${dataSrc}');\n font-weight: ${style.fontWeight};\n font-style: ${style.fontStyle};\n }`;\n}\n","import { Cache } from '../../../assets/cache/Cache';\nimport { loadFontCSS } from './loadFontCSS';\n\nimport type { FontCSSStyleOptions } from './loadFontCSS';\n\nexport const FontStylePromiseCache = new Map>();\n\n/**\n * takes the font families and returns a css string that can be injected into a style tag\n * It will contain the font families and the font urls encoded as base64\n * @param fontFamilies - The font families to load\n * @param style - The FontCSSStyleOptions to load the font with (used for the first font family)\n * @param defaultOptions - The default options to load the font with (used for the rest of the font families)\n * @param defaultOptions.fontWeight - The default font weight\n * @param defaultOptions.fontStyle - The default font style\n * @returns - The css string\n */\nexport async function getFontCss(\n fontFamilies: string[],\n style: FontCSSStyleOptions,\n defaultOptions: {fontWeight: string, fontStyle: string}\n)\n{\n const fontPromises = fontFamilies\n .filter((fontFamily) => Cache.has(`${fontFamily}-and-url`))\n .map((fontFamily, i) =>\n {\n if (!FontStylePromiseCache.has(fontFamily))\n {\n const { url } = Cache.get(`${fontFamily}-and-url`);\n\n if (i === 0)\n {\n FontStylePromiseCache.set(fontFamily, loadFontCSS(style, url));\n }\n\n else\n {\n FontStylePromiseCache.set(fontFamily, loadFontCSS({\n fontWeight: defaultOptions.fontWeight,\n fontStyle: defaultOptions.fontStyle,\n fontFamily,\n }, url));\n }\n }\n\n return FontStylePromiseCache.get(fontFamily);\n });\n\n return (await Promise.all(fontPromises)).join('\\n');\n}\n","import type { HTMLTextRenderData } from '../HTMLTextRenderData';\nimport type { HTMLTextStyle } from '../HtmlTextStyle';\n\n/**\n * takes all the data and returns a svg url string can be loaded by an image element\n * @param text - The text to measure\n * @param style - The style to use\n * @param resolution - The resolution to use\n * @param fontCSS - The font css to use\n * @param htmlTextData - The HTMLTextRenderData to write the SVG to\n * @returns - The SVG as a url string\n */\nexport function getSVGUrl(\n text: string,\n style: HTMLTextStyle,\n resolution: number,\n fontCSS: string,\n htmlTextData: HTMLTextRenderData\n)\n{\n const { domElement, styleElement, svgRoot } = htmlTextData;\n\n domElement.innerHTML = `
${text}
`;\n domElement.setAttribute('style', `transform: scale(${resolution});transform-origin: top left; display: inline-block`);\n styleElement.textContent = fontCSS;\n\n const { width, height } = htmlTextData.image;\n\n svgRoot.setAttribute('width', width.toString());\n svgRoot.setAttribute('height', height.toString());\n\n return new XMLSerializer().serializeToString(svgRoot);\n}\n","import { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool';\n\n/**\n * This function converts an image to a canvas, and returns the canvas.\n * It is used to convert images to canvases to work around a CORS issue where WebGPU cannot\n * upload an SVGImage to a texture.\n *\n * It uses the CanvasPool to get an optimal canvas and context, and then draws the image onto it.\n * This canvas is immediately returned to the CanvasPool for reuse, so use the result straight away!\n * (eg upload it to the GPU!)\n * @param image - The image to convert to a canvas.\n * @param resolution - The resolution of the canvas.\n */\nexport function getTemporaryCanvasFromImage(image: HTMLImageElement, resolution: number): HTMLCanvasElement\n{\n // Get an optimal canvas and context from the CanvasPool, based on the\n // dimensions of the image and the desired resolution.\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(\n image.width,\n image.height,\n resolution\n );\n\n // Clear the context of the canvas, and draw the image onto it.\n const { context } = canvasAndContext;\n\n context.clearRect(0, 0, image.width, image.height);\n context.drawImage(image, 0, 0);\n\n // Return the canvas and context to the CanvasPool.\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n\n // Return the canvas.\n return canvasAndContext.canvas as HTMLCanvasElement;\n}\n\n","/**\n * This function loads an SVG image into an HTMLImageElement.\n * The image can then be uploaded as texture to the GPU.\n * iOS has a bug where embedded fonts are not available immediately after the image loads,\n * so we wait an arbitrary amount of time before resolving the promise.\n * @param image - The image to load the SVG into\n * @param url - The url to load the SVG from\n * @param delay - Whether to delay the load\n * @returns - A promise that resolves when the image has loaded\n */\nexport function loadSVGImage(image: HTMLImageElement, url: string, delay: boolean)\n{\n return new Promise(async (resolve) =>\n {\n // Safari has a known bug where embedded fonts are not available\n // immediately after the image loads, to compensate we wait an\n // arbitrary amount of time\n // @see https://bugs.webkit.org/show_bug.cgi?id=219770\n if (delay)\n {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n image.onload = () =>\n {\n resolve();\n };\n\n image.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(url)}`;\n image.crossOrigin = 'anonymous';\n });\n}\n","import { CanvasTextMetrics } from '../../text/canvas/CanvasTextMetrics';\nimport { HTMLTextRenderData } from '../HTMLTextRenderData';\n\nimport type { Size } from '../../../maths/misc/Size';\nimport type { HTMLTextStyle } from '../HtmlTextStyle';\n\nlet tempHTMLTextRenderData: HTMLTextRenderData;\n\n/**\n * Measures the HTML text without actually generating an image.\n * This is used to calculate the size of the text.\n * @param text - The text to measure\n * @param style - The style to use\n * @param fontStyleCSS - The font css to use\n * @param htmlTextRenderData - The HTMLTextRenderData to write the SVG to\n * @returns - The size of the text\n */\nexport function measureHtmlText(\n text: string,\n style: HTMLTextStyle,\n fontStyleCSS?: string,\n htmlTextRenderData?: HTMLTextRenderData\n): Size\n{\n htmlTextRenderData = htmlTextRenderData || tempHTMLTextRenderData || (tempHTMLTextRenderData = new HTMLTextRenderData());\n\n const { domElement, styleElement, svgRoot } = htmlTextRenderData;\n\n domElement.innerHTML = `
${text}
`;\n\n domElement.setAttribute('style', 'transform-origin: top left; display: inline-block');\n\n if (fontStyleCSS)\n {\n styleElement.textContent = fontStyleCSS;\n }\n\n // Measure the contents using the shadow DOM\n document.body.appendChild(svgRoot);\n\n const contentBounds = domElement.getBoundingClientRect();\n\n svgRoot.remove();\n\n const descenderPadding = CanvasTextMetrics.measureFont(style.fontStyle).descent;\n\n return {\n width: contentBounds.width,\n height: contentBounds.height + descenderPadding,\n };\n}\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool';\nimport { type Renderer, RendererType } from '../../rendering/renderers/types';\nimport { isSafari } from '../../utils/browser/isSafari';\nimport { warn } from '../../utils/logging/warn';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { getPo2TextureFromSource } from '../text/utils/getPo2TextureFromSource';\nimport { HTMLTextRenderData } from './HTMLTextRenderData';\nimport { HTMLTextStyle } from './HtmlTextStyle';\nimport { extractFontFamilies } from './utils/extractFontFamilies';\nimport { getFontCss } from './utils/getFontCss';\nimport { getSVGUrl } from './utils/getSVGUrl';\nimport { getTemporaryCanvasFromImage } from './utils/getTemporaryCanvasFromImage';\nimport { loadSVGImage } from './utils/loadSVGImage';\nimport { measureHtmlText } from './utils/measureHtmlText';\n\nimport type { System } from '../../rendering/renderers/shared/system/System';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { PoolItem } from '../../utils/pool/Pool';\nimport type { HTMLTextOptions } from './HTMLText';\nimport type { FontCSSStyleOptions } from './utils/loadFontCSS';\n\ninterface HTMLTextTexture\n{\n texture: Texture,\n usageCount: number,\n promise: Promise,\n}\n\n/**\n * System plugin to the renderer to manage HTMLText\n * @memberof rendering\n */\nexport class HTMLTextSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'htmlText',\n } as const;\n\n public static defaultFontOptions: FontCSSStyleOptions = {\n fontFamily: 'Arial',\n fontStyle: 'normal',\n fontWeight: 'normal',\n };\n\n private _activeTextures: Record = {};\n\n /**\n * WebGPU has a cors issue when uploading an image that is an SVGImage\n * To get around this we need to create a canvas draw the image to it and upload that instead.\n * Bit of a shame.. but no other work around just yet!\n */\n private readonly _createCanvas: boolean;\n private readonly _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n this._createCanvas = renderer.type === RendererType.WEBGPU;\n }\n\n public getTexture(options: HTMLTextOptions): Promise\n {\n return this._buildTexturePromise(\n options.text as string,\n options.resolution,\n options.style as HTMLTextStyle\n );\n }\n\n public getManagedTexture(\n text: string,\n resolution: number,\n style: HTMLTextStyle,\n textKey: string\n ): Promise\n {\n if (this._activeTextures[textKey])\n {\n this._increaseReferenceCount(textKey);\n\n return this._activeTextures[textKey].promise;\n }\n\n const promise = this._buildTexturePromise(text, resolution, style)\n .then((texture) =>\n {\n this._activeTextures[textKey].texture = texture;\n\n return texture;\n });\n\n this._activeTextures[textKey] = {\n texture: null,\n promise,\n usageCount: 1,\n };\n\n return promise;\n }\n\n private async _buildTexturePromise(\n text: string,\n resolution: number,\n style: HTMLTextStyle,\n )\n {\n const htmlTextData = BigPool.get(HTMLTextRenderData);\n const fontFamilies = extractFontFamilies(text, style);\n const fontCSS = await getFontCss(\n fontFamilies,\n style,\n HTMLTextStyle.defaultTextStyle as {fontWeight: string, fontStyle: string}\n );\n const measured = measureHtmlText(text, style, fontCSS, htmlTextData);\n\n const width = Math.ceil(Math.ceil((Math.max(1, measured.width) + (style.padding * 2))) * resolution);\n const height = Math.ceil(Math.ceil((Math.max(1, measured.height) + (style.padding * 2))) * resolution);\n\n const image = htmlTextData.image;\n\n image.width = width | 0;\n image.height = height | 0;\n\n const svgURL = getSVGUrl(text, style, resolution, fontCSS, htmlTextData);\n\n await loadSVGImage(image, svgURL, isSafari() && fontFamilies.length > 0);\n\n let resource: HTMLImageElement | HTMLCanvasElement = image;\n\n if (this._createCanvas)\n {\n // silly webGPU workaround..\n resource = getTemporaryCanvasFromImage(image, resolution);\n }\n\n const texture = getPo2TextureFromSource(resource, image.width, image.height, resolution);\n\n if (this._createCanvas)\n {\n this._renderer.texture.initSource(texture.source);\n }\n\n BigPool.return(htmlTextData as PoolItem);\n\n return texture;\n }\n\n private _increaseReferenceCount(textKey: string)\n {\n this._activeTextures[textKey].usageCount++;\n }\n\n public decreaseReferenceCount(textKey: string)\n {\n const activeTexture = this._activeTextures[textKey];\n\n // TODO SHOULD NOT BE NEEDED\n if (!activeTexture) return;\n\n activeTexture.usageCount--;\n\n if (activeTexture.usageCount === 0)\n {\n if (activeTexture.texture)\n {\n this._cleanUp(activeTexture);\n }\n else\n {\n // we did not resolve...\n activeTexture.promise.then((texture) =>\n {\n activeTexture.texture = texture;\n\n this._cleanUp(activeTexture);\n }).catch(() =>\n {\n // #if _DEBUG\n warn('HTMLTextSystem: Failed to clean texture');\n // #endif\n });\n }\n\n this._activeTextures[textKey] = null;\n }\n }\n\n private _cleanUp(activeTexture: HTMLTextTexture)\n {\n TexturePool.returnTexture(activeTexture.texture);\n activeTexture.texture.source.resource = null;\n activeTexture.texture.source.uploadMethodId = 'unknown';\n }\n\n public getReferenceCount(textKey: string)\n {\n return this._activeTextures[textKey].usageCount;\n }\n\n public destroy(): void\n {\n this._activeTextures = null;\n }\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { HTMLTextPipe } from './HTMLTextPipe';\nimport { HTMLTextSystem } from './HTMLTextSystem';\n\nextensions.add(HTMLTextSystem);\nextensions.add(HTMLTextPipe);\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\n\nimport type { Topology } from '../../../rendering/renderers/shared/geometry/const';\nimport type { BatchMode } from '../../graphics/shared/GraphicsContext';\n\n/**\n * Options for the mesh geometry.\n * @memberof scene\n */\nexport interface MeshGeometryOptions\n{\n /** The positions of the mesh. */\n positions?: Float32Array;\n /** The UVs of the mesh. */\n uvs?: Float32Array;\n /** The indices of the mesh. */\n indices?: Uint32Array;\n /** The topology of the mesh. */\n topology?: Topology;\n /** Whether to shrink the buffers to fit the data. */\n shrinkBuffersToFit?: boolean;\n}\n\n/**\n * A geometry used to batch multiple meshes with the same texture.\n * @memberof scene\n */\nexport class MeshGeometry extends Geometry\n{\n public static defaultOptions: MeshGeometryOptions = {\n topology: 'triangle-list',\n shrinkBuffersToFit: false,\n };\n\n public batchMode: BatchMode = 'auto';\n\n /**\n * @param {scene.MeshGeometryOptions} options - The options of the mesh geometry.\n */\n constructor(options: MeshGeometryOptions);\n /** @deprecated since 8.0.0 */\n constructor(positions: Float32Array, uvs: Float32Array, indices: Uint32Array);\n constructor(...args: [MeshGeometryOptions] | [Float32Array, Float32Array, Uint32Array])\n {\n let options = args[0] ?? {};\n\n if (options instanceof Float32Array)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'use new MeshGeometry({ positions, uvs, indices }) instead');\n // #endif\n\n options = {\n positions: options,\n uvs: args[1],\n indices: args[2],\n };\n }\n\n options = { ...MeshGeometry.defaultOptions, ...options };\n\n const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const uvs = options.uvs || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]);\n\n const shrinkToFit = options.shrinkBuffersToFit;\n\n const positionBuffer = new Buffer({\n data: positions,\n label: 'attribute-mesh-positions',\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n });\n\n const uvBuffer = new Buffer({\n data: uvs,\n label: 'attribute-mesh-uvs',\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,\n });\n\n const indexBuffer = new Buffer({\n data: indices,\n label: 'index-mesh-buffer',\n shrinkToFit,\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST,\n });\n\n super({\n attributes: {\n aPosition: {\n buffer: positionBuffer,\n format: 'float32x2',\n stride: 2 * 4,\n offset: 0,\n },\n aUV: {\n buffer: uvBuffer,\n format: 'float32x2',\n stride: 2 * 4,\n offset: 0,\n },\n },\n indexBuffer,\n topology: options.topology,\n });\n }\n\n /** The positions of the mesh. */\n get positions(): Float32Array\n {\n return this.attributes.aPosition.buffer.data as Float32Array;\n }\n\n set positions(value: Float32Array)\n {\n this.attributes.aPosition.buffer.data = value;\n }\n\n /** The UVs of the mesh. */\n get uvs(): Float32Array\n {\n return this.attributes.aUV.buffer.data as Float32Array;\n }\n\n set uvs(value: Float32Array)\n {\n this.attributes.aUV.buffer.data = value;\n }\n\n /** The indices of the mesh. */\n get indices(): Uint32Array\n {\n return this.indexBuffer.data as Uint32Array;\n }\n\n set indices(value: Uint32Array)\n {\n this.indexBuffer.data = value;\n }\n}\n","export const localUniformBit = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* wgsl */`\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3,\n uColor:vec4,\n uRound:f32,\n }\n\n @group(1) @binding(0) var localUniforms : LocalUniforms;\n `,\n main: /* wgsl */`\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `,\n end: /* wgsl */`\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n },\n};\n\n// TODO this works, but i think down the road it will be better to manage groups automatically if there are clashes\nexport const localUniformBitGroup2 = {\n ...localUniformBit,\n vertex: {\n ...localUniformBit.vertex,\n // replace the group!\n header: localUniformBit.vertex.header.replace('group(1)', 'group(2)'),\n }\n};\n\nexport const localUniformBitGl = {\n name: 'local-uniform-bit',\n vertex: {\n header: /* glsl */`\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `,\n main: /* glsl */`\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n `,\n end: /* glsl */`\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n },\n};\n","export const tilingBit = {\n name: 'tiling-bit',\n vertex: {\n header: /* wgsl */`\n struct TilingUniforms {\n uMapCoord:mat3x3,\n uClampFrame:vec4,\n uClampOffset:vec2,\n uTextureTransform:mat3x3,\n uSizeAnchor:vec4\n };\n\n @group(2) @binding(0) var tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d;\n @group(2) @binding(2) var uSampler: sampler;\n `,\n main: /* wgsl */`\n uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;\n\n position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;\n `\n\n },\n fragment: {\n header: /* wgsl */`\n struct TilingUniforms {\n uMapCoord:mat3x3,\n uClampFrame:vec4,\n uClampOffset:vec2,\n uTextureTransform:mat3x3,\n uSizeAnchor:vec4\n };\n\n @group(2) @binding(0) var tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d;\n @group(2) @binding(2) var uSampler: sampler;\n `,\n main: /* wgsl */`\n\n var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);\n coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;\n var unclamped = coord;\n coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);\n\n var bias = 0.;\n\n if(unclamped.x == coord.x && unclamped.y == coord.y)\n {\n bias = -32.;\n } \n\n outColor = textureSampleBias(uTexture, uSampler, coord, bias);\n `\n }\n\n};\n\nexport const tilingBitGl = {\n name: 'tiling-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uTextureTransform;\n uniform vec4 uSizeAnchor;\n \n `,\n main: /* glsl */`\n uv = (uTextureTransform * vec3(aUV, 1.0)).xy;\n\n position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;\n `\n\n },\n fragment: {\n header: /* glsl */`\n uniform sampler2D uTexture;\n uniform mat3 uMapCoord;\n uniform vec4 uClampFrame;\n uniform vec2 uClampOffset;\n `,\n main: /* glsl */`\n\n vec2 coord = vUV + ceil(uClampOffset - vUV);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n \n outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0\n \n `\n }\n\n};\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport {\n compileHighShaderGlProgram,\n compileHighShaderGpuProgram\n} from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBit, localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { tilingBit, tilingBitGl } from './tilingBit';\n\nimport type { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport type { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\n\nlet gpuProgram: GpuProgram;\nlet glProgram: GlProgram;\n\nexport class TilingSpriteShader extends Shader\n{\n constructor()\n {\n gpuProgram ??= compileHighShaderGpuProgram({\n name: 'tiling-sprite-shader',\n bits: [\n localUniformBit,\n tilingBit,\n roundPixelsBit,\n ],\n });\n\n glProgram ??= compileHighShaderGlProgram({\n name: 'tiling-sprite-shader',\n bits: [\n localUniformBitGl,\n tilingBitGl,\n roundPixelsBitGl,\n ]\n });\n\n const tilingUniforms = new UniformGroup({\n uMapCoord: { value: new Matrix(), type: 'mat3x3' },\n uClampFrame: { value: new Float32Array([0, 0, 1, 1]), type: 'vec4' },\n uClampOffset: { value: new Float32Array([0, 0]), type: 'vec2' },\n uTextureTransform: { value: new Matrix(), type: 'mat3x3' },\n uSizeAnchor: { value: new Float32Array([100, 100, 0.5, 0.5]), type: 'vec4' },\n });\n\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4' },\n uRound: { value: 0, type: 'f32' },\n }),\n tilingUniforms,\n uTexture: Texture.EMPTY.source,\n uSampler: Texture.EMPTY.source.style,\n }\n });\n }\n\n public updateUniforms(\n width: number, height: number,\n matrix: Matrix,\n anchorX: number, anchorY: number,\n texture: Texture\n ): void\n {\n const tilingUniforms = this.resources.tilingUniforms;\n\n const textureWidth = texture.width;\n const textureHeight = texture.height;\n const textureMatrix = texture.textureMatrix;\n\n const uTextureTransform = tilingUniforms.uniforms.uTextureTransform;\n\n uTextureTransform.set(\n matrix.a * textureWidth / width,\n matrix.b * textureWidth / height,\n matrix.c * textureHeight / width,\n matrix.d * textureHeight / height,\n matrix.tx / width,\n matrix.ty / height);\n\n uTextureTransform.invert();\n\n tilingUniforms.uniforms.uMapCoord = textureMatrix.mapCoord;\n tilingUniforms.uniforms.uClampFrame = textureMatrix.uClampFrame;\n tilingUniforms.uniforms.uClampOffset = textureMatrix.uClampOffset;\n tilingUniforms.uniforms.uTextureTransform = uTextureTransform;\n tilingUniforms.uniforms.uSizeAnchor[0] = width;\n tilingUniforms.uniforms.uSizeAnchor[1] = height;\n tilingUniforms.uniforms.uSizeAnchor[2] = anchorX;\n tilingUniforms.uniforms.uSizeAnchor[3] = anchorY;\n\n if (texture)\n {\n this.resources.uTexture = texture.source;\n this.resources.uSampler = texture.source.style;\n }\n }\n}\n","import { MeshGeometry } from '../../mesh/shared/MeshGeometry';\n\nexport class QuadGeometry extends MeshGeometry\n{\n constructor()\n {\n super({\n positions: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n uvs: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n indices: new Uint32Array([0, 1, 2, 0, 2, 3]),\n });\n }\n}\n","import type { TilingSprite } from '../TilingSprite';\n\nexport function setPositions(tilingSprite: TilingSprite, positions: Float32Array)\n{\n const anchorX = tilingSprite.anchor.x;\n const anchorY = tilingSprite.anchor.y;\n\n positions[0] = -anchorX * tilingSprite.width;\n positions[1] = -anchorY * tilingSprite.height;\n positions[2] = (1 - anchorX) * tilingSprite.width;\n positions[3] = -anchorY * tilingSprite.height;\n positions[4] = (1 - anchorX) * tilingSprite.width;\n positions[5] = (1 - anchorY) * tilingSprite.height;\n positions[6] = -anchorX * tilingSprite.width;\n positions[7] = (1 - anchorY) * tilingSprite.height;\n}\n","import type { Matrix } from '../../../maths/matrix/Matrix';\nimport type { TypedArray } from '../../../rendering/renderers/shared/buffer/Buffer';\n\nexport function applyMatrix(array: TypedArray, stride: number, offset: number, matrix: Matrix)\n{\n let index = 0;\n const size = array.length / (stride || 2);\n\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n\n offset *= stride;\n\n while (index < size)\n {\n const x = array[offset];\n const y = array[offset + 1];\n\n array[offset] = (a * x) + (c * y) + tx;\n array[offset + 1] = (b * x) + (d * y) + ty;\n\n offset += stride;\n\n index++;\n }\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { applyMatrix } from './applyMatrix';\n\nimport type { TilingSprite } from '../TilingSprite';\n\nexport function setUvs(tilingSprite: TilingSprite, uvs: Float32Array)\n{\n const texture = tilingSprite.texture;\n\n const width = texture.frame.width;\n const height = texture.frame.height;\n\n let anchorX = 0;\n let anchorY = 0;\n\n if (tilingSprite._applyAnchorToTexture)\n {\n anchorX = tilingSprite.anchor.x;\n anchorY = tilingSprite.anchor.y;\n }\n\n uvs[0] = uvs[6] = -anchorX;\n uvs[2] = uvs[4] = 1 - anchorX;\n uvs[1] = uvs[3] = -anchorY;\n uvs[5] = uvs[7] = 1 - anchorY;\n\n const textureMatrix = Matrix.shared;\n\n textureMatrix.copyFrom(tilingSprite._tileTransform.matrix);\n\n textureMatrix.tx /= tilingSprite.width;\n textureMatrix.ty /= tilingSprite.height;\n\n textureMatrix.invert();\n\n textureMatrix.scale(tilingSprite.width / width, tilingSprite.height / height);\n\n applyMatrix(uvs, 2, 0, textureMatrix);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { State } from '../../rendering/renderers/shared/state/State';\nimport { type Renderer, RendererType } from '../../rendering/renderers/types';\nimport { color32BitToUniform } from '../graphics/gpu/colorToUniform';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry';\nimport { TilingSpriteShader } from './shader/TilingSpriteShader';\nimport { QuadGeometry } from './utils/QuadGeometry';\nimport { setPositions } from './utils/setPositions';\nimport { setUvs } from './utils/setUvs';\n\nimport type { WebGLRenderer } from '../../rendering/renderers/gl/WebGLRenderer';\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { TilingSprite } from './TilingSprite';\n\ninterface RenderableData\n{\n canBatch: boolean;\n renderable: TilingSprite\n batchableMesh?: BatchableMesh;\n geometry?: MeshGeometry;\n shader?: TilingSpriteShader;\n}\n\nconst sharedQuad = new QuadGeometry();\n\nexport class TilingSpritePipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'tilingSprite',\n } as const;\n\n private _renderer: Renderer;\n\n private readonly _tilingSpriteDataHash: Record = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public validateRenderable(renderable: TilingSprite): boolean\n {\n const tilingSpriteData = this._getTilingSpriteData(renderable);\n\n const couldBatch = tilingSpriteData.canBatch;\n\n this._updateCanBatch(renderable);\n\n const canBatch = tilingSpriteData.canBatch;\n\n if (canBatch && canBatch === couldBatch)\n {\n const { batchableMesh } = tilingSpriteData;\n\n // we are batching.. check a texture change!\n if (batchableMesh.texture._source !== renderable.texture._source)\n\n { return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, renderable.texture); }\n }\n\n return (couldBatch !== canBatch);\n\n // // TODO - only update if required?\n // // only texture\n // // only uvs\n // // only positions?\n }\n\n public addRenderable(tilingSprite: TilingSprite, instructionSet: InstructionSet)\n {\n const batcher = this._renderer.renderPipes.batch;\n\n // init\n this._updateCanBatch(tilingSprite);\n\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n\n const { geometry, canBatch } = tilingSpriteData;\n\n if (canBatch)\n {\n tilingSpriteData.batchableMesh ||= new BatchableMesh();\n\n const batchableMesh = tilingSpriteData.batchableMesh;\n\n if (tilingSprite._didTilingSpriteUpdate)\n {\n tilingSprite._didTilingSpriteUpdate = false;\n\n this._updateBatchableMesh(tilingSprite);\n\n batchableMesh.geometry = geometry;\n batchableMesh.mesh = tilingSprite;\n batchableMesh.texture = tilingSprite._texture;\n }\n\n batchableMesh.roundPixels = (this._renderer._roundPixels | tilingSprite._roundPixels) as 0 | 1;\n\n batcher.addToBatch(batchableMesh);\n }\n else\n {\n batcher.break(instructionSet);\n\n tilingSpriteData.shader ||= new TilingSpriteShader();\n\n this.updateRenderable(tilingSprite);\n\n instructionSet.add(tilingSprite);\n }\n }\n\n public execute(tilingSprite: TilingSprite)\n {\n const { shader } = this._tilingSpriteDataHash[tilingSprite.uid];\n\n shader.groups[0] = this._renderer.globalUniforms.bindGroup;\n\n // deal with local uniforms...\n const localUniforms = shader.resources.localUniforms.uniforms;\n\n localUniforms.uTransformMatrix = tilingSprite.groupTransform;\n localUniforms.uRound = this._renderer._roundPixels | tilingSprite._roundPixels;\n\n color32BitToUniform(\n tilingSprite.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n\n this._renderer.encoder.draw({\n geometry: sharedQuad,\n shader,\n state: State.default2d,\n });\n }\n\n public updateRenderable(tilingSprite: TilingSprite)\n {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n\n const { canBatch } = tilingSpriteData;\n\n if (canBatch)\n {\n const { batchableMesh } = tilingSpriteData;\n\n if (tilingSprite._didTilingSpriteUpdate) this._updateBatchableMesh(tilingSprite);\n\n batchableMesh.batcher.updateElement(batchableMesh);\n }\n else if (tilingSprite._didTilingSpriteUpdate)\n {\n const { shader } = tilingSpriteData;\n // now update uniforms...\n\n shader.updateUniforms(\n tilingSprite.width,\n tilingSprite.height,\n tilingSprite._tileTransform.matrix,\n tilingSprite.anchor.x,\n tilingSprite.anchor.y,\n tilingSprite.texture,\n );\n }\n\n tilingSprite._didTilingSpriteUpdate = false;\n }\n\n public destroyRenderable(tilingSprite: TilingSprite)\n {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n\n tilingSpriteData.batchableMesh = null;\n\n tilingSpriteData.shader?.destroy();\n\n this._tilingSpriteDataHash[tilingSprite.uid] = null;\n }\n\n private _getTilingSpriteData(renderable: TilingSprite): RenderableData\n {\n return this._tilingSpriteDataHash[renderable.uid] || this._initTilingSpriteData(renderable);\n }\n\n private _initTilingSpriteData(tilingSprite: TilingSprite): RenderableData\n {\n const geometry = new MeshGeometry({\n indices: sharedQuad.indices,\n positions: sharedQuad.positions.slice(),\n uvs: sharedQuad.uvs.slice(),\n });\n\n this._tilingSpriteDataHash[tilingSprite.uid] = {\n canBatch: true,\n renderable: tilingSprite,\n geometry,\n };\n\n tilingSprite.on('destroyed', () =>\n {\n this.destroyRenderable(tilingSprite);\n });\n\n return this._tilingSpriteDataHash[tilingSprite.uid];\n }\n\n private _updateBatchableMesh(tilingSprite: TilingSprite)\n {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n\n const { geometry } = renderableData;\n\n const style = tilingSprite.texture.source.style;\n\n if (style.addressMode !== 'repeat')\n {\n style.addressMode = 'repeat';\n style.update();\n }\n\n setUvs(tilingSprite, geometry.uvs);\n setPositions(tilingSprite, geometry.positions);\n }\n\n public destroy()\n {\n for (const i in this._tilingSpriteDataHash)\n {\n this.destroyRenderable(this._tilingSpriteDataHash[i].renderable);\n }\n\n (this._tilingSpriteDataHash as null) = null;\n this._renderer = null;\n }\n\n private _updateCanBatch(tilingSprite: TilingSprite)\n {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const texture = tilingSprite.texture;\n\n let _nonPowOf2wrapping = true;\n\n if (this._renderer.type === RendererType.WEBGL)\n {\n _nonPowOf2wrapping = (this._renderer as WebGLRenderer).context.supports.nonPowOf2wrapping;\n }\n\n renderableData.canBatch = texture.textureMatrix.isSimple && (_nonPowOf2wrapping || texture.source.isPowerOfTwo);\n\n return renderableData.canBatch;\n }\n}\n\n","import { extensions } from '../../extensions/Extensions';\nimport { TilingSpritePipe } from './TilingSpritePipe';\n\nextensions.add(TilingSpritePipe);\n","import { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry';\n\nimport type { MeshGeometryOptions } from '../mesh/shared/MeshGeometry';\n\n/**\n * Constructor options used for `PlaneGeometry` instances.\n * ```js\n * const planeGeometry = new PlaneGeometry({\n * width: 100,\n * height: 100,\n * verticesX: 10,\n * verticesY: 10,\n * });\n * ```\n * @see {@link scene.PlaneGeometry}\n * @memberof scene\n */\nexport interface PlaneGeometryOptions\n{\n /** Width of plane */\n width?: number;\n /** Height of plane */\n height?: number;\n /** Number of vertices on x-axis */\n verticesX?: number;\n /** Number of vertices on y-axis */\n verticesY?: number;\n}\n\n/**\n * The PlaneGeometry allows you to draw a 2d plane\n * @memberof scene\n */\nexport class PlaneGeometry extends MeshGeometry\n{\n public static defaultOptions: PlaneGeometryOptions & MeshGeometryOptions = {\n width: 100,\n height: 100,\n verticesX: 10,\n verticesY: 10,\n };\n\n /** The number of vertices on x-axis */\n public verticesX: number;\n /** The number of vertices on y-axis */\n public verticesY: number;\n /** The width of plane */\n public width: number;\n /** The height of plane */\n public height: number;\n\n /**\n * @param {PlaneGeometryOptions} options - Options to be applied to plane geometry\n */\n constructor(options: PlaneGeometryOptions);\n /** @deprecated since 8.0.0 */\n constructor(width?: number, height?: number, verticesX?: number, verticesY?: number);\n constructor(...args: [PlaneGeometryOptions?] | [number?, number?, number?, number?])\n {\n super({});\n\n let options = args[0] ?? {};\n\n if (typeof options === 'number')\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead');\n // #endif\n\n options = {\n width: options,\n height: args[1],\n verticesX: args[2],\n verticesY: args[3],\n };\n }\n\n this.build(options);\n }\n\n /**\n * Refreshes plane coordinates\n * @param options - Options to be applied to plane geometry\n */\n public build(options: PlaneGeometryOptions): void\n {\n options = { ...PlaneGeometry.defaultOptions, ...options };\n\n this.verticesX = this.verticesX ?? options.verticesX;\n this.verticesY = this.verticesY ?? options.verticesY;\n\n this.width = this.width ?? options.width;\n this.height = this.height ?? options.height;\n\n const total = this.verticesX * this.verticesY;\n const verts = [];\n const uvs = [];\n const indices = [];\n\n const verticesX = this.verticesX - 1;\n const verticesY = this.verticesY - 1;\n\n const sizeX = (this.width) / verticesX;\n const sizeY = (this.height) / verticesY;\n\n for (let i = 0; i < total; i++)\n {\n const x = (i % this.verticesX);\n const y = ((i / this.verticesX) | 0);\n\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / verticesX, y / verticesY);\n }\n\n const totalSub = verticesX * verticesY;\n\n for (let i = 0; i < totalSub; i++)\n {\n const xpos = i % verticesX;\n const ypos = (i / verticesX) | 0;\n\n const value = (ypos * this.verticesX) + xpos;\n const value2 = (ypos * this.verticesX) + xpos + 1;\n const value3 = ((ypos + 1) * this.verticesX) + xpos;\n const value4 = ((ypos + 1) * this.verticesX) + xpos + 1;\n\n indices.push(value, value2, value3,\n value2, value4, value3);\n }\n\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint32Array(indices);\n\n // ensure that the changes are uploaded\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n}\n","import { PlaneGeometry } from '../mesh-plane/PlaneGeometry';\n\n/**\n * Options for the NineSliceGeometry.\n * @memberof scene\n */\nexport interface NineSliceGeometryOptions\n{\n\n /** The width of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n width?: number\n /** The height of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n height?: number\n /** The original width of the texture */\n originalWidth?: number\n /** The original height of the texture */\n originalHeight?: number\n /** The width of the left column. */\n leftWidth?: number\n /** The height of the top row. */\n topHeight?: number\n /** The width of the right column. */\n rightWidth?: number\n /** The height of the bottom row. */\n bottomHeight?: number\n}\n\n/**\n * The NineSliceGeometry class allows you to create a NineSlicePlane object.\n * @memberof scene\n */\nexport class NineSliceGeometry extends PlaneGeometry\n{\n /** The default options for the NineSliceGeometry. */\n public static defaultOptions: NineSliceGeometryOptions = {\n /** The width of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n width: 100,\n /** The height of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n height: 100,\n /** The width of the left column. */\n leftWidth: 10,\n /** The height of the top row. */\n topHeight: 10,\n /** The width of the right column. */\n rightWidth: 10,\n /** The height of the bottom row. */\n bottomHeight: 10,\n\n /** The original width of the texture */\n originalWidth: 100,\n /** The original height of the texture */\n originalHeight: 100,\n };\n\n public _leftWidth: number;\n public _rightWidth: number;\n public _topHeight: number;\n public _bottomHeight: number;\n\n private _originalWidth: number;\n private _originalHeight: number;\n\n constructor(options: NineSliceGeometryOptions = {})\n {\n options = { ...NineSliceGeometry.defaultOptions, ...options };\n\n super({\n width: options.width,\n height: options.height,\n verticesX: 4,\n verticesY: 4,\n });\n\n this.update(options);\n }\n\n /**\n * Updates the NineSliceGeometry with the options.\n * @param options - The options of the NineSliceGeometry.\n */\n public update(options: NineSliceGeometryOptions)\n {\n this.width = options.width ?? this.width;\n this.height = options.height ?? this.height;\n this._originalWidth = options.originalWidth ?? this._originalWidth;\n this._originalHeight = options.originalHeight ?? this._originalHeight;\n this._leftWidth = options.leftWidth ?? this._leftWidth;\n this._rightWidth = options.rightWidth ?? this._rightWidth;\n this._topHeight = options.topHeight ?? this._topHeight;\n this._bottomHeight = options.bottomHeight ?? this._bottomHeight;\n\n this.updateUvs();\n this.updatePositions();\n }\n\n /** Updates the positions of the vertices. */\n public updatePositions()\n {\n const positions = this.positions;\n\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this.width > w ? 1.0 : this.width / w;\n\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this.height > h ? 1.0 : this.height / h;\n\n const scale = Math.min(scaleW, scaleH);\n\n positions[9] = positions[11] = positions[13] = positions[15] = this._topHeight * scale;\n positions[17] = positions[19] = positions[21] = positions[23] = this.height - (this._bottomHeight * scale);\n positions[25] = positions[27] = positions[29] = positions[31] = this.height;\n\n positions[2] = positions[10] = positions[18] = positions[26] = this._leftWidth * scale;\n positions[4] = positions[12] = positions[20] = positions[28] = this.width - (this._rightWidth * scale);\n positions[6] = positions[14] = positions[22] = positions[30] = this.width;\n\n this.getBuffer('aPosition').update();\n }\n\n /** Updates the UVs of the vertices. */\n public updateUvs()\n {\n const uvs = this.uvs;\n\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n\n const _uvw = 1.0 / this._originalWidth;\n const _uvh = 1.0 / this._originalHeight;\n\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - (_uvw * this._rightWidth);\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - (_uvh * this._bottomHeight);\n\n this.getBuffer('aUV').update();\n }\n}\n\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh';\nimport { NineSliceGeometry } from './NineSliceGeometry';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { PoolItem } from '../../utils/pool/Pool';\nimport type { NineSliceSprite } from './NineSliceSprite';\n\nexport class NineSliceSpritePipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'nineSliceSprite',\n } as const;\n\n private readonly _renderer: Renderer;\n private readonly _gpuSpriteHash: Record = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderable(sprite: NineSliceSprite, _instructionSet: InstructionSet)\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (sprite._didSpriteUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n\n public updateRenderable(sprite: NineSliceSprite)\n {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n\n if (sprite._didSpriteUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n\n public validateRenderable(sprite: NineSliceSprite): boolean\n {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (gpuSprite.texture._source !== texture._source)\n {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n\n return false;\n }\n\n public destroyRenderable(sprite: NineSliceSprite)\n {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n\n // this will call reset!\n BigPool.return(batchableSprite as PoolItem);\n\n this._gpuSpriteHash[sprite.uid] = null;\n }\n\n private _updateBatchableSprite(sprite: NineSliceSprite, batchableSprite: BatchableMesh)\n {\n sprite._didSpriteUpdate = false;\n (batchableSprite.geometry as NineSliceGeometry)\n .update(sprite);\n\n // = sprite.bounds;\n batchableSprite.texture = sprite._texture;\n }\n\n private _getGpuSprite(sprite: NineSliceSprite): BatchableMesh\n {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n\n private _initGPUSprite(sprite: NineSliceSprite): BatchableMesh\n {\n const batchableMesh = new BatchableMesh();\n\n batchableMesh.geometry = new NineSliceGeometry();\n\n batchableMesh.mesh = sprite;\n\n batchableMesh.texture = sprite._texture;\n batchableMesh.roundPixels = (this._renderer._roundPixels | sprite._roundPixels) as 0 | 1;\n\n this._gpuSpriteHash[sprite.uid] = batchableMesh;\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n sprite.on('destroyed', () =>\n {\n this.destroyRenderable(sprite);\n });\n\n return batchableMesh;\n }\n\n public destroy()\n {\n for (const i in this._gpuSpriteHash)\n {\n const batchableMesh = this._gpuSpriteHash[i];\n\n batchableMesh.geometry.destroy();\n }\n\n (this._gpuSpriteHash as null) = null;\n (this._renderer as null) = null;\n }\n}\n","import { extensions } from '../../extensions/Extensions';\nimport { NineSliceSpritePipe } from './NineSliceSpritePipe';\n\nextensions.add(NineSliceSpritePipe);\n","import { ExtensionType } from '../extensions/Extensions';\n\nimport type { InstructionSet } from '../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { Container } from '../scene/container/Container';\nimport type { Effect } from '../scene/container/Effect';\nimport type { FilterInstruction } from './FilterSystem';\n\n// eslint-disable-next-line max-len\nexport class FilterPipe implements InstructionPipe\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'filter',\n } as const;\n\n private _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public push(filterEffect: Effect, container: Container, instructionSet: InstructionSet): void\n {\n const renderPipes = this._renderer.renderPipes;\n\n renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'filter',\n canBundle: false,\n action: 'pushFilter',\n container,\n filterEffect,\n } as FilterInstruction);\n }\n\n public pop(_filterEffect: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n this._renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'filter',\n action: 'popFilter',\n canBundle: false,\n });\n }\n\n public execute(instruction: FilterInstruction)\n {\n if (instruction.action === 'pushFilter')\n {\n this._renderer.filter.push(instruction);\n }\n else if (instruction.action === 'popFilter')\n {\n this._renderer.filter.pop();\n }\n }\n\n public destroy(): void\n {\n this._renderer = null;\n }\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { boundsPool } from './utils/matrixAndBoundsPool';\n\nimport type { Renderable } from '../../../rendering/renderers/shared/Renderable';\nimport type { Container } from '../Container';\nimport type { Bounds } from './Bounds';\n\n// TODO could we cache local bounds on the render groups?\n\nconst tempMatrix = new Matrix();\n\n/**\n * Does exactly the same as getGlobalBounds, but does instead makes use of transforming AABBs\n * of the various children within the scene graph. This is much faster, but less accurate.\n *\n * the result will never be smaller - only ever slightly larger (in most cases, it will be the same).\n * @param target - The target container to get the bounds from\n * @param bounds - The output bounds object.\n * @returns The bounds.\n */\nexport function getFastGlobalBounds(target: Container, bounds: Bounds): Bounds\n{\n bounds.clear();\n\n _getGlobalBoundsRecursive(target, bounds);\n\n if (!bounds.isValid)\n {\n bounds.set(0, 0, 0, 0);\n }\n\n if (!target.isRenderGroupRoot)\n {\n bounds.applyMatrix(target.renderGroup.worldTransform);\n }\n else\n {\n bounds.applyMatrix(target.renderGroup.localTransform);\n }\n\n return bounds;\n}\n\nexport function _getGlobalBoundsRecursive(\n target: Container,\n bounds: Bounds,\n)\n{\n if (target.localDisplayStatus !== 0b111 || !target.measurable)\n {\n return;\n }\n\n const manageEffects = !!target.effects.length;\n\n let localBounds = bounds;\n\n if (target.isRenderGroupRoot || manageEffects)\n {\n localBounds = boundsPool.get().clear();\n }\n\n if (target.boundsArea)\n {\n bounds.addRect(target.boundsArea, target.worldTransform);\n }\n else\n {\n if (target.renderPipeId)\n {\n const viewBounds = (target as Renderable).bounds;\n\n localBounds.addFrame(\n viewBounds.minX,\n viewBounds.minY,\n viewBounds.maxX,\n viewBounds.maxY,\n target.groupTransform\n );\n }\n\n const children = target.children;\n\n for (let i = 0; i < children.length; i++)\n {\n _getGlobalBoundsRecursive(children[i], localBounds);\n }\n }\n\n if (manageEffects)\n {\n let advanced = false;\n\n for (let i = 0; i < target.effects.length; i++)\n {\n if (target.effects[i].addBounds)\n {\n if (!advanced)\n {\n advanced = true;\n localBounds.applyMatrix(target.renderGroup.worldTransform);\n }\n\n target.effects[i].addBounds(localBounds, true);\n }\n }\n\n if (advanced)\n {\n localBounds.applyMatrix(target.renderGroup.worldTransform.copyTo(tempMatrix).invert());\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n }\n\n bounds.addBounds(localBounds);\n boundsPool.return(localBounds);\n }\n else if (target.isRenderGroupRoot)\n {\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n boundsPool.return(localBounds);\n }\n}\n","import type { Renderable } from '../../../rendering/renderers/shared/Renderable';\nimport type { Bounds } from './Bounds';\n\nexport function getGlobalRenderableBounds(renderables: Renderable[], bounds: Bounds): Bounds\n{\n bounds.clear();\n\n // instead of copying the matrix each time we are assigning it in bounds\n // this is a performance hack :D\n // so we need to restore the matrix after we are done\n\n const tempMatrix = bounds.matrix;\n\n for (let i = 0; i < renderables.length; i++)\n {\n const renderable = renderables[i];\n\n if (renderable.globalDisplayStatus < 0b111)\n {\n continue;\n }\n\n bounds.matrix = renderable.worldTransform;\n renderable.addBounds(bounds);\n }\n\n bounds.matrix = tempMatrix;\n\n return bounds;\n}\n","import { ExtensionType } from '../extensions/Extensions';\nimport { Matrix } from '../maths/matrix/Matrix';\nimport { Point } from '../maths/point/Point';\nimport { BindGroup } from '../rendering/renderers/gpu/shader/BindGroup';\nimport { Geometry } from '../rendering/renderers/shared/geometry/Geometry';\nimport { UniformGroup } from '../rendering/renderers/shared/shader/UniformGroup';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport { TexturePool } from '../rendering/renderers/shared/texture/TexturePool';\nimport { type Renderer, RendererType } from '../rendering/renderers/types';\nimport { Bounds } from '../scene/container/bounds/Bounds';\nimport { getFastGlobalBounds } from '../scene/container/bounds/getFastGlobalBounds';\nimport { getGlobalRenderableBounds } from '../scene/container/bounds/getRenderableBounds';\nimport { warn } from '../utils/logging/warn';\n\nimport type { WebGLRenderer } from '../rendering/renderers/gl/WebGLRenderer';\nimport type { WebGPURenderer } from '../rendering/renderers/gpu/WebGPURenderer';\nimport type { Instruction } from '../rendering/renderers/shared/instructions/Instruction';\nimport type { Renderable } from '../rendering/renderers/shared/Renderable';\nimport type { RenderTarget } from '../rendering/renderers/shared/renderTarget/RenderTarget';\nimport type { RenderSurface } from '../rendering/renderers/shared/renderTarget/RenderTargetSystem';\nimport type { System } from '../rendering/renderers/shared/system/System';\nimport type { Container } from '../scene/container/Container';\nimport type { Sprite } from '../scene/sprite/Sprite';\nimport type { Filter } from './Filter';\nimport type { FilterEffect } from './FilterEffect';\n\ntype FilterAction = 'pushFilter' | 'popFilter';\n\n//\nconst quadGeometry = new Geometry({\n attributes: {\n aPosition: {\n buffer: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n location: 0,\n format: 'float32x2',\n stride: 2 * 4,\n offset: 0,\n },\n },\n indexBuffer: new Uint32Array([0, 1, 2, 0, 2, 3]),\n});\n\n/**\n * The filter pipeline is responsible for applying filters scene items!\n *\n * KNOWN BUGS:\n * 1. Global bounds calculation is incorrect if it is used when flip flopping filters. The maths can be found below\n * eg: filters [noiseFilter, blurFilter] noiseFilter will calculate the global bounds incorrectly.\n *\n * 2. RenderGroups do not work with filters. This is because the renderGroup matrix is not currently taken into account.\n *\n * Implementation notes:\n * 1. Gotcha - nesting filters that require blending will not work correctly. This creates a chicken and egg problem\n * the complexity and performance required to do this is not worth it i feel.. but lets see if others agree!\n *\n * 2. Filters are designed to be changed on the fly, this is means that changing filter information each frame will\n * not trigger an instruction rebuild. If you are constantly turning a filter on and off.. its therefore better to set\n * enabled to true or false on the filter. Or setting an empty array.\n *\n * 3. Need to look at perhaps aliasing when flip flopping filters. Really we should only need to antialias the FIRST\n * Texture we render too. The rest can be non aliased. This might help performance.\n * Currently we flip flop with an antialiased texture if antialiasing is enabled on the filter.\n */\nexport interface FilterInstruction extends Instruction\n{\n renderPipeId: 'filter',\n action: FilterAction,\n container?: Container,\n renderables?: Renderable[],\n filterEffect: FilterEffect,\n}\n\nexport interface FilterData\n{\n skip: boolean;\n enabledLength?: number;\n inputTexture: Texture\n bounds: Bounds,\n blendRequired: boolean,\n container: Container,\n filterEffect: FilterEffect,\n previousRenderSurface: RenderSurface,\n backTexture?: Texture,\n}\n\n/**\n * System that manages the filter pipeline\n * @memberof rendering\n */\nexport class FilterSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'filter',\n } as const;\n\n public readonly renderer: Renderer;\n\n private _filterStackIndex = 0;\n private _filterStack: FilterData[] = [];\n\n private readonly _filterGlobalUniforms = new UniformGroup({\n uInputSize: { value: new Float32Array(4), type: 'vec4' },\n uInputPixel: { value: new Float32Array(4), type: 'vec4' },\n uInputClamp: { value: new Float32Array(4), type: 'vec4' },\n uOutputFrame: { value: new Float32Array(4), type: 'vec4' },\n uGlobalFrame: { value: new Float32Array(4), type: 'vec4' },\n uOutputTexture: { value: new Float32Array(4), type: 'vec4' },\n });\n\n private readonly _globalFilterBindGroup: BindGroup = new BindGroup({});\n private _activeFilterData: FilterData;\n\n constructor(renderer: Renderer)\n {\n this.renderer = renderer;\n }\n\n /**\n * The back texture of the currently active filter. Requires the filter to have `blendRequired` set to true.\n * @readonly\n */\n public get activeBackTexture(): Texture | undefined\n {\n return this._activeFilterData?.backTexture;\n }\n\n public push(instruction: FilterInstruction)\n {\n const renderer = this.renderer;\n\n const filters = instruction.filterEffect.filters;\n\n if (!this._filterStack[this._filterStackIndex])\n {\n this._filterStack[this._filterStackIndex] = this._getFilterData();\n }\n\n // get a filter data from the stack. They can be reused multiple times each frame,\n // so we don't need to worry about overwriting them in a single pass.\n const filterData = this._filterStack[this._filterStackIndex];\n\n this._filterStackIndex++;\n\n // if there are no filters, we skip the pass\n if (filters.length === 0)\n {\n filterData.skip = true;\n\n return;\n }\n\n const bounds: Bounds = filterData.bounds;\n\n // this path is used by the blend modes mostly!\n // they collect all renderables and push them into a list.\n // this list is then used to calculate the bounds of the filter area\n if (instruction.renderables)\n {\n getGlobalRenderableBounds(instruction.renderables, bounds);\n }\n // if a filterArea is provided, we save our selves some measuring and just use that area supplied\n else if (instruction.filterEffect.filterArea)\n {\n bounds.clear();\n\n // transform the filterArea into global space..\n bounds.addRect(instruction.filterEffect.filterArea);\n\n // new for v8, we transform the bounds into the space of the container\n bounds.applyMatrix(instruction.container.worldTransform);\n }\n // classic filter path, we get the bounds of the container and use it by recursively\n // measuring.\n else\n {\n getFastGlobalBounds(instruction.container, bounds);\n }\n // get GLOBAL bounds of the item we are going to apply the filter to\n\n const colorTextureSource = renderer.renderTarget.rootRenderTarget.colorTexture.source;\n\n // next we get the settings for the filter\n // we need to find the LOWEST resolution for the filter list\n let resolution = colorTextureSource._resolution;\n\n // Padding is additive to add padding to our padding\n let padding = 0;\n // if this is true for any filter, it should be true\n let antialias = colorTextureSource.antialias;\n // true if any filter requires the previous render target\n let blendRequired = false;\n // true if any filter in the list is enabled\n let enabled = false;\n\n for (let i = 0; i < filters.length; i++)\n {\n const filter = filters[i];\n\n resolution = Math.min(resolution, filter.resolution);\n padding += filter.padding;\n\n if (filter.antialias !== 'inherit')\n {\n if (filter.antialias === 'on')\n {\n antialias = true;\n }\n else\n {\n antialias = false;\n }\n }\n\n const isCompatible = !!(filter.compatibleRenderers & renderer.type);\n\n if (!isCompatible)\n {\n enabled = false;\n break;\n }\n\n if (filter.blendRequired && !((renderer as WebGLRenderer).backBuffer?.useBackBuffer ?? true))\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n warn('Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options.');\n // #endif\n\n enabled = false;\n break;\n }\n\n enabled = filter.enabled || enabled;\n blendRequired = blendRequired || filter.blendRequired;\n }\n\n // if no filters are enabled lets skip!\n if (!enabled)\n {\n filterData.skip = true;\n\n return;\n }\n\n const viewPort = renderer.renderTarget.rootViewPort;\n\n // here we constrain the bounds to the viewport we will render too\n // this should not take into account the x, y offset of the viewport - as this is\n // handled by the viewport on the gpu.\n // need to factor in resolutions also..\n bounds.scale(resolution)\n .fitBounds(0, viewPort.width, 0, viewPort.height)\n .scale(1 / resolution)\n .pad(padding)\n .ceil();\n\n // skip if the bounds are negative or zero as this means they are\n // not visible on the screen\n if (!bounds.isPositive)\n {\n filterData.skip = true;\n\n return;\n }\n\n // set all the filter data\n filterData.skip = false;\n\n filterData.bounds = bounds;\n filterData.blendRequired = blendRequired;\n filterData.container = instruction.container;\n filterData.filterEffect = instruction.filterEffect;\n\n filterData.previousRenderSurface = renderer.renderTarget.renderSurface;\n\n // bind...\n // get a P02 texture from our pool...\n filterData.inputTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias,\n );\n\n renderer.renderTarget.bind(filterData.inputTexture, true);\n // set the global uniforms to take into account the bounds offset required\n\n renderer.globalUniforms.push({\n offset: bounds,\n });\n }\n\n public pop()\n {\n const renderer = this.renderer;\n\n this._filterStackIndex--;\n const filterData = this._filterStack[this._filterStackIndex];\n\n // if we are skipping this filter then we just do nothing :D\n if (filterData.skip)\n {\n return;\n }\n\n this._activeFilterData = filterData;\n\n const inputTexture = filterData.inputTexture;\n\n const bounds = filterData.bounds;\n\n let backTexture = Texture.EMPTY;\n\n renderer.renderTarget.finishRenderPass();\n\n if (filterData.blendRequired)\n {\n // this actually forces the current commandQueue to render everything so far.\n // if we don't do this, we won't be able to copy pixels for the background\n const previousBounds = this._filterStackIndex > 0 ? this._filterStack[this._filterStackIndex - 1].bounds : null;\n\n const renderTarget = renderer.renderTarget.getRenderTarget(filterData.previousRenderSurface);\n\n backTexture = this.getBackTexture(renderTarget, bounds, previousBounds);\n }\n\n filterData.backTexture = backTexture;\n\n const filters = filterData.filterEffect.filters;\n\n // get a BufferResource from the uniformBatch.\n // this will batch the shader uniform data and give us a buffer resource we can\n // set on our globalUniform Bind Group\n // eslint-disable-next-line max-len\n\n // update the resources on the bind group...\n this._globalFilterBindGroup.setResource(inputTexture.source.style, 2);\n this._globalFilterBindGroup.setResource(backTexture.source, 3);\n\n renderer.globalUniforms.pop();\n\n if (filters.length === 1)\n {\n // render a single filter...\n // this.applyFilter(filters[0], inputTexture, filterData.previousRenderSurface, false);\n filters[0].apply(this, inputTexture, filterData.previousRenderSurface, false);\n\n // return the texture to the pool so we can reuse the next frame\n TexturePool.returnTexture(inputTexture);\n }\n else\n {\n let flip = filterData.inputTexture;\n\n // get another texture that we will render the next filter too\n let flop = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n flip.source._resolution,\n false\n );\n\n let i = 0;\n\n // loop and apply the filters, omitting the last one as we will render that to the final target\n for (i = 0; i < filters.length - 1; ++i)\n {\n const filter = filters[i];\n\n filter.apply(this, flip, flop, true);\n const t = flip;\n\n flip = flop;\n flop = t;\n }\n\n filters[i].apply(this, flip, filterData.previousRenderSurface, false);\n\n // return those textures for later!\n TexturePool.returnTexture(flip);\n TexturePool.returnTexture(flop);\n }\n\n // if we made a background texture, lets return that also\n if (filterData.blendRequired)\n {\n TexturePool.returnTexture(backTexture);\n }\n }\n\n public getBackTexture(lastRenderSurface: RenderTarget, bounds: Bounds, previousBounds?: Bounds)\n {\n const backgroundResolution = lastRenderSurface.colorTexture.source._resolution;\n\n const backTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n backgroundResolution,\n false,\n );\n\n let x = bounds.minX;\n let y = bounds.minY;\n\n if (previousBounds)\n {\n x -= previousBounds.minX;\n y -= previousBounds.minY;\n }\n\n x = Math.floor(x * backgroundResolution);\n y = Math.floor(y * backgroundResolution);\n\n const width = Math.ceil(bounds.width * backgroundResolution);\n const height = Math.ceil(bounds.height * backgroundResolution);\n\n this.renderer.renderTarget.copyToTexture(\n lastRenderSurface,\n backTexture,\n { x, y },\n { width, height },\n { x: 0, y: 0 }\n );\n\n return backTexture;\n }\n\n public applyFilter(filter: Filter, input: Texture, output: RenderSurface, clear: boolean)\n {\n const renderer = this.renderer;\n\n const filterData = this._filterStack[this._filterStackIndex];\n\n const bounds = filterData.bounds;\n\n const offset = Point.shared;\n const previousRenderSurface = filterData.previousRenderSurface;\n\n const isFinalTarget = previousRenderSurface === output;\n\n let resolution = this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution;\n\n // to find the previous resolution we need to account for the skipped filters\n // the following will find the last non skipped filter...\n let currentIndex = this._filterStackIndex - 1;\n\n while (currentIndex > 0 && this._filterStack[currentIndex].skip)\n {\n --currentIndex;\n }\n\n if (currentIndex > 0)\n {\n resolution = this._filterStack[currentIndex].inputTexture.source._resolution;\n }\n\n const filterUniforms = this._filterGlobalUniforms;\n const uniforms = filterUniforms.uniforms;\n\n const outputFrame = uniforms.uOutputFrame;\n const inputSize = uniforms.uInputSize;\n const inputPixel = uniforms.uInputPixel;\n const inputClamp = uniforms.uInputClamp;\n const globalFrame = uniforms.uGlobalFrame;\n const outputTexture = uniforms.uOutputTexture;\n\n // are we rendering back to the original surface?\n if (isFinalTarget)\n {\n let lastIndex = this._filterStackIndex;\n\n // get previous bounds.. we must take into account skipped filters also..\n while (lastIndex > 0)\n {\n lastIndex--;\n const filterData = this._filterStack[this._filterStackIndex - 1];\n\n if (!filterData.skip)\n {\n offset.x = filterData.bounds.minX;\n offset.y = filterData.bounds.minY;\n\n break;\n }\n }\n\n outputFrame[0] = bounds.minX - offset.x;\n outputFrame[1] = bounds.minY - offset.y;\n }\n else\n {\n outputFrame[0] = 0;\n outputFrame[1] = 0;\n }\n\n outputFrame[2] = input.frame.width;\n outputFrame[3] = input.frame.height;\n\n inputSize[0] = input.source.width;\n inputSize[1] = input.source.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n\n inputPixel[0] = input.source.pixelWidth;\n inputPixel[1] = input.source.pixelHeight;\n inputPixel[2] = 1.0 / inputPixel[0];\n inputPixel[3] = 1.0 / inputPixel[1];\n\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = (input.frame.width * inputSize[2]) - (0.5 * inputPixel[2]);\n inputClamp[3] = (input.frame.height * inputSize[3]) - (0.5 * inputPixel[3]);\n\n const rootTexture = this.renderer.renderTarget.rootRenderTarget.colorTexture;\n\n globalFrame[0] = offset.x * resolution;\n globalFrame[1] = offset.y * resolution;\n\n globalFrame[2] = rootTexture.source.width * resolution;\n globalFrame[3] = rootTexture.source.height * resolution;\n\n // set the output texture - this is where we are going to render to\n\n const renderTarget = this.renderer.renderTarget.getRenderTarget(output);\n\n renderer.renderTarget.bind(output, !!clear);\n\n if (output instanceof Texture)\n {\n outputTexture[0] = output.frame.width;\n outputTexture[1] = output.frame.height;\n }\n else\n {\n // this means a renderTarget was passed directly\n outputTexture[0] = renderTarget.width;\n outputTexture[1] = renderTarget.height;\n }\n\n outputTexture[2] = renderTarget.isRoot ? -1 : 1;\n filterUniforms.update();\n\n // TODO - should prolly use a adaptor...\n if ((renderer as WebGPURenderer).renderPipes.uniformBatch)\n {\n const batchUniforms = (renderer as WebGPURenderer).renderPipes.uniformBatch\n .getUboResource(filterUniforms);\n\n this._globalFilterBindGroup.setResource(batchUniforms, 0);\n }\n else\n {\n this._globalFilterBindGroup.setResource(filterUniforms, 0);\n }\n\n // now lets update the output texture...\n\n // set bind group..\n this._globalFilterBindGroup.setResource(input.source, 1);\n this._globalFilterBindGroup.setResource(input.source.style, 2);\n\n filter.groups[0] = this._globalFilterBindGroup;\n\n renderer.encoder.draw({\n geometry: quadGeometry,\n shader: filter,\n state: filter._state,\n topology: 'triangle-list'\n });\n\n // WebGPU blit's automatically, but WebGL does not!\n if (renderer.type === RendererType.WEBGL)\n {\n renderer.renderTarget.finishRenderPass();\n }\n }\n\n private _getFilterData(): FilterData\n {\n return {\n skip: false,\n inputTexture: null,\n bounds: new Bounds(),\n container: null,\n filterEffect: null,\n blendRequired: false,\n previousRenderSurface: null,\n };\n }\n\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n public calculateSpriteMatrix(outputMatrix: Matrix, sprite: Sprite): Matrix\n {\n const data = this._activeFilterData;\n\n const mappedMatrix = outputMatrix.set(\n data.inputTexture._source.width,\n 0, 0,\n data.inputTexture._source.height,\n data.bounds.minX, data.bounds.minY\n );\n\n const worldTransform = sprite.worldTransform.copyTo(Matrix.shared);\n\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(\n 1.0 / sprite.texture.frame.width,\n 1.0 / sprite.texture.frame.height\n );\n\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n\n return mappedMatrix;\n }\n\n public destroy?: () => void;\n}\n","import { extensions } from '../extensions/Extensions';\nimport { FilterPipe } from './FilterPipe';\nimport { FilterSystem } from './FilterSystem';\n\nextensions.add(FilterSystem);\nextensions.add(FilterPipe);\n","import { extensions, ExtensionType } from '../extensions/Extensions';\n\nconst environments: { name: string; value: { test: () => boolean; load: () => Promise } }[] = [];\n\nextensions.handleByNamedList(ExtensionType.Environment, environments);\n\n/**\n * Automatically detects the environment and loads the appropriate extensions.\n * @param manageImports - whether to add the default imports to the bundle\n * @memberof environment\n */\nexport async function autoDetectEnvironment(manageImports: boolean): Promise\n{\n if (!manageImports) return;\n\n for (let i = 0; i < environments.length; i++)\n {\n const env = environments[i];\n\n if (env.value.test())\n {\n await env.value.load();\n\n return;\n }\n }\n}\n","// Cache the result to prevent running this over and over\nlet unsafeEval: boolean;\n\n/**\n * Not all platforms allow to generate function code (e.g., `new Function`).\n * this provides the platform-level detection.\n * @private\n * @returns {boolean} `true` if `new Function` is supported.\n */\nexport function unsafeEvalSupported(): boolean\n{\n if (typeof unsafeEval === 'boolean')\n {\n return unsafeEval;\n }\n\n try\n {\n /* eslint-disable no-new-func */\n const func = new Function('param1', 'param2', 'param3', 'return param1[param2] === param3;');\n /* eslint-enable no-new-func */\n\n unsafeEval = func({ a: 'b' }, 'a', 'b') === true;\n }\n catch (e)\n {\n unsafeEval = false;\n }\n\n return unsafeEval;\n}\n","export enum CLEAR\n// eslint-disable-next-line @typescript-eslint/indent\n{\n NONE = 0,\n COLOR = 16384,\n STENCIL = 1024,\n DEPTH = 256,\n\n COLOR_DEPTH = COLOR | DEPTH,\n COLOR_STENCIL = COLOR | STENCIL,\n DEPTH_STENCIL = DEPTH | STENCIL,\n ALL = COLOR | DEPTH | STENCIL,\n\n}\n\n/** Used for clearing render textures. true is the same as `ALL` false is the same as `NONE` */\nexport type CLEAR_OR_BOOL = CLEAR | boolean;\n","/**\n * SystemRunner is used internally by the renderers as an efficient way for systems to\n * be notified about what the renderer is up to during the rendering phase.\n *\n * ```\n * import { SystemRunner } from 'pixi.js';\n *\n * const myObject = {\n * loaded: new SystemRunner('loaded')\n * }\n *\n * const listener = {\n * loaded: function(){\n * // thin\n * }\n * }\n *\n * myObject.loaded.add(listener);\n *\n * myObject.loaded.emit();\n * ```\n *\n * Or for handling calling the same function on many items\n * ```\n * import { SystemRunner } from 'pixi.js';\n *\n * const myGame = {\n * update: new SystemRunner('update')\n * }\n *\n * const gameObject = {\n * update: function(time){\n * // update my gamey state\n * }\n * }\n *\n * myGame.update.add(gameObject);\n *\n * myGame.update.emit(time);\n * ```\n * @memberof rendering\n */\nexport class SystemRunner\n{\n public items: any[];\n private _name: string;\n\n /**\n * @param name - The function name that will be executed on the listeners added to this Runner.\n */\n constructor(name: string)\n {\n this.items = [];\n this._name = name;\n }\n\n /* eslint-disable jsdoc/require-param, jsdoc/check-param-names */\n /**\n * Dispatch/Broadcast Runner to all listeners added to the queue.\n * @param {...any} params - (optional) parameters to pass to each listener\n */\n /* eslint-enable jsdoc/require-param, jsdoc/check-param-names */\n public emit(a0?: unknown, a1?: unknown, a2?: unknown, a3?: unknown,\n a4?: unknown, a5?: unknown, a6?: unknown, a7?: unknown): this\n {\n const { name, items } = this;\n\n for (let i = 0, len = items.length; i < len; i++)\n {\n items[i][name](a0, a1, a2, a3, a4, a5, a6, a7);\n }\n\n return this;\n }\n\n /**\n * Add a listener to the Runner\n *\n * Runners do not need to have scope or functions passed to them.\n * All that is required is to pass the listening object and ensure that it has contains a function that has the same name\n * as the name provided to the Runner when it was created.\n *\n * Eg A listener passed to this Runner will require a 'complete' function.\n *\n * ```\n * import { Runner } from 'pixi.js';\n *\n * const complete = new Runner('complete');\n * ```\n *\n * The scope used will be the object itself.\n * @param {any} item - The object that will be listening.\n */\n public add(item: unknown): this\n {\n if ((item as any)[this._name])\n {\n this.remove(item);\n this.items.push(item);\n }\n\n return this;\n }\n\n /**\n * Remove a single listener from the dispatch queue.\n * @param {any} item - The listener that you would like to remove.\n */\n public remove(item: unknown): this\n {\n const index = this.items.indexOf(item);\n\n if (index !== -1)\n {\n this.items.splice(index, 1);\n }\n\n return this;\n }\n\n /**\n * Check to see if the listener is already in the Runner\n * @param {any} item - The listener that you would like to check.\n */\n public contains(item: unknown): boolean\n {\n return this.items.indexOf(item) !== -1;\n }\n\n /** Remove all listeners from the Runner */\n public removeAll(): this\n {\n this.items.length = 0;\n\n return this;\n }\n\n /** Remove all references, don't use after this. */\n public destroy(): void\n {\n this.removeAll();\n this.items = null;\n this._name = null;\n }\n\n /**\n * `true` if there are no this Runner contains no listeners\n * @readonly\n */\n public get empty(): boolean\n {\n return this.items.length === 0;\n }\n\n /**\n * The name of the runner.\n * @readonly\n */\n public get name(): string\n {\n return this._name;\n }\n}\n","import { Color } from '../../../../color/Color';\nimport { Container } from '../../../../scene/container/Container';\nimport { unsafeEvalSupported } from '../../../../utils/browser/unsafeEvalSupported';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\nimport { EventEmitter } from '../../../../utils/utils';\nimport { CLEAR } from '../../gl/const';\nimport { SystemRunner } from './SystemRunner';\n\nimport type { ColorSource, RgbaArray } from '../../../../color/Color';\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { Matrix } from '../../../../maths/matrix/Matrix';\nimport type { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport type { TypeOrBool } from '../../../../scene/container/destroyTypes';\nimport type { CLEAR_OR_BOOL } from '../../gl/const';\nimport type { Renderer } from '../../types';\nimport type { BackgroundSystem } from '../background/BackgroundSystem';\nimport type { GenerateTextureOptions, GenerateTextureSystem } from '../extract/GenerateTextureSystem';\nimport type { PipeConstructor } from '../instructions/RenderPipe';\nimport type { RenderSurface } from '../renderTarget/RenderTargetSystem';\nimport type { Texture } from '../texture/Texture';\nimport type { ViewSystem, ViewSystemDestroyOptions } from '../view/ViewSystem';\nimport type { System, SystemConstructor } from './System';\n\ninterface RendererConfig\n{\n type: number;\n name: string;\n runners?: string[];\n systems: {name: string, value: SystemConstructor}[];\n renderPipes: {name: string, value: PipeConstructor}[];\n renderPipeAdaptors: {name: string, value: any}[];\n}\n\n/**\n * The options for rendering a view.\n * @memberof rendering\n */\nexport interface RenderOptions extends ClearOptions\n{\n /** The container to render. */\n container: Container;\n /** the transform to apply to the container. */\n transform?: Matrix;\n}\n\n/**\n * The options for clearing the render target.\n * @memberof rendering\n */\nexport interface ClearOptions\n{\n /** The render target to render. */\n target?: RenderSurface;\n /** The color to clear with. */\n clearColor?: ColorSource;\n /** The clear mode to use. */\n clear?: CLEAR_OR_BOOL\n}\n\nexport type RendererDestroyOptions = TypeOrBool;\n\nconst defaultRunners = [\n 'init',\n 'destroy',\n 'contextChange',\n 'resolutionChange',\n 'reset',\n 'renderEnd',\n 'renderStart',\n 'render',\n 'update',\n 'postrender',\n 'prerender'\n] as const;\n\ntype DefaultRunners = typeof defaultRunners[number];\ntype Runners = {[key in DefaultRunners]: SystemRunner} & {\n // eslint-disable-next-line @typescript-eslint/ban-types\n [K: ({} & string) | ({} & symbol)]: SystemRunner;\n};\n\n/* eslint-disable max-len */\n/**\n * The base class for a PixiJS Renderer. It contains the shared logic for all renderers.\n *\n * You should not use this class directly, but instead use {@linkrendering.WebGLRenderer}\n * or {@link rendering.WebGPURenderer}.\n * Alternatively, you can also use {@link rendering.autoDetectRenderer} if you want us to\n * determine the best renderer for you.\n *\n * The renderer is composed of systems that manage specific tasks. The following systems are added by default\n * whenever you create a renderer:\n *\n *\n * | Generic Systems | Systems that manage functionality that all renderer types share |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n * | {@link rendering.ViewSystem} | This manages the main view of the renderer usually a Canvas |\n * | {@link rendering.BackgroundSystem} | This manages the main views background color and alpha |\n * | {@link events.EventSystem} | This manages UI events. |\n * | {@link accessibility.AccessibilitySystem} | This manages accessibility features. Requires `import 'pixi.js/accessibility'`|\n *\n * | Core Systems | Provide an optimised, easy to use API to work with WebGL/WebGPU |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n * | {@link rendering.RenderGroupSystem} | This manages the what what we are rendering to (eg - canvas or texture) |\n * | {@link rendering.GlobalUniformSystem} | This manages shaders, programs that run on the GPU to calculate 'em pixels. |\n * | {@link rendering.TextureGCSystem} | This will automatically remove textures from the GPU if they are not used. |\n *\n * | PixiJS High-Level Systems | Set of specific systems designed to work with PixiJS objects |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n * | {@link rendering.HelloSystem} | Says hello, buy printing out the pixi version into the console log (along with the renderer type) |\n * | {@link rendering.GenerateTextureSystem} | This adds the ability to generate textures from any Container |\n * | {@link rendering.FilterSystem} | This manages the filtering pipeline for post-processing effects. |\n * | {@link rendering.PrepareSystem} | This manages uploading assets to the GPU. Requires `import 'pixi.js/prepare'`|\n * | {@link rendering.ExtractSystem} | This extracts image data from display objects. |\n *\n * The breadth of the API surface provided by the renderer is contained within these systems.\n * @abstract\n * @memberof rendering\n * @property {rendering.HelloSystem} hello - HelloSystem instance.\n * @property {rendering.RenderGroupSystem} renderGroup - RenderGroupSystem instance.\n * @property {rendering.TextureGCSystem} textureGC - TextureGCSystem instance.\n * @property {rendering.FilterSystem} filter - FilterSystem instance.\n * @property {rendering.GlobalUniformSystem} globalUniforms - GlobalUniformSystem instance.\n * @property {rendering.TextureSystem} texture - TextureSystem instance.\n * @property {rendering.EventSystem} events - EventSystem instance.\n * @property {rendering.ExtractSystem} extract - ExtractSystem instance. Requires `import 'pixi.js/extract'`.\n * @property {rendering.PrepareSystem} prepare - PrepareSystem instance. Requires `import 'pixi.js/prepare'`.\n * @property {rendering.AccessibilitySystem} accessibility - AccessibilitySystem instance. Requires `import 'pixi.js/accessibility'`.\n */\n/* eslint-enable max-len */\nexport class AbstractRenderer<\n PIPES, OPTIONS extends PixiMixins.RendererOptions, CANVAS extends ICanvas = HTMLCanvasElement\n> extends EventEmitter<{resize: [number, number]}>\n{\n /** The default options for the renderer. */\n public static defaultOptions = {\n /**\n * Default resolution / device pixel ratio of the renderer.\n * @default 1\n */\n resolution: 1,\n /**\n * Should the `failIfMajorPerformanceCaveat` flag be enabled as a context option used in the `isWebGLSupported`\n * function. If set to true, a WebGL renderer can fail to be created if the browser thinks there could be\n * performance issues when using WebGL.\n *\n * In PixiJS v6 this has changed from true to false by default, to allow WebGL to work in as many\n * scenarios as possible. However, some users may have a poor experience, for example, if a user has a gpu or\n * driver version blacklisted by the\n * browser.\n *\n * If your application requires high performance rendering, you may wish to set this to false.\n * We recommend one of two options if you decide to set this flag to false:\n *\n * 1: Use the Canvas renderer as a fallback in case high performance WebGL is\n * not supported.\n *\n * 2: Call `isWebGLSupported` (which if found in the utils package) in your code before attempting to create a\n * PixiJS renderer, and show an error message to the user if the function returns false, explaining that their\n * device & browser combination does not support high performance WebGL.\n * This is a much better strategy than trying to create a PixiJS renderer and finding it then fails.\n * @default false\n */\n failIfMajorPerformanceCaveat: false,\n /**\n * Should round pixels be forced when rendering?\n * @default false\n */\n roundPixels: false\n };\n\n public readonly type: number;\n /** The name of the renderer. */\n public readonly name: string;\n\n public _roundPixels: 0 | 1;\n\n public readonly runners: Runners = Object.create(null) as Runners;\n public readonly renderPipes = Object.create(null) as PIPES;\n /** The view system manages the main canvas that is attached to the DOM */\n public view!: ViewSystem;\n /** The background system manages the background color and alpha of the main view. */\n public background: BackgroundSystem;\n /** System that manages the generation of textures from the renderer */\n public textureGenerator: GenerateTextureSystem;\n\n protected _initOptions: OPTIONS = {} as OPTIONS;\n\n private _systemsHash: Record = Object.create(null);\n private _lastObjectRendered: Container;\n\n /**\n * Set up a system with a collection of SystemClasses and runners.\n * Systems are attached dynamically to this class when added.\n * @param config - the config for the system manager\n */\n constructor(config: RendererConfig)\n {\n super();\n this.type = config.type;\n this.name = config.name;\n\n const combinedRunners = [...defaultRunners, ...(config.runners ?? [])];\n\n this._addRunners(...combinedRunners);\n this._addSystems(config.systems);\n this._addPipes(config.renderPipes, config.renderPipeAdaptors);\n\n // Validation check that this environment support `new Function`\n this._unsafeEvalCheck();\n }\n\n /**\n * Initialize the renderer.\n * @param options - The options to use to create the renderer.\n */\n public async init(options: Partial = {})\n {\n // loop through all systems...\n for (const systemName in this._systemsHash)\n {\n const system = this._systemsHash[systemName];\n\n const defaultSystemOptions = (system.constructor as any).defaultOptions;\n\n options = { ...defaultSystemOptions, ...options };\n }\n\n options = { ...AbstractRenderer.defaultOptions, ...options };\n this._roundPixels = options.roundPixels ? 1 : 0;\n\n // await emits..\n for (let i = 0; i < this.runners.init.items.length; i++)\n {\n await this.runners.init.items[i].init(options);\n }\n\n // store options\n this._initOptions = options as OPTIONS;\n }\n\n /**\n * Renders the object to its view.\n * @param options - The options to render with.\n * @param options.container - The container to render.\n * @param [options.target] - The target to render to.\n */\n public render(options: RenderOptions | Container): void;\n /** @deprecated since 8.0.0 */\n public render(container: Container, options: {renderTexture: any}): void;\n public render(args: RenderOptions | Container, deprecated?: {renderTexture: any}): void\n {\n let options = args;\n\n if (options instanceof Container)\n {\n options = { container: options };\n\n if (deprecated)\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'passing a second argument is deprecated, please use render options instead');\n // #endif\n\n options.target = deprecated.renderTexture;\n }\n }\n\n options.target ||= this.view.renderTarget;\n\n // TODO: we should eventually fix events so that it can handle multiple canvas elements\n if (options.target === this.view.renderTarget)\n {\n // TODO get rid of this\n this._lastObjectRendered = options.container;\n options.clearColor = this.background.colorRgba;\n }\n\n if (options.clearColor)\n {\n const isRGBAArray = Array.isArray(options.clearColor) && options.clearColor.length === 4;\n\n options.clearColor = isRGBAArray ? options.clearColor : Color.shared.setValue(options.clearColor).toArray();\n }\n\n if (!options.transform)\n {\n options.container.updateLocalTransform();\n options.transform = options.container.localTransform;\n }\n\n this.runners.prerender.emit(options);\n this.runners.renderStart.emit(options);\n this.runners.render.emit(options);\n this.runners.renderEnd.emit(options);\n this.runners.postrender.emit(options);\n }\n\n /**\n * Resizes the WebGL view to the specified width and height.\n * @param desiredScreenWidth - The desired width of the screen.\n * @param desiredScreenHeight - The desired height of the screen.\n * @param resolution - The resolution / device pixel ratio of the renderer.\n */\n public resize(desiredScreenWidth: number, desiredScreenHeight: number, resolution?: number): void\n {\n this.view.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n this.emit('resize', this.view.screen.width, this.view.screen.height);\n }\n\n public clear(options: ClearOptions = {}): void\n {\n // override!\n const renderer = this as unknown as Renderer;\n\n options.target ||= renderer.renderTarget.renderTarget;\n options.clearColor ||= this.background.colorRgba;\n options.clear ??= CLEAR.ALL;\n\n const { clear, clearColor, target } = options;\n\n Color.shared.setValue(clearColor ?? this.background.colorRgba);\n\n renderer.renderTarget.clear(target, clear, Color.shared.toArray() as RgbaArray);\n }\n\n /** The resolution / device pixel ratio of the renderer. */\n get resolution(): number\n {\n return this.view.resolution;\n }\n\n set resolution(value: number)\n {\n this.view.resolution = value;\n this.runners.resolutionChange.emit(value);\n }\n\n /**\n * Same as view.width, actual number of pixels in the canvas by horizontal.\n * @member {number}\n * @readonly\n * @default 800\n */\n get width(): number\n {\n return this.view.texture.frame.width;\n }\n\n /**\n * Same as view.height, actual number of pixels in the canvas by vertical.\n * @default 600\n */\n get height(): number\n {\n return this.view.texture.frame.height;\n }\n\n // NOTE: this was `view` in v7\n /**\n * The canvas element that everything is drawn to.\n * @type {environment.ICanvas}\n */\n get canvas(): CANVAS\n {\n return this.view.canvas as CANVAS;\n }\n\n /**\n * the last object rendered by the renderer. Useful for other plugins like interaction managers\n * @readonly\n */\n get lastObjectRendered(): Container\n {\n return this._lastObjectRendered;\n }\n\n /**\n * Flag if we are rendering to the screen vs renderTexture\n * @readonly\n * @default true\n */\n get renderingToScreen(): boolean\n {\n const renderer = this as unknown as Renderer;\n\n return renderer.renderTarget.renderingToScreen;\n }\n\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n */\n get screen(): Rectangle\n {\n return this.view.screen;\n }\n\n /**\n * Create a bunch of runners based of a collection of ids\n * @param runnerIds - the runner ids to add\n */\n private _addRunners(...runnerIds: string[]): void\n {\n runnerIds.forEach((runnerId) =>\n {\n this.runners[runnerId] = new SystemRunner(runnerId);\n });\n }\n\n private _addSystems(systems: RendererConfig['systems']): void\n {\n let i: keyof typeof systems;\n\n for (i in systems)\n {\n const val = systems[i];\n\n this._addSystem(val.value, val.name);\n }\n }\n\n /**\n * Add a new system to the renderer.\n * @param ClassRef - Class reference\n * @param name - Property name for system, if not specified\n * will use a static `name` property on the class itself. This\n * name will be assigned as s property on the Renderer so make\n * sure it doesn't collide with properties on Renderer.\n * @returns Return instance of renderer\n */\n private _addSystem(ClassRef: SystemConstructor, name: string): this\n {\n const system = new ClassRef(this as unknown as Renderer);\n\n if ((this as any)[name])\n {\n throw new Error(`Whoops! The name \"${name}\" is already in use`);\n }\n\n (this as any)[name] = system;\n\n this._systemsHash[name] = system;\n\n for (const i in this.runners)\n {\n this.runners[i].add(system);\n }\n\n return this;\n }\n\n private _addPipes(pipes: RendererConfig['renderPipes'], pipeAdaptors: RendererConfig['renderPipeAdaptors']): void\n {\n const adaptors = pipeAdaptors.reduce((acc, adaptor) =>\n {\n acc[adaptor.name] = adaptor.value;\n\n return acc;\n }, {} as Record);\n\n pipes.forEach((pipe) =>\n {\n const PipeClass = pipe.value;\n const name = pipe.name;\n\n const Adaptor = adaptors[name];\n\n // sorry typescript..\n (this.renderPipes as any)[name] = new PipeClass(\n this as unknown as Renderer,\n Adaptor ? new Adaptor() : null\n );\n });\n }\n\n public destroy(options: RendererDestroyOptions = false): void\n {\n this.runners.destroy.items.reverse();\n this.runners.destroy.emit(options);\n\n // destroy all runners\n Object.values(this.runners).forEach((runner) =>\n {\n runner.destroy();\n });\n\n this._systemsHash = null;\n\n // destroy all pipes\n (this.renderPipes as null) = null;\n }\n\n /**\n * Generate a texture from a container.\n * @param options - options or container target to use when generating the texture\n * @returns a texture\n */\n public generateTexture(options: GenerateTextureOptions | Container): Texture\n {\n return this.textureGenerator.generateTexture(options);\n }\n\n /**\n * Whether the renderer will round coordinates to whole pixels when rendering.\n * Can be overridden on a per scene item basis.\n */\n get roundPixels(): boolean\n {\n return !!this._roundPixels;\n }\n\n /**\n * Overrideable function by `pixi.js/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n * @ignore\n */\n public _unsafeEvalCheck(): void\n {\n if (!unsafeEvalSupported())\n {\n throw new Error('Current environment does not allow unsafe-eval, '\n + 'please use pixi.js/unsafe-eval module to enable support.');\n }\n }\n}\n","import { DOMAdapter } from '../../environment/adapter';\nimport { AbstractRenderer } from '../../rendering/renderers/shared/system/AbstractRenderer';\n\nlet _isWebGLSupported: boolean | undefined;\n\n/**\n * Helper for checking for WebGL support.\n * @param failIfMajorPerformanceCaveat - whether to fail if there is a major performance caveat, defaults to false\n * @memberof utils\n * @function isWebGLSupported\n * @returns {boolean} Is WebGL supported.\n */\nexport function isWebGLSupported(\n failIfMajorPerformanceCaveat?: boolean\n): boolean\n{\n if (_isWebGLSupported !== undefined) return _isWebGLSupported;\n\n _isWebGLSupported = ((): boolean =>\n {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat:\n failIfMajorPerformanceCaveat\n ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat,\n };\n\n try\n {\n if (!DOMAdapter.get().getWebGLRenderingContext())\n {\n return false;\n }\n\n const canvas = DOMAdapter.get().createCanvas();\n let gl = canvas.getContext('webgl', contextOptions);\n\n const success = !!gl?.getContextAttributes()?.stencil;\n\n if (gl)\n {\n const loseContext = gl.getExtension('WEBGL_lose_context');\n\n if (loseContext)\n {\n loseContext.loseContext();\n }\n }\n\n gl = null;\n\n return success;\n }\n catch (e)\n {\n return false;\n }\n })();\n\n return _isWebGLSupported;\n}\n","import { DOMAdapter } from '../../environment/adapter';\n\nlet _isWebGPUSupported: boolean | undefined;\n\n/**\n * Helper for checking for WebGPU support.\n * @param options - The options for requesting a GPU adapter.\n * @memberof utils\n * @function isWebGPUSupported\n * @returns Is WebGPU supported.\n */\nexport async function isWebGPUSupported(options: GPURequestAdapterOptions = {}): Promise\n{\n if (_isWebGPUSupported !== undefined) return _isWebGPUSupported;\n\n _isWebGPUSupported = await (async (): Promise =>\n {\n const gpu = DOMAdapter.get().getNavigator().gpu;\n\n if (!gpu)\n {\n return false;\n }\n\n try\n {\n const adapter = await navigator.gpu.requestAdapter(options) as GPUAdapter;\n\n // TODO and one of these!\n await adapter.requestDevice();\n\n return true;\n }\n catch (e)\n {\n return false;\n }\n })();\n\n return _isWebGPUSupported;\n}\n","import { autoDetectEnvironment } from '../../environment/autoDetectEnvironment';\nimport { isWebGLSupported } from '../../utils/browser/isWebGLSupported';\nimport { isWebGPUSupported } from '../../utils/browser/isWebGPUSupported';\nimport { AbstractRenderer } from './shared/system/AbstractRenderer';\n\nimport type { WebGLOptions } from './gl/WebGLRenderer';\nimport type { WebGPUOptions } from './gpu/WebGPURenderer';\nimport type { Renderer } from './types';\n\n/**\n * Options for {@link rendering.autoDetectRenderer}.\n * @memberof rendering\n */\nexport interface AutoDetectOptions extends WebGLOptions, WebGPUOptions\n{\n /** The preferred renderer type. WebGPU is recommended as its generally faster than WebGL. */\n preference?: 'webgl' | 'webgpu'// | 'canvas';\n /**\n * Whether to manage the dynamic imports of the renderer code. It is true by default, this means\n * PixiJS will load all the default pixi systems and extensions. If you set this to false, then\n * you as the dev will need to manually import the systems and extensions you need.\n */\n manageImports?: boolean;\n /** Optional WebGPUOptions to pass only to WebGPU renderer. */\n webgpu?: Partial;\n /** Optional WebGLOptions to pass only to the WebGL renderer */\n webgl?: Partial;\n}\n\nconst renderPriority = ['webgl', 'webgpu', 'canvas'];\n\n/**\n * Automatically determines the most appropriate renderer for the current environment.\n *\n * The function will prioritize the WebGL renderer as it is the most tested safe API to use.\n * In the near future as WebGPU becomes more stable and ubiquitous, it will be prioritized over WebGL.\n *\n * The selected renderer's code is then dynamically imported to optimize\n * performance and minimize the initial bundle size.\n *\n * To maximize the benefits of dynamic imports, it's recommended to use a modern bundler\n * that supports code splitting. This will place the renderer code in a separate chunk,\n * which is loaded only when needed.\n * @example\n *\n * // create a renderer\n * const renderer = await autoDetectRenderer({\n * width: 800,\n * height: 600,\n * antialias: true,\n * });\n *\n * // custom for each renderer\n * const renderer = await autoDetectRenderer({\n * width: 800,\n * height: 600,\n * webgpu:{\n * antialias: true,\n * backgroundColor: 'red'\n * },\n * webgl:{\n * antialias: true,\n * backgroundColor: 'green'\n * }\n * });\n * @param options - A partial configuration object based on the `AutoDetectOptions` type.\n * @returns A Promise that resolves to an instance of the selected renderer.\n * @memberof rendering\n */\nexport async function autoDetectRenderer(options: Partial): Promise\n{\n let preferredOrder: string[] = [];\n\n if (options.preference)\n {\n preferredOrder.push(options.preference);\n\n renderPriority.forEach((item) =>\n {\n if (item !== options.preference)\n {\n preferredOrder.push(item);\n }\n });\n }\n else\n {\n preferredOrder = renderPriority.slice();\n }\n\n let RendererClass: new () => Renderer;\n\n await autoDetectEnvironment(\n options.manageImports ?? true,\n );\n\n let finalOptions: Partial = {};\n\n for (let i = 0; i < preferredOrder.length; i++)\n {\n const rendererType = preferredOrder[i];\n\n if (rendererType === 'webgpu' && (await isWebGPUSupported()))\n {\n const { WebGPURenderer } = await import('./gpu/WebGPURenderer');\n\n RendererClass = WebGPURenderer;\n\n finalOptions = { ...options, ...options.webgpu };\n\n break;\n }\n else if (\n rendererType === 'webgl'\n && isWebGLSupported(\n options.failIfMajorPerformanceCaveat\n ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat\n )\n )\n {\n const { WebGLRenderer } = await import('./gl/WebGLRenderer');\n\n RendererClass = WebGLRenderer;\n\n finalOptions = { ...options, ...options.webgl };\n\n break;\n }\n else if (rendererType === 'canvas')\n {\n finalOptions = { ...options };\n\n throw new Error('CanvasRenderer is not yet implemented');\n }\n }\n\n delete finalOptions.webgpu;\n delete finalOptions.webgl;\n\n if (!RendererClass)\n {\n throw new Error('No available renderer for the current environment');\n }\n\n const renderer = new RendererClass();\n\n await renderer.init(finalOptions);\n\n return renderer;\n}\n","import { extensions, ExtensionType } from '../extensions/Extensions';\nimport { autoDetectRenderer } from '../rendering/renderers/autoDetectRenderer';\nimport { Container } from '../scene/container/Container';\nimport { deprecation, v8_0_0 } from '../utils/logging/deprecation';\n\nimport type { Rectangle } from '../maths/shapes/Rectangle';\nimport type { AutoDetectOptions } from '../rendering/renderers/autoDetectRenderer';\nimport type { RendererDestroyOptions } from '../rendering/renderers/shared/system/AbstractRenderer';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { DestroyOptions } from '../scene/container/destroyTypes';\n\n/**\n * The app module provides a set of classes to use as a starting point when building applications.\n *\n * \n *\n * ```js\n * import { Application } from 'pixi.js';\n *\n * const app = new Application();\n *\n * await app.init();\n *\n * // don't forget to add the canvas to the DOM\n * document.body.appendChild(app.canvas);\n * ```\n * @namespace app\n */\n\n/**\n * Any plugin that's usable for Application should contain these methods.\n * @example\n * import { ApplicationPlugin } from 'pixi.js';\n *\n * const plugin: ApplicationPlugin = {\n * init: (options: Partial) =>\n * {\n * // handle init here, use app options if needed\n * },\n * destroy: () =>\n * {\n * // handle destruction code here\n * }\n * }\n * @memberof app\n * @see {@link app.ApplicationOptions}\n * @ignore\n */\nexport interface ApplicationPlugin\n{\n /**\n * Called when Application is constructed, scoped to Application instance.\n * Passes in `options` as the only argument, which are Application `init()` options.\n * @param {object} options - Application options.\n */\n init(options: Partial): void;\n /** Called when destroying Application, scoped to Application instance. */\n destroy(): void;\n}\n\n/**\n * Application options supplied to the {@link app.Application#init} method.\n * @memberof app\n * @example\n * import { Application } from 'pixi.js';\n *\n * const app = new Application();\n *\n * await app.init({\n * autoStart: false,\n * resizeTo: window,\n * sharedTicker: true,\n * });\n */\nexport interface ApplicationOptions extends AutoDetectOptions, PixiMixins.ApplicationOptions { }\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Application extends PixiMixins.Application { }\n\n/**\n * Convenience class to create a new PixiJS application.\n *\n * This class automatically creates the renderer, ticker and root container.\n * @example\n * import { Application, Sprite } from 'pixi.js';\n *\n * // Create the application\n * const app = new Application();\n *\n * await app.init({ width: 800, height: 600 });\n *\n * // Add the view to the DOM\n * document.body.appendChild(app.canvas);\n *\n * // ex, add display objects\n * app.stage.addChild(Sprite.from('something.png'));\n * @memberof app\n */\nexport class Application\n{\n /**\n * Collection of installed plugins.\n * @alias _plugins\n */\n public static _plugins: ApplicationPlugin[] = [];\n\n /** The root display container that's rendered. */\n public stage: Container = new Container();\n\n /**\n * WebGL renderer if available, otherwise CanvasRenderer.\n * @member {Renderer}\n */\n public renderer: R;\n\n /** Create new Application instance */\n constructor();\n\n /** @deprecated since 8.0.0 */\n constructor(options?: Partial);\n\n /** @ignore */\n constructor(...args: [Partial] | [])\n {\n // #if _DEBUG\n if (args[0] !== undefined)\n {\n deprecation(v8_0_0, 'Application constructor options are deprecated, please use Application.init() instead.');\n }\n // #endif\n }\n\n /**\n * @param options - The optional application and renderer parameters.\n */\n public async init(options?: Partial)\n {\n // The default options\n options = { ...options };\n\n this.renderer = await autoDetectRenderer(options as ApplicationOptions) as R;\n\n // install plugins here\n Application._plugins.forEach((plugin) =>\n {\n plugin.init.call(this, options);\n });\n }\n\n /** Render the current stage. */\n public render(): void\n {\n this.renderer.render({ container: this.stage });\n }\n\n /**\n * Reference to the renderer's canvas element.\n * @readonly\n * @member {HTMLCanvasElement}\n */\n get canvas(): R['canvas']\n {\n return this.renderer.canvas as R['canvas'];\n }\n\n /**\n * Reference to the renderer's canvas element.\n * @member {HTMLCanvasElement}\n * @deprecated since 8.0.0\n */\n get view(): R['canvas']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Application.view is deprecated, please use Application.canvas instead.');\n // #endif\n\n return this.renderer.canvas as R['canvas'];\n }\n\n /**\n * Reference to the renderer's screen rectangle. Its safe to use as `filterArea` or `hitArea` for the whole screen.\n * @readonly\n */\n get screen(): Rectangle\n {\n return this.renderer.screen;\n }\n\n /**\n * Destroys the application and all of its resources.\n * @param {object|boolean}[rendererDestroyOptions=false] - The options for destroying the renderer.\n * @param {boolean}[rendererDestroyOptions.removeView=false] - Removes the Canvas element from the DOM.\n * @param {object|boolean} [options=false] - The options for destroying the stage.\n * @param {boolean} [options.children=false] - If set to true, all the children will have their destroy method\n * called as well. `options` will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true,\n * it should destroy the texture of the child sprite.\n * @param {boolean} [options.textureSource=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true,\n * it should destroy the texture source of the child sprite.\n * @param {boolean} [options.context=false] - Only used for children with graphicsContexts e.g. Graphics.\n * If options.children is set to true,\n * it should destroy the context of the child graphics.\n */\n public destroy(rendererDestroyOptions: RendererDestroyOptions = false, options: DestroyOptions = false): void\n {\n // Destroy plugins in the opposite order\n // which they were constructed\n const plugins = Application._plugins.slice(0);\n\n plugins.reverse();\n plugins.forEach((plugin) =>\n {\n plugin.destroy.call(this);\n });\n\n this.stage.destroy(options);\n this.stage = null;\n\n this.renderer.destroy(rendererDestroyOptions);\n this.renderer = null;\n }\n}\n\nextensions.handleByList(ExtensionType.Application, Application._plugins);\n","import type { Loader } from './loader/Loader';\nimport type { ResolvedAsset } from './types';\n\n/**\n * Quietly Loads assets in the background.\n * @memberof assets\n */\nexport class BackgroundLoader\n{\n /** Whether or not the loader should continue loading. */\n private _isActive: boolean;\n\n /** Assets to load. */\n private readonly _assetList: ResolvedAsset[];\n\n /** Whether or not the loader is loading. */\n private _isLoading: boolean;\n\n /** Number of assets to load at a time. */\n private readonly _maxConcurrent: number;\n\n /** Should the loader log to the console. */\n public verbose: boolean;\n private readonly _loader: Loader;\n\n /**\n * @param loader\n * @param verbose - should the loader log to the console\n */\n constructor(loader: Loader, verbose = false)\n {\n this._loader = loader;\n this._assetList = [];\n this._isLoading = false;\n this._maxConcurrent = 1;\n this.verbose = verbose;\n }\n\n /**\n * Adds an array of assets to load.\n * @param assetUrls - assets to load\n */\n public add(assetUrls: ResolvedAsset[]): void\n {\n assetUrls.forEach((a) =>\n {\n this._assetList.push(a);\n });\n\n if (this.verbose)\n {\n // eslint-disable-next-line no-console\n console.log('[BackgroundLoader] assets: ', this._assetList);\n }\n\n if (this._isActive && !this._isLoading)\n {\n void this._next();\n }\n }\n\n /**\n * Loads the next set of assets. Will try to load as many assets as it can at the same time.\n *\n * The max assets it will try to load at one time will be 4.\n */\n private async _next(): Promise\n {\n if (this._assetList.length && this._isActive)\n {\n this._isLoading = true;\n\n const toLoad = [];\n\n const toLoadAmount = Math.min(this._assetList.length, this._maxConcurrent);\n\n for (let i = 0; i < toLoadAmount; i++)\n {\n toLoad.push(this._assetList.pop());\n }\n\n await this._loader.load(toLoad);\n\n this._isLoading = false;\n\n void this._next();\n }\n }\n\n /**\n * Activate/Deactivate the loading. If set to true then it will immediately continue to load the next asset.\n * @returns whether the class is active\n */\n get active(): boolean\n {\n return this._isActive;\n }\n\n set active(value: boolean)\n {\n if (this._isActive === value) return;\n\n this._isActive = value;\n\n if (value && !this._isLoading)\n {\n void this._next();\n }\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\n\nimport type { CacheParser } from '../CacheParser';\n\n/**\n * Returns an object of textures from an array of textures to be cached\n * @memberof assets\n */\nexport const cacheTextureArray: CacheParser = {\n extension: ExtensionType.CacheParser,\n\n test: (asset: any[]) => Array.isArray(asset) && asset.every((t) => t instanceof Texture),\n\n getCacheableAssets: (keys: string[], asset: Texture[]) =>\n {\n const out: Record = {};\n\n keys.forEach((key: string) =>\n {\n asset.forEach((item: Texture, i: number) =>\n {\n out[key + (i === 0 ? '' : i + 1)] = item;\n });\n });\n\n return out;\n }\n};\n","export async function testImageFormat(imageData: string): Promise\n{\n // Some browsers currently do not support createImageBitmap with Blob, so new Image() is preferred when exist.\n // See https://caniuse.com/createimagebitmap for more information.\n\n if ('Image' in globalThis)\n {\n return new Promise((resolve) =>\n {\n const image = new Image();\n\n image.onload = () =>\n {\n resolve(true);\n };\n image.onerror = () =>\n {\n resolve(false);\n };\n image.src = imageData;\n });\n }\n\n if ('createImageBitmap' in globalThis && 'fetch' in globalThis)\n {\n try\n {\n const blob = await (await fetch(imageData)).blob();\n\n await createImageBitmap(blob);\n }\n catch (e)\n {\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { testImageFormat } from '../utils/testImageFormat';\n\nimport type { FormatDetectionParser } from '../types';\n\n/**\n * Detects if the browser supports the AVIF image format.\n * @memberof assets\n */\nexport const detectAvif: FormatDetectionParser = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 1,\n },\n test: async (): Promise => testImageFormat(\n // eslint-disable-next-line max-len\n 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A='\n ),\n add: async (formats) => [...formats, 'avif'],\n remove: async (formats) => formats.filter((f) => f !== 'avif'),\n};\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { FormatDetectionParser } from '../types';\n\nconst imageFormats = ['png', 'jpg', 'jpeg'];\n\n/**\n * Adds some default image formats to the detection parser\n * @memberof assets\n */\nexport const detectDefaults = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: -1,\n },\n test: (): Promise => Promise.resolve(true),\n add: async (formats) => [...formats, ...imageFormats],\n remove: async (formats) => formats.filter((f) => !imageFormats.includes(f)),\n} as FormatDetectionParser;\n","const inWorker = 'WorkerGlobalScope' in globalThis\n && globalThis instanceof (globalThis as any).WorkerGlobalScope;\n\nexport function testVideoFormat(mimeType: string): boolean\n{\n if (inWorker)\n {\n return false;\n }\n\n const video = document.createElement('video');\n\n return video.canPlayType(mimeType) !== '';\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { testVideoFormat } from '../utils/testVideoFormat';\n\nimport type { FormatDetectionParser } from '../types';\n\n/**\n * Detects if the browser supports the MP4 video format.\n * @memberof assets\n */\nexport const detectMp4 = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0,\n },\n test: async (): Promise => testVideoFormat('video/mp4'),\n add: async (formats) => [...formats, 'mp4', 'm4v'],\n remove: async (formats) => formats.filter((f) => f !== 'mp4' && f !== 'm4v'),\n} as FormatDetectionParser;\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { testVideoFormat } from '../utils/testVideoFormat';\n\nimport type { FormatDetectionParser } from '../types';\n\n/**\n * Detects if the browser supports the OGV video format.\n * @memberof assets\n */\nexport const detectOgv = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0,\n },\n test: async (): Promise => testVideoFormat('video/ogg'),\n add: async (formats) => [...formats, 'ogv'],\n remove: async (formats) => formats.filter((f) => f !== 'ogv'),\n} as FormatDetectionParser;\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { testVideoFormat } from '../utils/testVideoFormat';\n\nimport type { FormatDetectionParser } from '../types';\n\n/**\n * Detects if the browser supports the WebM video format.\n * @memberof assets\n */\nexport const detectWebm = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0,\n },\n test: async (): Promise => testVideoFormat('video/webm'),\n add: async (formats) => [...formats, 'webm'],\n remove: async (formats) => formats.filter((f) => f !== 'webm'),\n} as FormatDetectionParser;\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { testImageFormat } from '../utils/testImageFormat';\n\nimport type { FormatDetectionParser } from '../types';\n\n/**\n * Detects if the browser supports the WebP image format.\n * @memberof assets\n */\nexport const detectWebp = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 0,\n },\n test: async (): Promise => testImageFormat(\n 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA='\n ),\n add: async (formats) => [...formats, 'webp'],\n remove: async (formats) => formats.filter((f) => f !== 'webp'),\n} as FormatDetectionParser;\n","import { warn } from '../../utils/logging/warn';\nimport { path } from '../../utils/path';\nimport { convertToList } from '../utils/convertToList';\nimport { isSingleItem } from '../utils/isSingleItem';\n\nimport type { ResolvedAsset } from '../types';\nimport type { LoaderParser } from './parsers/LoaderParser';\nimport type { PromiseAndParser } from './types';\n\n/**\n * The Loader is responsible for loading all assets, such as images, spritesheets, audio files, etc.\n * It does not do anything clever with URLs - it just loads stuff!\n * Behind the scenes all things are cached using promises. This means it's impossible to load an asset more than once.\n * Through the use of LoaderParsers, the loader can understand how to load any kind of file!\n *\n * It is not intended that this class is created by developers - its part of the Asset class\n * This is the second major system of PixiJS' main Assets class\n * @memberof assets\n */\nexport class Loader\n{\n private readonly _parsers: LoaderParser[] = [];\n private _parserHash: Record;\n\n private _parsersValidated = false;\n\n /**\n * All loader parsers registered\n * @type {assets.LoaderParser[]}\n */\n public parsers = new Proxy(this._parsers, {\n set: (target, key, value) =>\n {\n this._parsersValidated = false;\n\n target[key as any as number] = value;\n\n return true;\n }\n });\n\n /** Cache loading promises that ae currently active */\n public promiseCache: Record = {};\n\n /** function used for testing */\n public reset(): void\n {\n this._parsersValidated = false;\n this.promiseCache = {};\n }\n\n /**\n * Used internally to generate a promise for the asset to be loaded.\n * @param url - The URL to be loaded\n * @param data - any custom additional information relevant to the asset being loaded\n * @returns - a promise that will resolve to an Asset for example a Texture of a JSON object\n */\n private _getLoadPromiseAndParser(url: string, data?: ResolvedAsset): PromiseAndParser\n {\n const result: PromiseAndParser = {\n promise: null,\n parser: null\n };\n\n result.promise = (async () =>\n {\n let asset = null;\n\n let parser: LoaderParser = null;\n\n // first check to see if the user has specified a parser\n if (data.loadParser)\n {\n // they have? lovely, lets use it\n parser = this._parserHash[data.loadParser];\n\n if (!parser)\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n warn(`[Assets] specified load parser \"${data.loadParser}\" not found while loading ${url}`);\n // #endif\n }\n }\n\n // no parser specified, so lets try and find one using the tests\n if (!parser)\n {\n for (let i = 0; i < this.parsers.length; i++)\n {\n const parserX = this.parsers[i];\n\n if (parserX.load && parserX.test?.(url, data, this))\n {\n parser = parserX;\n break;\n }\n }\n\n if (!parser)\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n warn(`[Assets] ${url} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`);\n // #endif\n\n return null;\n }\n }\n\n asset = await parser.load(url, data, this);\n result.parser = parser;\n\n for (let i = 0; i < this.parsers.length; i++)\n {\n const parser = this.parsers[i];\n\n if (parser.parse)\n {\n if (parser.parse && await parser.testParse?.(asset, data, this))\n {\n // transform the asset..\n asset = await parser.parse(asset, data, this) || asset;\n\n result.parser = parser;\n }\n }\n }\n\n return asset;\n })();\n\n return result;\n }\n\n /**\n * Loads one or more assets using the parsers added to the Loader.\n * @example\n * // Single asset:\n * const asset = await Loader.load('cool.png');\n * console.log(asset);\n *\n * // Multiple assets:\n * const assets = await Loader.load(['cool.png', 'cooler.png']);\n * console.log(assets);\n * @param assetsToLoadIn - urls that you want to load, or a single one!\n * @param onProgress - For multiple asset loading only, an optional function that is called\n * when progress on asset loading is made. The function is passed a single parameter, `progress`,\n * which represents the percentage (0.0 - 1.0) of the assets loaded. Do not use this function\n * to detect when assets are complete and available, instead use the Promise returned by this function.\n */\n public async load(\n assetsToLoadIn: string | ResolvedAsset,\n onProgress?: (progress: number) => void,\n ): Promise;\n public async load(\n assetsToLoadIn: string[] | ResolvedAsset[],\n onProgress?: (progress: number) => void,\n ): Promise>;\n public async load(\n assetsToLoadIn: string | string[] | ResolvedAsset | ResolvedAsset[],\n onProgress?: (progress: number) => void,\n ): Promise>\n {\n if (!this._parsersValidated)\n {\n this._validateParsers();\n }\n\n let count = 0;\n\n const assets: Record> = {};\n\n const singleAsset = isSingleItem(assetsToLoadIn);\n\n const assetsToLoad = convertToList(assetsToLoadIn, (item) => ({\n alias: [item],\n src: item,\n }));\n\n const total = assetsToLoad.length;\n\n const promises: Promise[] = assetsToLoad.map(async (asset: ResolvedAsset) =>\n {\n const url = path.toAbsolute(asset.src);\n\n if (!assets[asset.src])\n {\n try\n {\n if (!this.promiseCache[url])\n {\n this.promiseCache[url] = this._getLoadPromiseAndParser(url, asset);\n }\n\n assets[asset.src] = await this.promiseCache[url].promise;\n\n // Only progress if nothing goes wrong\n if (onProgress) onProgress(++count / total);\n }\n catch (e)\n {\n // Delete eventually registered file and promises from internal cache\n // so they can be eligible for another loading attempt\n delete this.promiseCache[url];\n delete assets[asset.src];\n\n // Stop further execution\n throw new Error(`[Loader.load] Failed to load ${url}.\\n${e}`);\n }\n }\n });\n\n await Promise.all(promises);\n\n return singleAsset ? assets[assetsToLoad[0].src] : assets;\n }\n\n /**\n * Unloads one or more assets. Any unloaded assets will be destroyed, freeing up memory for your app.\n * The parser that created the asset, will be the one that unloads it.\n * @example\n * // Single asset:\n * const asset = await Loader.load('cool.png');\n *\n * await Loader.unload('cool.png');\n *\n * console.log(asset.destroyed); // true\n * @param assetsToUnloadIn - urls that you want to unload, or a single one!\n */\n public async unload(\n assetsToUnloadIn: string | string[] | ResolvedAsset | ResolvedAsset[],\n ): Promise\n {\n const assetsToUnload = convertToList(assetsToUnloadIn, (item) => ({\n alias: [item],\n src: item,\n }));\n\n const promises: Promise[] = assetsToUnload.map(async (asset: ResolvedAsset) =>\n {\n const url = path.toAbsolute(asset.src);\n\n const loadPromise = this.promiseCache[url];\n\n if (loadPromise)\n {\n const loadedAsset = await loadPromise.promise;\n\n delete this.promiseCache[url];\n\n await loadPromise.parser?.unload?.(loadedAsset, asset, this);\n }\n });\n\n await Promise.all(promises);\n }\n\n /** validates our parsers, right now it only checks for name conflicts but we can add more here as required! */\n private _validateParsers()\n {\n this._parsersValidated = true;\n\n this._parserHash = this._parsers\n .filter((parser) => parser.name)\n .reduce((hash, parser) =>\n {\n if (!parser.name)\n {\n // #if _DEBUG\n warn(`[Assets] loadParser should have a name`);\n // #endif\n }\n else if (hash[parser.name])\n {\n // #if _DEBUG\n warn(`[Assets] loadParser name conflict \"${parser.name}\"`);\n // #endif\n }\n\n return { ...hash, [parser.name]: parser };\n }, {} as Record);\n }\n}\n","export function checkDataUrl(url: string, mimes: string | string[]): boolean\n{\n if (Array.isArray(mimes))\n {\n for (const mime of mimes)\n {\n if (url.startsWith(`data:${mime}`)) return true;\n }\n\n return false;\n }\n\n return url.startsWith(`data:${mimes}`);\n}\n","import { path } from '../../utils/path';\n\nexport function checkExtension(url: string, extension: string | string[]): boolean\n{\n const tempURL = url.split('?')[0];\n const ext = path.extname(tempURL).toLowerCase();\n\n if (Array.isArray(extension))\n {\n return extension.includes(ext);\n }\n\n return ext === extension;\n}\n\n","import { DOMAdapter } from '../../../environment/adapter';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { checkDataUrl } from '../../utils/checkDataUrl';\nimport { checkExtension } from '../../utils/checkExtension';\nimport { LoaderParserPriority } from './LoaderParser';\n\nimport type { LoaderParser } from './LoaderParser';\n\nconst validJSONExtension = '.json';\nconst validJSONMIME = 'application/json';\n\n/**\n * A simple loader plugin for loading json data\n * @memberof assets\n */\nexport const loadJson = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low,\n },\n\n name: 'loadJson',\n\n test(url: string): boolean\n {\n return checkDataUrl(url, validJSONMIME) || checkExtension(url, validJSONExtension);\n },\n\n async load(url: string): Promise\n {\n const response = await DOMAdapter.get().fetch(url);\n\n const json = await response.json();\n\n return json as T;\n },\n} as LoaderParser;\n","import { DOMAdapter } from '../../../environment/adapter';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { checkDataUrl } from '../../utils/checkDataUrl';\nimport { checkExtension } from '../../utils/checkExtension';\nimport { LoaderParserPriority } from './LoaderParser';\n\nimport type { LoaderParser } from './LoaderParser';\n\nconst validTXTExtension = '.txt';\nconst validTXTMIME = 'text/plain';\n\n/**\n * A simple loader plugin for loading text data\n * @memberof assets\n */\nexport const loadTxt = {\n\n name: 'loadTxt',\n\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low,\n },\n\n test(url: string): boolean\n {\n return checkDataUrl(url, validTXTMIME) || checkExtension(url, validTXTExtension);\n },\n\n async load(url: string): Promise\n {\n const response = await DOMAdapter.get().fetch(url);\n\n const txt = await response.text();\n\n return txt;\n },\n} as LoaderParser;\n","import { DOMAdapter } from '../../../environment/adapter';\nimport { ExtensionType } from '../../../extensions/Extensions';\nimport { warn } from '../../../utils/logging/warn';\nimport { path } from '../../../utils/path';\nimport { Cache } from '../../cache/Cache';\nimport { checkDataUrl } from '../../utils/checkDataUrl';\nimport { checkExtension } from '../../utils/checkExtension';\nimport { LoaderParserPriority } from './LoaderParser';\n\nimport type { ResolvedAsset } from '../../types';\nimport type { LoaderParser } from './LoaderParser';\n\nconst validWeights = [\n 'normal', 'bold',\n '100', '200', '300', '400', '500', '600', '700', '800', '900',\n];\nconst validFontExtensions = ['.ttf', '.otf', '.woff', '.woff2'];\nconst validFontMIMEs = [\n 'font/ttf',\n 'font/otf',\n 'font/woff',\n 'font/woff2',\n];\n\n/**\n * Data for loading a font\n * @memberof assets\n */\nexport type LoadFontData = {\n /** Font family name */\n family: string;\n /** A set of optional descriptors passed as an object. It can contain any of the descriptors available for @font-face: */\n display: string;\n /**\n * The featureSettings property of the FontFace interface retrieves or sets infrequently used\n * font features that are not available from a font's variant properties.\n */\n featureSettings: string;\n /** The stretch property of the FontFace interface retrieves or sets how the font stretches. */\n stretch: string;\n /** The style property of the FontFace interface retrieves or sets the font's style. */\n style: string;\n /**\n * The unicodeRange property of the FontFace interface retrieves or sets the range of\n * unicode code points encompassing the font.\n */\n unicodeRange: string;\n /** The variant property of the FontFace interface programmatically retrieves or sets font variant values. */\n variant: string;\n /** The weight property of the FontFace interface retrieves or sets the weight of the font. */\n weights: string[];\n};\n\n/**\n * RegExp for matching CSS . It doesn't consider escape and non-ASCII characters, but enough for us.\n * @see {@link https://www.w3.org/TR/css-syntax-3/#ident-token-diagram}\n */\nconst CSS_IDENT_TOKEN_REGEX = /^(--|-?[A-Z_])[0-9A-Z_-]*$/i;\n\n/**\n * Return font face name from a file name\n * Ex.: 'fonts/titan-one.woff' turns into 'Titan One'\n * @param url - File url\n * @memberof assets\n */\nexport function getFontFamilyName(url: string): string\n{\n const ext = path.extname(url);\n const name = path.basename(url, ext);\n\n // Replace dashes by white spaces\n const nameWithSpaces = name.replace(/(-|_)/g, ' ');\n\n // Upper case first character of each word\n const nameTokens = nameWithSpaces.toLowerCase()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1));\n\n let valid = nameTokens.length > 0;\n\n for (const token of nameTokens)\n {\n if (!token.match(CSS_IDENT_TOKEN_REGEX))\n {\n valid = false;\n break;\n }\n }\n\n let fontFamilyName = nameTokens.join(' ');\n\n if (!valid)\n {\n fontFamilyName = `\"${fontFamilyName.replace(/[\\\\\"]/g, '\\\\$&')}\"`;\n }\n\n return fontFamilyName;\n}\n\n// See RFC 3986 Chapter 2. Characters\nconst validURICharactersRegex = /^[0-9A-Za-z%:/?#\\[\\]@!\\$&'()\\*\\+,;=\\-._~]*$/;\n\n/**\n * Encode URI only when it contains invalid characters.\n * @param uri - URI to encode.\n */\nfunction encodeURIWhenNeeded(uri: string)\n{\n if (validURICharactersRegex.test(uri))\n {\n return uri;\n }\n\n return encodeURI(uri);\n}\n\n/**\n * A loader plugin for handling web fonts\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.load({\n * alias: 'font',\n * src: 'fonts/titan-one.woff',\n * data: {\n * family: 'Titan One',\n * weights: ['normal', 'bold'],\n * }\n * })\n * @memberof assets\n */\nexport const loadWebFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low,\n },\n\n name: 'loadWebFont',\n\n test(url: string): boolean\n {\n return checkDataUrl(url, validFontMIMEs) || checkExtension(url, validFontExtensions);\n },\n\n async load(url: string, options?: ResolvedAsset): Promise\n {\n const fonts = DOMAdapter.get().getFontFaceSet();\n\n if (fonts)\n {\n const fontFaces: FontFace[] = [];\n const name = options.data?.family ?? getFontFamilyName(url);\n const weights = options.data?.weights?.filter((weight) => validWeights.includes(weight)) ?? ['normal'];\n const data = options.data ?? {};\n\n for (let i = 0; i < weights.length; i++)\n {\n const weight = weights[i];\n\n const font = new FontFace(name, `url(${encodeURIWhenNeeded(url)})`, {\n ...data,\n weight,\n });\n\n await font.load();\n\n fonts.add(font);\n\n fontFaces.push(font);\n }\n\n Cache.set(`${name}-and-url`, {\n url,\n fontFaces,\n });\n\n return fontFaces.length === 1 ? fontFaces[0] : fontFaces;\n }\n\n // #if _DEBUG\n warn('[loadWebFont] FontFace API is not supported. Skipping loading font');\n // #endif\n\n return null;\n },\n\n unload(font: FontFace | FontFace[]): void\n {\n (Array.isArray(font) ? font : [font])\n .forEach((t) =>\n {\n Cache.remove(t.family);\n DOMAdapter.get().getFontFaceSet().delete(t);\n });\n }\n} as LoaderParser;\n","import { Resolver } from '../../assets/resolver/Resolver';\n\n/**\n * get the resolution / device pixel ratio of an asset by looking for the prefix\n * used by spritesheets and image urls\n * @memberof utils\n * @function getResolutionOfUrl\n * @param {string} url - the image path\n * @param {number} [defaultValue=1] - the defaultValue if no filename prefix is set.\n * @returns {number} resolution / device pixel ratio of an asset\n */\nexport function getResolutionOfUrl(url: string, defaultValue = 1): number\n{\n const resolution = Resolver.RETINA_PREFIX?.exec(url);\n\n if (resolution)\n {\n return parseFloat(resolution[1]);\n }\n\n return defaultValue;\n}\n","import { Texture } from '../../../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../../../utils/logging/warn';\nimport { Cache } from '../../../../cache/Cache';\n\nimport type { TextureSource } from '../../../../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Loader } from '../../../Loader';\n\n/**\n * Creates a texture from a source and adds it to the cache.\n * @param source - source of the texture\n * @param loader - loader\n * @param url - url of the texture\n * @ignore\n */\nexport function createTexture(source: TextureSource, loader: Loader, url: string)\n{\n source.label = url;\n source._sourceOrigin = url;\n\n const texture = new Texture({\n source,\n label: url,\n });\n\n const unload = () =>\n {\n delete loader.promiseCache[url];\n\n if (Cache.has(url))\n {\n Cache.remove(url);\n }\n };\n\n // remove the promise from the loader and the url from the cache when the texture is destroyed\n texture.source.once('destroy', () =>\n {\n if (loader.promiseCache[url])\n {\n // #if _DEBUG\n warn('[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! '\n + 'Use Assets.unload() instead of destroying the TextureSource.');\n // #endif\n\n unload();\n }\n });\n\n texture.once('destroy', () =>\n {\n if (!source.destroyed)\n {\n // #if _DEBUG\n warn('[Assets] A Texture managed by Assets was destroyed instead of unloaded! '\n + 'Use Assets.unload() instead of destroying the Texture.');\n // #endif\n\n unload();\n }\n });\n\n return texture;\n}\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { ImageSource } from '../../../../rendering/renderers/shared/texture/sources/ImageSource';\nimport { GraphicsContext } from '../../../../scene/graphics/shared/GraphicsContext';\nimport { getResolutionOfUrl } from '../../../../utils/network/getResolutionOfUrl';\nimport { checkDataUrl } from '../../../utils/checkDataUrl';\nimport { checkExtension } from '../../../utils/checkExtension';\nimport { type LoaderParser, LoaderParserPriority } from '../LoaderParser';\nimport { createTexture } from './utils/createTexture';\n\nimport type { TextureSourceOptions } from '../../../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport type { ResolvedAsset } from '../../../types';\nimport type { Loader } from '../../Loader';\n\n/**\n * Configuration for the [loadSVG]{@link assets.loadSVG} plugin.\n * @see assets.loadSVG\n * @memberof assets\n */\nexport interface LoadSVGConfig\n{\n /**\n * The crossOrigin value to use for loading the SVG as an image.\n * @default 'anonymous'\n */\n crossOrigin: HTMLImageElement['crossOrigin'];\n /**\n * When set to `true`, loading and decoding images will happen with `new Image()`,\n * @default false\n */\n parseAsGraphicsContext: boolean;\n}\n\n/**\n * Regular expression for SVG XML document.\n * @example <?xml version=\"1.0\" encoding=\"utf-8\" ?><!-- image/svg --><svg\n * @readonly\n */\nconst validSVGExtension = '.svg';\nconst validSVGMIME = 'image/svg+xml';\n\n/**\n * A simple loader plugin for loading json data\n * @memberof assets\n */\nexport const loadSvg = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Low,\n },\n\n name: 'loadSVG',\n\n config: {\n crossOrigin: 'anonymous',\n parseAsGraphicsContext: false,\n },\n\n test(url: string): boolean\n {\n return checkDataUrl(url, validSVGMIME) || checkExtension(url, validSVGExtension);\n },\n\n async load(\n url: string,\n asset: ResolvedAsset,\n loader: Loader\n ): Promise\n {\n if (asset.data.parseAsGraphicsContext ?? this.config.parseAsGraphicsContext)\n {\n return loadAsGraphics(url);\n }\n\n return loadAsTexture(url, asset, loader, this.config.crossOrigin);\n },\n\n unload(asset: Texture | GraphicsContext): void\n {\n asset.destroy(true);\n }\n\n} as LoaderParser;\n\nasync function loadAsTexture(\n url: string,\n asset: ResolvedAsset,\n loader: Loader,\n crossOrigin: HTMLImageElement['crossOrigin']\n): Promise\n{\n const response = await DOMAdapter.get().fetch(url);\n\n const blob = await response.blob();\n\n const blobUrl = URL.createObjectURL(blob);\n\n const image = new Image();\n\n image.src = blobUrl;\n image.crossOrigin = crossOrigin;\n await image.decode();\n\n URL.revokeObjectURL(blobUrl);\n\n // convert to canvas...\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n const resolution = asset.data?.resolution || getResolutionOfUrl(url);\n\n const width = asset.data?.width ?? image.width;\n const height = asset.data?.height ?? image.height;\n\n canvas.width = width * resolution;\n canvas.height = height * resolution;\n\n context.drawImage(image, 0, 0, width * resolution, height * resolution);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { parseAsGraphicsContext: _p, ...rest } = asset.data;\n const base = new ImageSource({\n resource: canvas,\n alphaMode: 'premultiply-alpha-on-upload',\n resolution,\n ...rest,\n });\n\n return createTexture(base, loader, url);\n}\n\nasync function loadAsGraphics(url: string): Promise\n{\n const response = await DOMAdapter.get().fetch(url);\n const svgSource = await response.text();\n\n const context = new GraphicsContext();\n\n context.svg(svgSource);\n\n return context;\n}\n","import CheckImageBitmapWorker from 'worker:./checkImageBitmap.worker.ts';\nimport LoadImageBitmapWorker from 'worker:./loadImageBitmap.worker.ts';\n\nlet UUID = 0;\nlet MAX_WORKERS: number;\n\ntype LoadImageBitmapResult = {\n data?: ImageBitmap,\n error?: Error,\n uuid: number,\n id: string,\n};\n\nclass WorkerManagerClass\n{\n public worker: Worker;\n private _resolveHash: {\n [key: string]: {\n resolve: (...param: any[]) => void;\n reject: (...param: any[]) => void;\n }\n };\n private readonly _workerPool: Worker[];\n private readonly _queue: {\n id: string;\n arguments: any[];\n resolve: (...param: any[]) => void;\n reject: (...param: any[]) => void;\n }[];\n private _initialized = false;\n private _createdWorkers = 0;\n private _isImageBitmapSupported?: Promise;\n\n constructor()\n {\n this._workerPool = [];\n this._queue = [];\n\n this._resolveHash = {};\n }\n\n public isImageBitmapSupported(): Promise\n {\n if (this._isImageBitmapSupported !== undefined) return this._isImageBitmapSupported;\n\n this._isImageBitmapSupported = new Promise((resolve) =>\n {\n const { worker } = new CheckImageBitmapWorker();\n\n worker.addEventListener('message', (event: MessageEvent) =>\n {\n worker.terminate();\n CheckImageBitmapWorker.revokeObjectURL();\n resolve(event.data);\n });\n });\n\n return this._isImageBitmapSupported;\n }\n\n public loadImageBitmap(src: string): Promise\n {\n return this._run('loadImageBitmap', [src]) as Promise;\n }\n\n private async _initWorkers()\n {\n if (this._initialized) return;\n\n this._initialized = true;\n }\n\n private _getWorker(): Worker\n {\n if (MAX_WORKERS === undefined)\n {\n MAX_WORKERS = navigator.hardwareConcurrency || 4;\n }\n let worker = this._workerPool.pop();\n\n if (!worker && this._createdWorkers < MAX_WORKERS)\n {\n // only create as many as MAX_WORKERS allows..\n this._createdWorkers++;\n worker = new LoadImageBitmapWorker().worker;\n\n worker.addEventListener('message', (event: MessageEvent) =>\n {\n this._complete(event.data);\n\n this._returnWorker(event.target as Worker);\n this._next();\n });\n }\n\n return worker;\n }\n\n private _returnWorker(worker: Worker)\n {\n this._workerPool.push(worker);\n }\n\n private _complete(data: LoadImageBitmapResult): void\n {\n if (data.error !== undefined)\n {\n this._resolveHash[data.uuid].reject(data.error);\n }\n else\n {\n this._resolveHash[data.uuid].resolve(data.data);\n }\n\n this._resolveHash[data.uuid] = null;\n }\n\n private async _run(id: string, args: any[]): Promise\n {\n await this._initWorkers();\n // push into the queue...\n\n const promise = new Promise((resolve, reject) =>\n {\n this._queue.push({ id, arguments: args, resolve, reject });\n });\n\n this._next();\n\n return promise;\n }\n\n private _next(): void\n {\n // nothing to do\n if (!this._queue.length) return;\n\n const worker = this._getWorker();\n\n // no workers available...\n if (!worker)\n {\n return;\n }\n\n const toDo = this._queue.pop();\n\n const id = toDo.id;\n\n this._resolveHash[UUID] = { resolve: toDo.resolve, reject: toDo.reject };\n\n worker.postMessage({\n data: toDo.arguments,\n uuid: UUID++,\n id,\n });\n }\n}\n\nconst WorkerManager = new WorkerManagerClass();\n\nexport {\n WorkerManager,\n};\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { ImageSource } from '../../../../rendering/renderers/shared/texture/sources/ImageSource';\nimport { getResolutionOfUrl } from '../../../../utils/network/getResolutionOfUrl';\nimport { checkDataUrl } from '../../../utils/checkDataUrl';\nimport { checkExtension } from '../../../utils/checkExtension';\nimport { WorkerManager } from '../../workers/WorkerManager';\nimport { LoaderParserPriority } from '../LoaderParser';\nimport { createTexture } from './utils/createTexture';\n\nimport type { TextureSourceOptions } from '../../../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport type { ResolvedAsset } from '../../../types';\nimport type { Loader } from '../../Loader';\nimport type { LoaderParser } from '../LoaderParser';\n\nconst validImageExtensions = ['.jpeg', '.jpg', '.png', '.webp', '.avif'];\nconst validImageMIMEs = [\n 'image/jpeg',\n 'image/png',\n 'image/webp',\n 'image/avif',\n];\n\n/**\n * Configuration for the [loadTextures]{@link assets.loadTextures} plugin.\n * @see assets.loadTextures\n * @memberof assets\n */\nexport interface LoadTextureConfig\n{\n /**\n * When set to `true`, loading and decoding images will happen with Worker thread,\n * if available on the browser. This is much more performant as network requests\n * and decoding can be expensive on the CPU. However, not all environments support\n * Workers, in some cases it can be helpful to disable by setting to `false`.\n * @default true\n */\n preferWorkers: boolean;\n /**\n * When set to `true`, loading and decoding images will happen with `createImageBitmap`,\n * otherwise it will use `new Image()`.\n * @default true\n */\n preferCreateImageBitmap: boolean;\n /**\n * The crossOrigin value to use for images when `preferCreateImageBitmap` is `false`.\n * @default 'anonymous'\n */\n crossOrigin: HTMLImageElement['crossOrigin'];\n}\n\n/**\n * Returns a promise that resolves an ImageBitmaps.\n * This function is designed to be used by a worker.\n * Part of WorkerManager!\n * @param url - The image to load an image bitmap for\n * @ignore\n */\nexport async function loadImageBitmap(url: string): Promise\n{\n const response = await DOMAdapter.get().fetch(url);\n\n if (!response.ok)\n {\n throw new Error(`[loadImageBitmap] Failed to fetch ${url}: `\n + `${response.status} ${response.statusText}`);\n }\n\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n\n return imageBitmap;\n}\n\n/**\n * A simple plugin to load our textures!\n * This makes use of imageBitmaps where available.\n * We load the `ImageBitmap` on a different thread using workers if possible.\n * We can then use the `ImageBitmap` as a source for a Pixi texture\n *\n * You can customize the behavior of this loader by setting the `config` property.\n * Which can be found [here]{@link assets.LoadTextureConfig}\n * ```js\n * // Set the config\n * import { loadTextures } from 'pixi.js';\n *\n * loadTextures.config = {\n * // If true we will use a worker to load the ImageBitmap\n * preferWorkers: true,\n * // If false we will use new Image() instead of createImageBitmap,\n * // we'll also disable the use of workers as it requires createImageBitmap\n * preferCreateImageBitmap: true,\n * crossOrigin: 'anonymous',\n * };\n * ```\n * @memberof assets\n */\nexport const loadTextures = {\n\n name: 'loadTextures',\n\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n config: {\n preferWorkers: true,\n preferCreateImageBitmap: true,\n crossOrigin: 'anonymous',\n },\n\n test(url: string): boolean\n {\n return checkDataUrl(url, validImageMIMEs) || checkExtension(url, validImageExtensions);\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise\n {\n let src: any = null;\n\n if (globalThis.createImageBitmap && this.config.preferCreateImageBitmap)\n {\n if (this.config.preferWorkers && await WorkerManager.isImageBitmapSupported())\n {\n src = await WorkerManager.loadImageBitmap(url);\n }\n else\n {\n src = await loadImageBitmap(url);\n }\n }\n else\n {\n src = await new Promise((resolve) =>\n {\n src = new Image();\n src.crossOrigin = this.config.crossOrigin;\n\n src.src = url;\n if (src.complete)\n {\n resolve(src);\n }\n else\n {\n src.onload = (): void =>\n {\n resolve(src);\n };\n }\n });\n }\n\n const base = new ImageSource({\n resource: src,\n alphaMode: 'premultiply-alpha-on-upload',\n resolution: asset.data?.resolution || getResolutionOfUrl(url),\n ...asset.data,\n });\n\n return createTexture(base, loader, url);\n },\n\n unload(texture: Texture): void\n {\n texture.destroy(true);\n }\n} as LoaderParser;\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { VideoSource } from '../../../../rendering/renderers/shared/texture/sources/VideoSource';\nimport { detectVideoAlphaMode } from '../../../../utils/browser/detectVideoAlphaMode';\nimport { getResolutionOfUrl } from '../../../../utils/network/getResolutionOfUrl';\nimport { checkDataUrl } from '../../../utils/checkDataUrl';\nimport { checkExtension } from '../../../utils/checkExtension';\nimport { createTexture } from './utils/createTexture';\n\nimport type { VideoSourceOptions } from '../../../../rendering/renderers/shared/texture/sources/VideoSource';\nimport type { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport type { ResolvedAsset } from '../../../types';\nimport type { Loader } from '../../Loader';\nimport type { LoaderParser } from '../LoaderParser';\n\nconst validVideoExtensions = ['.mp4', '.m4v', '.webm', '.ogg', '.ogv', '.h264', '.avi', '.mov'];\nconst validVideoMIMEs = validVideoExtensions.map((ext) => `video/${ext.substring(1)}`);\n\n/**\n * Set cross origin based detecting the url and the crossorigin\n * @param element - Element to apply crossOrigin\n * @param url - URL to check\n * @param crossorigin - Cross origin value to use\n * @memberof assets\n */\nexport function crossOrigin(element: HTMLImageElement | HTMLVideoElement, url: string, crossorigin?: boolean | string): void\n{\n if (crossorigin === undefined && !url.startsWith('data:'))\n {\n element.crossOrigin = determineCrossOrigin(url);\n }\n else if (crossorigin !== false)\n {\n element.crossOrigin = typeof crossorigin === 'string' ? crossorigin : 'anonymous';\n }\n}\n\n/**\n * Preload a video element\n * @param element - Video element to preload\n */\nexport function preloadVideo(element: HTMLVideoElement): Promise\n{\n return new Promise((resolve, reject) =>\n {\n element.addEventListener('canplaythrough', loaded);\n element.addEventListener('error', error);\n\n element.load();\n\n function loaded(): void\n {\n cleanup();\n resolve();\n }\n\n function error(err: ErrorEvent): void\n {\n cleanup();\n reject(err);\n }\n\n function cleanup(): void\n {\n element.removeEventListener('canplaythrough', loaded);\n element.removeEventListener('error', error);\n }\n });\n}\n\n/**\n * Sets the `crossOrigin` property for this resource based on if the url\n * for this resource is cross-origin. If crossOrigin was manually set, this\n * function does nothing.\n * Nipped from the resource loader!\n * @ignore\n * @param url - The url to test.\n * @param {object} [loc=window.location] - The location object to test against.\n * @returns The crossOrigin value to use (or empty string for none).\n * @memberof assets\n */\nexport function determineCrossOrigin(url: string, loc: Location = globalThis.location): string\n{\n // data: and javascript: urls are considered same-origin\n if (url.startsWith('data:'))\n {\n return '';\n }\n\n // default is window.location\n loc = loc || globalThis.location;\n\n const parsedUrl = new URL(url, document.baseURI);\n\n // if cross origin\n if (parsedUrl.hostname !== loc.hostname || parsedUrl.port !== loc.port || parsedUrl.protocol !== loc.protocol)\n {\n return 'anonymous';\n }\n\n return '';\n}\n\n/**\n * A simple plugin to load video textures.\n *\n * You can pass VideoSource options to the loader via the .data property of the asset descriptor\n * when using Asset.load().\n * ```js\n * // Set the data\n * const texture = await Assets.load({\n * src: './assets/city.mp4',\n * data: {\n * preload: true,\n * autoPlay: true,\n * },\n * });\n * ```\n * @memberof assets\n */\nexport const loadVideoTextures = {\n\n name: 'loadVideo',\n\n extension: {\n type: ExtensionType.LoadParser,\n },\n\n config: null,\n\n test(url: string): boolean\n {\n const isValidDataUrl = checkDataUrl(url, validVideoMIMEs);\n const isValidExtension = checkExtension(url, validVideoExtensions);\n\n return isValidDataUrl || isValidExtension;\n },\n\n async load(url: string, asset: ResolvedAsset, loader: Loader): Promise\n {\n // --- Merge default and provided options ---\n const options: VideoSourceOptions = {\n ...VideoSource.defaultOptions,\n resolution: asset.data?.resolution || getResolutionOfUrl(url),\n alphaMode: asset.data?.alphaMode || await detectVideoAlphaMode(),\n ...asset.data,\n };\n\n // --- Create and configure HTMLVideoElement ---\n const videoElement = document.createElement('video');\n\n // Set attributes based on options\n const attributeMap = {\n preload: options.autoLoad !== false ? 'auto' : undefined,\n 'webkit-playsinline': options.playsinline !== false ? '' : undefined,\n playsinline: options.playsinline !== false ? '' : undefined,\n muted: options.muted === true ? '' : undefined,\n loop: options.loop === true ? '' : undefined,\n autoplay: options.autoPlay !== false ? '' : undefined\n };\n\n Object.keys(attributeMap).forEach((key) =>\n {\n const value = attributeMap[key as keyof typeof attributeMap];\n\n if (value !== undefined) videoElement.setAttribute(key, value);\n });\n\n if (options.muted === true)\n {\n videoElement.muted = true;\n }\n\n crossOrigin(videoElement, url, options.crossorigin); // Assume crossOrigin is globally available\n\n // --- Set up source and MIME type ---\n const sourceElement = document.createElement('source');\n\n // Determine MIME type\n let mime: string | undefined;\n\n if (url.startsWith('data:'))\n {\n mime = url.slice(5, url.indexOf(';'));\n }\n else if (!url.startsWith('blob:'))\n {\n const ext = url.split('?')[0].slice(url.lastIndexOf('.') + 1).toLowerCase();\n\n mime = VideoSource.MIME_TYPES[ext] || `video/${ext}`;\n }\n\n sourceElement.src = url;\n\n if (mime)\n {\n sourceElement.type = mime;\n }\n\n // this promise will make sure that video is ready to play - as in we have a valid width, height and it can be\n // uploaded to the GPU. Our textures are kind of dumb now, and don't want to handle resizing right now.\n return new Promise((resolve) =>\n {\n const onCanPlay = async () =>\n {\n const base = new VideoSource({ ...options, resource: videoElement });\n\n videoElement.removeEventListener('canplay', onCanPlay);\n\n if (asset.data.preload)\n {\n await preloadVideo(videoElement);\n }\n\n resolve(createTexture(base, loader, url));\n };\n\n videoElement.addEventListener('canplay', onCanPlay);\n videoElement.appendChild(sourceElement);\n });\n },\n\n unload(texture: Texture): void\n {\n texture.destroy(true);\n }\n} as LoaderParser;\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { loadTextures } from '../../loader/parsers/textures/loadTextures';\nimport { Resolver } from '../Resolver';\n\nimport type { UnresolvedAsset } from '../../types';\nimport type { ResolveURLParser } from '../types';\n\n/**\n * A parser that will resolve a texture url\n * @memberof assets\n */\nexport const resolveTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: loadTextures.test,\n parse: (value: string): UnresolvedAsset =>\n ({\n resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format: value.split('.').pop(),\n src: value,\n }),\n} as ResolveURLParser;\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Resolver } from '../Resolver';\nimport { resolveTextureUrl } from './resolveTextureUrl';\n\nimport type { ResolveURLParser } from '../types';\n\n/**\n * A parser that will resolve a json urls resolution for spritesheets\n * e.g. `assets/spritesheet@1x.json`\n * @memberof assets\n */\nexport const resolveJsonUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value: string): boolean =>\n Resolver.RETINA_PREFIX.test(value) && value.endsWith('.json'),\n parse: resolveTextureUrl.parse,\n} as ResolveURLParser;\n","/* eslint-disable max-len */\nimport { extensions, ExtensionType } from '../extensions/Extensions';\nimport { warn } from '../utils/logging/warn';\nimport { BackgroundLoader } from './BackgroundLoader';\nimport { Cache } from './cache/Cache';\nimport { cacheTextureArray } from './cache/parsers/cacheTextureArray';\nimport { detectAvif } from './detections/parsers/detectAvif';\nimport { detectDefaults } from './detections/parsers/detectDefaults';\nimport { detectMp4 } from './detections/parsers/detectMp4';\nimport { detectOgv } from './detections/parsers/detectOgv';\nimport { detectWebm } from './detections/parsers/detectWebm';\nimport { detectWebp } from './detections/parsers/detectWebp';\nimport { Loader } from './loader/Loader';\nimport { loadJson } from './loader/parsers/loadJson';\nimport { loadTxt } from './loader/parsers/loadTxt';\nimport { loadWebFont } from './loader/parsers/loadWebFont';\nimport { loadSvg } from './loader/parsers/textures/loadSVG';\nimport { type LoadTextureConfig, loadTextures } from './loader/parsers/textures/loadTextures';\nimport { loadVideoTextures } from './loader/parsers/textures/loadVideoTextures';\nimport { resolveJsonUrl } from './resolver/parsers/resolveJsonUrl';\nimport { resolveTextureUrl } from './resolver/parsers/resolveTextureUrl';\nimport { Resolver } from './resolver/Resolver';\nimport { convertToList } from './utils/convertToList';\nimport { isSingleItem } from './utils/isSingleItem';\n\nimport type { AssetExtension } from './AssetExtension';\nimport type { FormatDetectionParser } from './detections/types';\nimport type { LoadSVGConfig } from './loader/parsers/textures/loadSVG';\nimport type { BundleIdentifierOptions } from './resolver/Resolver';\nimport type { ArrayOr, AssetsBundle, AssetsManifest, ResolvedAsset, UnresolvedAsset } from './types';\n\n/**\n * Callback for when progress on asset loading is made.\n * The function is passed a single parameter, `progress`, which represents the percentage (0.0 - 1.0)\n * of the assets loaded.\n * @memberof assets\n * @callback ProgressCallback\n * @param {number} progress - The percentage (0.0 - 1.0) of the assets loaded.\n * @returns {void}\n * @example\n * (progress) => console.log(progress * 100 + '%')\n */\nexport type ProgressCallback = (progress: number) => void;\n\n/**\n * Extensible preferences that can be used, for instance, when configuring loaders.\n * @since 7.2.0\n * @memberof assets\n */\nexport interface AssetsPreferences extends LoadTextureConfig, LoadSVGConfig, PixiMixins.AssetsPreferences {}\n\n/**\n * Initialization options object for the Assets Class.\n * @memberof assets\n */\nexport interface AssetInitOptions\n{\n // basic...\n /** a base path for any assets loaded */\n basePath?: string;\n\n /** a default URL parameter string to append to all assets loaded */\n defaultSearchParams?: string | Record;\n\n /**\n * a manifest to tell the asset loader upfront what all your assets are\n * this can be the manifest object itself, or a URL to the manifest.\n */\n manifest?: string | AssetsManifest;\n /**\n * optional preferences for which textures preferences you have when resolving assets\n * for example you might set the resolution to 0.5 if the user is on a rubbish old phone\n * or you might set the resolution to 2 if the user is on a retina display\n */\n texturePreference?: {\n /** the resolution order you prefer, can be an array (priority order - first is prefered) or a single resolutions */\n resolution?: number | number[];\n /**\n * the formats you prefer, by default this will be:\n * ['avif', 'webp', 'png', 'jpg', 'jpeg', 'webm', 'mp4', 'm4v', 'ogv']\n */\n format?: ArrayOr;\n };\n\n /**\n * If true, don't attempt to detect whether browser has preferred formats available.\n * May result in increased performance as it skips detection step.\n */\n skipDetections?: boolean;\n\n /** advanced - override how bundlesIds are generated */\n bundleIdentifier?: BundleIdentifierOptions;\n\n /** Optional loader preferences */\n preferences?: Partial;\n}\n\n/**\n * A one stop shop for all Pixi resource management!\n * Super modern and easy to use, with enough flexibility to customize and do what you need!\n * @namespace assets\n *\n * Use the singleton class [Assets]{@link assets.Assets} to easily load and manage all your assets.\n *\n * ```typescript\n * import { Assets, Texture } from 'pixi.js';\n *\n * const bunnyTexture = await Assets.load('bunny.png');\n * const sprite = new Sprite(bunnyTexture);\n * ```\n *\n * Check out the sections below for more information on how to deal with assets.\n *\n *
\n *\n * Asset Loading\n *\n * Do not be afraid to load things multiple times - under the hood, it will **NEVER** load anything more than once.\n *\n * *For example:*\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * promise1 = Assets.load('bunny.png')\n * promise2 = Assets.load('bunny.png')\n *\n * // promise1 === promise2\n * ```\n *\n * Here both promises will be the same. Once resolved... Forever resolved! It makes for really easy resource management!\n *\n * Out of the box Pixi supports the following files:\n * - Textures (**_avif_**, **_webp_**, **_png_**, **_jpg_**, **_gif_**, **_svg_**) via {@link assets.loadTextures}, {@link assets.loadSvg}\n * - Video Textures (**_mp4_**, **_m4v_**, **_webm_**, **_ogg_**, **_ogv_**, **_h264_**, **_avi_**, **_mov_**) via {@link assets.loadVideoTextures}\n * - Sprite sheets (**_json_**) via {@link assets.spritesheetAsset}\n * - Bitmap fonts (**_xml_**, **_fnt_**, **_txt_**) via {@link assets.loadBitmapFont}\n * - Web fonts (**_ttf_**, **_woff_**, **_woff2_**) via {@link assets.loadWebFont}\n * - JSON files (**_json_**) via {@link assets.loadJson}\n * - Text Files (**_txt_**) via {@link assets.loadTxt}\n *
\n * More types can be added fairly easily by creating additional {@link assets.LoaderParser LoaderParsers}.\n *
\n *\n *
\n *\n * Textures\n *\n * - Textures are loaded as ImageBitmap on a worker thread where possible. Leading to much less janky load + parse times.\n * - By default, we will prefer to load AVIF and WebP image files if you specify them.\n * But if the browser doesn't support AVIF or WebP we will fall back to png and jpg.\n * - Textures can also be accessed via `Texture.from()` (see {@link core.from|Texture.from})\n * and now use this asset manager under the hood!\n * - Don't worry if you set preferences for textures that don't exist\n * (for example you prefer 2x resolutions images but only 1x is available for that texture,\n * the Assets manager will pick that up as a fallback automatically)\n *\n * #### Sprite sheets\n * - It's hard to know what resolution a sprite sheet is without loading it first, to address this\n * there is a naming convention we have added that will let Pixi understand the image format and resolution\n * of the spritesheet via its file name: `my-spritesheet{resolution}.{imageFormat}.json`\n *

For example:\n * - `my-spritesheet@2x.webp.json`* // 2x resolution, WebP sprite sheet*\n * - `my-spritesheet@0.5x.png.json`* // 0.5x resolution, png sprite sheet*\n * - This is optional! You can just load a sprite sheet as normal.\n * This is only useful if you have a bunch of different res / formatted spritesheets.\n *
\n *\n *
\n *\n * Fonts\n *\n * Web fonts will be loaded with all weights.\n * It is possible to load only specific weights by doing the following:\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * // Load specific weights..\n * await Assets.load({\n * data: {\n * weights: ['normal'], // Only loads the weight\n * },\n * src: `outfit.woff2`,\n * });\n *\n * // Load everything...\n * await Assets.load(`outfit.woff2`);\n * ```\n *
\n *\n *
\n *\n * Background Loading\n *\n * Background loading will load stuff for you passively behind the scenes. To minimize jank,\n * it will only load one asset at a time. As soon as a developer calls `Assets.load(...)` the\n * background loader is paused and requested assets are loaded as a priority.\n * Don't worry if something is in there that's already loaded, it will just get skipped!\n *\n * You still need to call `Assets.load(...)` to get an asset that has been loaded in the background.\n * It's just that this promise will resolve instantly if the asset\n * has already been loaded.\n *
\n *\n *
\n *\n * Manifest and Bundles\n *\n * - {@link assets.AssetsManifest Manifest} is a descriptor that contains a list of all assets and their properties.\n * - {@link assets.AssetsBundle Bundles} are a way to group assets together.\n *\n * ```js\n * import { Assets } from 'pixi.js';\n *\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * await Assets.init({ manifest });\n *\n * // Load a bundle...\n * loadScreenAssets = await Assets.loadBundle('load-screen');\n * // Load another bundle...\n * gameScreenAssets = await Assets.loadBundle('game-screen');\n * ```\n *
\n */\n\n/**\n * The global Assets class, it's a singleton so you don't need to instantiate it.\n *\n * **The `Assets` class has four main responsibilities:**\n * 1. Allows users to map URLs to keys and resolve them according to the user's browser capabilities\n * 2. Loads the resources and transforms them into assets that developers understand.\n * 3. Caches the assets and provides a way to access them.\n * 4. Allow developers to unload assets and clear the cache.\n *\n *\n * **It also has a few advanced features:**\n * 1. Allows developers to provide a {@link assets.Manifest} upfront of all assets and help manage\n * them via {@link assets.AssetsBundles Bundles}.\n * 2. Allows users to background load assets. Shortening (or eliminating) load times and improving UX. With this feature,\n * in-game loading bars can be a thing of the past!\n * @example\n * import { Assets } from 'pixi.js';\n *\n * const bunny = await Assets.load('bunny.png');\n * @memberof assets\n * @class Assets\n */\nexport class AssetsClass\n{\n /** the resolver to map various urls */\n public resolver: Resolver;\n /** The loader, loads stuff! */\n public loader: Loader;\n /**\n * The global cache of all assets within PixiJS\n * @type {assets.Cache}\n */\n public cache: typeof Cache;\n\n /** takes care of loading assets in the background */\n private readonly _backgroundLoader: BackgroundLoader;\n\n private readonly _detections: FormatDetectionParser[] = [];\n\n private _initialized = false;\n\n constructor()\n {\n this.resolver = new Resolver();\n this.loader = new Loader();\n this.cache = Cache;\n\n this._backgroundLoader = new BackgroundLoader(this.loader);\n this._backgroundLoader.active = true;\n\n this.reset();\n }\n\n /**\n * Best practice is to call this function before any loading commences\n * Initiating is the best time to add any customization to the way things are loaded.\n *\n * you do not need to call this for the Assets class to work, only if you want to set any initial properties\n * @param options - options to initialize the Assets manager with\n */\n public async init(options: AssetInitOptions = {}): Promise\n {\n if (this._initialized)\n {\n // #if _DEBUG\n warn('[Assets]AssetManager already initialized, did you load before calling this Assets.init()?');\n // #endif\n\n return;\n }\n\n this._initialized = true;\n\n if (options.defaultSearchParams)\n {\n this.resolver.setDefaultSearchParams(options.defaultSearchParams);\n }\n\n if (options.basePath)\n {\n this.resolver.basePath = options.basePath;\n }\n\n if (options.bundleIdentifier)\n {\n this.resolver.setBundleIdentifier(options.bundleIdentifier);\n }\n\n if (options.manifest)\n {\n let manifest = options.manifest;\n\n if (typeof manifest === 'string')\n {\n manifest = await this.load(manifest);\n }\n\n this.resolver.addManifest(manifest);\n }\n\n const resolutionPref = options.texturePreference?.resolution ?? 1;\n const resolution = (typeof resolutionPref === 'number') ? [resolutionPref] : resolutionPref;\n\n const formats = await this._detectFormats({\n preferredFormats: options.texturePreference?.format,\n skipDetections: options.skipDetections,\n detections: this._detections\n });\n\n this.resolver.prefer({\n params: {\n format: formats,\n resolution,\n },\n });\n\n if (options.preferences)\n {\n this.setPreferences(options.preferences);\n }\n }\n\n /**\n * Allows you to specify how to resolve any assets load requests.\n * There are a few ways to add things here as shown below:\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Simple\n * Assets.add({alias: 'bunnyBooBoo', src: 'bunny.png'});\n * const bunny = await Assets.load('bunnyBooBoo');\n *\n * // Multiple keys:\n * Assets.add({alias: ['burger', 'chicken'], src: 'bunny.png'});\n *\n * const bunny = await Assets.load('burger');\n * const bunny2 = await Assets.load('chicken');\n *\n * // passing options to to the object\n * Assets.add({\n * alias: 'bunnyBooBooSmooth',\n * src: 'bunny{png,webp}',\n * data: { scaleMode: SCALE_MODES.NEAREST }, // Base texture options\n * });\n *\n * // Multiple assets\n *\n * // The following all do the same thing:\n *\n * Assets.add({alias: 'bunnyBooBoo', src: 'bunny{png,webp}'});\n *\n * Assets.add({\n * alias: 'bunnyBooBoo',\n * src: [\n * 'bunny.png',\n * 'bunny.webp',\n * ],\n * });\n *\n * const bunny = await Assets.load('bunnyBooBoo'); // Will try to load WebP if available\n * @param assets - the unresolved assets to add to the resolver\n */\n public add(assets: (ArrayOr)): void\n {\n this.resolver.add(assets);\n }\n\n /**\n * Loads your assets! You pass in a key or URL and it will return a promise that\n * resolves to the loaded asset. If multiple assets a requested, it will return a hash of assets.\n *\n * Don't worry about loading things multiple times, behind the scenes assets are only ever loaded\n * once and the same promise reused behind the scenes so you can safely call this function multiple\n * times with the same key and it will always return the same asset.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Load a URL:\n * const myImageTexture = await Assets.load('http://some.url.com/image.png'); // => returns a texture\n *\n * Assets.add('thumper', 'bunny.png');\n * Assets.add('chicko', 'chicken.png');\n *\n * // Load multiple assets:\n * const textures = await Assets.load(['thumper', 'chicko']); // => {thumper: Texture, chicko: Texture}\n * @param urls - the urls to load\n * @param onProgress - optional function that is called when progress on asset loading is made.\n * The function is passed a single parameter, `progress`, which represents the percentage\n * (0.0 - 1.0) of the assets loaded.\n * @returns - the assets that were loaded, either a single asset or a hash of assets\n */\n public async load(\n urls: string | UnresolvedAsset,\n onProgress?: ProgressCallback,\n ): Promise;\n public async load(\n urls: string[] | UnresolvedAsset[],\n onProgress?: ProgressCallback,\n ): Promise>;\n public async load(\n urls: ArrayOr | ArrayOr,\n onProgress?: ProgressCallback\n ): Promise>\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n const singleAsset = isSingleItem(urls);\n\n const urlArray: string[] = convertToList(urls)\n .map((url) =>\n {\n if (typeof url !== 'string')\n {\n const aliases = this.resolver.getAlias(url);\n\n if (aliases.some((alias) => !this.resolver.hasKey(alias)))\n {\n this.add(url);\n }\n\n return Array.isArray(aliases) ? aliases[0] : aliases;\n }\n\n // if it hasn't been added, add it now\n if (!this.resolver.hasKey(url)) this.add({ alias: url, src: url });\n\n return url;\n }) as string[];\n\n // check cache first...\n const resolveResults = this.resolver.resolve(urlArray);\n\n // remap to the keys used..\n const out: Record = await this._mapLoadToResolve(resolveResults, onProgress);\n\n return singleAsset ? out[urlArray[0] as string] : out;\n }\n\n /**\n * This adds a bundle of assets in one go so that you can load them as a group.\n * For example you could add a bundle for each screen in you pixi app\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle('animals', [\n * { alias: 'bunny', src: 'bunny.png' },\n * { alias: 'chicken', src: 'chicken.png' },\n * { alias: 'thumper', src: 'thumper.png' },\n * ]);\n * // or\n * Assets.addBundle('animals', {\n * bunny: 'bunny.png',\n * chicken: 'chicken.png',\n * thumper: 'thumper.png',\n * });\n *\n * const assets = await Assets.loadBundle('animals');\n * @param bundleId - the id of the bundle to add\n * @param assets - a record of the asset or assets that will be chosen from when loading via the specified key\n */\n public addBundle(bundleId: string, assets: AssetsBundle['assets']): void\n {\n this.resolver.addBundle(bundleId, assets);\n }\n\n /**\n * Bundles are a way to load multiple assets at once.\n * If a manifest has been provided to the init function then you can load a bundle, or bundles.\n * you can also add bundles via `addBundle`\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Manifest Example\n * const manifest = {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [\n * {\n * alias: 'background',\n * src: 'sunset.png',\n * },\n * {\n * alias: 'bar',\n * src: 'load-bar.{png,webp}',\n * },\n * ],\n * },\n * {\n * name: 'game-screen',\n * assets: [\n * {\n * alias: 'character',\n * src: 'robot.png',\n * },\n * {\n * alias: 'enemy',\n * src: 'bad-guy.png',\n * },\n * ],\n * },\n * ]\n * };\n *\n * await Assets.init({ manifest });\n *\n * // Load a bundle...\n * loadScreenAssets = await Assets.loadBundle('load-screen');\n * // Load another bundle...\n * gameScreenAssets = await Assets.loadBundle('game-screen');\n * @param bundleIds - the bundle id or ids to load\n * @param onProgress - Optional function that is called when progress on asset loading is made.\n * The function is passed a single parameter, `progress`, which represents the percentage (0.0 - 1.0)\n * of the assets loaded. Do not use this function to detect when assets are complete and available,\n * instead use the Promise returned by this function.\n * @returns all the bundles assets or a hash of assets for each bundle specified\n */\n public async loadBundle(bundleIds: ArrayOr, onProgress?: ProgressCallback): Promise\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n let singleAsset = false;\n\n if (typeof bundleIds === 'string')\n {\n singleAsset = true;\n bundleIds = [bundleIds];\n }\n\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n\n const out: Record> = {};\n\n const keys = Object.keys(resolveResults);\n let count = 0;\n let total = 0;\n const _onProgress = () =>\n {\n onProgress?.(++count / total);\n };\n const promises = keys.map((bundleId) =>\n {\n const resolveResult = resolveResults[bundleId];\n\n total += Object.keys(resolveResult).length;\n\n return this._mapLoadToResolve(resolveResult, _onProgress)\n .then((resolveResult) =>\n {\n out[bundleId] = resolveResult;\n });\n });\n\n await Promise.all(promises);\n\n return singleAsset ? out[bundleIds[0]] : out;\n }\n\n /**\n * Initiate a background load of some assets. It will passively begin to load these assets in the background.\n * So when you actually come to loading them you will get a promise that resolves to the loaded assets immediately\n *\n * An example of this might be that you would background load game assets after your inital load.\n * then when you got to actually load your game screen assets when a player goes to the game - the loading\n * would already have stared or may even be complete, saving you having to show an interim load bar.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.backgroundLoad('bunny.png');\n *\n * // later on in your app...\n * await Assets.loadBundle('bunny.png'); // Will resolve quicker as loading may have completed!\n * @param urls - the url / urls you want to background load\n */\n public async backgroundLoad(urls: ArrayOr): Promise\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n if (typeof urls === 'string')\n {\n urls = [urls];\n }\n\n const resolveResults = this.resolver.resolve(urls);\n\n this._backgroundLoader.add(Object.values(resolveResults));\n }\n\n /**\n * Initiate a background of a bundle, works exactly like backgroundLoad but for bundles.\n * this can only be used if the loader has been initiated with a manifest\n * @example\n * import { Assets } from 'pixi.js';\n *\n * await Assets.init({\n * manifest: {\n * bundles: [\n * {\n * name: 'load-screen',\n * assets: [...],\n * },\n * ...\n * ],\n * },\n * });\n *\n * Assets.backgroundLoadBundle('load-screen');\n *\n * // Later on in your app...\n * await Assets.loadBundle('load-screen'); // Will resolve quicker as loading may have completed!\n * @param bundleIds - the bundleId / bundleIds you want to background load\n */\n public async backgroundLoadBundle(bundleIds: ArrayOr): Promise\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n if (typeof bundleIds === 'string')\n {\n bundleIds = [bundleIds];\n }\n\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n\n Object.values(resolveResults).forEach((resolveResult) =>\n {\n this._backgroundLoader.add(Object.values(resolveResult));\n });\n }\n\n /**\n * Only intended for development purposes.\n * This will wipe the resolver and caches.\n * You will need to reinitialize the Asset\n */\n public reset(): void\n {\n this.resolver.reset();\n this.loader.reset();\n this.cache.reset();\n\n this._initialized = false;\n }\n\n /**\n * Instantly gets an asset already loaded from the cache. If the asset has not yet been loaded,\n * it will return undefined. So it's on you! When in doubt just use `Assets.load` instead.\n * (Remember, the loader will never load things more than once!)\n * @param keys - The key or keys for the assets that you want to access\n * @returns - The assets or hash of assets requested\n */\n public get(keys: string): T;\n public get(keys: string[]): Record;\n public get(keys: ArrayOr): T | Record\n {\n if (typeof keys === 'string')\n {\n return Cache.get(keys);\n }\n\n const assets: Record = {};\n\n for (let i = 0; i < keys.length; i++)\n {\n assets[i] = Cache.get(keys[i]);\n }\n\n return assets;\n }\n\n /**\n * helper function to map resolved assets back to loaded assets\n * @param resolveResults - the resolve results from the resolver\n * @param onProgress - the progress callback\n */\n private async _mapLoadToResolve(\n resolveResults: ResolvedAsset | Record,\n onProgress?: ProgressCallback\n ): Promise>\n {\n const resolveArray = [...new Set(Object.values(resolveResults))] as ResolvedAsset[];\n\n // pause background loader...\n this._backgroundLoader.active = false;\n\n const loadedAssets = await this.loader.load(resolveArray, onProgress);\n\n // resume background loader...\n this._backgroundLoader.active = true;\n\n // remap to the keys used..\n\n const out: Record = {};\n\n resolveArray.forEach((resolveResult) =>\n {\n const asset = loadedAssets[resolveResult.src];\n\n const keys = [resolveResult.src];\n\n if (resolveResult.alias)\n {\n keys.push(...resolveResult.alias);\n }\n\n keys.forEach((key) =>\n {\n out[key] = asset;\n });\n\n Cache.set(keys, asset);\n });\n\n return out;\n }\n\n /**\n * Unload an asset or assets. As the Assets class is responsible for creating the assets via the `load` function\n * this will make sure to destroy any assets and release them from memory.\n * Once unloaded, you will need to load the asset again.\n *\n * Use this to help manage assets if you find that you have a large app and you want to free up memory.\n *\n * - it's up to you as the developer to make sure that textures are not actively being used when you unload them,\n * Pixi won't break but you will end up with missing assets. Not a good look for the user!\n * @example\n * import { Assets } from 'pixi.js';\n *\n * // Load a URL:\n * const myImageTexture = await Assets.load('http://some.url.com/image.png'); // => returns a texture\n *\n * await Assets.unload('http://some.url.com/image.png')\n *\n * // myImageTexture will be destroyed now.\n *\n * // Unload multiple assets:\n * const textures = await Assets.unload(['thumper', 'chicko']);\n * @param urls - the urls to unload\n */\n public async unload(\n urls: ArrayOr | ResolvedAsset | ResolvedAsset[]\n ): Promise\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n const urlArray = convertToList(urls)\n .map((url) =>\n ((typeof url !== 'string') ? url.src : url));\n\n // check cache first...\n const resolveResults = this.resolver.resolve(urlArray);\n\n await this._unloadFromResolved(resolveResults);\n }\n\n /**\n * Bundles are a way to manage multiple assets at once.\n * this will unload all files in a bundle.\n *\n * once a bundle has been unloaded, you need to load it again to have access to the assets.\n * @example\n * import { Assets } from 'pixi.js';\n *\n * Assets.addBundle({\n * 'thumper': 'http://some.url.com/thumper.png',\n * })\n *\n * const assets = await Assets.loadBundle('thumper');\n *\n * // Now to unload...\n *\n * await Assets.unloadBundle('thumper');\n *\n * // All assets in the assets object will now have been destroyed and purged from the cache\n * @param bundleIds - the bundle id or ids to unload\n */\n public async unloadBundle(bundleIds: ArrayOr): Promise\n {\n if (!this._initialized)\n {\n await this.init();\n }\n\n bundleIds = convertToList(bundleIds);\n\n const resolveResults = this.resolver.resolveBundle(bundleIds);\n\n const promises = Object.keys(resolveResults).map((bundleId) =>\n this._unloadFromResolved(resolveResults[bundleId]));\n\n await Promise.all(promises);\n }\n\n private async _unloadFromResolved(resolveResult: ResolvedAsset | Record)\n {\n const resolveArray = Object.values(resolveResult);\n\n resolveArray.forEach((resolveResult) =>\n {\n Cache.remove(resolveResult.src);\n });\n\n await this.loader.unload(resolveArray);\n }\n\n /**\n * Detects the supported formats for the browser, and returns an array of supported formats, respecting\n * the users preferred formats order.\n * @param options - the options to use when detecting formats\n * @param options.preferredFormats - the preferred formats to use\n * @param options.skipDetections - if we should skip the detections altogether\n * @param options.detections - the detections to use\n * @returns - the detected formats\n */\n private async _detectFormats(options: {\n preferredFormats: string | string[],\n skipDetections: boolean,\n detections: FormatDetectionParser[]\n }): Promise\n {\n let formats: string[] = [];\n\n // set preferred formats\n if (options.preferredFormats)\n {\n formats = Array.isArray(options.preferredFormats)\n ? options.preferredFormats : [options.preferredFormats];\n }\n\n // we should add any formats that are supported by the browser\n for (const detection of options.detections)\n {\n if (options.skipDetections || await detection.test())\n {\n formats = await detection.add(formats);\n }\n else if (!options.skipDetections)\n {\n formats = await detection.remove(formats);\n }\n }\n\n // remove any duplicates\n formats = formats.filter((format, index) => formats.indexOf(format) === index);\n\n return formats;\n }\n\n /** All the detection parsers currently added to the Assets class. */\n public get detections(): FormatDetectionParser[]\n {\n return this._detections;\n }\n\n /**\n * General setter for preferences. This is a helper function to set preferences on all parsers.\n * @param preferences - the preferences to set\n */\n public setPreferences(preferences: Partial): void\n {\n // Find matching config keys in loaders with preferences\n // and set the values\n this.loader.parsers.forEach((parser) =>\n {\n if (!parser.config) return;\n\n (Object.keys(parser.config) as (keyof AssetsPreferences)[])\n .filter((key) => key in preferences)\n .forEach((key) =>\n {\n parser.config[key] = preferences[key];\n });\n });\n }\n}\n\nexport const Assets = new AssetsClass();\n\n// Handle registration of extensions\nextensions\n .handleByList(ExtensionType.LoadParser, Assets.loader.parsers)\n .handleByList(ExtensionType.ResolveParser, Assets.resolver.parsers)\n .handleByList(ExtensionType.CacheParser, Assets.cache.parsers)\n .handleByList(ExtensionType.DetectionParser, Assets.detections);\nextensions.add(\n cacheTextureArray,\n\n detectDefaults,\n detectAvif,\n detectWebp,\n detectMp4,\n detectOgv,\n detectWebm,\n\n loadJson,\n loadTxt,\n loadWebFont,\n loadSvg,\n loadTextures,\n loadVideoTextures,\n\n resolveTextureUrl,\n resolveJsonUrl\n);\n\nconst assetKeyMap = {\n loader: ExtensionType.LoadParser,\n resolver: ExtensionType.ResolveParser,\n cache: ExtensionType.CacheParser,\n detection: ExtensionType.DetectionParser,\n};\n\ntype AssetType = keyof typeof assetKeyMap;\n\n// Split the Asset extension into it's various parts\n// these are handled in the Assets.ts file\nextensions.handle(ExtensionType.Asset, (extension) =>\n{\n const ref = extension.ref as AssetExtension;\n\n Object.entries(assetKeyMap)\n .filter(([key]) => !!ref[key as AssetType])\n .forEach(([key, type]) => extensions.add(Object.assign(\n ref[key as AssetType],\n // Allow the function to optionally define it's own\n // ExtensionMetadata, the use cases here is priority for LoaderParsers\n { extension: ref[key as AssetType].extension ?? type },\n )));\n}, (extension) =>\n{\n const ref = extension.ref as AssetExtension;\n\n Object.keys(assetKeyMap)\n .filter((key) => !!ref[key as AssetType])\n .forEach((key) => extensions.remove(ref[key as AssetType]));\n});\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { isWebGLSupported } from '../../utils/browser/isWebGLSupported';\nimport { isWebGPUSupported } from '../../utils/browser/isWebGPUSupported';\n\nimport type { FormatDetectionParser } from '../../assets/detections/types';\n\nexport const detectBasis = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 3,\n },\n test: async (): Promise =>\n {\n if (await isWebGPUSupported()) return true;\n if (isWebGLSupported()) return true;\n\n return false;\n },\n add: async (formats) => [...formats, 'basis'],\n remove: async (formats) => formats.filter((f) => f !== 'basis'),\n} as FormatDetectionParser;\n","import { TextureSource } from './TextureSource';\n\nimport type { TextureSourceOptions } from './TextureSource';\n\nexport class CompressedSource extends TextureSource\n{\n public readonly uploadMethodId = 'compressed';\n\n constructor(options: TextureSourceOptions)\n {\n super(options);\n\n this.resource = options.resource;\n this.mipLevelCount = this.resource.length;\n }\n}\n","import type { TEXTURE_FORMATS } from '../../../shared/texture/const';\n\nlet supportedGLCompressedTextureFormats: TEXTURE_FORMATS[];\n\nexport function getSupportedGlCompressedTextureFormats(): TEXTURE_FORMATS[]\n{\n if (supportedGLCompressedTextureFormats) return supportedGLCompressedTextureFormats;\n\n // TODO: can we use already created context (webgl or webgl2)?\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl');\n\n if (!gl)\n {\n return [];\n }\n\n supportedGLCompressedTextureFormats = [\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n // 'bc6h-rgb-ufloat'\n // 'bc6h-rgb-float'\n // 'bc7-rgba-unorm',\n // 'bc7-rgba-unorm-srgb',\n ...gl.getExtension('EXT_texture_compression_bptc') ? [\n 'bc6h-rgb-ufloat',\n 'bc6h-rgb-float',\n 'bc7-rgba-unorm',\n 'bc7-rgba-unorm-srgb',\n ] : [],\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n // 'bc1-rgba-unorm',\n // 'bc1-rgba-unorm-srgb',\n // 'bc4-r-unorm'\n // 'bc4-r-snorm'\n // 'bc5-rg-unorm'\n // 'bc5-rg-snorm'\n ...gl.getExtension('WEBGL_compressed_texture_s3tc') ? [\n 'bc1-rgba-unorm',\n 'bc2-rgba-unorm',\n 'bc3-rgba-unorm',\n ] : [],\n ...gl.getExtension('WEBGL_compressed_texture_s3tc_srgb') ? [\n 'bc1-rgba-unorm-srgb',\n 'bc2-rgba-unorm-srgb',\n 'bc3-rgba-unorm-srgb',\n ] : [],\n\n ...gl.getExtension('EXT_texture_compression_rgtc') ? [\n 'bc4-r-unorm',\n 'bc4-r-snorm',\n 'bc5-rg-unorm',\n 'bc5-rg-snorm',\n ] : [],\n\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n ...gl.getExtension('WEBGL_compressed_texture_etc') ? [\n 'etc2-rgb8unorm',\n 'etc2-rgb8unorm-srgb',\n 'etc2-rgba8unorm',\n 'etc2-rgba8unorm-srgb',\n 'etc2-rgb8a1unorm',\n 'etc2-rgb8a1unorm-srgb',\n 'eac-r11unorm',\n 'eac-rg11unorm',\n ] : [],\n // 'eac-r11snorm',\n // 'eac-rg11snorm',\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n ...gl.getExtension('WEBGL_compressed_texture_astc') ? [\n 'astc-4x4-unorm',\n 'astc-4x4-unorm-srgb',\n 'astc-5x4-unorm',\n 'astc-5x4-unorm-srgb',\n 'astc-5x5-unorm',\n 'astc-5x5-unorm-srgb',\n 'astc-6x5-unorm',\n 'astc-6x5-unorm-srgb',\n 'astc-6x6-unorm',\n 'astc-6x6-unorm-srgb',\n 'astc-8x5-unorm',\n 'astc-8x5-unorm-srgb',\n 'astc-8x6-unorm',\n 'astc-8x6-unorm-srgb',\n 'astc-8x8-unorm',\n 'astc-8x8-unorm-srgb',\n 'astc-10x5-unorm',\n 'astc-10x5-unorm-srgb',\n 'astc-10x6-unorm',\n 'astc-10x6-unorm-srgb',\n 'astc-10x8-unorm',\n 'astc-10x8-unorm-srgb',\n 'astc-10x10-unorm',\n 'astc-10x10-unorm-srgb',\n 'astc-12x10-unorm',\n 'astc-12x10-unorm-srgb',\n 'astc-12x12-unorm',\n 'astc-12x12-unorm-srgb'\n ] : [],\n ] as TEXTURE_FORMATS[];\n\n return supportedGLCompressedTextureFormats;\n}\n","import type { TEXTURE_FORMATS } from '../../../shared/texture/const';\n\nlet supportedGPUCompressedTextureFormats: TEXTURE_FORMATS[];\n\nexport async function getSupportedGPUCompressedTextureFormats(): Promise\n{\n if (supportedGPUCompressedTextureFormats) return supportedGPUCompressedTextureFormats;\n\n const adapter = await navigator.gpu.requestAdapter();\n\n supportedGPUCompressedTextureFormats = [\n ...adapter.features.has('texture-compression-bc') ? [\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'bc1-rgba-unorm',\n 'bc1-rgba-unorm-srgb',\n 'bc2-rgba-unorm',\n 'bc2-rgba-unorm-srgb',\n 'bc3-rgba-unorm',\n 'bc3-rgba-unorm-srgb',\n 'bc4-r-unorm',\n 'bc4-r-snorm',\n 'bc5-rg-unorm',\n 'bc5-rg-snorm',\n 'bc6h-rgb-ufloat',\n 'bc6h-rgb-float',\n 'bc7-rgba-unorm',\n 'bc7-rgba-unorm-srgb',\n ] : [],\n ...adapter.features.has('texture-compression-etc2') ? [\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'etc2-rgb8unorm',\n 'etc2-rgb8unorm-srgb',\n 'etc2-rgb8a1unorm',\n 'etc2-rgb8a1unorm-srgb',\n 'etc2-rgba8unorm',\n 'etc2-rgba8unorm-srgb',\n 'eac-r11unorm',\n 'eac-r11snorm',\n 'eac-rg11unorm',\n 'eac-rg11snorm',\n ] : [],\n ...adapter.features.has('texture-compression-astc') ? [\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'astc-4x4-unorm',\n 'astc-4x4-unorm-srgb',\n 'astc-5x4-unorm',\n 'astc-5x4-unorm-srgb',\n 'astc-5x5-unorm',\n 'astc-5x5-unorm-srgb',\n 'astc-6x5-unorm',\n 'astc-6x5-unorm-srgb',\n 'astc-6x6-unorm',\n 'astc-6x6-unorm-srgb',\n 'astc-8x5-unorm',\n 'astc-8x5-unorm-srgb',\n 'astc-8x6-unorm',\n 'astc-8x6-unorm-srgb',\n 'astc-8x8-unorm',\n 'astc-8x8-unorm-srgb',\n 'astc-10x5-unorm',\n 'astc-10x5-unorm-srgb',\n 'astc-10x6-unorm',\n 'astc-10x6-unorm-srgb',\n 'astc-10x8-unorm',\n 'astc-10x8-unorm-srgb',\n 'astc-10x10-unorm',\n 'astc-10x10-unorm-srgb',\n 'astc-12x10-unorm',\n 'astc-12x10-unorm-srgb',\n 'astc-12x12-unorm',\n 'astc-12x12-unorm-srgb',\n ] : [],\n ] as TEXTURE_FORMATS[];\n\n return supportedGPUCompressedTextureFormats;\n}\n","import { isWebGLSupported } from '../../../../../utils/browser/isWebGLSupported';\nimport { isWebGPUSupported } from '../../../../../utils/browser/isWebGPUSupported';\nimport { getSupportedGlCompressedTextureFormats } from '../../../gl/texture/utils/getSupportedGlCompressedTextureFormats';\nimport { getSupportedGPUCompressedTextureFormats } from '../../../gpu/texture/utils/getSupportedGPUCompressedTextureFormats';\n\nimport type { TEXTURE_FORMATS } from '../const';\n\nlet supportedCompressedTextureFormats: TEXTURE_FORMATS[];\n\nexport async function getSupportedCompressedTextureFormats(): Promise\n{\n if (supportedCompressedTextureFormats !== undefined) return supportedCompressedTextureFormats;\n\n supportedCompressedTextureFormats = await (async (): Promise =>\n {\n // find only overlapping ones..\n const _isWebGPUSupported = await isWebGPUSupported();\n const _isWebGLSupported = isWebGLSupported();\n\n if (_isWebGPUSupported && _isWebGLSupported)\n {\n const gpuTextureFormats = await getSupportedGPUCompressedTextureFormats();\n const glTextureFormats = getSupportedGlCompressedTextureFormats();\n\n return gpuTextureFormats.filter((format) => glTextureFormats.includes(format));\n }\n else if (_isWebGPUSupported)\n {\n return await getSupportedGPUCompressedTextureFormats();\n }\n else if (_isWebGLSupported)\n {\n return getSupportedGlCompressedTextureFormats();\n }\n\n return [];\n })();\n\n return supportedCompressedTextureFormats;\n}\n","import { getSupportedCompressedTextureFormats } from './getSupportedCompressedTextureFormats';\n\nimport type { TEXTURE_FORMATS } from '../const';\n\nexport const nonCompressedFormats: TEXTURE_FORMATS[] = [\n // 8-bit formats\n 'r8unorm',\n 'r8snorm',\n 'r8uint',\n 'r8sint',\n\n // 16-bit formats\n 'r16uint',\n 'r16sint',\n 'r16float',\n 'rg8unorm',\n 'rg8snorm',\n 'rg8uint',\n 'rg8sint',\n\n // 32-bit formats\n 'r32uint',\n 'r32sint',\n 'r32float',\n 'rg16uint',\n 'rg16sint',\n 'rg16float',\n 'rgba8unorm',\n 'rgba8unorm-srgb',\n 'rgba8snorm',\n 'rgba8uint',\n 'rgba8sint',\n 'bgra8unorm',\n 'bgra8unorm-srgb',\n // Packed 32-bit formats\n 'rgb9e5ufloat',\n 'rgb10a2unorm',\n 'rg11b10ufloat',\n\n // 64-bit formats\n 'rg32uint',\n 'rg32sint',\n 'rg32float',\n 'rgba16uint',\n 'rgba16sint',\n 'rgba16float',\n\n // 128-bit formats\n 'rgba32uint',\n 'rgba32sint',\n 'rgba32float',\n\n // Depth/stencil formats\n 'stencil8',\n 'depth16unorm',\n 'depth24plus',\n 'depth24plus-stencil8',\n 'depth32float',\n\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8',\n];\n\nlet supportedTextureFormats: TEXTURE_FORMATS[];\n\nexport async function getSupportedTextureFormats(): Promise\n{\n if (supportedTextureFormats !== undefined) return supportedTextureFormats;\n\n const compressedTextureFormats = await getSupportedCompressedTextureFormats();\n\n supportedTextureFormats = [\n ...nonCompressedFormats,\n ...compressedTextureFormats,\n ];\n\n return supportedTextureFormats;\n}\n\n","export const basisTranscoderUrls = {\n jsUrl: 'https://files.pixijs.download/transcoders/basis/basis_transcoder.js',\n wasmUrl: 'https://files.pixijs.download/transcoders/basis/basis_transcoder.wasm',\n};\n\nexport function setBasisTranscoderPath(config: Partial)\n{\n Object.assign(basisTranscoderUrls, config);\n}\n","import BasisWorker from 'worker:./basis.worker.ts';\nimport { basisTranscoderUrls } from '../utils/setBasisTranscoderPath';\n\nimport type { TEXTURE_FORMATS } from '../../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../../rendering/renderers/shared/texture/sources/TextureSource';\n\nlet basisWorker: Worker;\nconst urlHash: Record void> = {};\n\nfunction getBasisWorker(supportedTextures: TEXTURE_FORMATS[]): Worker\n{\n if (!basisWorker)\n {\n basisWorker = new BasisWorker().worker;\n\n basisWorker.onmessage = (messageEvent) =>\n {\n const { success, url, textureOptions } = messageEvent.data;\n\n if (!success)\n {\n console.warn('Failed to load Basis texture', url);\n }\n\n urlHash[url](textureOptions);\n };\n\n basisWorker.postMessage({\n type: 'init',\n jsUrl: basisTranscoderUrls.jsUrl,\n wasmUrl: basisTranscoderUrls.wasmUrl,\n supportedTextures\n });\n }\n\n return basisWorker;\n}\n\nexport function loadBasisOnWorker(\n url: string,\n supportedTextures: TEXTURE_FORMATS[]\n): Promise\n{\n const ktxWorker = getBasisWorker(supportedTextures);\n\n return new Promise((resolve) =>\n {\n urlHash[url] = resolve;\n\n ktxWorker.postMessage({ type: 'load', url });\n });\n}\n","import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { loadBasisOnWorker } from './worker/loadBasisOnWorker';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX textures! */\nexport const loadBasis = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadBasis',\n\n test(url: string): boolean\n {\n return checkExtension(url, ['.basis']);\n },\n\n async load(url: string, _asset: ResolvedAsset, loader: Loader): Promise\n {\n const supportedTextures = await getSupportedTextureFormats();\n\n const textureOptions = await loadBasisOnWorker(url, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser;\n\n","import type { BasisTexture } from '../types';\n\nexport function createLevelBuffers(basisTexture: BasisTexture, basisTranscoderFormat: number): Uint8Array[]\n{\n const images = basisTexture.getNumImages();\n const levels = basisTexture.getNumLevels(0);\n\n const success = basisTexture.startTranscoding();\n\n if (!success)\n {\n throw new Error('startTranscoding failed');\n }\n\n const levelBuffers = [];\n\n for (let levelIndex = 0; levelIndex < levels; ++levelIndex)\n {\n for (let sliceIndex = 0; sliceIndex < images; ++sliceIndex)\n {\n const transcodeSize = basisTexture.getImageTranscodedSizeInBytes(sliceIndex, levelIndex, basisTranscoderFormat);\n const levelBuffer = new Uint8Array(transcodeSize);\n\n const success = basisTexture.transcodeImage(levelBuffer, sliceIndex, levelIndex, basisTranscoderFormat, 1, 0);\n\n if (!success)\n {\n throw new Error('transcodeImage failed');\n }\n\n levelBuffers.push(levelBuffer);\n }\n }\n\n return levelBuffers;\n}\n","const gpuFormatToBasisTranscoderFormatMap: Record = {\n 'bc3-rgba-unorm': 3, // cTFBC3_RGBA\n 'bc7-rgba-unorm': 6, // cTFBC7_RGBA,\n 'etc2-rgba8unorm': 1, // cTFETC2_RGBA,\n 'astc-4x4-unorm': 10, // cTFASTC_4x4_RGBA,\n // Uncompressed\n rgba8unorm: 13, // cTFRGBA32,\n rgba4unorm: 16, // cTFRGBA4444,\n};\n\nexport function gpuFormatToBasisTranscoderFormat(transcoderFormat: string): number\n{\n const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];\n\n if (format)\n {\n return format;\n }\n\n throw new Error(`Unsupported transcoderFormat: ${transcoderFormat}`);\n}\n","import type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\n\n// http://msdn.microsoft.com/en-us/library/bb943991.aspx/\n/**\n * DWORD offsets of the DDS file header fields (relative to file start).\n * @ignore\n */\nconst DDS_HEADER_FIELDS = {\n MAGIC: 0,\n SIZE: 1,\n FLAGS: 2,\n HEIGHT: 3,\n WIDTH: 4,\n MIPMAP_COUNT: 7,\n PIXEL_FORMAT: 19,\n PF_FLAGS: 20,\n FOURCC: 21,\n RGB_BITCOUNT: 22,\n R_BIT_MASK: 23,\n G_BIT_MASK: 24,\n B_BIT_MASK: 25,\n A_BIT_MASK: 26,\n};\n\n/**\n * DWORD offsets of the DDS_HEADER_DX10 fields.\n * @ignore\n */\nconst DDS_DX10_FIELDS = {\n DXGI_FORMAT: 0,\n RESOURCE_DIMENSION: 1,\n MISC_FLAG: 2,\n ARRAY_SIZE: 3,\n MISC_FLAGS2: 4,\n};\n\n/**\n * @see https://docs.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format\n * This is way over-blown for us! Lend us a hand, and remove the ones that aren't used (but set the remaining\n * ones to their correct value)\n * @ignore\n */\nenum DXGI_FORMAT\n {\n DXGI_FORMAT_UNKNOWN,\n DXGI_FORMAT_R32G32B32A32_TYPELESS,\n DXGI_FORMAT_R32G32B32A32_FLOAT,\n DXGI_FORMAT_R32G32B32A32_UINT,\n DXGI_FORMAT_R32G32B32A32_SINT,\n DXGI_FORMAT_R32G32B32_TYPELESS,\n DXGI_FORMAT_R32G32B32_FLOAT,\n DXGI_FORMAT_R32G32B32_UINT,\n DXGI_FORMAT_R32G32B32_SINT,\n DXGI_FORMAT_R16G16B16A16_TYPELESS,\n DXGI_FORMAT_R16G16B16A16_FLOAT,\n DXGI_FORMAT_R16G16B16A16_UNORM,\n DXGI_FORMAT_R16G16B16A16_UINT,\n DXGI_FORMAT_R16G16B16A16_SNORM,\n DXGI_FORMAT_R16G16B16A16_SINT,\n DXGI_FORMAT_R32G32_TYPELESS,\n DXGI_FORMAT_R32G32_FLOAT,\n DXGI_FORMAT_R32G32_UINT,\n DXGI_FORMAT_R32G32_SINT,\n DXGI_FORMAT_R32G8X24_TYPELESS,\n DXGI_FORMAT_D32_FLOAT_S8X24_UINT,\n DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,\n DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,\n DXGI_FORMAT_R10G10B10A2_TYPELESS,\n DXGI_FORMAT_R10G10B10A2_UNORM,\n DXGI_FORMAT_R10G10B10A2_UINT,\n DXGI_FORMAT_R11G11B10_FLOAT,\n DXGI_FORMAT_R8G8B8A8_TYPELESS,\n DXGI_FORMAT_R8G8B8A8_UNORM,\n DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,\n DXGI_FORMAT_R8G8B8A8_UINT,\n DXGI_FORMAT_R8G8B8A8_SNORM,\n DXGI_FORMAT_R8G8B8A8_SINT,\n DXGI_FORMAT_R16G16_TYPELESS,\n DXGI_FORMAT_R16G16_FLOAT,\n DXGI_FORMAT_R16G16_UNORM,\n DXGI_FORMAT_R16G16_UINT,\n DXGI_FORMAT_R16G16_SNORM,\n DXGI_FORMAT_R16G16_SINT,\n DXGI_FORMAT_R32_TYPELESS,\n DXGI_FORMAT_D32_FLOAT,\n DXGI_FORMAT_R32_FLOAT,\n DXGI_FORMAT_R32_UINT,\n DXGI_FORMAT_R32_SINT,\n DXGI_FORMAT_R24G8_TYPELESS,\n DXGI_FORMAT_D24_UNORM_S8_UINT,\n DXGI_FORMAT_R24_UNORM_X8_TYPELESS,\n DXGI_FORMAT_X24_TYPELESS_G8_UINT,\n DXGI_FORMAT_R8G8_TYPELESS,\n DXGI_FORMAT_R8G8_UNORM,\n DXGI_FORMAT_R8G8_UINT,\n DXGI_FORMAT_R8G8_SNORM,\n DXGI_FORMAT_R8G8_SINT,\n DXGI_FORMAT_R16_TYPELESS,\n DXGI_FORMAT_R16_FLOAT,\n DXGI_FORMAT_D16_UNORM,\n DXGI_FORMAT_R16_UNORM,\n DXGI_FORMAT_R16_UINT,\n DXGI_FORMAT_R16_SNORM,\n DXGI_FORMAT_R16_SINT,\n DXGI_FORMAT_R8_TYPELESS,\n DXGI_FORMAT_R8_UNORM,\n DXGI_FORMAT_R8_UINT,\n DXGI_FORMAT_R8_SNORM,\n DXGI_FORMAT_R8_SINT,\n DXGI_FORMAT_A8_UNORM,\n DXGI_FORMAT_R1_UNORM,\n DXGI_FORMAT_R9G9B9E5_SHAREDEXP,\n DXGI_FORMAT_R8G8_B8G8_UNORM,\n DXGI_FORMAT_G8R8_G8B8_UNORM,\n DXGI_FORMAT_BC1_TYPELESS,\n DXGI_FORMAT_BC1_UNORM,\n DXGI_FORMAT_BC1_UNORM_SRGB,\n DXGI_FORMAT_BC2_TYPELESS,\n DXGI_FORMAT_BC2_UNORM,\n DXGI_FORMAT_BC2_UNORM_SRGB,\n DXGI_FORMAT_BC3_TYPELESS,\n DXGI_FORMAT_BC3_UNORM,\n DXGI_FORMAT_BC3_UNORM_SRGB,\n DXGI_FORMAT_BC4_TYPELESS,\n DXGI_FORMAT_BC4_UNORM,\n DXGI_FORMAT_BC4_SNORM,\n DXGI_FORMAT_BC5_TYPELESS,\n DXGI_FORMAT_BC5_UNORM,\n DXGI_FORMAT_BC5_SNORM,\n DXGI_FORMAT_B5G6R5_UNORM,\n DXGI_FORMAT_B5G5R5A1_UNORM,\n DXGI_FORMAT_B8G8R8A8_UNORM,\n DXGI_FORMAT_B8G8R8X8_UNORM,\n DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,\n DXGI_FORMAT_B8G8R8A8_TYPELESS,\n DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,\n DXGI_FORMAT_B8G8R8X8_TYPELESS,\n DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,\n DXGI_FORMAT_BC6H_TYPELESS,\n DXGI_FORMAT_BC6H_UF16,\n DXGI_FORMAT_BC6H_SF16,\n DXGI_FORMAT_BC7_TYPELESS,\n DXGI_FORMAT_BC7_UNORM,\n DXGI_FORMAT_BC7_UNORM_SRGB,\n DXGI_FORMAT_AYUV,\n DXGI_FORMAT_Y410,\n DXGI_FORMAT_Y416,\n DXGI_FORMAT_NV12,\n DXGI_FORMAT_P010,\n DXGI_FORMAT_P016,\n DXGI_FORMAT_420_OPAQUE,\n DXGI_FORMAT_YUY2,\n DXGI_FORMAT_Y210,\n DXGI_FORMAT_Y216,\n DXGI_FORMAT_NV11,\n DXGI_FORMAT_AI44,\n DXGI_FORMAT_IA44,\n DXGI_FORMAT_P8,\n DXGI_FORMAT_A8P8,\n DXGI_FORMAT_B4G4R4A4_UNORM,\n DXGI_FORMAT_P208,\n DXGI_FORMAT_V208,\n DXGI_FORMAT_V408,\n DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE,\n DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE,\n DXGI_FORMAT_FORCE_UINT\n}\n\n/**\n * Possible values of the field {@link DDS_DX10_FIELDS.RESOURCE_DIMENSION}\n * @ignore\n */\nenum D3D10_RESOURCE_DIMENSION\n {\n DDS_DIMENSION_TEXTURE1D = 2,\n DDS_DIMENSION_TEXTURE2D = 3,\n DDS_DIMENSION_TEXTURE3D = 6\n}\n\nfunction fourCCToInt32(value: string)\n{\n return value.charCodeAt(0)\n + (value.charCodeAt(1) << 8)\n + (value.charCodeAt(2) << 16)\n + (value.charCodeAt(3) << 24);\n}\n\n// Four character codes for DXTn formats\n// https://learn.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-pguide\n// https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dformat\nenum D3DFMT\n {\n UNKNOWN = 0,\n R8G8B8 = 20,\n A8R8G8B8 = 21,\n X8R8G8B8 = 22,\n R5G6B5 = 23,\n X1R5G5B5 = 24,\n A1R5G5B5 = 25,\n A4R4G4B4 = 26,\n R3G3B2 = 27,\n A8 = 28,\n A8R3G3B2 = 29,\n X4R4G4B4 = 30,\n A2B10G10R10 = 31,\n A8B8G8R8 = 32,\n X8B8G8R8 = 33,\n G16R16 = 34,\n A2R10G10B10 = 35,\n A16B16G16R16 = 36,\n A8P8 = 40,\n P8 = 41,\n L8 = 50,\n A8L8 = 51,\n A4L4 = 52,\n V8U8 = 60,\n L6V5U5 = 61,\n X8L8V8U8 = 62,\n Q8W8V8U8 = 63,\n V16U16 = 64,\n A2W10V10U10 = 67,\n Q16W16V16U16 = 110,\n R16F = 111,\n G16R16F = 112,\n A16B16G16R16F = 113,\n R32F = 114,\n G32R32F = 115,\n A32B32G32R32F = 116,\n UYVY = fourCCToInt32('UYVY'),\n R8G8_B8G8 = fourCCToInt32('RGBG'),\n YUY2 = fourCCToInt32('YUY2'),\n D3DFMT_G8R8_G8B8 = fourCCToInt32('GRGB'),\n DXT1 = fourCCToInt32('DXT1'),\n DXT2 = fourCCToInt32('DXT2'),\n DXT3 = fourCCToInt32('DXT3'),\n DXT4 = fourCCToInt32('DXT4'),\n DXT5 = fourCCToInt32('DXT5'),\n ATI1 = fourCCToInt32('ATI1'),\n AT1N = fourCCToInt32('AT1N'),\n ATI2 = fourCCToInt32('ATI2'),\n AT2N = fourCCToInt32('AT2N'),\n BC4U = fourCCToInt32('BC4U'),\n BC4S = fourCCToInt32('BC4S'),\n BC5U = fourCCToInt32('BC5U'),\n BC5S = fourCCToInt32('BC5S'),\n\n DX10 = fourCCToInt32('DX10'),\n}\n\n/**\n * Maps `FOURCC_*` formats to {@link TEXTURE_FORMATS}.\n * https://en.wikipedia.org/wiki/S3_Texture_Compression#S3TC_format_comparison\n * https://github.com/microsoft/DirectXTex/blob/main/DDSTextureLoader/DDSTextureLoader11.cpp\n * @ignore\n */\nexport const FOURCC_TO_TEXTURE_FORMAT: { [id: number]: TEXTURE_FORMATS } = {\n [D3DFMT.DXT1]: 'bc1-rgba-unorm',\n [D3DFMT.DXT2]: 'bc2-rgba-unorm',\n [D3DFMT.DXT3]: 'bc2-rgba-unorm',\n [D3DFMT.DXT4]: 'bc3-rgba-unorm',\n [D3DFMT.DXT5]: 'bc3-rgba-unorm',\n\n [D3DFMT.ATI1]: 'bc4-r-unorm',\n [D3DFMT.BC4U]: 'bc4-r-unorm',\n [D3DFMT.BC4S]: 'bc4-r-snorm',\n\n [D3DFMT.ATI2]: 'bc5-rg-unorm',\n [D3DFMT.BC5U]: 'bc5-rg-unorm',\n [D3DFMT.BC5S]: 'bc5-rg-snorm',\n\n [D3DFMT.A16B16G16R16]: 'rgba16uint',\n [D3DFMT.Q16W16V16U16]: 'rgba16sint',\n [D3DFMT.R16F]: 'r16float',\n [D3DFMT.G16R16F]: 'rg16float',\n [D3DFMT.A16B16G16R16F]: 'rgba16float',\n [D3DFMT.R32F]: 'r32float',\n [D3DFMT.G32R32F]: 'rg32float',\n [D3DFMT.A32B32G32R32F]: 'rgba32float',\n};\n\n/**\n * Maps {@link DXGI_FORMAT} to {@link TEXTURE_FORMATS}\n * @ignore\n */\nexport const DXGI_TO_TEXTURE_FORMAT: { [id: number]: TEXTURE_FORMATS } = {\n [DXGI_FORMAT.DXGI_FORMAT_BC1_TYPELESS]: 'bc1-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC1_UNORM]: 'bc1-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC1_UNORM_SRGB]: 'bc1-rgba-unorm-srgb',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC2_TYPELESS]: 'bc2-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC2_UNORM]: 'bc2-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC2_UNORM_SRGB]: 'bc2-rgba-unorm-srgb',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC3_TYPELESS]: 'bc3-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC3_UNORM]: 'bc3-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC3_UNORM_SRGB]: 'bc3-rgba-unorm-srgb',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC4_TYPELESS]: 'bc4-r-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC4_UNORM]: 'bc4-r-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC4_SNORM]: 'bc4-r-snorm',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC5_TYPELESS]: 'bc5-rg-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC5_UNORM]: 'bc5-rg-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC5_SNORM]: 'bc5-rg-snorm',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC6H_TYPELESS]: 'bc6h-rgb-ufloat',\n [DXGI_FORMAT.DXGI_FORMAT_BC6H_UF16]: 'bc6h-rgb-ufloat',\n [DXGI_FORMAT.DXGI_FORMAT_BC6H_SF16]: 'bc6h-rgb-float',\n\n [DXGI_FORMAT.DXGI_FORMAT_BC7_TYPELESS]: 'bc7-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC7_UNORM]: 'bc7-rgba-unorm',\n [DXGI_FORMAT.DXGI_FORMAT_BC7_UNORM_SRGB]: 'bc7-rgba-unorm-srgb',\n\n [DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM]: 'rgba8unorm',\n [DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB]: 'rgba8unorm-srgb',\n [DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM]: 'bgra8unorm',\n [DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB]: 'bgra8unorm-srgb',\n [DXGI_FORMAT.DXGI_FORMAT_R32_FLOAT]: 'r32float',\n\n [DXGI_FORMAT.DXGI_FORMAT_R8G8_UNORM]: 'rg8unorm',\n [DXGI_FORMAT.DXGI_FORMAT_R16_UNORM]: 'r16uint',\n\n [DXGI_FORMAT.DXGI_FORMAT_R8_UNORM]: 'r8unorm',\n [DXGI_FORMAT.DXGI_FORMAT_R10G10B10A2_UNORM]: 'rgb10a2unorm',\n\n [DXGI_FORMAT.DXGI_FORMAT_R16G16B16A16_UNORM]: 'rgba16uint',\n [DXGI_FORMAT.DXGI_FORMAT_R16G16B16A16_SNORM]: 'rgba16sint',\n [DXGI_FORMAT.DXGI_FORMAT_R16G16B16A16_FLOAT]: 'rgba16float',\n [DXGI_FORMAT.DXGI_FORMAT_R16_FLOAT]: 'r16float',\n [DXGI_FORMAT.DXGI_FORMAT_R16G16_FLOAT]: 'rg16float',\n [DXGI_FORMAT.DXGI_FORMAT_R32G32_FLOAT]: 'rg32float',\n [DXGI_FORMAT.DXGI_FORMAT_R32G32B32A32_FLOAT]: 'rgba32float',\n\n};\n\nexport const DDS = {\n MAGIC_VALUE: 0x20534444,\n MAGIC_SIZE: 4,\n HEADER_SIZE: 124,\n HEADER_DX10_SIZE: 20,\n PIXEL_FORMAT_FLAGS: {\n // PIXEL_FORMAT flags\n // https://github.com/Microsoft/DirectXTex/blob/main/DirectXTex/DDS.h\n // https://learn.microsoft.com/en-us/windows/win32/direct3ddds/dds-pixelformat\n ALPHAPIXELS: 0x1,\n ALPHA: 0x2,\n FOURCC: 0x4,\n RGB: 0x40,\n RGBA: 0x41,\n YUV: 0x200,\n LUMINANCE: 0x20000,\n LUMINANCEA: 0x20001,\n },\n\n RESOURCE_MISC_TEXTURECUBE: 0x4,\n\n HEADER_FIELDS: DDS_HEADER_FIELDS,\n HEADER_DX10_FIELDS: DDS_DX10_FIELDS,\n DXGI_FORMAT,\n D3D10_RESOURCE_DIMENSION,\n D3DFMT\n};\n\n// formats and block size (in bytes)\nexport const TEXTURE_FORMAT_BLOCK_SIZE: Record = {\n 'bc1-rgba-unorm': 8,\n 'bc1-rgba-unorm-srgb': 8,\n 'bc2-rgba-unorm': 16,\n 'bc2-rgba-unorm-srgb': 16,\n 'bc3-rgba-unorm': 16,\n 'bc3-rgba-unorm-srgb': 16,\n 'bc4-r-unorm': 8,\n 'bc4-r-snorm': 8,\n 'bc5-rg-unorm': 16,\n 'bc5-rg-snorm': 16,\n 'bc6h-rgb-ufloat': 16,\n 'bc6h-rgb-float': 16,\n 'bc7-rgba-unorm': 16,\n 'bc7-rgba-unorm-srgb': 16\n};\n","import { DDS, DXGI_TO_TEXTURE_FORMAT, FOURCC_TO_TEXTURE_FORMAT, TEXTURE_FORMAT_BLOCK_SIZE } from './const';\n\nimport type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\n\nexport function parseDDS(arrayBuffer: ArrayBuffer, supportedFormats: TEXTURE_FORMATS[]): TextureSourceOptions\n{\n const {\n format,\n fourCC,\n width,\n height,\n dataOffset,\n mipmapCount,\n } = parseDDSHeader(arrayBuffer);\n\n if (!supportedFormats.includes(format))\n {\n throw new Error(`Unsupported texture format: ${fourCC} ${format}, supported: ${supportedFormats}`);\n }\n\n if (mipmapCount <= 1)\n { // No need bothering with the imageSize calculation!\n return {\n format,\n width,\n height,\n resource: [new Uint8Array(arrayBuffer, dataOffset)],\n alphaMode: 'no-premultiply-alpha',\n } as TextureSourceOptions;\n }\n\n const levelBuffers = getMipmapLevelBuffers(format, width, height, dataOffset, mipmapCount, arrayBuffer);\n\n const textureOptions: TextureSourceOptions = {\n format,\n width,\n height,\n resource: levelBuffers,\n alphaMode: 'no-premultiply-alpha'\n };\n\n return textureOptions;\n}\n\nfunction getMipmapLevelBuffers(format: TEXTURE_FORMATS, width: number, height: number,\n dataOffset: any, mipmapCount: number, arrayBuffer: ArrayBuffer)\n{\n const levelBuffers = [];\n const blockBytes = TEXTURE_FORMAT_BLOCK_SIZE[format];\n\n let mipWidth = width;\n let mipHeight = height;\n let offset = dataOffset;\n\n for (let level = 0; level < mipmapCount; ++level)\n {\n const byteLength = blockBytes\n ? Math.max(4, mipWidth) / 4 * Math.max(4, mipHeight) / 4 * blockBytes\n : mipWidth * mipHeight * 4;\n\n const levelBuffer = new Uint8Array(arrayBuffer, offset, byteLength);\n\n levelBuffers.push(levelBuffer);\n\n offset += byteLength;\n\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n\n return levelBuffers;\n}\n\nfunction parseDDSHeader(buffer: ArrayBuffer)\n{\n const header = new Uint32Array(buffer, 0, DDS.HEADER_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n\n if (header[DDS.HEADER_FIELDS.MAGIC] !== DDS.MAGIC_VALUE)\n {\n throw new Error('Invalid magic number in DDS header');\n }\n\n // DDS header fields\n const height = header[DDS.HEADER_FIELDS.HEIGHT];\n const width = header[DDS.HEADER_FIELDS.WIDTH];\n const mipmapCount = Math.max(1, header[DDS.HEADER_FIELDS.MIPMAP_COUNT]);\n const flags = header[DDS.HEADER_FIELDS.PF_FLAGS];\n const fourCC = header[DDS.HEADER_FIELDS.FOURCC];\n const format = getTextureFormat(header, flags, fourCC, buffer);\n\n const dataOffset = DDS.MAGIC_SIZE + DDS.HEADER_SIZE\n + ((fourCC === DDS.D3DFMT.DX10) ? DDS.HEADER_DX10_SIZE : 0);\n\n return {\n format,\n fourCC,\n width,\n height,\n dataOffset,\n mipmapCount\n };\n}\n\nfunction getTextureFormat(header: Uint32Array, flags: number, fourCC: number, buffer: ArrayBuffer)\n{\n if (flags & DDS.PIXEL_FORMAT_FLAGS.FOURCC)\n {\n if (fourCC === DDS.D3DFMT.DX10)\n {\n const dx10Header = new Uint32Array(\n buffer,\n DDS.MAGIC_SIZE + DDS.HEADER_SIZE, // there is a 20-byte DDS_HEADER_DX10 after DDS_HEADER\n DDS.HEADER_DX10_SIZE / Uint32Array.BYTES_PER_ELEMENT);\n\n const miscFlag = dx10Header[DDS.HEADER_DX10_FIELDS.MISC_FLAG];\n\n if (miscFlag === DDS.RESOURCE_MISC_TEXTURECUBE)\n {\n throw new Error('DDSParser does not support cubemap textures');\n }\n\n const resourceDimension = dx10Header[DDS.HEADER_DX10_FIELDS.RESOURCE_DIMENSION];\n\n if (resourceDimension === DDS.D3D10_RESOURCE_DIMENSION.DDS_DIMENSION_TEXTURE3D)\n {\n throw new Error('DDSParser does not supported 3D texture data');\n }\n\n const dxgiFormat = dx10Header[DDS.HEADER_DX10_FIELDS.DXGI_FORMAT];\n\n if (dxgiFormat in DXGI_TO_TEXTURE_FORMAT)\n {\n return DXGI_TO_TEXTURE_FORMAT[dxgiFormat];\n }\n\n throw new Error(`DDSParser cannot parse texture data with DXGI format ${dxgiFormat}`);\n }\n\n if (fourCC in FOURCC_TO_TEXTURE_FORMAT)\n {\n return FOURCC_TO_TEXTURE_FORMAT[fourCC];\n }\n\n throw new Error(`DDSParser cannot parse texture data with fourCC format ${fourCC}`);\n }\n\n if (flags & DDS.PIXEL_FORMAT_FLAGS.RGB || flags & DDS.PIXEL_FORMAT_FLAGS.RGBA)\n {\n return getUncompressedTextureFormat(header);\n }\n\n if (flags & DDS.PIXEL_FORMAT_FLAGS.YUV)\n {\n throw new Error('DDSParser does not supported YUV uncompressed texture data.');\n }\n if (flags & DDS.PIXEL_FORMAT_FLAGS.LUMINANCE || flags & DDS.PIXEL_FORMAT_FLAGS.LUMINANCEA)\n {\n throw new Error('DDSParser does not support single-channel (lumninance) texture data!');\n }\n if (flags & DDS.PIXEL_FORMAT_FLAGS.ALPHA || flags & DDS.PIXEL_FORMAT_FLAGS.ALPHAPIXELS)\n {\n throw new Error('DDSParser does not support single-channel (alpha) texture data!');\n }\n\n throw new Error('DDSParser failed to load a texture file due to an unknown reason!');\n}\n\nfunction getUncompressedTextureFormat(header: Uint32Array)\n{\n const bitCount = header[DDS.HEADER_FIELDS.RGB_BITCOUNT];\n const rBitMask = header[DDS.HEADER_FIELDS.R_BIT_MASK];\n const gBitMask = header[DDS.HEADER_FIELDS.G_BIT_MASK];\n const bBitMask = header[DDS.HEADER_FIELDS.B_BIT_MASK];\n const aBitMask = header[DDS.HEADER_FIELDS.A_BIT_MASK];\n\n // https://learn.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-pguide\n // https://github.com/microsoft/DirectXTex/blob/main/DDSTextureLoader/DDSTextureLoader11.cpp#L892\n switch (bitCount)\n {\n case 32:\n if (rBitMask === 0x000000ff && gBitMask === 0x0000ff00 && bBitMask === 0x00ff0000 && aBitMask === 0xff000000)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8G8B8A8_UNORM];\n }\n if (rBitMask === 0x00ff0000 && gBitMask === 0x0000ff00 && bBitMask === 0x000000ff && aBitMask === 0xff000000)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM];\n }\n if (rBitMask === 0x3ff00000 && gBitMask === 0x000ffc00 && bBitMask === 0x000003ff && aBitMask === 0xc0000000)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R10G10B10A2_UNORM];\n }\n if (rBitMask === 0x0000ffff && gBitMask === 0xffff0000 && bBitMask === 0 && aBitMask === 0)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R16G16_UNORM];\n }\n if (rBitMask === 0xffffffff && gBitMask === 0 && bBitMask === 0 && aBitMask === 0)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R32_FLOAT];\n }\n break;\n case 24:\n if (rBitMask === 0xff0000 && gBitMask === 0xff00 && bBitMask === 0xff && aBitMask === 0x8000)\n {\n // rgb8unorm not supported?\n // return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B5G5R5A1_UNORM];\n }\n break;\n case 16:\n if (rBitMask === 0x7c00 && gBitMask === 0x03e0 && bBitMask === 0x001f && aBitMask === 0x8000)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B5G5R5A1_UNORM];\n }\n if (rBitMask === 0xf800 && gBitMask === 0x07e0 && bBitMask === 0x001f && aBitMask === 0)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B5G6R5_UNORM];\n }\n if (rBitMask === 0x0f00 && gBitMask === 0x00f0 && bBitMask === 0x000f && aBitMask === 0xf000)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_B4G4R4A4_UNORM];\n }\n if (rBitMask === 0x00ff && gBitMask === 0 && bBitMask === 0 && aBitMask === 0xff00)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8G8_UNORM];\n }\n if (rBitMask === 0xffff && gBitMask === 0 && bBitMask === 0 && aBitMask === 0)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R16_UNORM];\n }\n break;\n\n case 8:\n if (rBitMask === 0xff && gBitMask === 0 && bBitMask === 0 && aBitMask === 0)\n {\n return DXGI_TO_TEXTURE_FORMAT[DDS.DXGI_FORMAT.DXGI_FORMAT_R8_UNORM];\n }\n break;\n }\n\n throw new Error(`DDSParser does not support uncompressed texture with configuration:\n bitCount = ${bitCount}, rBitMask = ${rBitMask}, gBitMask = ${gBitMask}, aBitMask = ${aBitMask}`);\n}\n","import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { parseDDS } from './parseDDS';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX textures! */\nexport const loadDDS = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadDDS',\n\n test(url: string): boolean\n {\n return checkExtension(url, ['.dds']);\n },\n\n async load(url: string, _asset: ResolvedAsset, loader: Loader): Promise\n {\n const supportedTextures = await getSupportedTextureFormats();\n\n const ddsResponse = await fetch(url);\n\n const ddsArrayBuffer = await ddsResponse.arrayBuffer();\n\n const textureOptions = parseDDS(ddsArrayBuffer, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser;\n\n","import type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\n\nexport enum GL_INTERNAL_FORMAT\n// eslint-disable-next-line @typescript-eslint/indent\n{\n RGBA8_SNORM = 0x8F97,\n RGBA = 0x1908,\n RGBA8UI = 0x8D7C,\n SRGB8_ALPHA8 = 0x8C43,\n RGBA8I = 0x8D8E,\n RGBA8 = 0x8058,\n\n COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919,\n COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916,\n\n COMPRESSED_RED_RGTC1_EXT = 0x8DBB,\n COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC,\n COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD,\n COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE,\n\n COMPRESSED_R11_EAC = 0x9270,\n COMPRESSED_SIGNED_R11_EAC = 0x9271,\n COMPRESSED_RG11_EAC = 0x9272,\n COMPRESSED_SIGNED_RG11_EAC = 0x9273,\n COMPRESSED_RGB8_ETC2 = 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC = 0x9278,\n COMPRESSED_SRGB8_ETC2 = 0x9275,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277,\n\n COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0,\n COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1,\n COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2,\n COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3,\n COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4,\n COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5,\n COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6,\n COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7,\n COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8,\n COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9,\n COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA,\n COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB,\n COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC,\n COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD,\n COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD,\n\n COMPRESSED_RGBA_BPTC_UNORM_EXT = 0x8E8C,\n COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 0x8E8D,\n COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 0x8E8E,\n COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8E8F\n}\n\nenum GL_FORMATS\n// eslint-disable-next-line @typescript-eslint/indent\n{\n RGBA = 6408,\n RGB = 6407,\n RG = 33319,\n RED = 6403,\n RGBA_INTEGER = 36249,\n RGB_INTEGER = 36248,\n RG_INTEGER = 33320,\n RED_INTEGER = 36244,\n ALPHA = 6406,\n LUMINANCE = 6409,\n LUMINANCE_ALPHA = 6410,\n DEPTH_COMPONENT = 6402,\n DEPTH_STENCIL = 34041,\n}\n\nenum GL_TYPES\n// eslint-disable-next-line @typescript-eslint/indent\n{\n UNSIGNED_BYTE = 5121,\n UNSIGNED_SHORT = 5123,\n UNSIGNED_SHORT_5_6_5 = 33635,\n UNSIGNED_SHORT_4_4_4_4 = 32819,\n UNSIGNED_SHORT_5_5_5_1 = 32820,\n UNSIGNED_INT = 5125,\n UNSIGNED_INT_10F_11F_11F_REV = 35899,\n UNSIGNED_INT_2_10_10_10_REV = 33640,\n UNSIGNED_INT_24_8 = 34042,\n UNSIGNED_INT_5_9_9_9_REV = 35902,\n BYTE = 5120,\n SHORT = 5122,\n INT = 5124,\n FLOAT = 5126,\n FLOAT_32_UNSIGNED_INT_24_8_REV = 36269,\n HALF_FLOAT = 36193,\n}\n\nconst INTERNAL_FORMAT_TO_TEXTURE_FORMATS: { [id: number]: TEXTURE_FORMATS } = {\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_S3TC_DXT1_EXT]: 'bc1-rgba-unorm', // TODO: ???\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT1_EXT]: 'bc1-rgba-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT3_EXT]: 'bc2-rgba-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT5_EXT]: 'bc3-rgba-unorm',\n\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_S3TC_DXT1_EXT]: 'bc1-rgba-unorm-srgb', // TODO: ???\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT]: 'bc1-rgba-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT]: 'bc2-rgba-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT]: 'bc3-rgba-unorm-srgb',\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RED_RGTC1_EXT]: 'bc4-r-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RED_RGTC1_EXT]: 'bc4-r-snorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RED_GREEN_RGTC2_EXT]: 'bc5-rg-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT]: 'bc5-rg-snorm',\n\n [GL_INTERNAL_FORMAT.COMPRESSED_R11_EAC]: 'eac-r11unorm',\n // [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_R11_EAC]: 'eac-r11snorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RG11_EAC]: 'eac-rg11snorm',\n // [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RG11_EAC]: 'eac-rg11unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB8_ETC2]: 'etc2-rgb8unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA8_ETC2_EAC]: 'etc2-rgba8unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ETC2]: 'etc2-rgb8unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: 'etc2-rgba8unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: 'etc2-rgb8a1unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: 'etc2-rgb8a1unorm-srgb',\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_4x4_KHR]: 'astc-4x4-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR]: 'astc-4x4-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_5x4_KHR]: 'astc-5x4-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR]: 'astc-5x4-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_5x5_KHR]: 'astc-5x5-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR]: 'astc-5x5-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_6x5_KHR]: 'astc-6x5-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR]: 'astc-6x5-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_6x6_KHR]: 'astc-6x6-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR]: 'astc-6x6-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x5_KHR]: 'astc-8x5-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR]: 'astc-8x5-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x6_KHR]: 'astc-8x6-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR]: 'astc-8x6-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x8_KHR]: 'astc-8x8-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR]: 'astc-8x8-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x5_KHR]: 'astc-10x5-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR]: 'astc-10x5-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x6_KHR]: 'astc-10x6-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR]: 'astc-10x6-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x8_KHR]: 'astc-10x8-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR]: 'astc-10x8-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x10_KHR]: 'astc-10x10-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR]: 'astc-10x10-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_12x10_KHR]: 'astc-12x10-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR]: 'astc-12x10-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_12x12_KHR]: 'astc-12x12-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR]: 'astc-12x12-unorm-srgb',\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_BPTC_UNORM_EXT]: 'bc7-rgba-unorm',\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT]: 'bc7-rgba-unorm-srgb',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT]: 'bc6h-rgb-float',\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT]: 'bc6h-rgb-ufloat',\n\n [GL_INTERNAL_FORMAT.SRGB8_ALPHA8]: 'rgba8unorm-srgb',\n\n [GL_INTERNAL_FORMAT.RGBA8_SNORM]: 'rgba8snorm',\n [GL_INTERNAL_FORMAT.RGBA8UI]: 'rgba8uint',\n [GL_INTERNAL_FORMAT.RGBA8I]: 'rgba8sint',\n [GL_INTERNAL_FORMAT.RGBA]: 'rgba8unorm',\n // [GL_INTERNAL_FORMAT.RGBA8]: 'bgra8unorm'\n};\n\n/**\n * The 12-byte KTX file identifier\n * @see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/#2.1\n * @ignore\n */\nconst FILE_IDENTIFIER = [0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A];\n\n/**\n * The value stored in the \"endianness\" field.\n * @see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/#2.2\n * @ignore\n */\n\nconst FIELDS = {\n FILE_IDENTIFIER: 0,\n ENDIANNESS: 12,\n GL_TYPE: 16,\n GL_TYPE_SIZE: 20,\n GL_FORMAT: 24,\n GL_INTERNAL_FORMAT: 28,\n GL_BASE_INTERNAL_FORMAT: 32,\n PIXEL_WIDTH: 36,\n PIXEL_HEIGHT: 40,\n PIXEL_DEPTH: 44,\n NUMBER_OF_ARRAY_ELEMENTS: 48,\n NUMBER_OF_FACES: 52,\n NUMBER_OF_MIPMAP_LEVELS: 56,\n BYTES_OF_KEY_VALUE_DATA: 60,\n};\n\nconst FILE_HEADER_SIZE = 64;\nconst ENDIANNESS = 0x04030201;\n\nconst TYPES_TO_BYTES_PER_COMPONENT: { [id: number]: number } = {\n [GL_TYPES.UNSIGNED_BYTE]: 1,\n [GL_TYPES.UNSIGNED_SHORT]: 2,\n [GL_TYPES.INT]: 4,\n [GL_TYPES.UNSIGNED_INT]: 4,\n [GL_TYPES.FLOAT]: 4,\n [GL_TYPES.HALF_FLOAT]: 8,\n};\n\nconst FORMATS_TO_COMPONENTS: { [id: number]: number } = {\n [GL_FORMATS.RGBA]: 4,\n [GL_FORMATS.RGB]: 3,\n [GL_FORMATS.RG]: 2,\n [GL_FORMATS.RED]: 1,\n [GL_FORMATS.LUMINANCE]: 1,\n [GL_FORMATS.LUMINANCE_ALPHA]: 2,\n [GL_FORMATS.ALPHA]: 1,\n};\n\nconst TYPES_TO_BYTES_PER_PIXEL: { [id: number]: number } = {\n [GL_TYPES.UNSIGNED_SHORT_4_4_4_4]: 2,\n [GL_TYPES.UNSIGNED_SHORT_5_5_5_1]: 2,\n [GL_TYPES.UNSIGNED_SHORT_5_6_5]: 2,\n};\n\nconst INTERNAL_FORMAT_TO_BYTES_PER_PIXEL: { [id: number]: number } = {\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_S3TC_DXT1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT3_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_S3TC_DXT5_EXT]: 1,\n\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_S3TC_DXT1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT]: 1,\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RED_RGTC1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RED_RGTC1_EXT]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_RED_GREEN_RGTC2_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT]: 1,\n\n [GL_INTERNAL_FORMAT.COMPRESSED_R11_EAC]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_R11_EAC]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_RG11_EAC]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SIGNED_RG11_EAC]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB8_ETC2]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA8_ETC2_EAC]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ETC2]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: 0.5,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: 0.5,\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_4x4_KHR]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_5x4_KHR]: 0.8,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR]: 0.8,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_5x5_KHR]: 0.64,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR]: 0.64,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_6x5_KHR]: 0.53375,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR]: 0.53375,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_6x6_KHR]: 0.445,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR]: 0.445,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x5_KHR]: 0.4,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR]: 0.4,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x6_KHR]: 0.33375,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR]: 0.33375,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_8x8_KHR]: 0.25,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR]: 0.25,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x5_KHR]: 0.32,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR]: 0.32,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x6_KHR]: 0.26625,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR]: 0.26625,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x8_KHR]: 0.2,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR]: 0.2,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_10x10_KHR]: 0.16,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR]: 0.16,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_12x10_KHR]: 0.13375,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR]: 0.13375,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_ASTC_12x12_KHR]: 0.11125,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR]: 0.11125,\n\n [GL_INTERNAL_FORMAT.COMPRESSED_RGBA_BPTC_UNORM_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT]: 1,\n [GL_INTERNAL_FORMAT.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT]: 1,\n};\n\nexport const KTX = {\n FILE_HEADER_SIZE,\n FILE_IDENTIFIER,\n FORMATS_TO_COMPONENTS,\n INTERNAL_FORMAT_TO_BYTES_PER_PIXEL,\n INTERNAL_FORMAT_TO_TEXTURE_FORMATS,\n FIELDS,\n TYPES_TO_BYTES_PER_COMPONENT,\n TYPES_TO_BYTES_PER_PIXEL,\n ENDIANNESS\n};\n","import { KTX } from '../ktx2/const';\n\nimport type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\n\nexport function parseKTX(arrayBuffer: ArrayBuffer, supportedFormats: TEXTURE_FORMATS[]): TextureSourceOptions\n{\n const dataView = new DataView(arrayBuffer);\n\n if (!validate(dataView))\n {\n throw new Error('Invalid KTX identifier in header');\n }\n\n const {\n littleEndian,\n glType,\n glFormat,\n glInternalFormat,\n pixelWidth,\n pixelHeight,\n numberOfMipmapLevels,\n offset,\n } = parseKTXHeader(dataView);\n\n const textureFormat = KTX.INTERNAL_FORMAT_TO_TEXTURE_FORMATS[glInternalFormat];\n\n if (!textureFormat)\n {\n throw new Error(`Unknown texture format ${glInternalFormat}`);\n }\n if (!supportedFormats.includes(textureFormat))\n {\n throw new Error(`Unsupported texture format: ${textureFormat}, supportedFormats: ${supportedFormats}`);\n }\n\n const imagePixelByteSize = getImagePixelByteSize(glType, glFormat, glInternalFormat);\n\n const imageBuffers = getImageBuffers(dataView, glType, imagePixelByteSize, pixelWidth, pixelHeight, offset,\n numberOfMipmapLevels, littleEndian);\n\n return {\n format: textureFormat,\n width: pixelWidth,\n height: pixelHeight,\n resource: imageBuffers,\n alphaMode: 'no-premultiply-alpha'\n };\n}\n\nfunction getImageBuffers(dataView: DataView, glType: number, imagePixelByteSize: number, pixelWidth: number,\n pixelHeight: number, offset: number, numberOfMipmapLevels: number, littleEndian: boolean)\n{\n const alignedWidth = (pixelWidth + 3) & ~3;\n const alignedHeight = (pixelHeight + 3) & ~3;\n let imagePixels = pixelWidth * pixelHeight;\n\n if (glType === 0)\n {\n // Align to 16 pixels (4x4 blocks)\n imagePixels = alignedWidth * alignedHeight;\n }\n\n let mipByteSize = imagePixels * imagePixelByteSize;\n let mipWidth = pixelWidth;\n let mipHeight = pixelHeight;\n let alignedMipWidth = alignedWidth;\n let alignedMipHeight = alignedHeight;\n let imageOffset = offset;\n\n const imageBuffers = new Array(numberOfMipmapLevels);\n\n for (let mipmapLevel = 0; mipmapLevel < numberOfMipmapLevels; mipmapLevel++)\n {\n const imageSize = dataView.getUint32(imageOffset, littleEndian);\n let elementOffset = imageOffset + 4;\n\n imageBuffers[mipmapLevel] = new Uint8Array(dataView.buffer, elementOffset, mipByteSize);\n\n elementOffset += mipByteSize;\n\n // HINT: Aligns to 4-byte boundary after jumping imageSize (in lieu of mipPadding)\n imageOffset += imageSize + 4;// (+4 to jump the imageSize field itself)\n imageOffset = imageOffset % 4 !== 0 ? imageOffset + 4 - (imageOffset % 4) : imageOffset;\n\n // Calculate mipWidth, mipHeight for _next_ iteration\n mipWidth = (mipWidth >> 1) || 1;\n mipHeight = (mipHeight >> 1) || 1;\n alignedMipWidth = (mipWidth + 4 - 1) & ~(4 - 1);\n alignedMipHeight = (mipHeight + 4 - 1) & ~(4 - 1);\n\n // Each mipmap level is 4-times smaller?\n mipByteSize = alignedMipWidth * alignedMipHeight * imagePixelByteSize;\n }\n\n return imageBuffers;\n}\n\nfunction getImagePixelByteSize(glType: number, glFormat: number, glInternalFormat: number)\n{\n let imagePixelByteSize = KTX.INTERNAL_FORMAT_TO_BYTES_PER_PIXEL[glInternalFormat];\n\n if (glType !== 0)\n {\n // Uncompressed texture format\n if (KTX.TYPES_TO_BYTES_PER_COMPONENT[glType])\n {\n imagePixelByteSize = KTX.TYPES_TO_BYTES_PER_COMPONENT[glType] * KTX.FORMATS_TO_COMPONENTS[glFormat];\n }\n else\n {\n imagePixelByteSize = KTX.TYPES_TO_BYTES_PER_PIXEL[glType];\n }\n }\n\n if (imagePixelByteSize === undefined)\n {\n throw new Error('Unable to resolve the pixel format stored in the *.ktx file!');\n }\n\n return imagePixelByteSize;\n}\n\nfunction parseKTXHeader(dataView: DataView)\n{\n const littleEndian = dataView.getUint32(KTX.FIELDS.ENDIANNESS, true) === KTX.ENDIANNESS;\n const glType = dataView.getUint32(KTX.FIELDS.GL_TYPE, littleEndian);\n const glFormat = dataView.getUint32(KTX.FIELDS.GL_FORMAT, littleEndian);\n const glInternalFormat = dataView.getUint32(KTX.FIELDS.GL_INTERNAL_FORMAT, littleEndian);\n const pixelWidth = dataView.getUint32(KTX.FIELDS.PIXEL_WIDTH, littleEndian);\n const pixelHeight = dataView.getUint32(KTX.FIELDS.PIXEL_HEIGHT, littleEndian) || 1;// \"pixelHeight = 0\" -> \"1\"\n const pixelDepth = dataView.getUint32(KTX.FIELDS.PIXEL_DEPTH, littleEndian) || 1;// ^^\n const numberOfArrayElements = dataView.getUint32(KTX.FIELDS.NUMBER_OF_ARRAY_ELEMENTS, littleEndian) || 1;// ^^\n const numberOfFaces = dataView.getUint32(KTX.FIELDS.NUMBER_OF_FACES, littleEndian);\n const numberOfMipmapLevels = dataView.getUint32(KTX.FIELDS.NUMBER_OF_MIPMAP_LEVELS, littleEndian);\n const bytesOfKeyValueData = dataView.getUint32(KTX.FIELDS.BYTES_OF_KEY_VALUE_DATA, littleEndian);\n\n if (pixelHeight === 0 || pixelDepth !== 1)\n {\n throw new Error('Only 2D textures are supported');\n }\n if (numberOfFaces !== 1)\n {\n throw new Error('CubeTextures are not supported by KTXLoader yet!');\n }\n if (numberOfArrayElements !== 1)\n {\n throw new Error('WebGL does not support array textures');\n }\n\n return {\n littleEndian,\n glType,\n glFormat,\n glInternalFormat,\n pixelWidth,\n pixelHeight,\n numberOfMipmapLevels,\n offset: KTX.FILE_HEADER_SIZE + bytesOfKeyValueData\n };\n}\n\n/**\n * Checks whether the arrayBuffer contains a valid *.ktx file.\n * @param dataView\n */\nfunction validate(dataView: DataView): boolean\n{\n // NOTE: Do not optimize this into 3 32-bit integer comparison because the endianness\n // of the data is not specified.\n for (let i = 0; i < KTX.FILE_IDENTIFIER.length; i++)\n {\n if (dataView.getUint8(i) !== KTX.FILE_IDENTIFIER[i])\n {\n return false;\n }\n }\n\n return true;\n}\n","import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { parseKTX } from './parseKTX';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX textures! */\nexport const loadKTX = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadKTX',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.ktx');\n },\n\n async load(url: string, _asset: ResolvedAsset, loader: Loader): Promise\n {\n const supportedTextures = await getSupportedTextureFormats();\n\n const ktxResponse = await fetch(url);\n\n const ktxArrayBuffer = await ktxResponse.arrayBuffer();\n\n const textureOptions = parseKTX(ktxArrayBuffer, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser;\n\n","export const ktxTranscoderUrls = {\n jsUrl: 'https://files.pixijs.download/transcoders/ktx/libktx.js',\n wasmUrl: 'https://files.pixijs.download/transcoders/ktx/libktx.wasm'\n};\n\nexport function setKTXTranscoderPath(config: Partial)\n{\n Object.assign(ktxTranscoderUrls, config);\n}\n","import KTXWorker from 'worker:./ktx.worker.ts';\nimport { ktxTranscoderUrls } from '../utils/setKTXTranscoderPath';\n\nimport type { TEXTURE_FORMATS } from '../../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../../rendering/renderers/shared/texture/sources/TextureSource';\n\nlet ktxWorker: Worker;\nconst urlHash: Record void> = {};\n\nfunction getKTX2Worker(supportedTextures: TEXTURE_FORMATS[]): Worker\n{\n if (!ktxWorker)\n {\n ktxWorker = new KTXWorker().worker;\n\n ktxWorker.onmessage = (messageEvent) =>\n {\n const { success, url, textureOptions } = messageEvent.data;\n\n if (!success)\n {\n console.warn('Failed to load KTX texture', url);\n }\n\n urlHash[url](textureOptions);\n };\n\n ktxWorker.postMessage({\n type: 'init',\n jsUrl: ktxTranscoderUrls.jsUrl,\n wasmUrl: ktxTranscoderUrls.wasmUrl,\n supportedTextures\n });\n }\n\n return ktxWorker;\n}\n\nexport function loadKTX2onWorker(\n url: string,\n supportedTextures: TEXTURE_FORMATS[]\n): Promise\n{\n const ktxWorker = getKTX2Worker(supportedTextures);\n\n return new Promise((resolve) =>\n {\n urlHash[url] = resolve;\n\n ktxWorker.postMessage({ type: 'load', url });\n });\n}\n","import { LoaderParserPriority } from '../../assets/loader/parsers/LoaderParser';\nimport { createTexture } from '../../assets/loader/parsers/textures/utils/createTexture';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\nimport { CompressedSource } from '../../rendering/renderers/shared/texture/sources/CompressedSource';\nimport { getSupportedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedTextureFormats';\nimport { loadKTX2onWorker } from './worker/loadKTX2onWorker';\n\nimport type { Loader } from '../../assets/loader/Loader';\nimport type { LoaderParser } from '../../assets/loader/parsers/LoaderParser';\nimport type { ResolvedAsset } from '../../assets/types';\nimport type { TextureSourceOptions } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\n\n/** Loads KTX2 textures! */\nexport const loadKTX2 = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.High,\n },\n\n name: 'loadKTX2',\n\n test(url: string): boolean\n {\n return checkExtension(url, '.ktx2');\n },\n\n async load(url: string, _asset: ResolvedAsset, loader: Loader): Promise\n {\n const supportedTextures = await getSupportedTextureFormats();\n\n const textureOptions = await loadKTX2onWorker(url, supportedTextures);\n\n const compressedTextureSource = new CompressedSource(textureOptions);\n\n return createTexture(compressedTextureSource, loader, url);\n },\n\n unload(texture: Texture | Texture[]): void\n {\n if (Array.isArray(texture))\n {\n texture.forEach((t) => t.destroy(true));\n }\n else\n {\n texture.destroy(true);\n }\n }\n\n} as LoaderParser;\n\n","import type { TEXTURE_FORMATS } from '../../../rendering/renderers/shared/texture/const';\nimport type { TextureSourceOptions } from '../../../rendering/renderers/shared/texture/sources/TextureSource';\n\ninterface ColorConverter\n{\n convertedFormat: TEXTURE_FORMATS,\n convertFunction: (levelBuffer: Uint8Array) => Uint8Array\n}\n\nconst converters: Record = {\n rgb8unorm: {\n convertedFormat: 'rgba8unorm',\n convertFunction: convertRGBtoRGBA,\n },\n 'rgb8unorm-srgb': {\n convertedFormat: 'rgba8unorm-srgb',\n convertFunction: convertRGBtoRGBA,\n }\n};\n\nexport function convertFormatIfRequired(textureOptions: TextureSourceOptions)\n{\n const format = textureOptions.format;\n\n if (converters[format])\n {\n const convertFunction = converters[format].convertFunction;\n\n const levelBuffers = textureOptions.resource;\n\n for (let i = 0; i < levelBuffers.length; i++)\n {\n levelBuffers[i] = convertFunction(levelBuffers[i]);\n }\n\n textureOptions.format = converters[format].convertedFormat;\n }\n}\n\nfunction convertRGBtoRGBA(levelBuffer: Uint8Array): Uint8Array\n{\n const pixelCount = levelBuffer.byteLength / 3;\n\n const levelBufferWithAlpha = new Uint32Array(pixelCount);\n\n for (let i = 0; i < pixelCount; ++i)\n {\n levelBufferWithAlpha[i] = (levelBuffer[i * 3]) // R\n + (levelBuffer[(i * 3) + 1] << 8) // G\n + (levelBuffer[(i * 3) + 2] << 16) // B\n + 0xff000000; // A (255)\n }\n\n return new Uint8Array(levelBufferWithAlpha.buffer);\n}\n","import type { KTXTexture } from '../types';\n\nexport function createLevelBuffersFromKTX(ktxTexture: KTXTexture): Uint8Array[]\n{\n const levelBuffers = [];\n\n // create the levels..\n for (let i = 0; i < ktxTexture.numLevels; i++)\n {\n const imageData = ktxTexture.getImageData(i, 0, 0);\n\n const levelBuffer = new Uint8Array(imageData.byteLength);\n\n levelBuffer.set(imageData);\n\n levelBuffers.push(levelBuffer);\n }\n\n return levelBuffers;\n}\n","import type { COMPRESSED_TEXTURE_FORMATS } from '../types';\n\nconst glFormatToGPUFormatMap: Record = {\n 6408: 'rgba8unorm',\n 32856: 'bgra8unorm', //\n 32857: 'rgb10a2unorm',\n 33189: 'depth16unorm',\n 33190: 'depth24plus',\n 33321: 'r8unorm',\n 33323: 'rg8unorm',\n 33325: 'r16float',\n 33326: 'r32float',\n 33327: 'rg16float',\n 33328: 'rg32float',\n 33329: 'r8sint',\n 33330: 'r8uint',\n 33331: 'r16sint',\n 33332: 'r16uint',\n 33333: 'r32sint',\n 33334: 'r32uint',\n 33335: 'rg8sint',\n 33336: 'rg8uint',\n 33337: 'rg16sint',\n 33338: 'rg16uint',\n 33339: 'rg32sint',\n 33340: 'rg32uint',\n 33778: 'bc2-rgba-unorm',\n 33779: 'bc3-rgba-unorm',\n 34836: 'rgba32float',\n 34842: 'rgba16float',\n 35056: 'depth24plus-stencil8',\n 35898: 'rg11b10ufloat',\n 35901: 'rgb9e5ufloat',\n 35907: 'rgba8unorm-srgb', // bgra8unorm-srgb\n 36012: 'depth32float',\n 36013: 'depth32float-stencil8',\n 36168: 'stencil8',\n 36208: 'rgba32uint',\n 36214: 'rgba16uint',\n 36220: 'rgba8uint',\n 36226: 'rgba32sint',\n 36232: 'rgba16sint',\n 36238: 'rgba8sint',\n 36492: 'bc7-rgba-unorm',\n 36756: 'r8snorm',\n 36757: 'rg8snorm',\n 36759: 'rgba8snorm',\n 37496: 'etc2-rgba8unorm',\n 37808: 'astc-4x4-unorm'\n};\n\nexport function glFormatToGPUFormat(glInternalFormat: number): COMPRESSED_TEXTURE_FORMATS\n{\n const format = glFormatToGPUFormatMap[glInternalFormat];\n\n if (format)\n {\n return format;\n }\n\n throw new Error(`Unsupported glInternalFormat: ${glInternalFormat}`);\n}\n","import type { COMPRESSED_TEXTURE_FORMATS } from '../types';\n\nconst vkFormatToGPUFormatMap: Record = {\n 23: 'rgb8unorm', // VK_FORMAT_R8G8B8_UNORM\n 37: 'rgba8unorm', // VK_FORMAT_R8G8B8A8_UNORM\n 43: 'rgba8unorm-srgb', // VK_FORMAT_R8G8B8A8_SRGB\n // TODO add more!\n};\n\nexport function vkFormatToGPUFormat(vkFormat: number): COMPRESSED_TEXTURE_FORMATS\n{\n const format = vkFormatToGPUFormatMap[vkFormat];\n\n if (format)\n {\n return format;\n }\n\n throw new Error(`Unsupported VkFormat: ${vkFormat}`);\n}\n","import { glFormatToGPUFormat } from './glFormatToGPUFormat';\nimport { vkFormatToGPUFormat } from './vkFormatToGPUFormat';\n\nimport type { COMPRESSED_TEXTURE_FORMATS, KTXTexture } from '../types';\n\nexport function getTextureFormatFromKTXTexture(ktxTexture: KTXTexture): COMPRESSED_TEXTURE_FORMATS\n{\n if (ktxTexture.classId === 2)\n {\n return vkFormatToGPUFormat(ktxTexture.vkFormat);\n }\n\n return glFormatToGPUFormat(ktxTexture.glInternalformat);\n}\n","const gpuFormatToBasisTranscoderFormatMap: Record = {\n 'bc3-rgba-unorm': 'BC3_RGBA',\n 'bc7-rgba-unorm': 'BC7_M5_RGBA',\n 'etc2-rgba8unorm': 'ETC2_RGBA',\n 'astc-4x4-unorm': 'ASTC_4x4_RGBA',\n // Uncompressed\n rgba8unorm: 'RGBA32',\n rg11b10ufloat: 'R11F_G11F_B10F',\n};\n\nexport function gpuFormatToKTXBasisTranscoderFormat(transcoderFormat: string): string\n{\n const format = gpuFormatToBasisTranscoderFormatMap[transcoderFormat];\n\n if (format)\n {\n return format;\n }\n\n throw new Error(`Unsupported transcoderFormat: ${transcoderFormat}`);\n}\n","import { Resolver } from '../../assets/resolver/Resolver';\nimport { checkExtension } from '../../assets/utils/checkExtension';\nimport { ExtensionType } from '../../extensions/Extensions';\n\nimport type { ResolveURLParser } from '../../assets/resolver/types';\nimport type { UnresolvedAsset } from '../../assets/types';\n\nexport const validFormats = ['basis', 'bc7', 'bc6h', 'astc', 'etc2', 'bc5', 'bc4', 'bc3', 'bc2', 'bc1', 'eac'];\n\nexport const resolveCompressedTextureUrl = {\n extension: ExtensionType.ResolveParser,\n test: (value: string) =>\n checkExtension(value, ['.ktx', '.ktx2', '.dds']),\n parse: (value: string): UnresolvedAsset =>\n {\n let format;\n\n const splitValue = value.split('.');\n\n if (splitValue.length > 2)\n {\n const newFormat = splitValue[splitValue.length - 2];\n\n if (validFormats.includes(newFormat))\n {\n format = newFormat;\n }\n }\n else\n {\n format = splitValue[splitValue.length - 1];\n }\n\n return {\n resolution: parseFloat(Resolver.RETINA_PREFIX.exec(value)?.[1] ?? '1'),\n format,\n src: value,\n };\n }\n} as ResolveURLParser;\n","import { ExtensionType } from '../../extensions/Extensions';\n// eslint-disable-next-line max-len\nimport { getSupportedCompressedTextureFormats } from '../../rendering/renderers/shared/texture/utils/getSupportedCompressedTextureFormats';\nimport { isWebGLSupported } from '../../utils/browser/isWebGLSupported';\nimport { isWebGPUSupported } from '../../utils/browser/isWebGPUSupported';\nimport { validFormats } from './resolveCompressedTextureUrl';\n\nimport type { FormatDetectionParser } from '../../assets/detections/types';\nimport type { TEXTURE_FORMATS } from '../../rendering/renderers/shared/texture/const';\n\nlet compressedTextureExtensions: string[];\n\nexport const detectCompressed = {\n extension: {\n type: ExtensionType.DetectionParser,\n priority: 2,\n },\n test: async (): Promise =>\n {\n if (await isWebGPUSupported()) return true;\n if (isWebGLSupported()) return true;\n\n return false;\n },\n add: async (formats: string[]): Promise =>\n {\n const supportedCompressedTextureFormats = await getSupportedCompressedTextureFormats();\n\n compressedTextureExtensions = extractExtensionsForCompressedTextureFormats(supportedCompressedTextureFormats);\n\n return [...compressedTextureExtensions, ...formats];\n },\n remove: async (formats: string[]): Promise =>\n {\n if (compressedTextureExtensions)\n {\n return formats.filter((f) => !(f in compressedTextureExtensions));\n }\n\n return formats;\n },\n} as FormatDetectionParser;\n\nfunction extractExtensionsForCompressedTextureFormats(formats: TEXTURE_FORMATS[]): string[]\n{\n const extensions: string[] = ['basis'];\n\n const dupeMap: Record = {};\n\n formats.forEach((format) =>\n {\n const extension = format.split('-')[0];\n\n if (extension && !dupeMap[extension])\n {\n dupeMap[extension] = true;\n extensions.push(extension);\n }\n });\n\n // sort extensions by priority\n extensions.sort((a, b) =>\n {\n const aIndex = validFormats.indexOf(a);\n const bIndex = validFormats.indexOf(b);\n\n if (aIndex === -1)\n {\n return 1;\n }\n if (bIndex === -1)\n {\n return -1;\n }\n\n return aIndex - bIndex;\n });\n\n return extensions;\n}\n","import { Bounds } from '../scene/container/bounds/Bounds';\nimport { getGlobalBounds } from '../scene/container/bounds/getGlobalBounds';\n\nimport type { Container } from '../scene/container/Container';\n\nconst tempBounds = new Bounds();\n\ntype RectangleLike = {x: number, y: number, width: number, height: number};\n\n/**\n * The Culler class is responsible for managing and culling containers.\n *\n *\n * Culled containers will not be rendered, and their children will not be processed. This can be useful for\n * performance optimization when dealing with large scenes.\n * @example\n * import { Culler, Container } from 'pixi.js';\n *\n * const culler = new Culler();\n * const stage = new Container();\n *\n * ... set up stage ...\n *\n * culler.cull(stage, { x: 0, y: 0, width: 800, height: 600 });\n * renderer.render(stage);\n * @memberof scene\n */\nexport class Culler\n{\n /**\n * Culls the children of a specific container based on the given view. This will also cull items that are not\n * being explicitly managed by the culler.\n * @param container - The container to cull.\n * @param view - The view rectangle.\n * @param skipUpdateTransform - Whether to skip updating the transform.\n */\n public cull(container: Container, view: RectangleLike, skipUpdateTransform = true)\n {\n this._cullRecursive(container, view, skipUpdateTransform);\n }\n\n private _cullRecursive(container: Container, view: RectangleLike, skipUpdateTransform = true)\n {\n if (container.cullable && container.measurable && container.includeInBuild)\n {\n const bounds = container.cullArea ?? getGlobalBounds(container, skipUpdateTransform, tempBounds);\n\n // check view intersection..\n container.culled = !(bounds.x >= view.x + view.width\n || bounds.y >= view.y + view.height\n || bounds.x + bounds.width <= view.x\n || bounds.y + bounds.height <= view.y);\n }\n\n // dont process children if not needed\n if (\n !container.cullableChildren\n || container.culled\n || !container.renderable\n || !container.measurable\n || !container.includeInBuild\n ) return;\n\n for (let i = 0; i < container.children.length; i++)\n {\n this._cullRecursive(container.children[i], view, skipUpdateTransform);\n }\n }\n\n /** A shared instance of the Culler class. */\n public static shared = new Culler();\n}\n","import { ExtensionType } from '../extensions/Extensions';\nimport { Culler } from './Culler';\n\nimport type { ExtensionMetadata } from '../extensions/Extensions';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { Container } from '../scene/container/Container';\n\n/**\n * An {@link app.Application} plugin that will automatically cull your stage using the renderers screen size.\n * @example\n * import { extensions, CullerPlugin } from 'pixi.js';\n *\n * extensions.add(CullerPlugin);\n * @memberof app\n * @see {@link scene.Culler}\n */\nexport class CullerPlugin\n{\n /** @ignore */\n public static extension: ExtensionMetadata = {\n priority: 10,\n type: ExtensionType.Application,\n name: 'culler',\n };\n\n public static renderer: Renderer;\n public static stage: Container;\n public static render: () => void;\n private static _renderRef: () => void;\n\n public static init(): void\n {\n this._renderRef = this.render.bind(this);\n\n this.render = (): void =>\n {\n Culler.shared.cull(this.stage, this.renderer.screen);\n this.renderer.render({ container: this.stage });\n };\n }\n\n public static destroy(): void\n {\n this.render = this._renderRef;\n }\n}\n","import { ExtensionType } from '../extensions/Extensions';\n\n/**\n * Extension for the browser environment.\n * @memberof environment\n */\nexport const browserExt = {\n extension: {\n type: ExtensionType.Environment,\n name: 'browser',\n priority: -1,\n },\n test: () => true,\n load: async () =>\n {\n await import('./browserAll');\n },\n};\n","import { GlProgram } from '../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../rendering/renderers/gpu/shader/GpuProgram';\nimport { Shader } from '../rendering/renderers/shared/shader/Shader';\nimport { State } from '../rendering/renderers/shared/state/State';\n\nimport type { RenderSurface } from '../rendering/renderers/shared/renderTarget/RenderTargetSystem';\nimport type {\n IShaderWithResources,\n ShaderFromResources,\n ShaderWithResources\n} from '../rendering/renderers/shared/shader/Shader';\nimport type { BLEND_MODES } from '../rendering/renderers/shared/state/const';\nimport type { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport type { FilterSystem } from './FilterSystem';\n\n/**\n * Filters provide additional shading and post-processing effects to any display object and its children\n * they are attached to.\n *\n * You attached filters to a display object using its `filters` array property.\n *\n * ```js\n * import { Sprite, BlurFilter, HardMixBlend } from 'pixi.js';\n *\n * const sprite = Sprite.from('myTexture.png');\n *\n * // single filter\n * sprite.filters = new BlurFilter({ strength: 8 });\n *\n * // or multiple filters\n * sprite.filters = [new BlurFilter({ strength: 8 }), new HardMixBlend()];\n * ```\n *\n * Pixi has a number of built-in filters which can be used in your game or application:\n *\n * - {@link filters.AlphaFilter} - Applies alpha to the display object and any of its children.\n * - {@link filters.BlurFilter} - Applies a Gaussian blur to the display object.\n * - {@link filters.BlurFilterPass} - Applies a blur pass to an object.\n * - {@link filters.ColorBurnBlend} - Blend mode to add color burn to display objects.\n * - {@link filters.ColorDodgeBlend} - Blend mode to add color dodge to display objects.\n * - {@link filters.ColorMatrixFilter} - Transform the color channels by matrix multiplication.\n * - {@link filters.DarkenBlend} - Blend mode to darken display objects.\n * - {@link filters.DisplacementFilter} - Applies a displacement map to distort an object.\n * - {@link filters.DivideBlend} - Blend mode to divide display objects.\n * - {@link filters.HardMixBlend} - Blend mode to hard mix display objects.\n * - {@link filters.LinearBurnBlend} - Blend mode to add linear burn to display objects.\n * - {@link filters.LinearDodgeBlend} - Blend mode to add linear dodge to display objects.\n * - {@link filters.LinearLightBlend} - Blend mode to add linear light to display objects.\n * - {@link filters.NoiseFilter} - Applies random noise to an object.\n * - {@link filters.PinLightBlend} - Blend mode to add pin light to display objects.\n * - {@link filters.SubtractBlend} - Blend mode to subtract display objects.\n *\n *
\n * For more available filters, check out the\n * {@link https://pixijs.io/filters/docs/ pixi-filters} repository.\n *\n * You can also check out the awesome {@link https://pixijs.io/filters/examples/ Filter demo} to see\n * filters in action and combine them!\n * @namespace filters\n */\n\n/**\n * The options to use when creating a new filter.\n * @memberof filters\n */\nexport interface FilterOptions\n{\n /** optional blend mode used by the filter when rendering (defaults to 'normal') */\n blendMode?: BLEND_MODES;\n /**\n * the resolution the filter should be rendered at. The lower the resolution, the more performant\n * the filter will be, but the lower the quality of the output. (defaults to the renderers resolution)\n * Consider lowering this for things like blurs filters\n */\n resolution?: number;\n /**\n * the amount of pixels to pad the container with when applying the filter. For example a blur extends the\n * container out as it blurs, so padding is applied to ensure that extra detail is rendered as well\n * without clipping occurring. (default 0)\n */\n padding?: number;\n /**\n * If true the filter will make use of antialiasing. Although it looks better this can have a performance impact.\n * By default, the filter will detect the antialiasing of the renderer and change this automatically.\n * Definitely don't set this to true if the renderer has antialiasing set to false. As it will antialias,\n * but you won't see the difference.\n *\n * This can be a boolean or [FilterAntialias]{@link filters.FilterAntialias} string.\n */\n antialias?: FilterAntialias | boolean;\n /**\n * If this is set to true, the filter system will grab a snap shot oif the are being rendered\n * to and pass this into the shader. This is useful for blend modes that need to be aware of the pixels\n * they are rendering to. Only use if you need that data, otherwise its an extra gpu copy you don't need!\n * (default false)\n */\n blendRequired?: boolean;\n}\n\n/** Filter options mixed with shader resources. A filter needs a shader and some resources to work. */\nexport type FilterWithShader = FilterOptions & IShaderWithResources;\n\n/**\n * The antialiasing mode of the filter. This can be either:\n * - `on` - the filter is always antialiased regardless of the renderer settings\n * - `off` - the filter is never antialiased regardless of the renderer settings\n * - `inherit` - (default) the filter uses the antialias settings of the renderer\n * @memberof filters\n */\nexport type FilterAntialias = 'on' | 'off' | 'inherit';\n\n/**\n * The Filter class is the base for all filter effects used in Pixi.js\n * As it extends a shader, it requires that a glProgram is parsed in to work with WebGL and a gpuProgram for WebGPU.\n * If you don't proved one, then the filter is skipped and just rendered as if it wasn't there for that renderer.\n *\n * A filter can be applied to anything that extends Container in Pixi.js which also includes Sprites, Graphics etc.\n *\n * Its worth noting Performance-wise filters can be pretty expensive if used too much in a single scene.\n * The following happens under the hood when a filter is applied:\n *\n * .1. Break the current batch\n *
\n * .2. The target is measured using getGlobalBounds\n * (recursively go through all children and figure out how big the object is)\n *
\n * .3. Get the closest Po2 Textures from the texture pool\n *
\n * .4. Render the target to that texture\n *
\n * .5. Render that texture back to the main frame buffer as a quad using the filters program.\n *
\n *
\n * Some filters (such as blur) require multiple passes too which can result in an even bigger performance hit. So be careful!\n * Its not generally the complexity of the shader that is the bottle neck,\n * but all the framebuffer / shader switching that has to take place.\n * One filter applied to a container with many objects is MUCH faster than many filter applied to many objects.\n * @class\n * @memberof filters\n */\nexport class Filter extends Shader\n{\n /**\n * The default filter settings\n * @static\n */\n public static readonly defaultOptions: FilterOptions = {\n blendMode: 'normal',\n resolution: 1,\n padding: 0,\n antialias: 'off',\n blendRequired: false,\n };\n\n /**\n * The padding of the filter. Some filters require extra space to breath such as a blur.\n * Increasing this will add extra width and height to the bounds of the object that the\n * filter is applied to.\n * @default 0\n */\n public padding: number;\n\n /**\n * should the filter use antialiasing?\n * @default inherit\n */\n public antialias: FilterAntialias;\n\n /** If enabled is true the filter is applied, if false it will not. */\n public enabled = true;\n\n /**\n * The gpu state the filter requires to render.\n * @internal\n * @ignore\n */\n public _state = State.for2d();\n\n /**\n * The resolution of the filter. Setting this to be lower will lower the quality but\n * increase the performance of the filter.\n * @default 1\n */\n public resolution: number;\n\n /**\n * Whether or not this filter requires the previous render texture for blending.\n * @default false\n */\n public blendRequired: boolean;\n\n /**\n * @param options - The optional parameters of this filter.\n */\n constructor(options: FilterWithShader)\n {\n options = { ...Filter.defaultOptions, ...options };\n\n super(options as ShaderWithResources);\n\n this.padding = options.padding;\n\n // check if is boolean\n if (typeof options.antialias === 'boolean')\n {\n this.antialias = options.antialias ? 'on' : 'off';\n }\n else\n {\n this.antialias = options.antialias;\n }\n\n this.resolution = options.resolution;\n this.blendRequired = options.blendRequired;\n\n this.addResource('uTexture', 0, 1);\n }\n\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: RenderSurface,\n clearMode: boolean\n ): void\n {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n\n /**\n * Get the blend mode of the filter.\n * @default \"normal\"\n */\n get blendMode(): BLEND_MODES\n {\n return this._state.blendMode;\n }\n\n /** Sets the blend mode of the filter. */\n set blendMode(value: BLEND_MODES)\n {\n this._state.blendMode = value;\n }\n\n /**\n * A short hand function to create a filter based of a vertex and fragment shader src.\n * @param options\n * @returns A shiny new PixiJS filter!\n */\n public static from(options: FilterOptions & ShaderFromResources): Filter\n {\n const { gpu, gl, ...rest } = options;\n\n let gpuProgram: GpuProgram;\n let glProgram: GlProgram;\n\n if (gpu)\n {\n gpuProgram = GpuProgram.from(gpu);\n }\n\n if (gl)\n {\n glProgram = GlProgram.from(gl);\n }\n\n return new Filter({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n}\n","import { GlProgram } from '../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { Filter } from '../Filter';\nimport blendTemplateFrag from './blend-template.frag';\nimport blendTemplateVert from './blend-template.vert';\nimport blendTemplate from './blend-template.wgsl';\n\nexport interface BlendModeFilterOptions\n{\n source?: string;\n gpu?: {\n functions?: string;\n main?: string;\n }\n gl?: {\n functions?: string;\n main?: string;\n }\n}\n\nexport class BlendModeFilter extends Filter\n{\n constructor(options: BlendModeFilterOptions)\n {\n const gpuOptions = options.gpu;\n\n const gpuSource = compileBlendModeShader({ source: blendTemplate, ...gpuOptions });\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source: gpuSource,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source: gpuSource,\n entryPoint: 'mainFragment',\n },\n });\n\n const glOptions = options.gl;\n\n const glSource = compileBlendModeShader({ source: blendTemplateFrag, ...glOptions });\n\n const glProgram = GlProgram.from({\n vertex: blendTemplateVert,\n fragment: glSource\n });\n\n const uniformGroup = new UniformGroup({\n uBlend: {\n value: 1,\n type: 'f32'\n }\n });\n\n super({\n gpuProgram,\n glProgram,\n blendRequired: true,\n resources: {\n blendUniforms: uniformGroup,\n uBackTexture: Texture.EMPTY\n }\n });\n }\n}\n\nfunction compileBlendModeShader(options: {source: string, functions?: string, main?: string}): string\n{\n const { source, functions, main } = options;\n\n return source.replace('{FUNCTIONS}', functions).replace('{MAIN}', main);\n}\n","/** A helper object containing the hsl shader code for both glsl */\nexport const hslgl = `\n\tfloat getLuminosity(vec3 c) {\n\t\treturn 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;\n\t}\n\n\tvec3 setLuminosity(vec3 c, float lum) {\n\t\tfloat modLum = lum - getLuminosity(c);\n\t\tvec3 color = c.rgb + vec3(modLum);\n\n\t\t// clip back into legal range\n\t\tmodLum = getLuminosity(color);\n\t\tvec3 modLumVec = vec3(modLum);\n\n\t\tfloat cMin = min(color.r, min(color.g, color.b));\n\t\tfloat cMax = max(color.r, max(color.g, color.b));\n\n\t\tif(cMin < 0.0) {\n\t\t\tcolor = mix(modLumVec, color, modLum / (modLum - cMin));\n\t\t}\n\n\t\tif(cMax > 1.0) {\n\t\t\tcolor = mix(modLumVec, color, (1.0 - modLum) / (cMax - modLum));\n\t\t}\n\n\t\treturn color;\n\t}\n\n\tfloat getSaturation(vec3 c) {\n\t\treturn max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));\n\t}\n\n\tvec3 setSaturationMinMidMax(vec3 cSorted, float s) {\n\t\tvec3 colorSorted = cSorted;\n\n\t\tif(colorSorted.z > colorSorted.x) {\n\t\t\tcolorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));\n\t\t\tcolorSorted.z = s;\n\t\t}\n\t\telse {\n\t\t\tcolorSorted.y = 0.0;\n\t\t\tcolorSorted.z = 0.0;\n\t\t}\n\n\t\tcolorSorted.x = 0.0;\n\n\t\treturn colorSorted;\n\t}\n\n\tvec3 setSaturation(vec3 c, float s) {\n\t\tvec3 color = c;\n\n\t\tif(color.r <= color.g && color.r <= color.b) {\n\t\t\tif(color.g <= color.b) {\n\t\t\t\tcolor = setSaturationMinMidMax(color.rgb, s).rgb;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcolor = setSaturationMinMidMax(color.rbg, s).rbg;\n\t\t\t}\n\t\t}\n\t\telse if(color.g <= color.r && color.g <= color.b) {\n\t\t\tif(color.r <= color.b) {\n\t\t\t\tcolor = setSaturationMinMidMax(color.grb, s).grb;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcolor = setSaturationMinMidMax(color.gbr, s).gbr;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Using bgr for both fixes part of hue\n\t\t\tif(color.r <= color.g) {\n\t\t\t\tcolor = setSaturationMinMidMax(color.brg, s).brg;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcolor = setSaturationMinMidMax(color.bgr, s).bgr;\n\t\t\t}\n\t\t}\n\n\t\treturn color;\n\t}\n `;\n","/** A helper object containing the hsl shader code for wgsl */\nexport const hslgpu = `\n\tfn getLuminosity(c: vec3) -> f32\n\t{\n\t\treturn 0.3*c.r + 0.59*c.g + 0.11*c.b;\n\t}\n\n\tfn setLuminosity(c: vec3, lum: f32) -> vec3\n\t{\n\t\tvar modLum: f32 = lum - getLuminosity(c);\n\t\tvar color: vec3 = c.rgb + modLum;\n\n\t\t// clip back into legal range\n\t\tmodLum = getLuminosity(color);\n\t\tlet modLumVec = vec3(modLum);\n\n\t\tlet cMin: f32 = min(color.r, min(color.g, color.b));\n\t\tlet cMax: f32 = max(color.r, max(color.g, color.b));\n\n\t\tif(cMin < 0.0)\n\t\t{\n\t\t\tcolor = mix(modLumVec, color, modLum / (modLum - cMin));\n\t\t}\n\n\t\tif(cMax > 1.0)\n\t\t{\n\t\t\tcolor = mix(modLumVec, color, (1 - modLum) / (cMax - modLum));\n\t\t}\n\n\t\treturn color;\n\t}\n\n\tfn getSaturation(c: vec3) -> f32\n\t{\n\t\treturn max(c.r, max(c.g, c.b)) - min(c.r, min(c.g, c.b));\n\t}\n\n\tfn setSaturationMinMidMax(cSorted: vec3, s: f32) -> vec3\n\t{\n\t\tvar colorSorted = cSorted;\n\n\t\tif(colorSorted.z > colorSorted.x)\n\t\t{\n\t\t\tcolorSorted.y = (((colorSorted.y - colorSorted.x) * s) / (colorSorted.z - colorSorted.x));\n\t\t\tcolorSorted.z = s;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcolorSorted.y = 0;\n\t\t\tcolorSorted.z = 0;\n\t\t}\n\n\t\tcolorSorted.x = 0;\n\n\t\treturn colorSorted;\n\t}\n\n\tfn setSaturation(c: vec3, s: f32) -> vec3\n\t{\n\t\tvar color = c;\n\n\t\tif (color.r <= color.g && color.r <= color.b)\n\t\t{\n\t\t\tif (color.g <= color.b)\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.rgb, s)).rgb;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.rbg, s)).rbg;\n\t\t\t}\n\t\t}\n\t\telse if (color.g <= color.r && color.g <= color.b)\n\t\t{\n\t\t\tif (color.r <= color.b)\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.grb, s)).grb;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.gbr, s)).gbr;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Using bgr for both fixes part of hue\n\t\t\tif (color.r <= color.g)\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.brg, s)).brg;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcolor = vec3(setSaturationMinMidMax(color.bgr, s)).bgr;\n\t\t\t}\n\t\t}\n\n\t\treturn color;\n\t}\n\t`;\n","import { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Filter } from '../../Filter';\nimport vertex from '../defaultFilter.vert';\nimport fragment from './alpha.frag';\nimport source from './alpha.wgsl';\n\nimport type { FilterOptions } from '../../Filter';\n\n/**\n * Options for AlphaFilter\n * @memberof filters\n */\nexport interface AlphaFilterOptions extends FilterOptions\n{\n /**\n * Amount of alpha from 0 to 1, where 0 is transparent\n * @default 1\n */\n alpha: number;\n}\n\n/**\n * Simplest filter - applies alpha.\n *\n * Use this instead of Container's alpha property to avoid visual layering of individual elements.\n * AlphaFilter applies alpha evenly across the entire display object and any opaque elements it contains.\n * If elements are not opaque, they will blend with each other anyway.\n *\n * Very handy if you want to use common features of all filters:\n *\n * 1. Assign a blendMode to this filter, blend all elements inside display object with background.\n *\n * 2. To use clipping in display coordinates, assign a filterArea to the same container that has this filter.\n * @memberof filters\n */\nexport class AlphaFilter extends Filter\n{\n /** Default filter options */\n public static readonly defaultOptions: AlphaFilterOptions = {\n /** Amount of alpha from 0 to 1, where 0 is transparent */\n alpha: 1,\n };\n\n constructor(options?: AlphaFilterOptions)\n {\n options = { ...AlphaFilter.defaultOptions, ...options };\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'alpha-filter'\n });\n\n const { alpha, ...rest } = options;\n\n const alphaUniforms = new UniformGroup({\n uAlpha: { value: alpha, type: 'f32' },\n });\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n alphaUniforms\n },\n });\n }\n\n /**\n * Coefficient for alpha multiplication\n * @default 1\n */\n get alpha(): number { return this.resources.alphaUniforms.uniforms.uAlpha; }\n set alpha(value: number) { this.resources.alphaUniforms.uniforms.uAlpha = value; }\n}\n","interface IGAUSSIAN_VALUES\n{\n [x: number]: number[];\n}\n\nexport const GAUSSIAN_VALUES: IGAUSSIAN_VALUES = {\n 5: [0.153388, 0.221461, 0.250301],\n 7: [0.071303, 0.131514, 0.189879, 0.214607],\n 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236],\n 11: [0.0093, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],\n 13: [0.002406, 0.009255, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],\n 15: [0.000489, 0.002403, 0.009246, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448],\n};\n","import { GAUSSIAN_VALUES } from '../const';\n\nconst fragTemplate = [\n 'in vec2 vBlurTexCoords[%size%];',\n 'uniform sampler2D uTexture;',\n 'out vec4 finalColor;',\n\n 'void main(void)',\n '{',\n ' finalColor = vec4(0.0);',\n ' %blur%',\n '}',\n\n].join('\\n');\n\nexport function generateBlurFragSource(kernelSize: number): string\n{\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n\n let fragSource = fragTemplate;\n\n let blurLoop = '';\n const template = 'finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;';\n let value: number;\n\n for (let i = 0; i < kernelSize; i++)\n {\n let blur = template.replace('%index%', i.toString());\n\n value = i;\n\n if (i >= halfLength)\n {\n value = kernelSize - i - 1;\n }\n\n blur = blur.replace('%value%', kernel[value].toString());\n\n blurLoop += blur;\n blurLoop += '\\n';\n }\n\n fragSource = fragSource.replace('%blur%', blurLoop);\n fragSource = fragSource.replace('%size%', kernelSize.toString());\n\n return fragSource;\n}\n","const vertTemplate = `\n in vec2 aPosition;\n\n uniform float uStrength;\n\n out vec2 vBlurTexCoords[%size%];\n\n uniform vec4 uInputSize;\n uniform vec4 uOutputFrame;\n uniform vec4 uOutputTexture;\n\n vec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\n vec2 filterTextureCoord( void )\n {\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n float pixelStrength = uInputSize.%dimension% * uStrength;\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }`;\n\nexport function generateBlurVertSource(kernelSize: number, x: boolean): string\n{\n const halfLength = Math.ceil(kernelSize / 2);\n\n let vertSource = vertTemplate;\n\n let blurLoop = '';\n let template;\n\n if (x)\n {\n template = 'vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);';\n }\n else\n {\n template = 'vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);';\n }\n\n for (let i = 0; i < kernelSize; i++)\n {\n let blur = template.replace('%index%', i.toString());\n\n blur = blur.replace('%sampleIndex%', `${i - (halfLength - 1)}.0`);\n\n blurLoop += blur;\n blurLoop += '\\n';\n }\n\n vertSource = vertSource.replace('%blur%', blurLoop);\n vertSource = vertSource.replace('%size%', kernelSize.toString());\n vertSource = vertSource.replace('%dimension%', x ? 'z' : 'w');\n\n return vertSource;\n}\n","import { GlProgram } from '../../../../rendering/renderers/gl/shader/GlProgram';\nimport { generateBlurFragSource } from './generateBlurFragSource';\nimport { generateBlurVertSource } from './generateBlurVertSource';\n\nexport function generateBlurGlProgram(horizontal: boolean, kernelSize: number)\n{\n const vertex = generateBlurVertSource(kernelSize, horizontal);\n const fragment = generateBlurFragSource(kernelSize);\n\n return GlProgram.from({\n vertex,\n fragment,\n name: `blur-${horizontal ? 'horizontal' : 'vertical'}-pass-filter`\n });\n}\n","import { GpuProgram } from '../../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { GAUSSIAN_VALUES } from '../const';\nimport source from './blur-template.wgsl';\n\nexport function generateBlurProgram(horizontal: boolean, kernelSize: number)\n{\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n\n const blurStructSource: string[] = [];\n const blurOutSource: string[] = [];\n const blurSamplingSource: string[] = [];\n\n for (let i = 0; i < kernelSize; i++)\n {\n blurStructSource[i] = `@location(${i}) offset${i}: vec2,`;\n\n if (horizontal)\n {\n blurOutSource[i] = `filteredCord + vec2(${i - halfLength + 1} * strength, 0.0),`;\n }\n else\n {\n blurOutSource[i] = `filteredCord + vec2(0.0, ${i - halfLength + 1} * strength),`;\n }\n\n const kernelIndex = i < halfLength ? i : (kernelSize - i - 1);\n const kernelValue = kernel[kernelIndex].toString();\n\n blurSamplingSource[i] = `finalColor += textureSample(uTexture, uSampler, offset${i}) * ${kernelValue};`;\n }\n\n const blurStruct = blurStructSource.join('\\n');\n const blurOut = blurOutSource.join('\\n');\n const blurSampling = blurSamplingSource.join('\\n');\n\n const finalSource = source\n .replace('%blur-struct%', blurStruct)\n .replace('%blur-vertex-out%', blurOut)\n .replace('%blur-fragment-in%', blurStruct)\n .replace('%blur-sampling%', blurSampling);\n\n return GpuProgram.from({\n vertex: {\n source: finalSource,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source: finalSource,\n entryPoint: 'mainFragment',\n },\n });\n}\n\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool';\nimport { RendererType } from '../../../rendering/renderers/types';\nimport { Filter } from '../../Filter';\nimport { generateBlurGlProgram } from './gl/generateBlurGlProgram';\nimport { generateBlurProgram } from './gpu/generateBlurProgram';\n\nimport type { RenderSurface } from '../../../rendering/renderers/shared/renderTarget/RenderTargetSystem';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { FilterSystem } from '../../FilterSystem';\nimport type { BlurFilterOptions } from './BlurFilter';\n\n/**\n * Options for BlurFilterPass\n * @memberof filters\n */\nexport interface BlurFilterPassOptions extends BlurFilterOptions\n{\n /** Do pass along the x-axis (`true`) or y-axis (`false`). */\n horizontal: boolean;\n}\n\n/**\n * The BlurFilterPass applies a horizontal or vertical Gaussian blur to an object.\n * @memberof filters\n */\nexport class BlurFilterPass extends Filter\n{\n /** Default blur filter pass options */\n public static defaultOptions: Partial = {\n /** The strength of the blur filter. */\n strength: 8,\n /** The quality of the blur filter. */\n quality: 4,\n /** The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15. */\n kernelSize: 5,\n };\n\n /** Do pass along the x-axis (`true`) or y-axis (`false`). */\n public horizontal: boolean;\n /** The number of passes to run the filter. */\n public passes!: number;\n /** The strength of the blur filter. */\n public strength!: number;\n\n private _quality: number;\n private readonly _uniforms: any;\n\n /**\n * @param options\n * @param options.horizontal - Do pass along the x-axis (`true`) or y-axis (`false`).\n * @param options.strength - The strength of the blur filter.\n * @param options.quality - The quality of the blur filter.\n * @param options.kernelSize - The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15.\n */\n constructor(options: BlurFilterPassOptions)\n {\n options = { ...BlurFilterPass.defaultOptions, ...options };\n\n const glProgram = generateBlurGlProgram(options.horizontal, options.kernelSize);\n const gpuProgram = generateBlurProgram(options.horizontal, options.kernelSize);\n\n super({\n glProgram,\n gpuProgram,\n resources: {\n blurUniforms: {\n uStrength: { value: 0, type: 'f32' },\n }\n },\n ...options\n });\n\n this.horizontal = options.horizontal;\n\n this._quality = 0;\n\n this.quality = options.quality;\n\n this.blur = options.strength;\n\n this._uniforms = this.resources.blurUniforms.uniforms;\n }\n\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - How to clear\n */\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: RenderSurface,\n clearMode: boolean\n ): void\n {\n this._uniforms.uStrength = this.strength / this.passes;\n\n if (this.passes === 1)\n {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n else\n {\n const tempTexture = TexturePool.getSameSizeTexture(input);\n\n let flip = input;\n let flop = tempTexture;\n\n this._state.blend = false;\n\n for (let i = 0; i < this.passes - 1; i++)\n {\n filterManager.applyFilter(this, flip, flop, filterManager.renderer.type === RendererType.WEBGPU);\n\n const temp = flop;\n\n flop = flip;\n flip = temp;\n }\n\n this._state.blend = true;\n filterManager.applyFilter(this, flip, output, clearMode);\n TexturePool.returnTexture(tempTexture);\n }\n }\n\n /**\n * Sets the strength of both the blur.\n * @default 16\n */\n get blur(): number\n {\n return this.strength;\n }\n\n set blur(value: number)\n {\n this.padding = 1 + (Math.abs(value) * 2);\n this.strength = value;\n }\n\n /**\n * Sets the quality of the blur by modifying the number of passes. More passes means higher\n * quality blurring but the lower the performance.\n * @default 4\n */\n get quality(): number\n {\n return this._quality;\n }\n\n set quality(value: number)\n {\n this._quality = value;\n this.passes = value;\n }\n}\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool';\nimport { RendererType } from '../../../rendering/renderers/types';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Filter } from '../../Filter';\nimport { BlurFilterPass } from './BlurFilterPass';\n\nimport type { RenderSurface } from '../../../rendering/renderers/shared/renderTarget/RenderTargetSystem';\nimport type { BLEND_MODES } from '../../../rendering/renderers/shared/state/const';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { FilterOptions } from '../../Filter';\nimport type { FilterSystem } from '../../FilterSystem';\n\n/**\n * Options for BlurFilter\n * @memberof filters\n */\nexport interface BlurFilterOptions extends FilterOptions\n{\n /**\n * The strength of the blur filter.\n * @default 8\n */\n strength?: number;\n /**\n * The quality of the blur filter.\n * @default 4\n */\n quality?: number;\n /**\n * The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15.\n * @default 5\n */\n kernelSize?: number;\n}\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n *\n * The strength of the blur can be set for the x-axis and y-axis separately.\n * @memberof filters\n */\nexport class BlurFilter extends Filter\n{\n /** Default blur filter options */\n public static defaultOptions: Partial = {\n /** The strength of the blur filter. */\n strength: 8,\n /** The quality of the blur filter. */\n quality: 4,\n /** The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15. */\n kernelSize: 5,\n };\n\n /** The horizontal blur filter */\n public blurXFilter: BlurFilterPass;\n /** The vertical blur filter */\n public blurYFilter: BlurFilterPass;\n\n private _repeatEdgePixels = false;\n\n /**\n * @param {filters.BlurFilterOptions} options - The options of the blur filter.\n */\n constructor(options?: BlurFilterOptions);\n /** @deprecated since 8.0.0 */\n constructor(strength?: number, quality?: number, resolution?: number, kernelSize?: number);\n constructor(...args: [BlurFilterOptions?] | [number?, number?, number?, number?])\n {\n let options = args[0] ?? {};\n\n // if options is a number)\n if (typeof options === 'number')\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BlurFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }');\n // #endif\n\n options = { strength: options };\n\n if (args[1])options.quality = args[1];\n if (args[2])options.resolution = args[2];\n if (args[3])options.kernelSize = args[3];\n }\n\n options = { ...BlurFilterPass.defaultOptions, ...options };\n\n const { strength, quality, ...rest } = options;\n\n super({\n ...rest,\n compatibleRenderers: RendererType.BOTH,\n resources: {}\n });\n\n this.blurXFilter = new BlurFilterPass({ horizontal: false, ...options });\n this.blurYFilter = new BlurFilterPass({ horizontal: true, ...options });\n\n this.quality = quality;\n this.blur = strength;\n\n this.repeatEdgePixels = false;\n }\n\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - How to clear\n */\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: RenderSurface,\n clearMode: boolean\n ): void\n {\n const xStrength = Math.abs(this.blurXFilter.strength);\n const yStrength = Math.abs(this.blurYFilter.strength);\n\n if (xStrength && yStrength)\n {\n const tempTexture = TexturePool.getSameSizeTexture(input);\n\n this.blurXFilter.apply(filterManager, input, tempTexture, true);\n this.blurYFilter.apply(filterManager, tempTexture, output, clearMode);\n\n TexturePool.returnTexture(tempTexture);\n }\n else if (yStrength)\n {\n this.blurYFilter.apply(filterManager, input, output, clearMode);\n }\n else\n {\n this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n }\n\n protected updatePadding(): void\n {\n if (this._repeatEdgePixels)\n {\n this.padding = 0;\n }\n else\n {\n this.padding = Math.max(Math.abs(this.blurXFilter.blur), Math.abs(this.blurYFilter.blur)) * 2;\n }\n }\n\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n * @default 2\n */\n get blur(): number\n {\n return this.blurXFilter.blur;\n }\n\n set blur(value: number)\n {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the number of passes for blur. More passes means higher quality bluring.\n * @default 1\n */\n get quality(): number\n {\n return this.blurXFilter.quality;\n }\n\n set quality(value: number)\n {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n\n /**\n * Sets the strength of the blurX property\n * @default 2\n */\n get blurX(): number\n {\n return this.blurXFilter.blur;\n }\n\n set blurX(value: number)\n {\n this.blurXFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the strength of the blurY property\n * @default 2\n */\n get blurY(): number\n {\n return this.blurYFilter.blur;\n }\n\n set blurY(value: number)\n {\n this.blurYFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the blendmode of the filter\n * @default \"normal\"\n */\n get blendMode(): BLEND_MODES\n {\n return this.blurYFilter.blendMode;\n }\n\n set blendMode(value: BLEND_MODES)\n {\n this.blurYFilter.blendMode = value;\n }\n\n /**\n * If set to true the edge of the target will be clamped\n * @default false\n */\n get repeatEdgePixels(): boolean\n {\n return this._repeatEdgePixels;\n }\n\n set repeatEdgePixels(value: boolean)\n {\n this._repeatEdgePixels = value;\n this.updatePadding();\n }\n}\n","import { Color } from '../../../color/Color';\nimport { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Filter } from '../../Filter';\nimport vertex from '../defaultFilter.vert';\nimport fragment from './colorMatrixFilter.frag';\nimport source from './colorMatrixFilter.wgsl';\n\nimport type { ColorSource } from '../../../color/Color';\nimport type { ArrayFixed } from '../../../utils/types';\nimport type { FilterOptions } from '../../Filter';\n\n/**\n * 5x4 matrix for transforming RGBA color and alpha\n * @memberof filters\n */\nexport type ColorMatrix = ArrayFixed;\n\n/**\n * The ColorMatrixFilter class lets you apply a 5x4 matrix transformation on the RGBA\n * color and alpha values of every pixel on your container to produce a result\n * with a new set of RGBA color and alpha values. It's pretty powerful!\n *\n * ```js\n * let colorMatrix = new filters.ColorMatrixFilter();\n * container.filters = [colorMatrix];\n * colorMatrix.contrast(2);\n * ```\n * @author Clément Chenebault \n * @memberof filters\n */\nexport class ColorMatrixFilter extends Filter\n{\n constructor(options: FilterOptions = {})\n {\n const colorMatrixUniforms = new UniformGroup({\n uColorMatrix: {\n value: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n ],\n type: 'f32',\n size: 20,\n },\n uAlpha: {\n value: 1,\n type: 'f32'\n }\n });\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'color-matrix-filter'\n });\n\n super({\n ...options,\n gpuProgram,\n glProgram,\n resources: {\n colorMatrixUniforms\n },\n });\n\n this.alpha = 1;\n }\n\n /**\n * Transforms current matrix and set the new one\n * @param {number[]} matrix - 5x4 matrix\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n private _loadMatrix(matrix: ColorMatrix, multiply = false): void\n {\n let newMatrix = matrix;\n\n if (multiply)\n {\n this._multiply(newMatrix, this.matrix, matrix);\n newMatrix = this._colorMatrix(newMatrix) as any;\n }\n\n // set the new matrix\n\n this.resources.colorMatrixUniforms.uniforms.uColorMatrix = newMatrix;\n this.resources.colorMatrixUniforms.update();\n }\n\n /**\n * Multiplies two mat5's\n * @private\n * @param out - 5x4 matrix the receiving matrix\n * @param a - 5x4 matrix the first operand\n * @param b - 5x4 matrix the second operand\n * @returns {number[]} 5x4 matrix\n */\n private _multiply(out: ColorMatrix, a: ColorMatrix, b: ColorMatrix): ColorMatrix\n {\n // Red Channel\n out[0] = (a[0] * b[0]) + (a[1] * b[5]) + (a[2] * b[10]) + (a[3] * b[15]);\n out[1] = (a[0] * b[1]) + (a[1] * b[6]) + (a[2] * b[11]) + (a[3] * b[16]);\n out[2] = (a[0] * b[2]) + (a[1] * b[7]) + (a[2] * b[12]) + (a[3] * b[17]);\n out[3] = (a[0] * b[3]) + (a[1] * b[8]) + (a[2] * b[13]) + (a[3] * b[18]);\n out[4] = (a[0] * b[4]) + (a[1] * b[9]) + (a[2] * b[14]) + (a[3] * b[19]) + a[4];\n\n // Green Channel\n out[5] = (a[5] * b[0]) + (a[6] * b[5]) + (a[7] * b[10]) + (a[8] * b[15]);\n out[6] = (a[5] * b[1]) + (a[6] * b[6]) + (a[7] * b[11]) + (a[8] * b[16]);\n out[7] = (a[5] * b[2]) + (a[6] * b[7]) + (a[7] * b[12]) + (a[8] * b[17]);\n out[8] = (a[5] * b[3]) + (a[6] * b[8]) + (a[7] * b[13]) + (a[8] * b[18]);\n out[9] = (a[5] * b[4]) + (a[6] * b[9]) + (a[7] * b[14]) + (a[8] * b[19]) + a[9];\n\n // Blue Channel\n out[10] = (a[10] * b[0]) + (a[11] * b[5]) + (a[12] * b[10]) + (a[13] * b[15]);\n out[11] = (a[10] * b[1]) + (a[11] * b[6]) + (a[12] * b[11]) + (a[13] * b[16]);\n out[12] = (a[10] * b[2]) + (a[11] * b[7]) + (a[12] * b[12]) + (a[13] * b[17]);\n out[13] = (a[10] * b[3]) + (a[11] * b[8]) + (a[12] * b[13]) + (a[13] * b[18]);\n out[14] = (a[10] * b[4]) + (a[11] * b[9]) + (a[12] * b[14]) + (a[13] * b[19]) + a[14];\n\n // Alpha Channel\n out[15] = (a[15] * b[0]) + (a[16] * b[5]) + (a[17] * b[10]) + (a[18] * b[15]);\n out[16] = (a[15] * b[1]) + (a[16] * b[6]) + (a[17] * b[11]) + (a[18] * b[16]);\n out[17] = (a[15] * b[2]) + (a[16] * b[7]) + (a[17] * b[12]) + (a[18] * b[17]);\n out[18] = (a[15] * b[3]) + (a[16] * b[8]) + (a[17] * b[13]) + (a[18] * b[18]);\n out[19] = (a[15] * b[4]) + (a[16] * b[9]) + (a[17] * b[14]) + (a[18] * b[19]) + a[19];\n\n return out;\n }\n\n /**\n * Create a Float32 Array and normalize the offset component to 0-1\n * @param {number[]} matrix - 5x4 matrix\n * @returns {number[]} 5x4 matrix with all values between 0-1\n */\n private _colorMatrix(matrix: ColorMatrix): ColorMatrix\n {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n return m as any;\n }\n\n /**\n * Adjusts brightness\n * @param b - value of the brigthness (0-1, where 0 is black)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public brightness(b: number, multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Sets each channel on the diagonal of the color matrix.\n * This can be used to achieve a tinting effect on Containers similar to the tint field of some\n * display objects like Sprite, Text, Graphics, and Mesh.\n * @param color - Color of the tint. This is a hex value.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public tint(color: ColorSource, multiply?: boolean): void\n {\n const [r, g, b] = Color.shared.setValue(color).toArray();\n const matrix: ColorMatrix = [\n r, 0, 0, 0, 0,\n 0, g, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Set the matrices in grey scales\n * @param scale - value of the grey (0-1, where 0 is black)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public greyscale(scale: number, multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n scale, scale, scale, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * for our american friends!\n * @param scale\n * @param multiply\n */\n public grayscale(scale: number, multiply: boolean): void\n {\n this.greyscale(scale, multiply);\n }\n\n /**\n * Set the black and white matrice.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public blackAndWhite(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0.3, 0.6, 0.1, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Set the hue property of the color\n * @param rotation - in degrees\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public hue(rotation: number, multiply: boolean): void\n {\n rotation = (rotation || 0) / 180 * Math.PI;\n\n const cosR = Math.cos(rotation);\n const sinR = Math.sin(rotation);\n const sqrt = Math.sqrt;\n\n /* a good approximation for hue rotation\n This matrix is far better than the versions with magic luminance constants\n formerly used here, but also used in the starling framework (flash) and known from this\n old part of the internet: quasimondo.com/archives/000565.php\n\n This new matrix is based on rgb cube rotation in space. Look here for a more descriptive\n implementation as a shader not a general matrix:\n https://github.com/evanw/glfx.js/blob/58841c23919bd59787effc0333a4897b43835412/src/filters/adjust/huesaturation.js\n\n This is the source for the code:\n see http://stackoverflow.com/questions/8507885/shift-hue-of-an-rgb-color/8510751#8510751\n */\n\n const w = 1 / 3;\n const sqrW = sqrt(w); // weight is\n\n const a00 = cosR + ((1.0 - cosR) * w);\n const a01 = (w * (1.0 - cosR)) - (sqrW * sinR);\n const a02 = (w * (1.0 - cosR)) + (sqrW * sinR);\n\n const a10 = (w * (1.0 - cosR)) + (sqrW * sinR);\n const a11 = cosR + (w * (1.0 - cosR));\n const a12 = (w * (1.0 - cosR)) - (sqrW * sinR);\n\n const a20 = (w * (1.0 - cosR)) - (sqrW * sinR);\n const a21 = (w * (1.0 - cosR)) + (sqrW * sinR);\n const a22 = cosR + (w * (1.0 - cosR));\n\n const matrix: ColorMatrix = [\n a00, a01, a02, 0, 0,\n a10, a11, a12, 0, 0,\n a20, a21, a22, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Set the contrast matrix, increase the separation between dark and bright\n * Increase contrast : shadows darker and highlights brighter\n * Decrease contrast : bring the shadows up and the highlights down\n * @param amount - value of the contrast (0-1)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public contrast(amount: number, multiply: boolean): void\n {\n const v = (amount || 0) + 1;\n const o = -0.5 * (v - 1);\n\n const matrix: ColorMatrix = [\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Set the saturation matrix, increase the separation between colors\n * Increase saturation : increase contrast, brightness, and sharpness\n * @param amount - The saturation amount (0-1)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public saturate(amount = 0, multiply?: boolean): void\n {\n const x = (amount * 2 / 3) + 1;\n const y = ((x - 1) * -0.5);\n\n const matrix: ColorMatrix = [\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /** Desaturate image (remove color) Call the saturate function */\n public desaturate(): void // eslint-disable-line no-unused-vars\n {\n this.saturate(-1);\n }\n\n /**\n * Negative image (inverse of classic rgb matrix)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public negative(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n -1, 0, 0, 1, 0,\n 0, -1, 0, 1, 0,\n 0, 0, -1, 1, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Sepia image\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public sepia(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Color motion picture process invented in 1916 (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public technicolor(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Polaroid filter\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public polaroid(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Filter who transforms : Red -> Blue and Blue -> Red\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public toBGR(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Color reversal film introduced by Eastman Kodak in 1935. (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public kodachrome(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Brown delicious browni filter (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public browni(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Vintage filter (thanks Dominic Szablewski)\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public vintage(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * We don't know exactly what it does, kind of gradient map, but funny to play with!\n * @param desaturation - Tone values.\n * @param toned - Tone values.\n * @param lightColor - Tone values, example: `0xFFE580`\n * @param darkColor - Tone values, example: `0xFFE580`\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public colorTone(\n desaturation: number,\n toned: number,\n lightColor: ColorSource,\n darkColor: ColorSource,\n multiply: boolean\n ): void\n {\n desaturation = desaturation || 0.2;\n toned = toned || 0.15;\n lightColor = lightColor || 0xFFE580;\n darkColor = darkColor || 0x338000;\n\n const temp = Color.shared;\n const [lR, lG, lB] = temp.setValue(lightColor).toArray();\n const [dR, dG, dB] = temp.setValue(darkColor).toArray();\n\n const matrix: ColorMatrix = [\n 0.3, 0.59, 0.11, 0, 0,\n lR, lG, lB, desaturation, 0,\n dR, dG, dB, toned, 0,\n lR - dR, lG - dG, lB - dB, 0, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Night effect\n * @param intensity - The intensity of the night effect.\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public night(intensity: number, multiply: boolean): void\n {\n intensity = intensity || 0.1;\n\n const matrix: ColorMatrix = [\n intensity * (-2.0), -intensity, 0, 0, 0,\n -intensity, 0, intensity, 0, 0,\n 0, intensity, intensity * 2.0, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * Predator effect\n *\n * Erase the current matrix by setting a new indepent one\n * @param amount - how much the predator feels his future victim\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public predator(amount: number, multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n // row 1\n 11.224130630493164 * amount,\n -4.794486999511719 * amount,\n -2.8746118545532227 * amount,\n 0 * amount,\n 0.40342438220977783 * amount,\n // row 2\n -3.6330697536468506 * amount,\n 9.193157196044922 * amount,\n -2.951810836791992 * amount,\n 0 * amount,\n -1.316135048866272 * amount,\n // row 3\n -3.2184197902679443 * amount,\n -4.2375030517578125 * amount,\n 7.476448059082031 * amount,\n 0 * amount,\n 0.8044459223747253 * amount,\n // row 4\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /**\n * LSD effect\n *\n * Multiply the current matrix\n * @param multiply - if true, current matrix and matrix are multiplied. If false,\n * just set the current matrix with @param matrix\n */\n public lsd(multiply: boolean): void\n {\n const matrix: ColorMatrix = [\n 2, -0.4, 0.5, 0, 0,\n -0.5, 2, -0.4, 0, 0,\n -0.4, -0.5, 3, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, multiply);\n }\n\n /** Erase the current matrix by setting the default one. */\n public reset(): void\n {\n const matrix: ColorMatrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0,\n ];\n\n this._loadMatrix(matrix, false);\n }\n\n /**\n * The matrix of the color matrix filter\n * @member {number[]}\n * @default [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]\n */\n get matrix(): ColorMatrix\n {\n return this.resources.colorMatrixUniforms.uniforms.uColorMatrix;\n }\n\n set matrix(value: ColorMatrix)\n {\n this.resources.colorMatrixUniforms.uniforms.uColorMatrix = value;\n }\n\n /**\n * The opacity value to use when mixing the original and resultant colors.\n *\n * When the value is 0, the original color is used without modification.\n * When the value is 1, the result color is used.\n * When in the range (0, 1) the color is interpolated between the original and result by this amount.\n * @default 1\n */\n get alpha(): number\n {\n return this.resources.colorMatrixUniforms.uniforms.uAlpha;\n }\n\n set alpha(value: number)\n {\n this.resources.colorMatrixUniforms.uniforms.uAlpha = value;\n }\n}\n","import { Matrix } from '../../../maths/matrix/Matrix';\nimport { Point } from '../../../maths/point/Point';\nimport { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Sprite } from '../../../scene/sprite/Sprite';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Filter } from '../../Filter';\nimport fragment from './displacement.frag';\nimport vertex from './displacement.vert';\nimport source from './displacement.wgsl';\n\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { FilterOptions } from '../../Filter';\nimport type { FilterSystem } from '../../FilterSystem';\n\n/**\n * Options for DisplacementFilter\n * @memberof filters\n */\nexport interface DisplacementFilterOptions extends FilterOptions\n{\n /** The texture used for the displacement map. */\n sprite: Sprite,\n /** The scale of the displacement. */\n scale?: number | PointData,\n}\n\n/**\n * A Noise effect filter.\n *\n * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/noise.js\n * @memberof filters\n * @author Vico @vicocotea\n */\nexport class DisplacementFilter extends Filter\n{\n private readonly _sprite: Sprite;\n\n /**\n * **Note:** Our docs parser struggles to properly understand the constructor signature.\n * This is the correct signature.\n * ```ts\n * new DisplacementFilter(options?: DisplacementFilterOptions);\n * ```\n * @param options - The options for the filter.\n * @param options.sprite - The texture used for the displacement map.\n * @param options.scale - The scale of the displacement.\n */\n constructor(options: Sprite | DisplacementFilterOptions);\n constructor(sprite: Sprite, scale?: number | PointData);\n constructor(...args: [Sprite | DisplacementFilterOptions] | [Sprite, (number | PointData)?])\n {\n let options = args[0];\n\n if (options instanceof Sprite)\n {\n // #if _DEBUG\n if (args[1])\n {\n deprecation(v8_0_0, 'DisplacementFilter now uses options object instead of params. {sprite, scale}');\n }\n // #endif\n\n options = { sprite: options, scale: args[1] };\n }\n\n const { sprite, scale: scaleOption, ...rest } = options;\n\n let scale = scaleOption ?? 20;\n\n // check if is a number or a point\n if (typeof scale === 'number')\n {\n scale = new Point(scale, scale);\n }\n\n const filterUniforms = new UniformGroup({\n uFilterMatrix: { value: new Matrix(), type: 'mat3x3' },\n uScale: { value: scale, type: 'vec2' },\n uRotation: { value: new Float32Array([0, 0, 0, 0]), type: 'mat2x2' },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'displacement-filter'\n });\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const textureSource = sprite.texture.source;\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n filterUniforms,\n uMapTexture: textureSource,\n uMapSampler: textureSource.style,\n },\n });\n\n this._sprite = options.sprite;\n this._sprite.renderable = false;\n }\n\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - clearMode.\n */\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: Texture,\n clearMode: boolean\n ): void\n {\n const uniforms = this.resources.filterUniforms.uniforms;\n\n filterManager.calculateSpriteMatrix(\n uniforms.uFilterMatrix,\n this._sprite\n );\n\n // Extract rotation from world transform\n const wt = this._sprite.worldTransform;\n const lenX = Math.sqrt((wt.a * wt.a) + (wt.b * wt.b));\n const lenY = Math.sqrt((wt.c * wt.c) + (wt.d * wt.d));\n\n if (lenX !== 0 && lenY !== 0)\n {\n uniforms.uRotation[0] = wt.a / lenX;\n uniforms.uRotation[1] = wt.b / lenX;\n uniforms.uRotation[2] = wt.c / lenY;\n uniforms.uRotation[3] = wt.d / lenY;\n }\n\n this.resources.uMapTexture = this._sprite.texture.source;\n\n filterManager.applyFilter(this, input, output, clearMode);\n }\n\n /** scaleX, scaleY for displacements */\n get scale(): Point\n {\n return this.resources.filterUniforms.uniforms.uScale as Point;\n }\n}\n","import { GlProgram } from '../../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { Filter } from '../../Filter';\nimport vertex from '../defaultFilter.vert';\nimport fragment from './noise.frag';\nimport source from './noise.wgsl';\n\nimport type { FilterOptions } from '../../Filter';\n\n/**\n * Options for NoiseFilter\n * @memberof filters\n */\nexport interface NoiseFilterOptions extends FilterOptions\n{\n /** The amount of noise to apply, this value should be in the range (0, 1]. */\n noise?: number;\n /** A seed value to apply to the random noise generation. `Math.random()` is a good value to use. */\n seed?: number;\n}\n\n/**\n * A Noise effect filter.\n *\n * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/noise.js\n * @memberof filters\n * @author Vico @vicocotea\n */\nexport class NoiseFilter extends Filter\n{\n public static readonly defaultOptions: NoiseFilterOptions = {\n noise: 0.5,\n };\n\n /**\n * @param options - The options of the noise filter.\n */\n constructor(options: NoiseFilterOptions = {})\n {\n options = { ...NoiseFilter.defaultOptions, ...options };\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'noise-filter'\n });\n\n const { noise, seed, ...rest } = options;\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n noiseUniforms: new UniformGroup({\n uNoise: { value: 1, type: 'f32' },\n uSeed: { value: 1, type: 'f32' },\n })\n },\n });\n\n this.noise = noise;\n this.seed = seed ?? Math.random();\n }\n\n /**\n * The amount of noise to apply, this value should be in the range (0, 1].\n * @default 0.5\n */\n get noise(): number\n {\n return this.resources.noiseUniforms.uniforms.uNoise;\n }\n\n set noise(value: number)\n {\n this.resources.noiseUniforms.uniforms.uNoise = value;\n }\n\n /** A seed value to apply to the random noise generation. `Math.random()` is a good value to use. */\n get seed(): number\n {\n return this.resources.noiseUniforms.uniforms.uSeed;\n }\n\n set seed(value: number)\n {\n this.resources.noiseUniforms.uniforms.uSeed = value;\n }\n}\n","import { Matrix } from '../../maths/matrix/Matrix';\nimport { GlProgram } from '../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup';\nimport { TextureMatrix } from '../../rendering/renderers/shared/texture/TextureMatrix';\nimport { Filter } from '../Filter';\nimport fragment from './mask.frag';\nimport vertex from './mask.vert';\nimport source from './mask.wgsl';\n\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { Sprite } from '../../scene/sprite/Sprite';\nimport type { FilterOptions } from '../Filter';\nimport type { FilterSystem } from '../FilterSystem';\n\nexport interface MaskFilterOptions extends FilterOptions\n{\n sprite: Sprite,\n scale?: number | { x: number, y: number },\n}\n\nexport class MaskFilter extends Filter\n{\n public sprite: Sprite;\n private readonly _textureMatrix: TextureMatrix;\n\n constructor(options: MaskFilterOptions)\n {\n const { sprite, ...rest } = options;\n\n const textureMatrix = new TextureMatrix(sprite.texture);\n\n const filterUniforms = new UniformGroup({\n uFilterMatrix: { value: new Matrix(), type: 'mat3x3' },\n uMaskClamp: { value: textureMatrix.uClampFrame, type: 'vec4' },\n uAlpha: { value: 1, type: 'f32' },\n });\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'mask-filter',\n });\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source,\n },\n });\n\n this.sprite = sprite;\n\n this._textureMatrix = textureMatrix;\n }\n\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: Texture,\n clearMode: boolean\n ): void\n {\n // will trigger an update if the texture changed..\n this._textureMatrix.texture = this.sprite.texture;\n\n filterManager.calculateSpriteMatrix(\n this.resources.filterUniforms.uniforms.uFilterMatrix as Matrix,\n this.sprite\n ).prepend(this._textureMatrix.mapCoord);\n\n this.resources.uMaskTexture = this.sprite.texture.source;\n\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n","/**\n * Check if a point is inside a triangle.\n * @param px - x coordinate of the point\n * @param py - y coordinate of the point\n * @param x1 - x coordinate of the first vertex of the triangle\n * @param y1 - y coordinate of the first vertex of the triangle\n * @param x2 - x coordinate of the second vertex of the triangle\n * @param y2 - y coordinate of the second vertex of the triangle\n * @param x3 - x coordinate of the third vertex of the triangle\n * @param y3 - y coordinate of the third vertex of the triangle\n * @returns `true` if the point is inside the triangle, `false` otherwise\n */\nexport function pointInTriangle(\n px: number, py: number,\n x1: number, y1: number,\n x2: number, y2: number,\n x3: number, y3: number\n)\n{\n // Calculate vectors from point p to each vertex of the triangle\n const v2x = x3 - x1;\n const v2y = y3 - y1;\n const v1x = x2 - x1;\n const v1y = y2 - y1;\n const v0x = px - x1;\n const v0y = py - y1;\n\n // Compute dot products\n const dot00 = (v2x * v2x) + (v2y * v2y);\n const dot01 = (v2x * v1x) + (v2y * v1y);\n const dot02 = (v2x * v0x) + (v2y * v0y);\n const dot11 = (v1x * v1x) + (v1y * v1y);\n const dot12 = (v1x * v0x) + (v1y * v0y);\n\n // Calculate barycentric coordinates\n const invDenom = 1 / ((dot00 * dot11) - (dot01 * dot01));\n const u = ((dot11 * dot02) - (dot01 * dot12)) * invDenom;\n const v = ((dot00 * dot12) - (dot01 * dot02)) * invDenom;\n\n // Check if point is in triangle\n return (u >= 0) && (v >= 0) && (u + v < 1);\n}\n","import { squaredDistanceToLineSegment } from '../misc/squaredDistanceToLineSegment';\nimport { Rectangle } from './Rectangle';\n\nimport type { SHAPE_PRIMITIVE } from '../misc/const';\nimport type { ShapePrimitive } from './ShapePrimitive';\n\n/**\n * A class to define a shape of a triangle via user defined coordinates.\n *\n * Create a `Triangle` object with the `x`, `y`, `x2`, `y2`, `x3`, `y3` properties.\n *\n * ```js\n * import { Triangle } from 'pixi.js';\n *\n * const triangle = new Triangle(0, 0, 100, 0, 50, 50);\n * ```\n * @memberof maths\n */\nexport class Triangle implements ShapePrimitive\n{\n /**\n * The type of the object, mainly used to avoid `instanceof` checks\n * @default 'triangle'\n */\n public readonly type: SHAPE_PRIMITIVE = 'triangle';\n\n /**\n * The X coord of the first point.\n * @default 0\n */\n public x: number;\n /**\n * The Y coord of the first point.\n * @default 0\n */\n public y: number;\n /**\n * The X coord of the second point.\n * @default 0\n */\n public x2: number;\n /**\n * The Y coord of the second point.\n * @default 0\n */\n public y2: number;\n /**\n * The X coord of the third point.\n * @default 0\n */\n public x3: number;\n /**\n * The Y coord of the third point.\n * @default 0\n */\n public y3: number;\n\n /**\n * @param x - The X coord of the first point.\n * @param y - The Y coord of the first point.\n * @param x2 - The X coord of the second point.\n * @param y2 - The Y coord of the second point.\n * @param x3 - The X coord of the third point.\n * @param y3 - The Y coord of the third point.\n */\n constructor(x = 0, y = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0)\n {\n this.x = x;\n this.y = y;\n this.x2 = x2;\n this.y2 = y2;\n this.x3 = x3;\n this.y3 = y3;\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this triangle\n * @param x - The X coordinate of the point to test\n * @param y - The Y coordinate of the point to test\n * @returns Whether the x/y coordinates are within this Triangle\n */\n public contains(x: number, y: number): boolean\n {\n const s = ((this.x - this.x3) * (y - this.y3)) - ((this.y - this.y3) * (x - this.x3));\n const t = ((this.x2 - this.x) * (y - this.y)) - ((this.y2 - this.y) * (x - this.x));\n\n if ((s < 0) !== (t < 0) && s !== 0 && t !== 0)\n { return false; }\n\n const d = ((this.x3 - this.x2) * (y - this.y2)) - ((this.y3 - this.y2) * (x - this.x2));\n\n return d === 0 || (d < 0) === (s + t <= 0);\n }\n\n /**\n * Checks whether the x and y coordinates given are contained within this triangle including the stroke.\n * @param pointX - The X coordinate of the point to test\n * @param pointY - The Y coordinate of the point to test\n * @param strokeWidth - The width of the line to check\n * @returns Whether the x/y coordinates are within this triangle\n */\n public strokeContains(pointX: number, pointY: number, strokeWidth: number): boolean\n {\n const halfStrokeWidth = strokeWidth / 2;\n const halfStrokeWidthSquared = halfStrokeWidth * halfStrokeWidth;\n\n const { x, x2, x3, y, y2, y3 } = this;\n\n if (squaredDistanceToLineSegment(pointX, pointY, x, y, x2, y3) <= halfStrokeWidthSquared\n || squaredDistanceToLineSegment(pointX, pointY, x2, y2, x3, y3) <= halfStrokeWidthSquared\n || squaredDistanceToLineSegment(pointX, pointY, x3, y3, x, y) <= halfStrokeWidthSquared)\n {\n return true;\n }\n\n return false;\n }\n\n /**\n * Creates a clone of this Triangle\n * @returns a copy of the triangle\n */\n public clone(): ShapePrimitive\n {\n const triangle = new Triangle(\n this.x,\n this.y,\n this.x2,\n this.y2,\n this.x3,\n this.y3\n );\n\n return triangle;\n }\n\n /**\n * Copies another triangle to this one.\n * @param triangle - The triangle to copy from.\n * @returns Returns itself.\n */\n public copyFrom(triangle: Triangle): this\n {\n this.x = triangle.x;\n this.y = triangle.y;\n this.x2 = triangle.x2;\n this.y2 = triangle.y2;\n this.x3 = triangle.x3;\n this.y3 = triangle.y3;\n\n return this;\n }\n\n /**\n * Copies this triangle to another one.\n * @param triangle - The triangle to copy to.\n * @returns Returns given parameter.\n */\n public copyTo(triangle: Triangle): Triangle\n {\n triangle.copyFrom(this);\n\n return triangle;\n }\n\n /**\n * Returns the framing rectangle of the triangle as a Rectangle object\n * @param out - optional rectangle to store the result\n * @returns The framing rectangle\n */\n public getBounds(out?: Rectangle): Rectangle\n {\n out = out || new Rectangle();\n\n const minX = Math.min(this.x, this.x2, this.x3);\n const maxX = Math.max(this.x, this.x2, this.x3);\n const minY = Math.min(this.y, this.y2, this.y3);\n const maxY = Math.max(this.y, this.y2, this.y3);\n\n out.x = minX;\n out.y = minY;\n out.width = maxX - minX;\n out.height = maxY - minY;\n\n return out;\n }\n}\n","import { Container } from '../scene/container/Container';\nimport { UPDATE_PRIORITY } from '../ticker/const';\nimport { Ticker } from '../ticker/Ticker';\n\nimport type { TextureSource } from '../rendering/renderers/shared/texture/sources/TextureSource';\nimport type { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { GraphicsContext } from '../scene/graphics/shared/GraphicsContext';\nimport type { Text } from '../scene/text/Text';\n\n/** The accepted types to pass to the prepare system */\nexport type PrepareSourceItem = Container | TextureSource | Texture | GraphicsContext;\n\n/** The valid types resolved to the queue ready for upload */\nexport type PrepareQueueItem = TextureSource | Text | GraphicsContext;\n\n/**\n * Part of the prepare system. Responsible for uploading all the items to the GPU.\n * This class provides the base functionality and handles processing the queue asynchronously.\n * @memberof rendering\n */\nexport abstract class PrepareBase\n{\n /** The number of uploads to process per frame */\n public static uploadsPerFrame = 4;\n\n /** Reference to the renderer */\n protected renderer: Renderer;\n\n /** The queue to process over a async timer */\n protected queue: PrepareQueueItem[];\n\n /** Collection of callbacks to call when the uploads are finished */\n protected resolves: ((value: void | PromiseLike) => void)[];\n\n /** Timeout id for next processing call */\n protected timeout?: number;\n\n /**\n * * @param {Renderer} renderer - A reference to the current renderer\n * @param renderer\n */\n constructor(renderer: Renderer)\n {\n this.renderer = renderer;\n this.queue = [];\n this.resolves = [];\n }\n\n /** Resolve the given resource type and return an item for the queue */\n protected abstract resolveQueueItem(source: PrepareSourceItem, queue: PrepareQueueItem[]): void;\n protected abstract uploadQueueItem(item: PrepareQueueItem): void;\n\n /**\n * Return a copy of the queue\n * @returns {PrepareQueueItem[]} The queue\n */\n public getQueue(): PrepareQueueItem[]\n {\n return [...this.queue];\n }\n\n /**\n * Add a textures or graphics resource to the queue\n * @param {PrepareSourceItem | PrepareSourceItem[]} resource\n */\n public add(resource: PrepareSourceItem | PrepareSourceItem[]): this\n {\n const resourceArray = Array.isArray(resource) ? resource : [resource];\n\n for (const resourceItem of resourceArray)\n {\n // handle containers and their children\n if (resourceItem instanceof Container)\n {\n this._addContainer(resourceItem);\n }\n else\n {\n this.resolveQueueItem(resourceItem, this.queue);\n }\n }\n\n return this;\n }\n\n /**\n * Recursively add a container and its children to the queue\n * @param {Container} container - The container to add to the queue\n */\n private _addContainer(container: Container): void\n {\n this.resolveQueueItem(container, this.queue);\n\n // recursively add children\n for (const child of container.children)\n {\n this._addContainer(child);\n }\n }\n\n /**\n * Upload all the textures and graphics to the GPU (optionally add more resources to the queue first)\n * @param {PrepareSourceItem | PrepareSourceItem[] | undefined} resource\n */\n public upload(resource?: PrepareSourceItem | PrepareSourceItem[]): Promise\n {\n if (resource)\n {\n this.add(resource);\n }\n\n return new Promise((resolve) =>\n {\n if (this.queue.length)\n {\n // add resolve callback to the collection\n this.resolves.push(resolve);\n\n // eliminate duplicates first\n this.dedupeQueue();\n\n // launch first tick\n Ticker.system.addOnce(this._tick, this, UPDATE_PRIORITY.UTILITY);\n }\n else\n {\n // queue is empty, resolve immediately\n resolve();\n }\n });\n }\n\n /** eliminate duplicates before processing */\n public dedupeQueue(): void\n {\n const hash = Object.create(null);\n let nextUnique = 0;\n\n for (let i = 0; i < this.queue.length; i++)\n {\n const current = this.queue[i];\n\n if (!hash[current.uid])\n {\n hash[current.uid] = true;\n this.queue[nextUnique++] = current;\n }\n }\n\n this.queue.length = nextUnique;\n }\n\n /** called per frame by the ticker, defer processing to next tick */\n private readonly _tick = () =>\n {\n this.timeout = setTimeout(this._processQueue, 0) as unknown as number;\n };\n\n /** process the queue up to max item limit per frame */\n private readonly _processQueue = () =>\n {\n const { queue } = this;\n let itemsProcessed = 0;\n\n // process the maximum number of items per frame\n while (queue.length && itemsProcessed < PrepareBase.uploadsPerFrame)\n {\n const queueItem = queue.shift();\n\n this.uploadQueueItem(queueItem);\n\n itemsProcessed++;\n }\n\n if (queue.length)\n {\n // queue is not empty, continue processing on next frame\n Ticker.system.addOnce(this._tick, this, UPDATE_PRIORITY.UTILITY);\n }\n else\n {\n // queue is empty, resolve immediately\n this._resolve();\n }\n };\n\n /** Call all the resolve callbacks */\n private _resolve(): void\n {\n const { resolves } = this;\n\n // call all resolve callbacks\n const array = resolves.slice(0);\n\n resolves.length = 0;\n\n for (const resolve of array)\n {\n resolve();\n }\n }\n}\n","import { pointInTriangle } from '../../../maths/point/pointInTriangle';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry';\nimport { State } from '../../../rendering/renderers/shared/state/State';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Container } from '../../container/Container';\nimport { MeshGeometry } from './MeshGeometry';\n\nimport type { PointData } from '../../../maths/point/PointData';\nimport type { Topology } from '../../../rendering/renderers/shared/geometry/const';\nimport type { Instruction } from '../../../rendering/renderers/shared/instructions/Instruction';\nimport type { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport type { View } from '../../../rendering/renderers/shared/view/View';\nimport type { Bounds } from '../../container/bounds/Bounds';\nimport type { ContainerOptions } from '../../container/Container';\nimport type { DestroyOptions } from '../../container/destroyTypes';\n\nexport interface TextureShader extends Shader\n{\n texture: Texture;\n}\n\n/**\n * Constructor options used for `Mesh` instances. Extends {@link scene.MeshViewOptions}\n * ```js\n * const mesh = new Mesh({\n * texture: Texture.from('assets/image.png'),\n * geometry: new PlaneGeometry(),\n * shader: Shader.from(VERTEX, FRAGMENT),\n * });\n * ```\n * @see {@link scene.Mesh}\n * @see {@link scene.MeshViewOptions}\n * @memberof scene\n */\n\n/**\n * @memberof scene\n */\nexport interface MeshOptions<\n GEOMETRY extends Geometry = MeshGeometry,\n SHADER extends Shader = TextureShader\n> extends ContainerOptions\n{\n /**\n * Includes vertex positions, face indices, colors, UVs, and\n * custom attributes within buffers, reducing the cost of passing all\n * this data to the GPU. Can be shared between multiple Mesh objects.\n */\n geometry: GEOMETRY;\n /**\n * Represents the vertex and fragment shaders that processes the geometry and runs on the GPU.\n * Can be shared between multiple Mesh objects.\n */\n shader?: SHADER;\n /** The state of WebGL required to render the mesh. */\n state?: State;\n /** The texture that the Mesh uses. Null for non-MeshMaterial shaders */\n texture?: Texture;\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n/**\n * Base mesh class.\n *\n * This class empowers you to have maximum flexibility to render any kind of WebGL/WebGPU visuals you can think of.\n * This class assumes a certain level of WebGL/WebGPU knowledge.\n * If you know a bit this should abstract enough away to make your life easier!\n *\n * Pretty much ALL WebGL/WebGPU can be broken down into the following:\n * - Geometry - The structure and data for the mesh. This can include anything from positions, uvs, normals, colors etc..\n * - Shader - This is the shader that PixiJS will render the geometry with (attributes in the shader must match the geometry)\n * - State - This is the state of WebGL required to render the mesh.\n *\n * Through a combination of the above elements you can render anything you want, 2D or 3D!\n * @memberof scene\n */\nexport class Mesh<\n GEOMETRY extends Geometry = MeshGeometry,\n SHADER extends Shader = TextureShader\n> extends Container implements View, Instruction\n{\n public readonly renderPipeId = 'mesh';\n public readonly canBundle = true;\n public state: State;\n\n /** @ignore */\n public _texture: Texture;\n /** @ignore */\n public _geometry: GEOMETRY;\n /** @ignore */\n public _shader?: SHADER;\n\n public _roundPixels: 0 | 1 = 0;\n\n /**\n * @param {scene.MeshOptions} options - options for the mesh instance\n */\n constructor(options: MeshOptions);\n /** @deprecated since 8.0.0 */\n constructor(geometry: GEOMETRY, shader: SHADER, state?: State, drawMode?: Topology);\n constructor(...args: [MeshOptions] | [GEOMETRY, SHADER, State?, Topology?])\n {\n let options = args[0];\n\n if (options instanceof Geometry)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Mesh: use new Mesh({ geometry, shader }) instead');\n // #endif\n\n options = {\n geometry: options,\n shader: args[1],\n } as MeshOptions;\n\n if (args[3])\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Mesh: drawMode argument has been removed, use geometry.topology instead');\n // #endif\n\n options.geometry.topology = args[3];\n }\n }\n\n const { geometry, shader, texture, roundPixels, state, ...rest } = options;\n\n super({\n label: 'Mesh',\n ...rest\n });\n\n this.allowChildren = false;\n\n this.shader = shader;\n this.texture = texture ?? (shader as unknown as TextureShader)?.texture ?? Texture.WHITE;\n this.state = state ?? State.for2d();\n\n this._geometry = geometry;\n this._geometry.on('update', this.onViewUpdate, this);\n\n this.roundPixels = roundPixels ?? false;\n }\n\n /**\n * Whether or not to round the x/y position of the mesh.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n /** Alias for {@link scene.Mesh#shader}. */\n get material()\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'mesh.material property has been removed, use mesh.shader instead');\n // #endif\n\n return this._shader;\n }\n\n /**\n * Represents the vertex and fragment shaders that processes the geometry and runs on the GPU.\n * Can be shared between multiple Mesh objects.\n */\n set shader(value: SHADER)\n {\n if (this._shader === value) return;\n\n this._shader = value;\n this.onViewUpdate();\n }\n\n get shader()\n {\n return this._shader;\n }\n\n /**\n * Includes vertex positions, face indices, colors, UVs, and\n * custom attributes within buffers, reducing the cost of passing all\n * this data to the GPU. Can be shared between multiple Mesh objects.\n */\n set geometry(value: GEOMETRY)\n {\n if (this._geometry === value) return;\n\n this._geometry?.off('update', this.onViewUpdate, this);\n value.on('update', this.onViewUpdate, this);\n\n this._geometry = value;\n this.onViewUpdate();\n }\n\n get geometry()\n {\n return this._geometry;\n }\n\n /** The texture that the Mesh uses. Null for non-MeshMaterial shaders */\n set texture(value: Texture)\n {\n value ||= Texture.EMPTY;\n\n const currentTexture = this._texture;\n\n if (currentTexture === value) return;\n\n if (currentTexture && currentTexture.dynamic) currentTexture.off('update', this.onViewUpdate, this);\n if (value.dynamic) value.on('update', this.onViewUpdate, this);\n\n if (this.shader)\n {\n (this.shader as unknown as TextureShader).texture = value;\n }\n\n this._texture = value;\n this.onViewUpdate();\n }\n\n get texture()\n {\n return this._texture;\n }\n\n get batched()\n {\n if (this._shader) return false;\n\n if (this._geometry instanceof MeshGeometry)\n {\n if (this._geometry.batchMode === 'auto')\n {\n return this._geometry.positions.length / 2 <= 100;\n }\n\n return this._geometry.batchMode === 'batch';\n }\n\n return false;\n }\n\n /**\n * The local bounds of the mesh.\n * @type {rendering.Bounds}\n */\n get bounds()\n {\n return this._geometry.bounds;\n }\n\n /**\n * Adds the bounds of this object to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n bounds.addBounds(this.geometry.bounds);\n }\n\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: PointData)\n {\n const { x, y } = point;\n\n if (!this.bounds.containsPoint(x, y)) return false;\n\n const vertices = this.geometry.getBuffer('aPosition').data;\n\n const step = this.geometry.topology === 'triangle-strip' ? 3 : 1;\n\n if (this.geometry.getIndex())\n {\n const indices = this.geometry.getIndex().data;\n const len = indices.length;\n\n for (let i = 0; i + 2 < len; i += step)\n {\n const ind0 = indices[i] * 2;\n const ind1 = indices[i + 1] * 2;\n const ind2 = indices[i + 2] * 2;\n\n if (pointInTriangle(\n x, y,\n vertices[ind0],\n vertices[ind0 + 1],\n vertices[ind1],\n vertices[ind1 + 1],\n vertices[ind2],\n vertices[ind2 + 1],\n ))\n {\n return true;\n }\n }\n }\n else\n {\n const len = vertices.length / 2; // Each vertex has 2 coordinates, x and y\n\n for (let i = 0; i + 2 < len; i += step)\n {\n const ind0 = i * 2;\n const ind1 = (i + 1) * 2;\n const ind2 = (i + 2) * 2;\n\n if (pointInTriangle(\n x, y,\n vertices[ind0],\n vertices[ind0 + 1],\n vertices[ind1],\n vertices[ind1 + 1],\n vertices[ind2],\n vertices[ind2 + 1],\n ))\n {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /** @ignore */\n public onViewUpdate()\n {\n // increment from the 12th bit!\n this._didChangeId += 1 << 12;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n public destroy(options?: DestroyOptions): void\n {\n super.destroy(options);\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n this._texture.destroy(destroyTextureSource);\n }\n\n this._geometry?.off('update', this.onViewUpdate, this);\n\n this._texture = null;\n this._geometry = null;\n this._shader = null;\n }\n}\n","import { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { UPDATE_PRIORITY } from '../../ticker/const';\nimport { Ticker } from '../../ticker/Ticker';\nimport { Sprite } from '../sprite/Sprite';\n\n/**\n * An AnimatedSprite is a simple way to display an animation depicted by a list of textures.\n *\n * ```js\n * import { AnimatedSprite, Texture } from 'pixi.js';\n *\n * const alienImages = [\n * 'image_sequence_01.png',\n * 'image_sequence_02.png',\n * 'image_sequence_03.png',\n * 'image_sequence_04.png',\n * ];\n * const textureArray = [];\n *\n * for (let i = 0; i < 4; i++)\n * {\n * const texture = Texture.from(alienImages[i]);\n * textureArray.push(texture);\n * }\n *\n * const animatedSprite = new AnimatedSprite(textureArray);\n * ```\n *\n * The more efficient and simpler way to create an animated sprite is using a {@link Spritesheet}\n * containing the animation definitions:\n * @example\n * import { AnimatedSprite, Assets } from 'pixi.js';\n *\n * const sheet = await Assets.load('assets/spritesheet.json');\n * animatedSprite = new AnimatedSprite(sheet.animations['image_sequence']);\n * @memberof scene\n */\nexport class AnimatedSprite extends Sprite\n{\n /**\n * The speed that the AnimatedSprite will play at. Higher is faster, lower is slower.\n * @default 1\n */\n public animationSpeed: number;\n\n /**\n * Whether or not the animate sprite repeats after playing.\n * @default true\n */\n public loop: boolean;\n\n /**\n * Update anchor to [Texture's defaultAnchor]{@link Texture#defaultAnchor} when frame changes.\n *\n * Useful with [sprite sheet animations]{@link Spritesheet#animations} created with tools.\n * Changing anchor for each frame allows to pin sprite origin to certain moving feature\n * of the frame (e.g. left foot).\n *\n * Note: Enabling this will override any previously set `anchor` on each frame change.\n * @default false\n */\n public updateAnchor: boolean;\n\n /**\n * User-assigned function to call when an AnimatedSprite finishes playing.\n * @example\n * animation.onComplete = () => {\n * // Finished!\n * };\n */\n public onComplete?: () => void;\n\n /**\n * User-assigned function to call when an AnimatedSprite changes which texture is being rendered.\n * @example\n * animation.onFrameChange = () => {\n * // Updated!\n * };\n */\n public onFrameChange?: (currentFrame: number) => void;\n\n /**\n * User-assigned function to call when `loop` is true, and an AnimatedSprite is played and\n * loops around to start again.\n * @example\n * animation.onLoop = () => {\n * // Looped!\n * };\n */\n public onLoop?: () => void;\n\n private _playing: boolean;\n private _textures: Texture[];\n private _durations: number[];\n\n /**\n * `true` uses Ticker.shared to auto update animation time.\n * @default true\n */\n private _autoUpdate: boolean;\n\n /**\n * `true` if the instance is currently connected to Ticker.shared to auto update animation time.\n * @default false\n */\n private _isConnectedToTicker: boolean;\n\n /** Elapsed time since animation has been started, used internally to display current texture. */\n private _currentTime: number;\n\n /** The texture index that was displayed last time. */\n private _previousFrame: number;\n\n /**\n * @param textures - An array of {@link Texture} or frame\n * objects that make up the animation.\n * @param {boolean} [autoUpdate=true] - Whether to use Ticker.shared to auto update animation time.\n */\n constructor(textures: Texture[] | FrameObject[], autoUpdate = true)\n {\n super(textures[0] instanceof Texture ? textures[0] : textures[0].texture);\n\n this._textures = null;\n this._durations = null;\n this._autoUpdate = autoUpdate;\n this._isConnectedToTicker = false;\n\n this.animationSpeed = 1;\n this.loop = true;\n this.updateAnchor = false;\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n\n this._currentTime = 0;\n\n this._playing = false;\n this._previousFrame = null;\n\n this.textures = textures;\n }\n\n /** Stops the AnimatedSprite. */\n public stop(): void\n {\n if (!this._playing)\n {\n return;\n }\n\n this._playing = false;\n if (this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n }\n\n /** Plays the AnimatedSprite. */\n public play(): void\n {\n if (this._playing)\n {\n return;\n }\n\n this._playing = true;\n if (this._autoUpdate && !this._isConnectedToTicker)\n {\n Ticker.shared.add(this.update, this, UPDATE_PRIORITY.HIGH);\n this._isConnectedToTicker = true;\n }\n }\n\n /**\n * Stops the AnimatedSprite and goes to a specific frame.\n * @param frameNumber - Frame index to stop at.\n */\n public gotoAndStop(frameNumber: number): void\n {\n this.stop();\n this.currentFrame = frameNumber;\n }\n\n /**\n * Goes to a specific frame and begins playing the AnimatedSprite.\n * @param frameNumber - Frame index to start at.\n */\n public gotoAndPlay(frameNumber: number): void\n {\n this.currentFrame = frameNumber;\n this.play();\n }\n\n /**\n * Updates the object transform for rendering.\n * @param ticker - the ticker to use to update the object.\n */\n public update(ticker: Ticker): void\n {\n // If the animation isn't playing, no update is needed.\n if (!this._playing)\n {\n return;\n }\n\n // Calculate elapsed time based on ticker's deltaTime and animation speed.\n const deltaTime = ticker.deltaTime;\n const elapsed = this.animationSpeed * deltaTime;\n const previousFrame = this.currentFrame;\n\n // If there are specific durations set for each frame:\n if (this._durations !== null)\n {\n // Calculate the lag for the current frame based on the current time.\n let lag = this._currentTime % 1 * this._durations[this.currentFrame];\n\n // Adjust the lag based on elapsed time.\n lag += elapsed / 60 * 1000;\n\n // If the lag is negative, adjust the current time and the lag.\n while (lag < 0)\n {\n this._currentTime--;\n lag += this._durations[this.currentFrame];\n }\n\n const sign = Math.sign(this.animationSpeed * deltaTime);\n\n // Floor the current time to get a whole number frame.\n this._currentTime = Math.floor(this._currentTime);\n\n // Adjust the current time and the lag until the lag is less than the current frame's duration.\n while (lag >= this._durations[this.currentFrame])\n {\n lag -= this._durations[this.currentFrame] * sign;\n this._currentTime += sign;\n }\n\n // Adjust the current time based on the lag and current frame's duration.\n this._currentTime += lag / this._durations[this.currentFrame];\n }\n else\n {\n // If no specific durations set, simply adjust the current time by elapsed time.\n this._currentTime += elapsed;\n }\n\n // Handle scenarios when animation reaches the start or the end.\n if (this._currentTime < 0 && !this.loop)\n {\n // If the animation shouldn't loop and it reaches the start, go to the first frame.\n this.gotoAndStop(0);\n\n // If there's an onComplete callback, call it.\n if (this.onComplete)\n {\n this.onComplete();\n }\n }\n else if (this._currentTime >= this._textures.length && !this.loop)\n {\n // If the animation shouldn't loop and it reaches the end, go to the last frame.\n this.gotoAndStop(this._textures.length - 1);\n\n // If there's an onComplete callback, call it.\n if (this.onComplete)\n {\n this.onComplete();\n }\n }\n else if (previousFrame !== this.currentFrame)\n {\n // If the current frame is different from the last update, handle loop scenarios.\n if (this.loop && this.onLoop)\n {\n if ((this.animationSpeed > 0 && this.currentFrame < previousFrame)\n || (this.animationSpeed < 0 && this.currentFrame > previousFrame))\n {\n // If the animation loops, and there's an onLoop callback, call it.\n this.onLoop();\n }\n }\n\n // Update the texture for the current frame.\n this._updateTexture();\n }\n }\n\n /** Updates the displayed texture to match the current frame index. */\n private _updateTexture(): void\n {\n const currentFrame = this.currentFrame;\n\n if (this._previousFrame === currentFrame)\n {\n return;\n }\n\n this._previousFrame = currentFrame;\n\n this.texture = this._textures[currentFrame];\n\n if (this.updateAnchor)\n {\n this.anchor.copyFrom(this.texture.defaultAnchor);\n }\n\n if (this.onFrameChange)\n {\n this.onFrameChange(this.currentFrame);\n }\n }\n\n /** Stops the AnimatedSprite and destroys it. */\n public destroy(): void\n {\n this.stop();\n super.destroy();\n\n this.onComplete = null;\n this.onFrameChange = null;\n this.onLoop = null;\n }\n\n /**\n * A short hand way of creating an AnimatedSprite from an array of frame ids.\n * @param frames - The array of frames ids the AnimatedSprite will use as its texture frames.\n * @returns - The new animated sprite with the specified frames.\n */\n public static fromFrames(frames: string[]): AnimatedSprite\n {\n const textures = [];\n\n for (let i = 0; i < frames.length; ++i)\n {\n textures.push(Texture.from(frames[i]));\n }\n\n return new AnimatedSprite(textures);\n }\n\n /**\n * A short hand way of creating an AnimatedSprite from an array of image ids.\n * @param images - The array of image urls the AnimatedSprite will use as its texture frames.\n * @returns The new animate sprite with the specified images as frames.\n */\n public static fromImages(images: string[]): AnimatedSprite\n {\n const textures = [];\n\n for (let i = 0; i < images.length; ++i)\n {\n textures.push(Texture.from(images[i]));\n }\n\n return new AnimatedSprite(textures);\n }\n\n /**\n * The total number of frames in the AnimatedSprite. This is the same as number of textures\n * assigned to the AnimatedSprite.\n * @readonly\n * @default 0\n */\n get totalFrames(): number\n {\n return this._textures.length;\n }\n\n /** The array of textures used for this AnimatedSprite. */\n get textures(): Texture[] | FrameObject[]\n {\n return this._textures;\n }\n\n set textures(value: Texture[] | FrameObject[])\n {\n if (value[0] instanceof Texture)\n {\n this._textures = value as Texture[];\n this._durations = null;\n }\n else\n {\n this._textures = [];\n this._durations = [];\n\n for (let i = 0; i < value.length; i++)\n {\n this._textures.push((value[i] as FrameObject).texture);\n this._durations.push((value[i] as FrameObject).time);\n }\n }\n this._previousFrame = null;\n this.gotoAndStop(0);\n this._updateTexture();\n }\n\n /** The AnimatedSprite's current frame index. */\n get currentFrame(): number\n {\n let currentFrame = Math.floor(this._currentTime) % this._textures.length;\n\n if (currentFrame < 0)\n {\n currentFrame += this._textures.length;\n }\n\n return currentFrame;\n }\n\n set currentFrame(value: number)\n {\n if (value < 0 || value > this.totalFrames - 1)\n {\n throw new Error(`[AnimatedSprite]: Invalid frame index value ${value}, `\n + `expected to be between 0 and totalFrames ${this.totalFrames}.`);\n }\n\n const previousFrame = this.currentFrame;\n\n this._currentTime = value;\n\n if (previousFrame !== this.currentFrame)\n {\n this._updateTexture();\n }\n }\n\n /**\n * Indicates if the AnimatedSprite is currently playing.\n * @readonly\n */\n get playing(): boolean\n {\n return this._playing;\n }\n\n /** Whether to use Ticker.shared to auto update animation time. */\n get autoUpdate(): boolean\n {\n return this._autoUpdate;\n }\n\n set autoUpdate(value: boolean)\n {\n if (value !== this._autoUpdate)\n {\n this._autoUpdate = value;\n\n if (!this._autoUpdate && this._isConnectedToTicker)\n {\n Ticker.shared.remove(this.update, this);\n this._isConnectedToTicker = false;\n }\n else if (this._autoUpdate && !this._isConnectedToTicker && this._playing)\n {\n Ticker.shared.add(this.update, this);\n this._isConnectedToTicker = true;\n }\n }\n }\n}\n\n/**\n * A reference to a frame in an {@link scene.AnimatedSprite}\n * @memberof scene\n */\nexport interface FrameObject\n{\n /** The {@link Texture} of the frame. */\n texture: Texture;\n\n /** The duration of the frame, in milliseconds. */\n time: number;\n}\n","import { Matrix } from '../../maths/matrix/Matrix';\nimport { ObservablePoint } from '../../maths/point/ObservablePoint';\n\nimport type { Observer } from '../../maths/point/ObservablePoint';\n\n/**\n * Options for the {@link utils.Transform} constructor.\n * @memberof utils.Transform\n */\nexport interface TransformOptions\n{\n /** The matrix to use. */\n matrix?: Matrix;\n /** The observer to use. */\n observer?: {_onUpdate: (transform: Transform) => void}\n}\n\n/**\n * The Transform class facilitates the manipulation of a 2D transformation matrix through\n * user-friendly properties: position, scale, rotation, skew, and pivot.\n * @memberof utils\n */\nexport class Transform\n{\n /**\n * The local transformation matrix.\n * @internal\n * @private\n */\n public _matrix: Matrix;\n\n /** The coordinate of the object relative to the local coordinates of the parent. */\n public position: ObservablePoint;\n\n /** The scale factor of the object. */\n public scale: ObservablePoint;\n\n /** The pivot point of the container that it rotates around. */\n public pivot: ObservablePoint;\n\n /** The skew amount, on the x and y axis. */\n public skew: ObservablePoint;\n\n /** The rotation amount. */\n protected _rotation: number;\n\n /**\n * The X-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n */\n protected _cx: number;\n\n /**\n * The Y-coordinate value of the normalized local X axis,\n * the first column of the local transformation matrix without a scale.\n */\n protected _sx: number;\n\n /**\n * The X-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n */\n protected _cy: number;\n\n /**\n * The Y-coordinate value of the normalized local Y axis,\n * the second column of the local transformation matrix without a scale.\n */\n protected _sy: number;\n\n protected dirty = true;\n protected observer: Observer;\n\n /**\n * @param options - Options for the transform.\n * @param options.matrix - The matrix to use.\n * @param options.observer - The observer to use.\n */\n constructor({ matrix, observer }: TransformOptions = {})\n {\n this._matrix = matrix ?? new Matrix();\n this.observer = observer;\n\n this.position = new ObservablePoint(this, 0, 0);\n this.scale = new ObservablePoint(this, 1, 1);\n this.pivot = new ObservablePoint(this, 0, 0);\n this.skew = new ObservablePoint(this, 0, 0);\n\n this._rotation = 0;\n this._cx = 1;\n this._sx = 0;\n this._cy = 0;\n this._sy = 1;\n }\n\n /**\n * This matrix is computed by combining this Transforms position, scale, rotation, skew, and pivot\n * properties into a single matrix.\n * @readonly\n */\n get matrix(): Matrix\n {\n const lt = this._matrix;\n\n if (!this.dirty) return lt;\n\n lt.a = this._cx * this.scale.x;\n lt.b = this._sx * this.scale.x;\n lt.c = this._cy * this.scale.y;\n lt.d = this._sy * this.scale.y;\n\n lt.tx = this.position.x - ((this.pivot.x * lt.a) + (this.pivot.y * lt.c));\n lt.ty = this.position.y - ((this.pivot.x * lt.b) + (this.pivot.y * lt.d));\n\n this.dirty = false;\n\n return lt;\n }\n /**\n * Called when a value changes.\n * @param point\n * @internal\n * @private\n */\n public _onUpdate(point?: ObservablePoint): void\n {\n this.dirty = true;\n\n if (point === this.skew)\n {\n this.updateSkew();\n }\n\n this.observer?._onUpdate(this);\n }\n\n /** Called when the skew or the rotation changes. */\n protected updateSkew(): void\n {\n this._cx = Math.cos(this._rotation + this.skew.y);\n this._sx = Math.sin(this._rotation + this.skew.y);\n this._cy = -Math.sin(this._rotation - this.skew.x); // cos, added PI/2\n this._sy = Math.cos(this._rotation - this.skew.x); // sin, added PI/2\n\n this.dirty = true;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/math:Transform `\n + `position=(${this.position.x}, ${this.position.y}) `\n + `rotation=${this.rotation} `\n + `scale=(${this.scale.x}, ${this.scale.y}) `\n + `skew=(${this.skew.x}, ${this.skew.y}) `\n + `]`;\n }\n // #endif\n\n /**\n * Decomposes a matrix and sets the transforms properties based on it.\n * @param matrix - The matrix to decompose\n */\n public setFromMatrix(matrix: Matrix): void\n {\n matrix.decompose(this);\n this.dirty = true;\n }\n\n /** The rotation of the object in radians. */\n get rotation(): number\n {\n return this._rotation;\n }\n\n set rotation(value: number)\n {\n if (this._rotation !== value)\n {\n this._rotation = value;\n this._onUpdate(this.skew);\n }\n }\n}\n","import { Cache } from '../../assets/cache/Cache';\nimport { ObservablePoint } from '../../maths/point/ObservablePoint';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { Transform } from '../../utils/misc/Transform';\nimport { Container } from '../container/Container';\n\nimport type { PointData } from '../../maths/point/PointData';\nimport type { Instruction } from '../../rendering/renderers/shared/instructions/Instruction';\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { Bounds, BoundsData } from '../container/bounds/Bounds';\nimport type { ContainerOptions } from '../container/Container';\nimport type { DestroyOptions } from '../container/destroyTypes';\n\n/**\n * Constructor options used for `TilingSprite` instances. Extends {@link scene.TilingSpriteViewOptions}\n * ```js\n * const tilingSprite = new TilingSprite({\n * texture: Texture.from('assets/image.png'),\n * width: 100,\n * height: 100,\n * tilePosition: { x: 100, y: 100 },\n * tileScale: { x: 2, y: 2 },\n * });\n * ```\n * @see {@link scene.TilingSprite}\n * @see {@link scene.TilingSpriteViewOptions}\n * @memberof scene\n */\nexport interface TilingSpriteOptions extends ContainerOptions\n{\n /**\n * The anchor point of the sprite\n * @default {x: 0, y: 0}\n */\n anchor?: PointData\n /**\n * The offset of the image that is being tiled.\n * @default {x: 0, y: 0}\n */\n tilePosition?: PointData\n /**\n * Scaling of the image that is being tiled.\n * @default {x: 1, y: 1}\n */\n tileScale?: PointData\n /**\n * The rotation of the image that is being tiled.\n * @default 0\n */\n tileRotation?: number\n /**\n * The texture to use for the sprite.\n * @default Texture.WHITE\n */\n texture?: Texture\n /**\n * The width of the tiling sprite. #\n * @default 256\n */\n width?: number\n /**\n * The height of the tiling sprite.\n * @default 256\n */\n height?: number\n // TODO needs a better name..\n /**\n * @todo\n * @default false\n */\n applyAnchorToTexture?: boolean\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n\n/**\n * A tiling sprite is a fast way of rendering a tiling image.\n * @example\n * const tilingSprite = new TilingSprite({\n * texture: Texture.from('assets/image.png'),\n * width: 100,\n * height: 100,\n * });\n *\n * tilingSprite.tilePosition.x = 100;\n * tilingSprite.tilePosition.y = 100;\n *\n * app.stage.addChild(tilingSprite);\n * @memberof scene\n * @extends scene.Container\n */\nexport class TilingSprite extends Container implements View, Instruction\n{\n /**\n * Creates a new tiling sprite.\n * @param source - The source to create the texture from.\n * @param options - The options for creating the tiling sprite.\n * @returns A new tiling sprite.\n */\n public static from(source: Texture | string, options: TilingSpriteOptions = {})\n {\n if (typeof source === 'string')\n {\n return new TilingSprite({\n texture: Cache.get(source),\n ...options,\n });\n }\n\n return new TilingSprite({\n texture: source,\n ...options,\n });\n }\n\n /** default options for the TilingSprite */\n public static defaultOptions: TilingSpriteOptions = {\n /** The texture to use for the sprite. */\n texture: Texture.EMPTY,\n /** The anchor point of the sprite */\n anchor: { x: 0, y: 0 },\n /** The offset of the image that is being tiled. */\n tilePosition: { x: 0, y: 0 },\n /** Scaling of the image that is being tiled. */\n tileScale: { x: 1, y: 1 },\n /** The rotation of the image that is being tiled. */\n tileRotation: 0,\n /** TODO */\n applyAnchorToTexture: false,\n };\n\n public readonly renderPipeId = 'tilingSprite';\n public readonly canBundle = true;\n public readonly batched = true;\n\n public _anchor: ObservablePoint;\n\n public _tileTransform: Transform;\n public _texture: Texture;\n public _applyAnchorToTexture: boolean;\n public _didTilingSpriteUpdate: boolean;\n\n public _roundPixels: 0 | 1 = 0;\n\n private _bounds: BoundsData = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n private _boundsDirty = true;\n private _width: number;\n private _height: number;\n\n /**\n * @param {rendering.Texture | scene.TilingSpriteOptions} options - The options for creating the tiling sprite.\n */\n constructor(options?: Texture | TilingSpriteOptions);\n /** @deprecated since 8.0.0 */\n constructor(texture: Texture, width: number, height: number);\n constructor(...args: [(Texture | TilingSpriteOptions)?] | [Texture, number, number])\n {\n let options = args[0] || {};\n\n if (options instanceof Texture)\n {\n options = { texture: options };\n }\n\n if (args.length > 1)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'use new TilingSprite({ texture, width:100, height:100 }) instead');\n // #endif\n\n options.width = args[1];\n options.height = args[2];\n }\n\n options = { ...TilingSprite.defaultOptions, ...options };\n\n const {\n texture,\n anchor,\n tilePosition,\n tileScale,\n tileRotation,\n width,\n height,\n applyAnchorToTexture,\n roundPixels,\n ...rest\n } = options ?? {};\n\n super({\n\n label: 'TilingSprite',\n ...rest\n });\n\n this.allowChildren = false;\n\n this._anchor = new ObservablePoint(this);\n\n this._applyAnchorToTexture = applyAnchorToTexture;\n\n this.texture = texture;\n this._width = width ?? texture.width;\n this._height = height ?? texture.height;\n\n this._tileTransform = new Transform({\n observer: {\n _onUpdate: () => this.onViewUpdate(),\n }\n });\n\n if (anchor) this.anchor = anchor;\n this.tilePosition = tilePosition;\n this.tileScale = tileScale;\n this.tileRotation = tileRotation;\n\n this.roundPixels = roundPixels ?? false;\n }\n\n /**\n * Changes frame clamping in corresponding textureMatrix\n * Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas\n * @default 0.5\n * @member {number}\n */\n get clampMargin()\n {\n return this._texture.textureMatrix.clampMargin;\n }\n\n set clampMargin(value: number)\n {\n this._texture.textureMatrix.clampMargin = value;\n }\n\n /**\n * The anchor sets the origin point of the sprite. The default value is taken from the {@link Texture}\n * and passed to the constructor.\n *\n * The default is `(0,0)`, this means the sprite's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the sprite's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the sprite's origin point will be the bottom right corner.\n *\n * If you pass only single parameter, it will set both x and y to the same value as shown in the example below.\n * @example\n * import { TilingSprite } from 'pixi.js';\n *\n * const sprite = new TilingSprite({texture: Texture.WHITE});\n * sprite.anchor.set(0.5); // This will set the origin to center. (0.5) is same as (0.5, 0.5).\n */\n get anchor(): ObservablePoint\n {\n return this._anchor;\n }\n\n set anchor(value: PointData | number)\n {\n typeof value === 'number' ? this._anchor.set(value) : this._anchor.copyFrom(value);\n }\n\n /** The offset of the image that is being tiled. */\n get tilePosition(): ObservablePoint\n {\n return this._tileTransform.position;\n }\n\n set tilePosition(value: PointData)\n {\n this._tileTransform.position.copyFrom(value);\n }\n\n /** The scaling of the image that is being tiled. */\n get tileScale(): ObservablePoint\n {\n return this._tileTransform.scale;\n }\n\n set tileScale(value: PointData | number)\n {\n typeof value === 'number' ? this._tileTransform.scale.set(value) : this._tileTransform.scale.copyFrom(value);\n }\n\n set tileRotation(value)\n {\n this._tileTransform.rotation = value;\n }\n\n /** The rotation of the image that is being tiled. */\n get tileRotation()\n {\n return this._tileTransform.rotation;\n }\n\n /** The transform of the image that is being tiled. */\n get tileTransform()\n {\n return this._tileTransform;\n }\n\n /**\n * Whether or not to round the x/y position of the sprite.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n /**\n * The local bounds of the sprite.\n * @type {rendering.Bounds}\n */\n get bounds()\n {\n if (this._boundsDirty)\n {\n this._updateBounds();\n this._boundsDirty = false;\n }\n\n return this._bounds;\n }\n\n set texture(value: Texture)\n {\n value ||= Texture.EMPTY;\n\n const currentTexture = this._texture;\n\n if (currentTexture === value) return;\n\n if (currentTexture && currentTexture.dynamic) currentTexture.off('update', this.onViewUpdate, this);\n if (value.dynamic) value.on('update', this.onViewUpdate, this);\n\n this._texture = value;\n\n this.onViewUpdate();\n }\n\n /** The texture that the sprite is using. */\n get texture()\n {\n return this._texture;\n }\n\n /** The width of the tiling area. */\n set width(value: number)\n {\n this._width = value;\n this.onViewUpdate();\n }\n\n get width()\n {\n return this._width;\n }\n\n set height(value: number)\n {\n this._height = value;\n this.onViewUpdate();\n }\n\n /** The height of the tiling area. */\n get height()\n {\n return this._height;\n }\n\n private _updateBounds()\n {\n const bounds = this._bounds;\n\n const anchor = this._anchor;\n\n const width = this._width;\n const height = this._height;\n\n bounds.maxX = -anchor._x * width;\n bounds.minX = bounds.maxX + width;\n\n bounds.maxY = -anchor._y * height;\n bounds.minY = bounds.maxY + height;\n }\n\n /**\n * Adds the bounds of this object to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n const _bounds = this.bounds;\n\n bounds.addFrame(\n _bounds.minX,\n _bounds.minY,\n _bounds.maxX,\n _bounds.maxY,\n );\n }\n\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: PointData)\n {\n const width = this.bounds.minX;\n const height = this.bounds.minY;\n const x1 = -width * this._anchor._x;\n let y1 = 0;\n\n if (point.x >= x1 && point.x <= x1 + width)\n {\n y1 = -height * this._anchor._y;\n\n if (point.y >= y1 && point.y <= y1 + height) return true;\n }\n\n return false;\n }\n\n public onViewUpdate()\n {\n this._boundsDirty = true;\n this._didTilingSpriteUpdate = true;\n\n this._didChangeId += 1 << 12;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n public destroy(options: DestroyOptions = false)\n {\n super.destroy(options);\n\n this._anchor = null;\n this._tileTransform = null;\n this._bounds = null;\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n this._texture.destroy(destroyTextureSource);\n }\n\n this._texture = null;\n }\n}\n\n","import { ObservablePoint } from '../../maths/point/ObservablePoint';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { Bounds } from '../container/bounds/Bounds';\nimport { Container } from '../container/Container';\n\nimport type { Size } from '../../maths/misc/Size';\nimport type { PointData } from '../../maths/point/PointData';\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { ContainerOptions } from '../container/Container';\nimport type { Optional } from '../container/container-mixins/measureMixin';\nimport type { DestroyOptions } from '../container/destroyTypes';\nimport type { HTMLTextStyle, HTMLTextStyleOptions } from '../text-html/HtmlTextStyle';\nimport type { TextStyle, TextStyleOptions } from './TextStyle';\n\n/**\n * A string or number that can be used as text.\n * @memberof text\n */\nexport type TextString = string | number | { toString: () => string };\n/**\n * A union of all text styles, including HTML, Bitmap and Canvas text styles.\n * @memberof text\n * @see text.TextStyle\n * @see text.HTMLTextStyle\n */\nexport type AnyTextStyle = TextStyle | HTMLTextStyle;\n/**\n * A union of all text style options, including HTML, Bitmap and Canvas text style options.\n * @memberof text\n * @see text.TextStyleOptions\n * @see text.HTMLTextStyleOptions\n */\nexport type AnyTextStyleOptions = TextStyleOptions | HTMLTextStyleOptions;\n\n/**\n * Options for the {@link scene.Text} class.\n * @example\n * const text = new Text({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'Arial',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * });\n * @memberof text\n */\nexport interface TextOptions<\n TEXT_STYLE extends TextStyle = TextStyle,\n TEXT_STYLE_OPTIONS extends TextStyleOptions = TextStyleOptions,\n> extends ContainerOptions\n{\n /** The anchor point of the text. */\n anchor?: PointData | number;\n /** The copy for the text object. To split a line you can use '\\n'. */\n text?: TextString;\n /** The resolution of the text. */\n resolution?: number;\n /**\n * The text style\n * @type {\n * text.TextStyle |\n * Partial |\n * text.TextStyleOptions |\n * text.HTMLTextStyle |\n * Partial |\n * text.HTMLTextStyleOptions\n * }\n */\n style?: TEXT_STYLE | TEXT_STYLE_OPTIONS;\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n\n/**\n * An abstract Text class, used by all text type in Pixi. This includes Canvas, HTML, and Bitmap Text.\n * @see scene.Text\n * @see scene.BitmapText\n * @see scene.HTMLText\n * @memberof scene\n */\nexport abstract class AbstractText<\n TEXT_STYLE extends TextStyle = TextStyle,\n TEXT_STYLE_OPTIONS extends TextStyleOptions = TextStyleOptions,\n> extends Container implements View\n{\n public abstract readonly renderPipeId: string;\n public batched = true;\n public _anchor: ObservablePoint;\n /**\n * The resolution / device pixel ratio of the canvas.\n * @default 1\n */\n public resolution: number = null;\n\n public _style: TEXT_STYLE;\n public _didTextUpdate = true;\n public _roundPixels: 0 | 1 = 0;\n\n protected _bounds: Bounds = new Bounds();\n protected _boundsDirty = true;\n protected _text: string;\n private readonly _styleClass: new (options: TEXT_STYLE_OPTIONS) => TEXT_STYLE;\n\n constructor(\n options: TextOptions,\n styleClass: new (options: TEXT_STYLE_OPTIONS) => TEXT_STYLE\n )\n {\n const { text, resolution, style, anchor, width, height, roundPixels, ...rest } = options;\n\n super({\n ...rest\n });\n\n this._styleClass = styleClass;\n\n this.text = text ?? '';\n\n this.style = style;\n\n this.resolution = resolution ?? null;\n\n this.allowChildren = false;\n\n this._anchor = new ObservablePoint(\n {\n _onUpdate: () =>\n {\n this.onViewUpdate();\n },\n },\n );\n\n if (anchor) this.anchor = anchor;\n this.roundPixels = roundPixels ?? false;\n\n // needs to be set after the container has initiated\n if (width) this.width = width;\n if (height) this.height = height;\n }\n\n /**\n * The anchor sets the origin point of the text.\n * The default is `(0,0)`, this means the text's origin is the top left.\n *\n * Setting the anchor to `(0.5,0.5)` means the text's origin is centered.\n *\n * Setting the anchor to `(1,1)` would mean the text's origin point will be the bottom right corner.\n *\n * If you pass only single parameter, it will set both x and y to the same value as shown in the example below.\n * @example\n * import { Text } from 'pixi.js';\n *\n * const text = new Text('hello world');\n * text.anchor.set(0.5); // This will set the origin to center. (0.5) is same as (0.5, 0.5).\n */\n get anchor(): ObservablePoint\n {\n return this._anchor;\n }\n\n set anchor(value: PointData | number)\n {\n typeof value === 'number' ? this._anchor.set(value) : this._anchor.copyFrom(value);\n }\n\n /**\n * Whether or not to round the x/y position of the text.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n /** Set the copy for the text object. To split a line you can use '\\n'. */\n set text(value: TextString)\n {\n // check its a string\n value = value.toString();\n\n if (this._text === value) return;\n\n this._text = value as string;\n this.onViewUpdate();\n }\n\n get text(): string\n {\n return this._text;\n }\n\n get style(): TEXT_STYLE\n {\n return this._style;\n }\n\n /**\n * Set the style of the text.\n *\n * Set up an event listener to listen for changes on the style object and mark the text as dirty.\n *\n * If setting the `style` can also be partial {@link AnyTextStyleOptions}.\n * @type {\n * text.TextStyle |\n * Partial |\n * text.TextStyleOptions |\n * text.HTMLTextStyle |\n * Partial |\n * text.HTMLTextStyleOptions\n * }\n */\n set style(style: TEXT_STYLE | Partial | TEXT_STYLE_OPTIONS)\n {\n style = style || {};\n\n this._style?.off('update', this.onViewUpdate, this);\n\n if (style instanceof this._styleClass)\n {\n this._style = style as TEXT_STYLE;\n }\n else\n {\n this._style = new this._styleClass(style as TEXT_STYLE_OPTIONS);\n }\n\n this._style.on('update', this.onViewUpdate, this);\n this.onViewUpdate();\n }\n\n /**\n * The local bounds of the Text.\n * @type {rendering.Bounds}\n */\n get bounds()\n {\n if (this._boundsDirty)\n {\n this._updateBounds();\n this._boundsDirty = false;\n }\n\n return this._bounds;\n }\n\n /** The width of the sprite, setting this will actually modify the scale to achieve the value set. */\n override get width(): number\n {\n return Math.abs(this.scale.x) * this.bounds.width;\n }\n\n override set width(value: number)\n {\n this._setWidth(value, this.bounds.width);\n }\n\n /** The height of the sprite, setting this will actually modify the scale to achieve the value set. */\n override get height(): number\n {\n return Math.abs(this.scale.y) * this.bounds.height;\n }\n\n override set height(value: number)\n {\n this._setHeight(value, this.bounds.height);\n }\n\n /**\n * Retrieves the size of the Text as a [Size]{@link Size} object.\n * This is faster than get the width and height separately.\n * @param out - Optional object to store the size in.\n * @returns - The size of the Text.\n */\n public override getSize(out?: Size): Size\n {\n if (!out)\n {\n out = {} as Size;\n }\n\n out.width = Math.abs(this.scale.x) * this.bounds.width;\n out.height = Math.abs(this.scale.y) * this.bounds.height;\n\n return out;\n }\n\n /**\n * Sets the size of the Text to the specified width and height.\n * This is faster than setting the width and height separately.\n * @param value - This can be either a number or a [Size]{@link Size} object.\n * @param height - The height to set. Defaults to the value of `width` if not provided.\n */\n public override setSize(value: number | Optional, height?: number)\n {\n let convertedWidth: number;\n let convertedHeight: number;\n\n if (typeof value !== 'object')\n {\n convertedWidth = value;\n convertedHeight = height ?? value;\n }\n else\n {\n convertedWidth = value.width;\n convertedHeight = value.height ?? value.width;\n }\n\n if (convertedWidth !== undefined)\n {\n this._setWidth(convertedWidth, this.bounds.width);\n }\n\n if (convertedHeight !== undefined)\n {\n this._setHeight(convertedHeight, this.bounds.height);\n }\n }\n\n /**\n * Adds the bounds of this text to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n const _bounds = this.bounds;\n\n bounds.addFrame(\n _bounds.minX,\n _bounds.minY,\n _bounds.maxX,\n _bounds.maxY,\n );\n }\n\n /**\n * Checks if the text contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: PointData)\n {\n const width = this.bounds.maxX;\n const height = this.bounds.maxY;\n\n const x1 = -width * this.anchor.x;\n let y1 = 0;\n\n if (point.x >= x1 && point.x <= x1 + width)\n {\n y1 = -height * this.anchor.y;\n\n if (point.y >= y1 && point.y <= y1 + height) return true;\n }\n\n return false;\n }\n\n public onViewUpdate()\n {\n this._didChangeId += 1 << 12;\n this._boundsDirty = true;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n this._didTextUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n public _getKey(): string\n {\n // TODO add a dirty flag...\n return `${this.text}:${this._style.styleKey}`;\n }\n\n protected abstract _updateBounds(): void;\n\n /**\n * Destroys this text renderable and optionally its style texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the texture of the text style\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the text style\n * @param {boolean} [options.style=false] - Should it destroy the style of the text\n */\n public destroy(options: DestroyOptions = false): void\n {\n super.destroy(options);\n\n (this as any).owner = null;\n this._bounds = null;\n this._anchor = null;\n\n if (typeof options === 'boolean' ? options : options?.style)\n {\n this._style.destroy(options);\n }\n\n this._style = null;\n this._text = null;\n }\n}\n\nexport function ensureOptions<\n TEXT_STYLE extends TextStyle,\n TEXT_STYLE_OPTIONS extends TextStyleOptions\n>(\n args: any[],\n name: string\n): TextOptions\n{\n let options = (args[0] ?? {}) as TextOptions;\n\n // @deprecated\n if (typeof options === 'string' || args[1])\n {\n // #if _DEBUG\n deprecation(v8_0_0, `use new ${name}({ text: \"hi!\", style }) instead`);\n // #endif\n\n options = {\n text: options,\n style: args[1],\n } as TextOptions;\n }\n\n return options;\n}\n","import { AbstractText, ensureOptions } from './AbstractText';\nimport { CanvasTextMetrics } from './canvas/CanvasTextMetrics';\nimport { TextStyle } from './TextStyle';\n\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { TextOptions, TextString } from './AbstractText';\nimport type { TextStyleOptions } from './TextStyle';\n\n/**\n * A Text Object will create a line or multiple lines of text.\n *\n * To split a line you can use '\\n' in your text string, or, on the `style` object,\n * change its `wordWrap` property to true and and givae the `wordWrapWidth` property a value.\n *\n * The primary advantage of this class over BitmapText is that you have great control over the style of the text,\n * which you can change at runtime.\n *\n * The primary disadvantages is that each piece of text has it's own texture, which can use more memory.\n * When text changes, this texture has to be re-generated and re-uploaded to the GPU, taking up time.\n * @example\n * import { Text } from 'pixi.js';\n *\n * const text = new Text({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'Arial',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * });\n * @memberof scene\n */\nexport class Text\n extends AbstractText\n implements View\n{\n public readonly renderPipeId: string = 'text';\n\n /**\n * @param {text.TextOptions} options - The options of the text.\n */\n constructor(options?: TextOptions);\n /** @deprecated since 8.0.0 */\n constructor(text?: TextString, options?: Partial);\n constructor(...args: [TextOptions?] | [TextString, Partial])\n {\n const options = ensureOptions(args, 'Text');\n\n super(options, TextStyle);\n }\n\n protected _updateBounds()\n {\n const bounds = this._bounds;\n const padding = this._style.padding;\n const anchor = this._anchor;\n\n const canvasMeasurement = CanvasTextMetrics.measureText(\n this._text,\n this._style\n );\n\n const { width, height } = canvasMeasurement;\n\n bounds.minX = (-anchor._x * width) - padding;\n bounds.maxX = bounds.minX + width;\n bounds.minY = (-anchor._y * height) - padding;\n bounds.maxY = bounds.minY + height;\n }\n}\n","import { TextureSource } from '../rendering/renderers/shared/texture/sources/TextureSource';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture';\nimport { Container } from '../scene/container/Container';\nimport { Graphics } from '../scene/graphics/shared/Graphics';\nimport { GraphicsContext } from '../scene/graphics/shared/GraphicsContext';\nimport { Mesh } from '../scene/mesh/shared/Mesh';\nimport { Sprite } from '../scene/sprite/Sprite';\nimport { AnimatedSprite } from '../scene/sprite-animated/AnimatedSprite';\nimport { TilingSprite } from '../scene/sprite-tiling/TilingSprite';\nimport { Text } from '../scene/text/Text';\nimport { PrepareBase } from './PrepareBase';\n\nimport type { FillInstruction, TextureInstruction } from '../scene/graphics/shared/GraphicsContext';\nimport type { FrameObject } from '../scene/sprite-animated/AnimatedSprite';\nimport type { PrepareQueueItem, PrepareSourceItem } from './PrepareBase';\n\n/**\n * Part of the prepare system. Responsible for uploading all the items to the GPU.\n * This class extends the base functionality and resolves given resource items ready for the queue.\n * @memberof rendering\n */\nexport abstract class PrepareQueue extends PrepareBase\n{\n /**\n * Resolve the given resource type and return an item for the queue\n * @param source\n * @param queue\n */\n protected resolveQueueItem(source: PrepareSourceItem, queue: PrepareQueueItem[]): void\n {\n if (source instanceof Container)\n {\n this.resolveContainerQueueItem(source, queue);\n }\n else if (source instanceof TextureSource || source instanceof Texture)\n {\n queue.push(source.source);\n }\n else if (source instanceof GraphicsContext)\n {\n queue.push(source);\n }\n\n // could not resolve the resource type\n return null;\n }\n\n /**\n * Resolve the given container and return an item for the queue\n * @param container\n * @param queue\n */\n protected resolveContainerQueueItem(container: Container, queue: PrepareQueueItem[]): void\n {\n // Note: we are just concerned with the given view.\n // Children are handled by the recursive call of the base class\n\n if (container instanceof Sprite || container instanceof TilingSprite || container instanceof Mesh)\n {\n queue.push(container.texture.source);\n }\n else if (container instanceof Text)\n {\n queue.push(container);\n }\n else if (container instanceof Graphics)\n {\n queue.push(container.context);\n }\n else if (container instanceof AnimatedSprite)\n {\n container.textures.forEach((textureOrFrame) =>\n {\n if ((textureOrFrame as Texture).source)\n {\n queue.push((textureOrFrame as Texture).source);\n }\n else\n {\n queue.push((textureOrFrame as FrameObject).texture.source);\n }\n });\n }\n }\n\n /**\n * Resolve the given graphics context and return an item for the queue\n * @param graphicsContext\n */\n protected resolveGraphicsContextQueueItem(graphicsContext: GraphicsContext): PrepareQueueItem | null\n {\n this.renderer.graphicsContext.getContextRenderData(graphicsContext);\n\n const { instructions } = graphicsContext;\n\n for (const instruction of instructions)\n {\n if (instruction.action === 'texture')\n {\n const { image } = (instruction as TextureInstruction).data;\n\n return image.source;\n }\n else if (instruction.action === 'fill')\n {\n const { texture } = (instruction as FillInstruction).data.style;\n\n return texture.source;\n }\n }\n\n return null;\n }\n}\n","import { AbstractText, ensureOptions } from '../text/AbstractText';\nimport { TextStyle } from '../text/TextStyle';\nimport { BitmapFontManager } from './BitmapFontManager';\n\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { TextOptions, TextString } from '../text/AbstractText';\nimport type { TextStyleOptions } from '../text/TextStyle';\n\n/**\n * A BitmapText Object will create a line or multiple lines of text.\n *\n * To split a line you can use '\\n' in your text string, or, on the `style` object,\n * change its `wordWrap` property to true and and give the `wordWrapWidth` property a value.\n *\n * The text is created using a bitmap font (a sprite sheet of characters).\n *\n * The primary advantage of this render mode over `text` is that all of your textures are pre-generated and loaded,\n * meaning that rendering is fast, and changing text is much faster than Text.\n *\n * The primary disadvantage is that supporting character sets other than latin, such as CJK languages,\n * may be impractical due to the number of characters.\n *\n * Pre-loaded BitmapFonts:\n *\n *\n * PixiJS enables the loading of BitmapFonts through its Asset Manager, supporting both XML and FNT formats.\n * Additionally, PixiJS is compatible with MSDF (Multi-channel Signed Distance Field) and SDF (Signed Distance Field) fonts.\n * These advanced font types allow for scaling without quality degradation and must be created with specific tools,\n * such as the one available at https://msdf-bmfont.donmccurdy.com/.\n *\n * Dynamically Generated BitmapFonts:\n *\n *\n * PixiJS also offers the capability to generate BitmapFonts dynamically. This means that fonts are created in real-time\n * based on specified styles, eliminating the need for pre-loading. This process is initiated simply by assigning a style\n * to a BitmapText object, which then automatically generates the required font.\n *\n * However, dynamically generating a large number of fonts may lead to significant memory use. To prevent this,\n * PixiJS smartly attempts to reuse fonts that closely match the desired style parameters. For instance, if a text style\n * requires a font size of 80 but a similar font of size 100 has already been generated, PixiJS will scale the existing\n * font to fit the new requirement, rather than creating a new font from scratch.\n *\n * For those who prefer to manage BitmapFonts manually, PixiJS provides the BitmapFont.install method. This method\n * allows for the pre-generation and preparation of fonts, making them readily available for use by specifying the\n * fontFamily in your text styling.\n *\n * This approach ensures efficient font management within PixiJS, balancing between dynamic generation for flexibility\n * and manual management for optimized performance.\n * @example\n * import { BitmapText, BitmapFont } from 'pixi.js';\n *\n * // generate a dynamic font behind the scenes:\n * const text = new BitmapText({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'Arial',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * });\n *\n * // pre install\n * BitmapFont.install({\n * name: 'myFont',\n * style:{\n * fontFamily: 'Arial',\n * }\n * })\n *\n * // new bitmap text with preinstalled font\n * const text = new BitmapText({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'myFont',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * }\n *\n * // load a font from an xml file\n * const font = await Assets.load('path/to/myLoadedFont.fnt');\n *\n * // new bitmap text with loaded font\n * const text = new BitmapText({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'myLoadedFont', // the name of the font in the fnt file\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * }\n * @memberof scene\n */\nexport class BitmapText extends AbstractText implements View\n{\n public readonly renderPipeId: string = 'bitmapText';\n\n /**\n * **Note:** Our docs parser struggles to properly understand the constructor signature.\n * This is the correct signature.\n * ```ts\n * new BitmapText(options?: TextOptions);\n * ```\n * @param { text.TextOptions } options - The options of the bitmap text.\n */\n constructor(options?: TextOptions);\n /** @deprecated since 8.0.0 */\n constructor(text?: TextString, options?: Partial);\n constructor(...args: [TextOptions?] | [TextString, Partial])\n {\n const options = ensureOptions(args, 'BitmapText');\n\n options.style ??= options.style || {};\n options.style.fill ??= 0xffffff;\n\n super(options, TextStyle);\n }\n\n protected _updateBounds()\n {\n const bounds = this._bounds;\n const padding = this._style.padding;\n const anchor = this._anchor;\n\n const bitmapMeasurement = BitmapFontManager.measureText(this.text, this._style);\n const scale = bitmapMeasurement.scale;\n const offset = bitmapMeasurement.offsetY * scale;\n\n const width = bitmapMeasurement.width * scale;\n const height = bitmapMeasurement.height * scale;\n\n bounds.minX = (-anchor._x * width) - padding;\n bounds.maxX = bounds.minX + width;\n bounds.minY = (-anchor._y * (height + offset)) - padding;\n bounds.maxY = bounds.minY + height;\n }\n}\n","import { AbstractText, ensureOptions } from '../text/AbstractText';\nimport { HTMLTextStyle } from './HtmlTextStyle';\nimport { measureHtmlText } from './utils/measureHtmlText';\n\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { TextOptions, TextString } from '../text/AbstractText';\nimport type { HTMLTextStyleOptions } from './HtmlTextStyle';\n\n/**\n * Constructor options used for `HTMLText` instances.\n * @property {string} [text=''] - The string that you would like the text to display.\n * @property {text.HTMLTextStyle | text.HTMLTextStyleOptions} [style] - The style of the text.\n * @memberof text\n */\nexport type HTMLTextOptions = TextOptions;\n\n/**\n * A HTMLText Object will create a line or multiple lines of text.\n *\n * To split a line you can use '\\n' in your text string, or, on the `style` object,\n * change its `wordWrap` property to true and and give the `wordWrapWidth` property a value.\n *\n * HTMLText uses an svg foreignObject to render HTML text.\n *\n *\n * The primary advantages of this render mode are:\n *\n * - Supports [HTML tags](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals)\n * for styling such as ``, or ``, as well as ``\n *\n * - Better support for emojis and other HTML layout features, better compatibility with CSS\n * line-height and letter-spacing.\n *\n *\n * The primary disadvantages are:\n * - Unlike `text`, `html` rendering will vary slightly between platforms and browsers.\n * `html` uses SVG/DOM to render text and not Context2D's fillText like `text`.\n *\n * - Performance and memory usage is on-par with `text` (that is to say, slow and heavy)\n *\n * - Only works with browsers that support .\n * @example\n * import { HTMLText } from 'pixi.js';\n *\n * const text = new HTMLText({\n * text: 'Hello Pixi!',\n * style: {\n * fontFamily: 'Arial',\n * fontSize: 24,\n * fill: 0xff1010,\n * align: 'center',\n * }\n * });\n * @memberof scene\n */\nexport class HTMLText extends AbstractText implements View\n{\n public readonly renderPipeId: string = 'htmlText';\n\n /**\n * @param {text.HTMLTextOptions} options - The options of the html text.\n */\n constructor(options?: HTMLTextOptions);\n /** @deprecated since 8.0.0 */\n constructor(text?: TextString, options?: Partial);\n constructor(...args: [HTMLTextOptions?] | [TextString, Partial])\n {\n const options = ensureOptions(args, 'HtmlText');\n\n super(options, HTMLTextStyle);\n }\n\n protected _updateBounds()\n {\n const bounds = this._bounds;\n const padding = this._style.padding;\n const anchor = this._anchor;\n\n const htmlMeasurement = measureHtmlText(this.text, this._style as HTMLTextStyle);\n\n const { width, height } = htmlMeasurement;\n\n bounds.minX = (-anchor._x * width) - padding;\n bounds.maxX = bounds.minX + width;\n bounds.minY = (-anchor._y * height) - padding;\n bounds.maxY = bounds.minY + height;\n }\n}\n","import { TextureSource } from '../rendering/renderers/shared/texture/sources/TextureSource';\nimport { GraphicsContext } from '../scene/graphics/shared/GraphicsContext';\nimport { Text } from '../scene/text/Text';\nimport { BitmapText } from '../scene/text-bitmap/BitmapText';\nimport { HTMLText } from '../scene/text-html/HTMLText';\nimport { PrepareQueue } from './PrepareQueue';\n\nimport type { FillInstruction, TextureInstruction } from '../scene/graphics/shared/GraphicsContext';\nimport type { PrepareQueueItem } from './PrepareBase';\n\n/**\n * Part of the prepare system. Responsible for uploading all the items to the GPU.\n * This class extends the resolver functionality and uploads the given queue items.\n * @memberof rendering\n */\nexport abstract class PrepareUpload extends PrepareQueue\n{\n /**\n * Upload the given queue item\n * @param item\n */\n protected uploadQueueItem(item: PrepareQueueItem): void\n {\n if (item instanceof TextureSource)\n {\n this.uploadTextureSource(item);\n }\n else if (item instanceof Text)\n {\n this.uploadText(item);\n }\n else if (item instanceof HTMLText)\n {\n this.uploadHTMLText(item);\n }\n else if (item instanceof BitmapText)\n {\n this.uploadBitmapText(item);\n }\n else if (item instanceof GraphicsContext)\n {\n this.uploadGraphicsContext(item);\n }\n }\n\n protected uploadTextureSource(textureSource: TextureSource): void\n {\n this.renderer.texture.initSource(textureSource);\n }\n\n protected uploadText(_text: Text): void\n {\n this.renderer.renderPipes.text.initGpuText(_text);\n }\n\n protected uploadBitmapText(_text: BitmapText): void\n {\n this.renderer.renderPipes.bitmapText.initGpuText(_text);\n }\n\n protected uploadHTMLText(_text: HTMLText): void\n {\n this.renderer.renderPipes.htmlText.initGpuText(_text);\n }\n\n /**\n * Resolve the given graphics context and return an item for the queue\n * @param graphicsContext\n */\n protected uploadGraphicsContext(graphicsContext: GraphicsContext): void\n {\n this.renderer.graphicsContext.getContextRenderData(graphicsContext);\n\n const { instructions } = graphicsContext;\n\n for (const instruction of instructions)\n {\n if (instruction.action === 'texture')\n {\n const { image } = (instruction as TextureInstruction).data;\n\n this.uploadTextureSource(image.source);\n }\n else if (instruction.action === 'fill')\n {\n const { texture } = (instruction as FillInstruction).data.style;\n\n this.uploadTextureSource(texture.source);\n }\n }\n\n return null;\n }\n}\n","import { ExtensionType } from '../extensions/Extensions';\nimport { PrepareUpload } from './PrepareUpload';\n\nimport type { System } from '../rendering/renderers/shared/system/System';\n\n/**\n * The prepare system provides renderer-specific plugins for pre-rendering DisplayObjects. This is useful for\n * asynchronously preparing and uploading to the GPU assets, textures, graphics waiting to be displayed.\n *\n * Do not instantiate this plugin directly. It is available from the `renderer.prepare` property.\n * @example\n * import 'pixi.js/prepare';\n * import { Application, Graphics } from 'pixi.js';\n *\n * // Create a new application (prepare will be auto-added to renderer)\n * const app = new Application();\n * await app.init();\n * document.body.appendChild(app.view);\n *\n * // Don't start rendering right away\n * app.stop();\n *\n * // Create a display object\n * const rect = new Graphics()\n * .beginFill(0x00ff00)\n * .drawRect(40, 40, 200, 200);\n *\n * // Add to the stage\n * app.stage.addChild(rect);\n *\n * // Don't start rendering until the graphic is uploaded to the GPU\n * app.renderer.prepare.upload(app.stage, () => {\n * app.start();\n * });\n * @memberof rendering\n */\nexport class PrepareSystem extends PrepareUpload implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'prepare',\n } as const;\n\n /** Destroys the plugin, don't use after this. */\n public destroy(): void\n {\n clearTimeout(this.timeout);\n this.renderer = null;\n this.queue = null;\n this.resolves = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { compileHighShaderGlProgram } from '../../high-shader/compileHighShaderToProgram';\nimport { colorBitGl } from '../../high-shader/shader-bits/colorBit';\nimport { generateTextureBatchBitGl } from '../../high-shader/shader-bits/generateTextureBatchBit';\nimport { roundPixelsBitGl } from '../../high-shader/shader-bits/roundPixelsBit';\nimport { batchSamplersUniformGroup } from '../../renderers/gl/shader/batchSamplersUniformGroup';\nimport { Shader } from '../../renderers/shared/shader/Shader';\nimport { State } from '../../renderers/shared/state/State';\nimport { MAX_TEXTURES } from '../shared/const';\n\nimport type { WebGLRenderer } from '../../renderers/gl/WebGLRenderer';\nimport type { Geometry } from '../../renderers/shared/geometry/Geometry';\nimport type { Batch } from '../shared/Batcher';\nimport type { BatcherAdaptor, BatcherPipe } from '../shared/BatcherPipe';\n\n/**\n * A BatcherAdaptor that uses WebGL to render batches.\n * @memberof rendering\n * @ignore\n */\nexport class GlBatchAdaptor implements BatcherAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor,\n ],\n name: 'batch',\n } as const;\n\n private _shader: Shader;\n private _didUpload = false;\n private readonly _tempState = State.for2d();\n\n public init(batcherPipe: BatcherPipe): void\n {\n const glProgram = compileHighShaderGlProgram({\n name: 'batch',\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n roundPixelsBitGl,\n ]\n });\n\n this._shader = new Shader({\n glProgram,\n resources: {\n batchSamplers: batchSamplersUniformGroup,\n }\n });\n\n batcherPipe.renderer.runners.contextChange.add(this);\n }\n\n public contextChange(): void\n {\n this._didUpload = false;\n }\n\n public start(batchPipe: BatcherPipe, geometry: Geometry): void\n {\n const renderer = batchPipe.renderer as WebGLRenderer;\n\n renderer.shader.bind(this._shader, this._didUpload);\n\n renderer.shader.updateUniformGroup(renderer.globalUniforms.uniformGroup);\n\n renderer.geometry.bind(geometry, this._shader.glProgram);\n }\n\n public execute(batchPipe: BatcherPipe, batch: Batch): void\n {\n const renderer = batchPipe.renderer as WebGLRenderer;\n\n this._didUpload = true;\n\n this._tempState.blendMode = batch.blendMode;\n\n renderer.state.set(this._tempState);\n\n const textures = batch.textures.textures;\n\n for (let i = 0; i < textures.length; i++)\n {\n renderer.texture.bind(textures[i], i);\n }\n\n renderer.geometry.draw('triangle-list', batch.size, batch.start);\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n","export function generateGPULayout(maxTextures: number): GPUBindGroupLayoutEntry[]\n{\n const gpuLayout: GPUBindGroupLayoutEntry[] = [];\n\n let bindIndex = 0;\n\n for (let i = 0; i < maxTextures; i++)\n {\n gpuLayout[bindIndex] = {\n texture: {\n sampleType: 'float',\n viewDimension: '2d',\n multisampled: false,\n },\n binding: bindIndex,\n visibility: GPUShaderStage.FRAGMENT,\n };\n bindIndex++;\n\n gpuLayout[bindIndex] = {\n sampler: {\n type: 'filtering',\n },\n binding: bindIndex,\n visibility: GPUShaderStage.FRAGMENT,\n };\n\n bindIndex++;\n }\n\n return gpuLayout;\n}\n","export function generateLayout(maxTextures: number): Record\n{\n const layout: Record = {};\n\n let bindIndex = 0;\n\n for (let i = 0; i < maxTextures; i++)\n {\n layout[`textureSource${i + 1}`] = bindIndex++;\n layout[`textureSampler${i + 1}`] = bindIndex++;\n }\n\n return layout;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram';\nimport { colorBit } from '../../high-shader/shader-bits/colorBit';\nimport { generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit';\nimport { roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit';\nimport { Shader } from '../../renderers/shared/shader/Shader';\nimport { State } from '../../renderers/shared/state/State';\nimport { MAX_TEXTURES } from '../shared/const';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup';\n\nimport type { GpuEncoderSystem } from '../../renderers/gpu/GpuEncoderSystem';\nimport type { WebGPURenderer } from '../../renderers/gpu/WebGPURenderer';\nimport type { Geometry } from '../../renderers/shared/geometry/Geometry';\nimport type { Batch } from '../shared/Batcher';\nimport type { BatcherAdaptor, BatcherPipe } from '../shared/BatcherPipe';\n\nconst tempState = State.for2d();\n\n/**\n * A BatcherAdaptor that uses the GPU to render batches.\n * @memberof rendering\n * @ignore\n */\nexport class GpuBatchAdaptor implements BatcherAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor,\n ],\n name: 'batch',\n } as const;\n\n private _shader: Shader;\n private _geometry: Geometry;\n\n public init()\n {\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'batch',\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n roundPixelsBit,\n ]\n });\n\n this._shader = new Shader({\n gpuProgram,\n groups: {\n // these will be dynamically allocated\n },\n });\n }\n\n public start(batchPipe: BatcherPipe, geometry: Geometry): void\n {\n const renderer = batchPipe.renderer as WebGPURenderer;\n const encoder = renderer.encoder as GpuEncoderSystem;\n const program = this._shader.gpuProgram;\n\n this._geometry = geometry;\n\n encoder.setGeometry(geometry);\n\n tempState.blendMode = 'normal';\n\n // this just initiates the pipeline, so we can then set bind groups on it\n renderer.pipeline.getPipeline(\n geometry,\n program,\n tempState\n );\n\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n\n // low level - we need to reset the bind group at location 1 to null\n // this is because we directly manipulate the bound buffer in the execture function for\n // performance reasons.\n // setting it to null ensures that the next bind group we set at location 1 will\n // be the one we want.\n encoder.resetBindGroup(1);\n\n encoder.setBindGroup(0, globalUniformsBindGroup, program);\n }\n\n public execute(batchPipe: BatcherPipe, batch: Batch): void\n {\n const program = this._shader.gpuProgram;\n const renderer = batchPipe.renderer as WebGPURenderer;\n const encoder = renderer.encoder as GpuEncoderSystem;\n\n if (!batch.bindGroup)\n {\n const textureBatch = batch.textures;\n\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n }\n\n tempState.blendMode = batch.blendMode;\n\n const gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup, program, 1\n );\n\n const pipeline = renderer.pipeline.getPipeline(\n this._geometry,\n program,\n tempState\n );\n\n batch.bindGroup._touch(renderer.textureGC.count);\n\n encoder.setPipeline(pipeline);\n\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { State } from '../../renderers/shared/state/State';\nimport { BatchGeometry } from '../gpu/BatchGeometry';\nimport { Batcher } from './Batcher';\n\nimport type { Geometry } from '../../renderers/shared/geometry/Geometry';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { BatchPipe, InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../renderers/types';\nimport type { Batch, BatchableObject } from './Batcher';\n\nexport interface BatcherAdaptor\n{\n start(batchPipe: BatcherPipe, geometry: Geometry): void\n init(batchPipe: BatcherPipe): void;\n execute(batchPipe: BatcherPipe, batch: Batch): void\n destroy(): void;\n contextChange?(): void;\n}\n\n// eslint-disable-next-line max-len\nexport class BatcherPipe implements InstructionPipe, BatchPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'batch',\n } as const;\n\n public state: State = State.for2d();\n public renderer: Renderer;\n\n private _batches: Record = Object.create(null);\n private _geometries: Record = Object.create(null);\n private _adaptor: BatcherAdaptor;\n\n private _activeBatch: Batcher;\n private _activeGeometry: Geometry;\n\n constructor(renderer: Renderer, adaptor: BatcherAdaptor)\n {\n this.renderer = renderer;\n this._adaptor = adaptor;\n\n this._adaptor.init(this);\n }\n\n public buildStart(instructionSet: InstructionSet)\n {\n if (!this._batches[instructionSet.uid])\n {\n const batcher = new Batcher();\n\n this._batches[instructionSet.uid] = batcher;\n this._geometries[batcher.uid] = new BatchGeometry();\n }\n\n this._activeBatch = this._batches[instructionSet.uid];\n this._activeGeometry = this._geometries[this._activeBatch.uid];\n\n this._activeBatch.begin();\n }\n\n public addToBatch(batchableObject: BatchableObject)\n {\n this._activeBatch.add(batchableObject);\n }\n\n public break(instructionSet: InstructionSet)\n {\n this._activeBatch.break(instructionSet);\n }\n\n public buildEnd(instructionSet: InstructionSet)\n {\n const activeBatch = this._activeBatch;\n const geometry = this._activeGeometry;\n\n activeBatch.finish(instructionSet);\n\n geometry.indexBuffer.setDataWithSize(activeBatch.indexBuffer, activeBatch.indexSize, true);\n\n geometry.buffers[0].setDataWithSize(activeBatch.attributeBuffer.float32View, activeBatch.attributeSize, false);\n }\n\n public upload(instructionSet: InstructionSet)\n {\n const batcher = this._batches[instructionSet.uid];\n const geometry = this._geometries[batcher.uid];\n\n if (batcher.dirty)\n {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n\n public execute(batch: Batch)\n {\n if (batch.action === 'startBatch')\n {\n const batcher = batch.batcher;\n const geometry = this._geometries[batcher.uid];\n\n this._adaptor.start(this, geometry);\n }\n\n this._adaptor.execute(this, batch);\n }\n\n public destroy()\n {\n this.state = null;\n this.renderer = null;\n\n this._adaptor.destroy();\n this._adaptor = null;\n\n for (const i in this._batches)\n {\n this._batches[i].destroy();\n }\n\n this._batches = null;\n\n for (const i in this._geometries)\n {\n this._geometries[i].destroy();\n }\n\n this._geometries = null;\n }\n}\n","/**\n * formats a shader so its more pleasant to read!\n * @param shader - a glsl shader program source\n */\nexport function formatShader(shader: string): string\n{\n const spl = shader.split(/([\\n{}])/g)\n .map((a) => a.trim())\n .filter((a) => a.length);\n\n let indent = '';\n\n const formatted = spl.map((a) =>\n {\n let indentedLine = indent + a;\n\n if (a === '{')\n {\n indent += ' ';\n }\n else if (a === '}')\n {\n indent = indent.substr(0, indent.length - 4);\n\n indentedLine = indent + a;\n }\n\n return indentedLine;\n }).join('\\n');\n\n return formatted;\n}\n\n","export const textureBit = {\n name: 'texture-bit',\n vertex: {\n header: /* wgsl */`\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3,\n }\n\n @group(2) @binding(2) var textureUniforms : TextureUniforms;\n `,\n main: /* wgsl */`\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* wgsl */`\n @group(2) @binding(0) var uTexture: texture_2d;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n `,\n main: /* wgsl */`\n outColor = textureSample(uTexture, uSampler, vUV);\n `\n }\n};\n\nexport const textureBitGl = {\n name: 'texture-bit',\n vertex: {\n header: /* glsl */`\n uniform mat3 uTextureMatrix;\n `,\n main: /* glsl */`\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n `\n },\n fragment: {\n header: /* glsl */`\n uniform sampler2D uTexture;\n\n \n `,\n main: /* glsl */`\n outColor = texture(uTexture, vUV);\n `\n }\n};\n\n","import type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe, RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderable } from '../../../rendering/renderers/shared/Renderable';\nimport type { RenderPipes } from '../../../rendering/renderers/types';\nimport type { Container } from '../Container';\nimport type { RenderGroup } from '../RenderGroup';\n\nexport function buildInstructions(renderGroup: RenderGroup, renderPipes: RenderPipes)\n{\n const root = renderGroup.root;\n const instructionSet = renderGroup.instructionSet;\n\n instructionSet.reset();\n\n // TODO add some events / runners for build start\n renderPipes.batch.buildStart(instructionSet);\n renderPipes.blendMode.buildStart();\n renderPipes.colorMask.buildStart();\n\n if (root.sortableChildren)\n {\n root.sortChildren();\n }\n\n collectAllRenderablesAdvanced(root, instructionSet, renderPipes, true);\n\n // instructionSet.log();\n // TODO add some events / runners for build end\n renderPipes.batch.buildEnd(instructionSet);\n renderPipes.blendMode.buildEnd(instructionSet);\n\n // instructionSet.log();\n}\n\nexport function collectAllRenderables(\n container: Container,\n instructionSet: InstructionSet,\n rendererPipes: RenderPipes\n): void\n{\n // if there is 0b01 or 0b10 the return value\n\n if (container.globalDisplayStatus < 0b111 || !container.includeInBuild) return;\n\n if (container.sortableChildren)\n {\n container.sortChildren();\n }\n\n if (container.isSimple)\n {\n collectAllRenderablesSimple(container, instructionSet, rendererPipes);\n }\n else\n {\n collectAllRenderablesAdvanced(container, instructionSet, rendererPipes, false);\n }\n}\n\nfunction collectAllRenderablesSimple(\n container: Container,\n instructionSet: InstructionSet,\n renderPipes: RenderPipes\n): void\n{\n if (container.renderPipeId)\n {\n // TODO add blends in\n renderPipes.blendMode.setBlendMode(container as Renderable, container.groupBlendMode, instructionSet);\n\n container.didViewUpdate = false;\n\n const rp = renderPipes as unknown as Record;\n\n rp[container.renderPipeId].addRenderable(container as Renderable, instructionSet);\n }\n\n if (!container.isRenderGroupRoot)\n {\n const children = container.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++)\n {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n}\n\nfunction collectAllRenderablesAdvanced(\n container: Container,\n instructionSet: InstructionSet,\n renderPipes: RenderPipes,\n isRoot: boolean\n): void\n{\n if (!isRoot && container.isRenderGroupRoot)\n {\n renderPipes.renderGroup.addRenderGroup(container.renderGroup, instructionSet);\n }\n else\n {\n for (let i = 0; i < container.effects.length; i++)\n {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe as keyof RenderPipes]as InstructionPipe;\n\n pipe.push(effect, container, instructionSet);\n }\n\n const renderPipeId = container.renderPipeId;\n\n if (renderPipeId)\n {\n // TODO add blends in\n renderPipes.blendMode.setBlendMode(container as Renderable, container.groupBlendMode, instructionSet);\n container.didViewUpdate = false;\n\n const pipe = renderPipes[renderPipeId as keyof RenderPipes]as RenderPipe;\n\n pipe.addRenderable(container, instructionSet);\n }\n\n const children = container.children;\n\n if (children.length)\n {\n for (let i = 0; i < children.length; i++)\n {\n collectAllRenderables(children[i], instructionSet, renderPipes);\n }\n }\n\n // loop backwards through effects\n for (let i = container.effects.length - 1; i >= 0; i--)\n {\n const effect = container.effects[i];\n const pipe = renderPipes[effect.pipe as keyof RenderPipes]as InstructionPipe;\n\n pipe.pop(effect, container, instructionSet);\n }\n }\n}\n\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { FilterEffect } from '../../../filters/FilterEffect';\nimport { MaskFilter } from '../../../filters/mask/MaskFilter';\nimport { Bounds } from '../../../scene/container/bounds/Bounds';\nimport { getGlobalBounds } from '../../../scene/container/bounds/getGlobalBounds';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions';\nimport { Sprite } from '../../../scene/sprite/Sprite';\nimport { BigPool } from '../../../utils/pool/PoolGroup';\nimport { Texture } from '../../renderers/shared/texture/Texture';\nimport { TexturePool } from '../../renderers/shared/texture/TexturePool';\n\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { PoolItem } from '../../../utils/pool/Pool';\nimport type { Instruction } from '../../renderers/shared/instructions/Instruction';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { RenderTarget } from '../../renderers/shared/renderTarget/RenderTarget';\nimport type { Renderer } from '../../renderers/types';\nimport type { AlphaMask } from './AlphaMask';\n\ntype MaskMode = 'pushMaskBegin' | 'pushMaskEnd' | 'popMaskBegin' | 'popMaskEnd';\n\nconst tempBounds = new Bounds();\n\nclass AlphaMaskEffect extends FilterEffect implements PoolItem\n{\n constructor()\n {\n super({\n filters: [new MaskFilter({\n sprite: new Sprite(Texture.EMPTY)\n })]\n });\n }\n\n get sprite(): Sprite\n {\n return (this.filters[0] as MaskFilter).sprite;\n }\n\n set sprite(value: Sprite)\n {\n (this.filters[0] as MaskFilter).sprite = value;\n }\n\n public init: () => void;\n}\n\nexport interface AlphaMaskInstruction extends Instruction\n{\n renderPipeId: 'alphaMask',\n action: MaskMode,\n mask: AlphaMask,\n maskedContainer: Container,\n renderMask: boolean,\n}\n\nexport interface AlphaMaskData\n{\n filterEffect: AlphaMaskEffect,\n maskedContainer: Container,\n previousRenderTarget?: RenderTarget,\n filterTexture?: Texture,\n}\n\nexport class AlphaMaskPipe implements InstructionPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'alphaMask',\n } as const;\n\n private _renderer: Renderer;\n private _activeMaskStage: AlphaMaskData[] = [];\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public push(mask: Effect, maskedContainer: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'alphaMask',\n action: 'pushMaskBegin',\n mask,\n canBundle: false,\n maskedContainer\n } as AlphaMaskInstruction);\n\n if ((mask as AlphaMask).renderMaskToTexture)\n {\n const maskContainer = (mask as AlphaMask).mask;\n\n maskContainer.includeInBuild = true;\n\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes\n );\n\n maskContainer.includeInBuild = false;\n }\n\n renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'alphaMask',\n action: 'pushMaskEnd',\n mask,\n maskedContainer,\n canBundle: false,\n } as AlphaMaskInstruction);\n }\n\n public pop(mask: Effect, _maskedContainer: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'alphaMask',\n action: 'popMaskEnd',\n mask,\n canBundle: false,\n } as AlphaMaskInstruction);\n }\n\n public execute(instruction: AlphaMaskInstruction)\n {\n const renderer = this._renderer;\n const renderMask = instruction.mask.renderMaskToTexture;\n\n if (instruction.action === 'pushMaskBegin')\n {\n const filterEffect = BigPool.get(AlphaMaskEffect);\n\n if (renderMask)\n {\n instruction.mask.mask.measurable = true;\n\n const bounds = getGlobalBounds(instruction.mask.mask, true, tempBounds);\n\n instruction.mask.mask.measurable = false;\n\n bounds.ceil();\n\n const filterTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n 1,\n false\n );\n\n renderer.renderTarget.push(filterTexture, true);\n\n renderer.globalUniforms.push({\n offset: bounds,\n worldColor: 0xFFFFFFFF\n });\n\n const sprite = filterEffect.sprite;\n\n sprite.texture = filterTexture;\n\n sprite.worldTransform.tx = bounds.minX;\n sprite.worldTransform.ty = bounds.minY;\n\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer,\n filterTexture,\n });\n }\n else\n {\n filterEffect.sprite = instruction.mask.mask as Sprite;\n\n this._activeMaskStage.push({\n filterEffect,\n maskedContainer: instruction.maskedContainer,\n });\n }\n }\n else if (instruction.action === 'pushMaskEnd')\n {\n const maskData = this._activeMaskStage[this._activeMaskStage.length - 1];\n\n if (renderMask)\n {\n renderer.renderTarget.pop();\n renderer.globalUniforms.pop();\n }\n\n renderer.filter.push({\n renderPipeId: 'filter',\n action: 'pushFilter',\n container: maskData.maskedContainer,\n filterEffect: maskData.filterEffect,\n canBundle: false,\n });\n }\n else if (instruction.action === 'popMaskEnd')\n {\n renderer.filter.pop();\n\n const maskData = this._activeMaskStage.pop();\n\n if (renderMask)\n {\n TexturePool.returnTexture(maskData.filterTexture);\n }\n\n BigPool.return(maskData.filterEffect);\n }\n }\n\n public destroy(): void\n {\n this._renderer = null;\n this._activeMaskStage = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { Instruction } from '../../renderers/shared/instructions/Instruction';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../renderers/types';\nimport type { ColorMask } from './ColorMask';\n\nexport interface ColorMaskInstruction extends Instruction\n{\n renderPipeId: 'colorMask',\n colorMask: number,\n}\n\nexport class ColorMaskPipe implements InstructionPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'colorMask',\n } as const;\n\n private readonly _renderer: Renderer;\n private _colorStack: number[] = [];\n private _colorStackIndex = 0;\n private _currentColor = 0;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public buildStart()\n {\n this._colorStack[0] = 0xF;\n this._colorStackIndex = 1;\n this._currentColor = 0xF;\n }\n\n public push(mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n const colorStack = this._colorStack;\n\n colorStack[this._colorStackIndex] = colorStack[this._colorStackIndex - 1] & (mask as ColorMask).mask;\n\n const currentColor = this._colorStack[this._colorStackIndex];\n\n if (currentColor !== this._currentColor)\n {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: 'colorMask',\n colorMask: currentColor,\n canBundle: false,\n } as ColorMaskInstruction);\n }\n\n this._colorStackIndex++;\n }\n\n public pop(_mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n const colorStack = this._colorStack;\n\n this._colorStackIndex--;\n\n const currentColor = colorStack[this._colorStackIndex - 1];\n\n if (currentColor !== this._currentColor)\n {\n this._currentColor = currentColor;\n\n instructionSet.add({\n renderPipeId: 'colorMask',\n colorMask: currentColor,\n canBundle: false,\n } as ColorMaskInstruction);\n }\n }\n\n public execute(instruction: ColorMaskInstruction)\n {\n const renderer = this._renderer;\n\n renderer.colorMask.setMask(instruction.colorMask);\n }\n\n public destroy()\n {\n this._colorStack = null;\n }\n}\n","import { addMaskBounds } from '../utils/addMaskBounds';\nimport { addMaskLocalBounds } from '../utils/addMaskLocalBounds';\n\nimport type { Point } from '../../../maths/point/Point';\nimport type { Bounds } from '../../../scene/container/bounds/Bounds';\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\n\nexport class ScissorMask implements Effect\n{\n public priority = 0;\n public mask: Container;\n public pipe = 'scissorMask';\n\n constructor(mask: Container)\n {\n this.mask = mask;\n\n this.mask.renderable = false;\n this.mask.measurable = false;\n }\n\n public addBounds(bounds: Bounds, skipUpdateTransform?: boolean): void\n {\n addMaskBounds(this.mask, bounds, skipUpdateTransform);\n }\n\n public addLocalBounds(bounds: Bounds, localRoot: Container): void\n {\n addMaskLocalBounds(this.mask, bounds, localRoot);\n }\n\n public containsPoint(point: Point, hitTestFn: (container: Container, point: Point) => boolean): boolean\n {\n const mask = this.mask as any;\n\n // if the point is in the mask, yay!\n return hitTestFn(mask, point);\n }\n\n public reset()\n {\n this.mask.measurable = true;\n this.mask = null;\n }\n\n public destroy(): void\n {\n this.reset();\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { collectAllRenderables } from '../../../scene/container/utils/buildInstructions';\nimport { CLEAR } from '../../renderers/gl/const';\nimport { STENCIL_MODES } from '../../renderers/shared/state/const';\n\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { Instruction } from '../../renderers/shared/instructions/Instruction';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { Renderable } from '../../renderers/shared/Renderable';\nimport type { Renderer } from '../../renderers/types';\nimport type { StencilMask } from './StencilMask';\n\ntype MaskMode = 'pushMaskBegin' | 'pushMaskEnd' | 'popMaskBegin' | 'popMaskEnd';\n\nexport interface StencilMaskInstruction extends Instruction\n{\n renderPipeId: 'stencilMask',\n action: MaskMode,\n mask: StencilMask,\n}\n\nexport class StencilMaskPipe implements InstructionPipe\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'stencilMask',\n } as const;\n\n private _renderer: Renderer;\n\n // used when building and also when executing..\n private _maskStackHash: Record = {};\n\n private _maskHash = new WeakMap();\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public push(mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const effect = mask as StencilMask;\n\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n renderer.renderPipes.blendMode.setBlendMode(effect.mask as Renderable, 'none', instructionSet);\n\n instructionSet.add({\n renderPipeId: 'stencilMask',\n action: 'pushMaskBegin',\n mask,\n canBundle: false,\n } as StencilMaskInstruction);\n\n const maskContainer = effect.mask;\n\n maskContainer.includeInBuild = true;\n\n if (!this._maskHash.has(effect))\n {\n this._maskHash.set(effect, {\n instructionsStart: 0,\n instructionsLength: 0,\n });\n }\n\n const maskData = this._maskHash.get(effect);\n\n maskData.instructionsStart = instructionSet.instructionSize;\n\n collectAllRenderables(\n maskContainer,\n instructionSet,\n renderer.renderPipes,\n );\n\n maskContainer.includeInBuild = false;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'stencilMask',\n action: 'pushMaskEnd',\n mask,\n canBundle: false,\n } as StencilMaskInstruction);\n\n const instructionsLength = instructionSet.instructionSize - maskData.instructionsStart - 1;\n\n maskData.instructionsLength = instructionsLength;\n\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n\n this._maskStackHash[renderTargetUid] ??= 0;\n }\n\n public pop(mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const effect = mask as StencilMask;\n\n const renderer = this._renderer;\n\n // stencil is stored based on current render target..\n renderer.renderPipes.batch.break(instructionSet);\n renderer.renderPipes.blendMode.setBlendMode(effect.mask as Renderable, 'none', instructionSet);\n\n instructionSet.add({\n renderPipeId: 'stencilMask',\n action: 'popMaskBegin',\n canBundle: false,\n });\n\n const maskData = this._maskHash.get(mask as StencilMask);\n\n for (let i = 0; i < maskData.instructionsLength; i++)\n {\n // eslint-disable-next-line max-len\n instructionSet.instructions[instructionSet.instructionSize++] = instructionSet.instructions[maskData.instructionsStart++];\n }\n\n instructionSet.add({\n renderPipeId: 'stencilMask',\n action: 'popMaskEnd',\n canBundle: false,\n });\n }\n\n public execute(instruction: StencilMaskInstruction)\n {\n const renderer = this._renderer;\n const renderTargetUid = renderer.renderTarget.renderTarget.uid;\n\n let maskStackIndex = this._maskStackHash[renderTargetUid] ??= 0;\n\n if (instruction.action === 'pushMaskBegin')\n {\n // we create the depth and stencil buffers JIT\n // as no point allocating the memory if we don't use it\n renderer.renderTarget.ensureDepthStencil();\n\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD, maskStackIndex);\n\n maskStackIndex++;\n\n renderer.colorMask.setMask(0);\n }\n else if (instruction.action === 'pushMaskEnd')\n {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n renderer.colorMask.setMask(0xF);\n }\n else if (instruction.action === 'popMaskBegin')\n {\n renderer.colorMask.setMask(0);\n\n if (maskStackIndex !== 0)\n {\n renderer.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE, maskStackIndex);\n }\n else\n {\n renderer.renderTarget.clear(null, CLEAR.STENCIL);\n renderer.stencil.setStencilMode(STENCIL_MODES.DISABLED, maskStackIndex);\n }\n\n maskStackIndex--;\n }\n else if (instruction.action === 'popMaskEnd')\n {\n renderer.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE, maskStackIndex);\n\n renderer.colorMask.setMask(0xF);\n }\n\n this._maskStackHash[renderTargetUid] = maskStackIndex;\n }\n\n public destroy()\n {\n this._renderer = null;\n this._maskStackHash = null;\n this._maskHash = null;\n }\n}\n","/**\n * Constants for various buffer types in Pixi\n * @see BUFFER_TYPE\n * @name BUFFER_TYPE\n * @static\n * @enum {number}\n * @property {number} ELEMENT_ARRAY_BUFFER - buffer type for using as an index buffer\n * @property {number} ARRAY_BUFFER - buffer type for using attribute data\n * @property {number} UNIFORM_BUFFER - the buffer type is for uniform buffer objects\n */\nexport enum BUFFER_TYPE\n // eslint-disable-next-line @typescript-eslint/indent\n {\n ELEMENT_ARRAY_BUFFER = 34963,\n ARRAY_BUFFER = 34962,\n UNIFORM_BUFFER = 35345,\n}\n\n","import type { BUFFER_TYPE } from './const';\n\nexport class GlBuffer\n{\n public buffer: WebGLBuffer;\n public updateID: number;\n public byteLength: number;\n public type: number;\n\n constructor(buffer: WebGLBuffer, type: BUFFER_TYPE)\n {\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = type;\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { BufferUsage } from '../../shared/buffer/const';\nimport { BUFFER_TYPE } from './const';\nimport { GlBuffer } from './GlBuffer';\n\nimport type { Buffer } from '../../shared/buffer/Buffer';\nimport type { System } from '../../shared/system/System';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\nimport type { WebGLRenderer } from '../WebGLRenderer';\n\n/**\n * System plugin to the renderer to manage buffers.\n *\n * WebGL uses Buffers as a way to store objects to the GPU.\n * This system makes working with them a lot easier.\n *\n * Buffers are used in three main places in WebGL\n * - geometry information\n * - Uniform information (via uniform buffer objects - a WebGL 2 only feature)\n * - Transform feedback information. (WebGL 2 only feature)\n *\n * This system will handle the binding of buffers to the GPU as well as uploading\n * them. With this system, you never need to work directly with GPU buffers, but instead work with\n * the Buffer class.\n * @class\n * @memberof rendering\n */\nexport class GlBufferSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'buffer',\n } as const;\n\n private _gl: GlRenderingContext;\n private _gpuBuffers: {[key: number]: GlBuffer} = Object.create(null);\n\n /** Cache keeping track of the base bound buffer bases */\n private readonly _boundBufferBases: {[key: number]: Buffer} = Object.create(null);\n\n private _renderer: WebGLRenderer;\n\n /**\n * @param {Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n /**\n * @ignore\n */\n public destroy(): void\n {\n this._renderer = null;\n this._gl = null;\n this._gpuBuffers = null;\n (this._boundBufferBases as null) = null;\n }\n\n /** Sets up the renderer context and necessary buffers. */\n protected contextChange(): void\n {\n this._gpuBuffers = Object.create(null);\n this._gl = this._renderer.gl;\n }\n\n public getGlBuffer(buffer: Buffer): GlBuffer\n {\n return this._gpuBuffers[buffer.uid] || this.createGLBuffer(buffer);\n }\n\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n public bind(buffer: Buffer): void\n {\n const { _gl: gl } = this;\n\n const glBuffer = this.getGlBuffer(buffer);\n\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n }\n\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n public bindBufferBase(buffer: Buffer, index: number): void\n {\n const { _gl: gl } = this;\n\n if (this._boundBufferBases[index] !== buffer)\n {\n const glBuffer = this.getGlBuffer(buffer);\n\n this._boundBufferBases[index] = buffer;\n\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param buffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n */\n public bindBufferRange(buffer: Buffer, index?: number, offset?: number): void\n {\n const { _gl: gl } = this;\n\n offset = offset || 0;\n\n const glBuffer = this.getGlBuffer(buffer);\n\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, 256);\n }\n\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {Buffer} buffer - the buffer to update\n */\n public updateBuffer(buffer: Buffer): GlBuffer\n {\n const { _gl: gl } = this;\n\n const glBuffer = this.getGlBuffer(buffer);\n\n if (buffer._updateID === glBuffer.updateID)\n {\n return glBuffer;\n }\n\n glBuffer.updateID = buffer._updateID;\n\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n\n const data = buffer.data;\n\n if (glBuffer.byteLength >= buffer.data.byteLength)\n {\n // assuming our buffers are aligned to 4 bits...\n // offset is always zero for now!\n gl.bufferSubData(glBuffer.type, 0, data, 0, buffer._updateSize / data.BYTES_PER_ELEMENT);\n }\n else\n {\n const drawType = (buffer.descriptor.usage & BufferUsage.STATIC) ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n\n glBuffer.byteLength = data.byteLength;\n\n // assuming our buffers are aligned to 4 bits...\n gl.bufferData(glBuffer.type, data, drawType);\n }\n\n return glBuffer;\n }\n\n /** dispose all WebGL resources of all managed buffers */\n public destroyAll(): void\n {\n const gl = this._gl;\n\n for (const id in this._gpuBuffers)\n {\n gl.deleteBuffer(this._gpuBuffers[id].buffer);\n }\n\n this._gpuBuffers = Object.create(null);\n }\n\n /**\n * Disposes buffer\n * @param {Buffer} buffer - buffer with data\n * @param {boolean} [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n protected onBufferDestroy(buffer: Buffer, contextLost?: boolean): void\n {\n const glBuffer = this._gpuBuffers[buffer.uid];\n\n const gl = this._gl;\n\n if (!contextLost)\n {\n gl.deleteBuffer(glBuffer.buffer);\n }\n\n this._gpuBuffers[buffer.uid] = null;\n }\n\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n protected createGLBuffer(buffer: Buffer): GlBuffer\n {\n const { _gl: gl } = this;\n\n let type = BUFFER_TYPE.ARRAY_BUFFER;\n\n if ((buffer.descriptor.usage & BufferUsage.INDEX))\n {\n type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n }\n else if ((buffer.descriptor.usage & BufferUsage.UNIFORM))\n {\n type = BUFFER_TYPE.UNIFORM_BUFFER;\n }\n\n const glBuffer = new GlBuffer(gl.createBuffer(), type);\n\n this._gpuBuffers[buffer.uid] = glBuffer;\n\n buffer.on('destroy', this.onBufferDestroy, this);\n\n return glBuffer;\n }\n}\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { warn } from '../../../../utils/logging/warn';\nimport { type GpuPowerPreference } from '../../types';\n\nimport type { System } from '../../shared/system/System';\nimport type { WebGLRenderer } from '../WebGLRenderer';\nimport type { WebGLExtensions } from './WebGLExtensions';\n\n/**\n * Options for the context system.\n * @memberof rendering\n * @property {WebGL2RenderingContext | null} [context=null] - User-provided WebGL rendering context object.\n * @property {GpuPowerPreference} [powerPreference='default'] - An optional hint indicating what configuration\n * of GPU is suitable for the WebGL context, can be `'high-performance'` or `'low-power'`. Setting to `'high-performance'`\n * will prioritize rendering performance over power consumption, while setting to `'low-power'` will prioritize power saving\n * over rendering performance.\n * @property {boolean} [premultipliedAlpha=true] - Whether the compositor will assume the drawing buffer contains\n * colors with premultiplied alpha.\n * @property {boolean} [preserveDrawingBuffer=false] - Whether to enable drawing buffer preservation.\n * If enabled, the drawing buffer will preserve\n * its value until cleared or overwritten. Enable this if you need to call `toDataUrl` on the WebGL context.\n * @property {boolean} [antialias] - Whether to enable antialiasing.\n * @property {1 | 2} [preferWebGLVersion=2] - The preferred WebGL version to use.\n */\nexport interface ContextSystemOptions\n{\n /**\n * User-provided WebGL rendering context object.\n * @default null\n * @memberof rendering.SharedRendererOptions\n */\n context: WebGL2RenderingContext | null;\n /**\n * An optional hint indicating what configuration of GPU is suitable for the WebGL context,\n * can be `'high-performance'` or `'low-power'`.\n * Setting to `'high-performance'` will prioritize rendering performance over power consumption,\n * while setting to `'low-power'` will prioritize power saving over rendering performance.\n * @memberof rendering.SharedRendererOptions\n * @default undefined\n */\n powerPreference?: GpuPowerPreference;\n\n /**\n * Whether the compositor will assume the drawing buffer contains colors with premultiplied alpha.\n * @default true\n * @memberof rendering.SharedRendererOptions\n */\n premultipliedAlpha: boolean;\n /**\n * Whether to enable drawing buffer preservation. If enabled, the drawing buffer will preserve\n * its value until cleared or overwritten. Enable this if you need to call `toDataUrl` on the WebGL context.\n * @default false\n * @memberof rendering.SharedRendererOptions\n */\n preserveDrawingBuffer: boolean;\n\n antialias?: boolean;\n\n /**\n * The preferred WebGL version to use.\n * @default 2\n * @memberof rendering.SharedRendererOptions\n */\n preferWebGLVersion?: 1 | 2;\n}\n\n/**\n * System plugin to the renderer to manage the context\n * @memberof rendering\n */\nexport class GlContextSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'context',\n } as const;\n\n /** The default options for the system. */\n public static defaultOptions: ContextSystemOptions = {\n /**\n * {@link WebGLOptions.context}\n * @default null\n */\n context: null,\n /**\n * {@link WebGLOptions.premultipliedAlpha}\n * @default true\n */\n premultipliedAlpha: true,\n /**\n * {@link WebGLOptions.preserveDrawingBuffer}\n * @default false\n */\n preserveDrawingBuffer: false,\n /**\n * {@link WebGLOptions.powerPreference}\n * @default default\n */\n powerPreference: undefined,\n /**\n * {@link WebGLOptions.webGLVersion}\n * @default 2\n */\n preferWebGLVersion: 2,\n };\n\n protected CONTEXT_UID: number;\n protected gl: WebGL2RenderingContext;\n\n /**\n * Features supported by current renderer.\n * @type {object}\n * @readonly\n */\n public supports = {\n /** Support for 32-bit indices buffer. */\n uint32Indices: true,\n /** Support for UniformBufferObjects */\n uniformBufferObject: true,\n /** Support for VertexArrayObjects */\n vertexArrayObject: true,\n /** Support for SRGB texture format */\n srgbTextures: true,\n /** Support for wrapping modes if a texture is non-power of two */\n nonPowOf2wrapping: true,\n /** Support for MSAA (antialiasing of dynamic textures) */\n msaa: true,\n /** Support for mipmaps if a texture is non-power of two */\n nonPowOf2mipmaps: true,\n };\n\n /**\n * Extensions available.\n * @type {object}\n * @readonly\n * @property {WEBGL_draw_buffers} drawBuffers - WebGL v1 extension\n * @property {WEBGL_depth_texture} depthTexture - WebGL v1 extension\n * @property {OES_texture_float} floatTexture - WebGL v1 extension\n * @property {WEBGL_lose_context} loseContext - WebGL v1 extension\n * @property {OES_vertex_array_object} vertexArrayObject - WebGL v1 extension\n * @property {EXT_texture_filter_anisotropic} anisotropicFiltering - WebGL v1 and v2 extension\n */\n public extensions: WebGLExtensions;\n\n public webGLVersion: 1 | 2;\n\n private _renderer: WebGLRenderer;\n private _contextLossForced: boolean;\n\n /** @param renderer - The renderer this System works for. */\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n\n this.extensions = Object.create(null);\n\n // Bind functions\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost(): boolean\n {\n return (!this.gl || this.gl.isContextLost());\n }\n\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n protected contextChange(gl: WebGL2RenderingContext): void\n {\n this.gl = gl;\n this._renderer.gl = gl;\n }\n\n public init(options: ContextSystemOptions): void\n {\n options = { ...GlContextSystem.defaultOptions, ...options };\n\n /*\n * The options passed in to create a new WebGL context.\n */\n if (options.context)\n {\n this.initFromContext(options.context);\n }\n else\n {\n const alpha = this._renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const antialias = options.antialias && !this._renderer.backBuffer.useBackBuffer;\n\n this.createContext(options.preferWebGLVersion, {\n alpha,\n premultipliedAlpha,\n antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference ?? 'default',\n });\n }\n }\n\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n protected initFromContext(gl: WebGL2RenderingContext): void\n {\n this.gl = gl;\n\n this.webGLVersion = gl instanceof DOMAdapter.get().getWebGLRenderingContext() ? 1 : 2;\n\n this.getExtensions();\n\n this.validateContext(gl);\n\n this._renderer.runners.contextChange.emit(gl);\n\n const element = this._renderer.view.canvas;\n\n (element as any).addEventListener('webglcontextlost', this.handleContextLost, false);\n element.addEventListener('webglcontextrestored', this.handleContextRestored, false);\n }\n\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param preferWebGLVersion\n * @param {object} options - context attributes\n */\n protected createContext(preferWebGLVersion: 1 | 2, options: WebGLContextAttributes): void\n {\n let gl: WebGL2RenderingContext | WebGLRenderingContext;\n const canvas = this._renderer.view.canvas;\n\n if (preferWebGLVersion === 2)\n {\n gl = canvas.getContext('webgl2', options);\n }\n\n if (!gl)\n {\n gl = canvas.getContext('webgl', options);\n\n if (!gl)\n {\n // fail, not able to get a context\n throw new Error('This browser does not support WebGL. Try using the canvas renderer');\n }\n }\n\n this.gl = gl as WebGL2RenderingContext;\n\n this.initFromContext(this.gl);\n }\n\n /** Auto-populate the {@link GlContextSystem.extensions extensions}. */\n protected getExtensions(): void\n {\n // time to set up default extensions that Pixi uses.\n const { gl } = this;\n\n const common = {\n anisotropicFiltering: gl.getExtension('EXT_texture_filter_anisotropic'),\n floatTextureLinear: gl.getExtension('OES_texture_float_linear'),\n\n s3tc: gl.getExtension('WEBGL_compressed_texture_s3tc'),\n s3tc_sRGB: gl.getExtension('WEBGL_compressed_texture_s3tc_srgb'), // eslint-disable-line camelcase\n etc: gl.getExtension('WEBGL_compressed_texture_etc'),\n etc1: gl.getExtension('WEBGL_compressed_texture_etc1'),\n pvrtc: gl.getExtension('WEBGL_compressed_texture_pvrtc')\n || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n atc: gl.getExtension('WEBGL_compressed_texture_atc'),\n astc: gl.getExtension('WEBGL_compressed_texture_astc'),\n bptc: gl.getExtension('EXT_texture_compression_bptc'),\n rgtc: gl.getExtension('EXT_texture_compression_rgtc'),\n loseContext: gl.getExtension('WEBGL_lose_context'),\n };\n\n if (this.webGLVersion === 1)\n {\n this.extensions = {\n ...common,\n\n drawBuffers: gl.getExtension('WEBGL_draw_buffers'),\n depthTexture: gl.getExtension('WEBGL_depth_texture'),\n vertexArrayObject: gl.getExtension('OES_vertex_array_object')\n || gl.getExtension('MOZ_OES_vertex_array_object')\n || gl.getExtension('WEBKIT_OES_vertex_array_object'),\n uint32ElementIndex: gl.getExtension('OES_element_index_uint'),\n // Floats and half-floats\n floatTexture: gl.getExtension('OES_texture_float'),\n floatTextureLinear: gl.getExtension('OES_texture_float_linear'),\n textureHalfFloat: gl.getExtension('OES_texture_half_float'),\n textureHalfFloatLinear: gl.getExtension('OES_texture_half_float_linear'),\n vertexAttribDivisorANGLE: gl.getExtension('ANGLE_instanced_arrays'),\n srgb: gl.getExtension('EXT_sRGB'),\n };\n }\n else\n {\n this.extensions = {\n ...common,\n colorBufferFloat: gl.getExtension('EXT_color_buffer_float'),\n };\n\n const provokeExt = gl.getExtension('WEBGL_provoking_vertex');\n\n if (provokeExt)\n {\n provokeExt.provokingVertexWEBGL(provokeExt.FIRST_VERTEX_CONVENTION_WEBGL);\n }\n }\n }\n\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n protected handleContextLost(event: WebGLContextEvent): void\n {\n event.preventDefault();\n\n // only restore if we purposefully nuked it\n if (this._contextLossForced)\n {\n this._contextLossForced = false;\n // Restore the context after this event has exited\n setTimeout(() =>\n {\n if (this.gl.isContextLost())\n {\n this.extensions.loseContext?.restoreContext();\n }\n }, 0);\n }\n }\n\n /** Handles a restored webgl context. */\n protected handleContextRestored(): void\n {\n this._renderer.runners.contextChange.emit(this.gl);\n }\n\n public destroy(): void\n {\n const element = this._renderer.view.canvas;\n\n this._renderer = null;\n\n // remove listeners\n (element as any).removeEventListener('webglcontextlost', this.handleContextLost);\n element.removeEventListener('webglcontextrestored', this.handleContextRestored);\n\n this.gl.useProgram(null);\n\n this.extensions.loseContext?.loseContext();\n }\n\n /**\n * this function can be called to force a webGL context loss\n * this will release all resources on the GPU.\n * Useful if you need to put Pixi to sleep, and save some GPU memory\n *\n * As soon as render is called - all resources will be created again.\n */\n public forceContextLoss(): void\n {\n this.extensions.loseContext?.loseContext();\n this._contextLossForced = true;\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n protected validateContext(gl: WebGL2RenderingContext): void\n {\n const attributes = gl.getContextAttributes();\n\n // this is going to be fairly simple for now.. but at least we have room to grow!\n if (attributes && !attributes.stencil)\n {\n // #if _DEBUG\n /* eslint-disable max-len, no-console */\n warn('Provided WebGL context does not have a stencil buffer, masks may not render correctly');\n /* eslint-enable max-len, no-console */\n // #endif\n }\n\n // support\n const supports = this.supports;\n\n const isWebGl2 = this.webGLVersion === 2;\n const extensions = this.extensions;\n\n supports.uint32Indices = isWebGl2 || !!extensions.uint32ElementIndex;\n supports.uniformBufferObject = isWebGl2;\n supports.vertexArrayObject = isWebGl2 || !!extensions.vertexArrayObject;\n supports.srgbTextures = isWebGl2 || !!extensions.srgb;\n supports.nonPowOf2wrapping = isWebGl2;\n supports.nonPowOf2mipmaps = isWebGl2;\n supports.msaa = isWebGl2;\n\n if (!supports.uint32Indices)\n {\n // #if _DEBUG\n /* eslint-disable max-len, no-console */\n warn('Provided WebGL context does not support 32 index buffer, large scenes may not render correctly');\n /* eslint-enable max-len, no-console */\n // #endif\n }\n }\n}\n","let warnCount = 0;\nconst maxWarnings = 500;\n\n/**\n * Logs a PixiJS warning message to the console. Stops logging after 500 warnings have been logged.\n * @param args - The warning message(s) to log\n * @returns {void}\n * @memberof utils\n * @ignore\n */\nexport function warn(...args: any[])\n{\n if (warnCount === maxWarnings) return;\n\n warnCount++;\n\n if (warnCount === maxWarnings)\n {\n console.warn('PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS.');\n }\n else\n {\n console.warn('PixiJS Warning: ', ...args);\n }\n}\n","import { warn } from '../../../../../utils/logging/warn';\nimport { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat';\n\nimport type { Geometry } from '../../../shared/geometry/Geometry';\nimport type { ExtractedAttributeData } from './extractAttributesFromGlProgram';\n\n/**\n * This function looks at the attribute information provided to the geometry and attempts\n * to fill in an gaps. WE do this by looking at the extracted data from the shader and\n * making best guesses.\n *\n * Most of th etime users don't need to provide all the attribute info beyond the data itself, so we\n * can fill in the gaps for them. If you are using attributes in a more advanced way, you can\n * don't forget to add all the info at creation!\n * @param geometry - the geometry to ensure attributes for\n * @param extractedData - the extracted data from the shader\n */\nexport function ensureAttributes(\n geometry: Geometry,\n extractedData: Record\n): void\n{\n for (const i in geometry.attributes)\n {\n const attribute = geometry.attributes[i];\n const attributeData = extractedData[i];\n\n if (attributeData)\n {\n attribute.location ??= attributeData.location;\n attribute.format ??= attributeData.format;\n attribute.offset ??= attributeData.offset;\n attribute.instance ??= attributeData.instance;\n }\n else\n {\n // eslint-disable-next-line max-len\n warn(`Attribute ${i} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`);\n }\n }\n\n ensureStartAndStride(geometry);\n}\n\nfunction ensureStartAndStride(geometry: Geometry): void\n{\n const { buffers, attributes } = geometry;\n\n const tempStride: Record = {};\n const tempStart: Record = {};\n\n for (const j in buffers)\n {\n const buffer = buffers[j];\n\n tempStride[buffer.uid] = 0;\n tempStart[buffer.uid] = 0;\n }\n\n for (const j in attributes)\n {\n const attribute = attributes[j];\n\n tempStride[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n\n for (const j in attributes)\n {\n const attribute = attributes[j];\n\n attribute.stride ??= tempStride[attribute.buffer.uid];\n\n attribute.start ??= tempStart[attribute.buffer.uid];\n\n tempStart[attribute.buffer.uid] += getAttributeInfoFromFormat(attribute.format).stride;\n }\n}\n","/**\n * Various GL texture/resources formats.\n * @static\n * @name FORMATS\n * @enum {number}\n * @property {number} [RGBA=6408] -\n * @property {number} [RGB=6407] -\n * @property {number} [RG=33319] -\n * @property {number} [RED=6403] -\n * @property {number} [RGBA_INTEGER=36249] -\n * @property {number} [RGB_INTEGER=36248] -\n * @property {number} [RG_INTEGER=33320] -\n * @property {number} [RED_INTEGER=36244] -\n * @property {number} [ALPHA=6406] -\n * @property {number} [LUMINANCE=6409] -\n * @property {number} [LUMINANCE_ALPHA=6410] -\n * @property {number} [DEPTH_COMPONENT=6402] -\n * @property {number} [DEPTH_STENCIL=34041] -\n */\nexport enum GL_FORMATS\n// eslint-disable-next-line @typescript-eslint/indent\n{\n RGBA = 6408,\n RGB = 6407,\n RG = 33319,\n RED = 6403,\n RGBA_INTEGER = 36249,\n RGB_INTEGER = 36248,\n RG_INTEGER = 33320,\n RED_INTEGER = 36244,\n ALPHA = 6406,\n LUMINANCE = 6409,\n LUMINANCE_ALPHA = 6410,\n DEPTH_COMPONENT = 6402,\n DEPTH_STENCIL = 34041,\n}\n\n/**\n * Various GL target types.\n * @static\n * @name TARGETS\n * @enum {number}\n * @property {number} [TEXTURE_2D=3553] -\n * @property {number} [TEXTURE_CUBE_MAP=34067] -\n * @property {number} [TEXTURE_2D_ARRAY=35866] -\n * @property {number} [TEXTURE_CUBE_MAP_POSITIVE_X=34069] -\n * @property {number} [TEXTURE_CUBE_MAP_NEGATIVE_X=34070] -\n * @property {number} [TEXTURE_CUBE_MAP_POSITIVE_Y=34071] -\n * @property {number} [TEXTURE_CUBE_MAP_NEGATIVE_Y=34072] -\n * @property {number} [TEXTURE_CUBE_MAP_POSITIVE_Z=34073] -\n * @property {number} [TEXTURE_CUBE_MAP_NEGATIVE_Z=34074] -\n */\nexport enum GL_TARGETS\n // eslint-disable-next-line @typescript-eslint/indent\n {\n TEXTURE_2D = 3553,\n TEXTURE_CUBE_MAP = 34067,\n TEXTURE_2D_ARRAY = 35866,\n TEXTURE_CUBE_MAP_POSITIVE_X = 34069,\n TEXTURE_CUBE_MAP_NEGATIVE_X = 34070,\n TEXTURE_CUBE_MAP_POSITIVE_Y = 34071,\n TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072,\n TEXTURE_CUBE_MAP_POSITIVE_Z = 34073,\n TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074,\n}\n\n/**\n * The wrap modes that are supported by pixi.\n *\n * The {@link settings.WRAP_MODE} wrap mode affects the default wrapping mode of future operations.\n * It can be re-assigned to either CLAMP or REPEAT, depending upon suitability.\n * If the texture is non power of two then clamp will be used regardless as WebGL can\n * only use REPEAT if the texture is po2.\n *\n * This property only affects WebGL.\n * @name WRAP_MODES\n * @static\n * @enum {number}\n * @property {number} CLAMP - The textures uvs are clamped\n * @property {number} REPEAT - The texture uvs tile and repeat\n * @property {number} MIRRORED_REPEAT - The texture uvs tile and repeat with mirroring\n */\nexport enum GL_WRAP_MODES\n // eslint-disable-next-line @typescript-eslint/indent\n {\n CLAMP = 33071,\n REPEAT = 10497,\n MIRRORED_REPEAT = 33648,\n}\n\nexport enum GL_TYPES\n// eslint-disable-next-line @typescript-eslint/indent\n{\n /**\n * 8 bits per channel for gl.RGBA\n * @default 5121\n */\n UNSIGNED_BYTE = 5121,\n /**\n * @default 5123\n */\n UNSIGNED_SHORT = 5123,\n /**\n * 5 red bits, 6 green bits, 5 blue bits.\n * @default 33635\n */\n UNSIGNED_SHORT_5_6_5 = 33635,\n /**\n * 4 red bits, 4 green bits, 4 blue bits, 4 alpha bits.\n * @default 32819\n */\n UNSIGNED_SHORT_4_4_4_4 = 32819,\n /**\n * 5 red bits, 5 green bits, 5 blue bits, 1 alpha bit.\n * @default 32820\n */\n UNSIGNED_SHORT_5_5_5_1 = 32820,\n /**\n * @default 5125\n */\n UNSIGNED_INT = 5125,\n /**\n * @default 35899\n */\n UNSIGNED_INT_10F_11F_11F_REV = 35899,\n /**\n * @default 33640\n */\n UNSIGNED_INT_2_10_10_10_REV = 33640,\n /**\n * @default 34042\n */\n UNSIGNED_INT_24_8 = 34042,\n /**\n * @default 35902\n */\n UNSIGNED_INT_5_9_9_9_REV = 35902,\n /**\n * @default 5120\n */\n BYTE = 5120,\n /**\n * @default 5122\n */\n SHORT = 5122,\n /**\n * @default 5124\n */\n INT = 5124,\n /**\n * @default 5126\n */\n FLOAT = 5126,\n /**\n * @default 36269\n */\n FLOAT_32_UNSIGNED_INT_24_8_REV = 36269,\n /**\n * @default 36193\n */\n HALF_FLOAT = 36193,\n}\n\n","import { GL_TYPES } from '../../texture/const';\n\nimport type { VertexFormat } from '../../../shared/geometry/const';\n\nconst infoMap = {\n uint8x2: GL_TYPES.UNSIGNED_BYTE,\n uint8x4: GL_TYPES.UNSIGNED_BYTE,\n sint8x2: GL_TYPES.BYTE,\n sint8x4: GL_TYPES.BYTE,\n unorm8x2: GL_TYPES.UNSIGNED_BYTE,\n unorm8x4: GL_TYPES.UNSIGNED_BYTE,\n snorm8x2: GL_TYPES.BYTE,\n snorm8x4: GL_TYPES.BYTE,\n uint16x2: GL_TYPES.UNSIGNED_SHORT,\n uint16x4: GL_TYPES.UNSIGNED_SHORT,\n sint16x2: GL_TYPES.SHORT,\n sint16x4: GL_TYPES.SHORT,\n unorm16x2: GL_TYPES.UNSIGNED_SHORT,\n unorm16x4: GL_TYPES.UNSIGNED_SHORT,\n snorm16x2: GL_TYPES.SHORT,\n snorm16x4: GL_TYPES.SHORT,\n float16x2: GL_TYPES.HALF_FLOAT,\n float16x4: GL_TYPES.HALF_FLOAT,\n float32: GL_TYPES.FLOAT,\n float32x2: GL_TYPES.FLOAT,\n float32x3: GL_TYPES.FLOAT,\n float32x4: GL_TYPES.FLOAT,\n uint32: GL_TYPES.UNSIGNED_INT,\n uint32x2: GL_TYPES.UNSIGNED_INT,\n uint32x3: GL_TYPES.UNSIGNED_INT,\n uint32x4: GL_TYPES.UNSIGNED_INT,\n sint32: GL_TYPES.INT,\n sint32x2: GL_TYPES.INT,\n sint32x3: GL_TYPES.INT,\n sint32x4: GL_TYPES.INT\n};\n\nexport function getGlTypeFromFormat(format: VertexFormat): number\n{\n return infoMap[format] ?? infoMap.float32;\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { getAttributeInfoFromFormat } from '../../shared/geometry/utils/getAttributeInfoFromFormat';\nimport { ensureAttributes } from '../shader/program/ensureAttributes';\nimport { getGlTypeFromFormat } from './utils/getGlTypeFromFormat';\n\nimport type { Topology } from '../../shared/geometry/const';\nimport type { Geometry } from '../../shared/geometry/Geometry';\nimport type { System } from '../../shared/system/System';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\nimport type { GlProgram } from '../shader/GlProgram';\nimport type { WebGLRenderer } from '../WebGLRenderer';\n\nconst topologyToGlMap = {\n 'point-list': 0x0000,\n 'line-list': 0x0001,\n 'line-strip': 0x0003,\n 'triangle-list': 0x0004,\n 'triangle-strip': 0x0005\n};\n\n/**\n * System plugin to the renderer to manage geometry.\n * @memberof rendering\n */\nexport class GlGeometrySystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'geometry',\n } as const;\n\n /**\n * `true` if we has `*_vertex_array_object` extension.\n * @readonly\n */\n public hasVao: boolean;\n\n /**\n * `true` if has `ANGLE_instanced_arrays` extension.\n * @readonly\n */\n public hasInstance: boolean;\n\n protected gl: GlRenderingContext;\n protected _activeGeometry: Geometry;\n protected _activeVao: WebGLVertexArrayObject;\n\n protected _geometryVaoHash: Record> = Object.create(null);\n\n /** Renderer that owns this {@link GeometrySystem}. */\n private _renderer: WebGLRenderer;\n\n /** @param renderer - The renderer this System works for. */\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n\n this.hasVao = true;\n this.hasInstance = true;\n }\n\n /** Sets up the renderer context and necessary buffers. */\n protected contextChange(): void\n {\n const gl = this.gl = this._renderer.gl;\n\n if (!this._renderer.context.supports.vertexArrayObject)\n {\n throw new Error('[PixiJS] Vertex Array Objects are not supported on this device');\n }\n\n const nativeVaoExtension = this._renderer.context.extensions.vertexArrayObject;\n\n if (nativeVaoExtension)\n {\n gl.createVertexArray = (): WebGLVertexArrayObject =>\n nativeVaoExtension.createVertexArrayOES();\n\n gl.bindVertexArray = (vao): void =>\n nativeVaoExtension.bindVertexArrayOES(vao);\n\n gl.deleteVertexArray = (vao): void =>\n nativeVaoExtension.deleteVertexArrayOES(vao);\n }\n\n const nativeInstancedExtension = this._renderer.context.extensions.vertexAttribDivisorANGLE;\n\n if (nativeInstancedExtension)\n {\n gl.drawArraysInstanced = (a, b, c, d): void =>\n {\n nativeInstancedExtension.drawArraysInstancedANGLE(a, b, c, d);\n };\n\n gl.drawElementsInstanced = (a, b, c, d, e): void =>\n {\n nativeInstancedExtension.drawElementsInstancedANGLE(a, b, c, d, e);\n };\n\n gl.vertexAttribDivisor = (a, b): void =>\n nativeInstancedExtension.vertexAttribDivisorANGLE(a, b);\n }\n\n this._activeGeometry = null;\n this._activeVao = null;\n this._geometryVaoHash = Object.create(null);\n }\n\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param program - Instance of program to use vao for.\n */\n public bind(geometry?: Geometry, program?: GlProgram): void\n {\n // shader = shader || this.renderer.shader.shader;\n\n const gl = this.gl;\n\n this._activeGeometry = geometry;\n\n const vao = this.getVao(geometry, program);\n\n if (this._activeVao !== vao)\n {\n this._activeVao = vao;\n\n gl.bindVertexArray(vao);\n }\n\n this.updateBuffers();\n }\n\n /** Reset and unbind any active VAO and geometry. */\n public reset(): void\n {\n this.unbind();\n }\n\n /** Update buffers of the currently bound geometry. */\n public updateBuffers(): void\n {\n const geometry = this._activeGeometry;\n\n const bufferSystem = this._renderer.buffer;\n\n for (let i = 0; i < geometry.buffers.length; i++)\n {\n const buffer = geometry.buffers[i];\n\n bufferSystem.updateBuffer(buffer);\n }\n }\n\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n protected checkCompatibility(geometry: Geometry, program: GlProgram): void\n {\n // geometry must have at least all the attributes that the shader requires.\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program._attributeData;\n\n for (const j in shaderAttributes)\n {\n if (!geometryAttributes[j])\n {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n protected getSignature(geometry: Geometry, program: GlProgram): string\n {\n const attribs = geometry.attributes;\n const shaderAttributes = program._attributeData;\n\n const strings = ['g', geometry.uid];\n\n for (const i in attribs)\n {\n if (shaderAttributes[i])\n {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n\n return strings.join('-');\n }\n\n protected getVao(geometry: Geometry, program: GlProgram): WebGLVertexArrayObject\n {\n return this._geometryVaoHash[geometry.uid]?.[program._key] || this.initGeometryVao(geometry, program);\n }\n\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param program\n * @param _incRefCount - Increment refCount of all geometry buffers.\n */\n protected initGeometryVao(geometry: Geometry, program: GlProgram, _incRefCount = true): WebGLVertexArrayObject\n {\n const gl = this._renderer.gl;\n // const CONTEXT_UID = this.CONTEXT_UID;\n const bufferSystem = this._renderer.buffer;\n\n this._renderer.shader._getProgramData(program);\n\n this.checkCompatibility(geometry, program);\n\n const signature = this.getSignature(geometry, program);\n\n if (!this._geometryVaoHash[geometry.uid])\n {\n this._geometryVaoHash[geometry.uid] = Object.create(null);\n\n geometry.on('destroy', this.onGeometryDestroy, this);\n }\n\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\n\n let vao = vaoObjectHash[signature];\n\n if (vao)\n {\n // this will give us easy access to the vao\n vaoObjectHash[program._key] = vao;\n\n return vao;\n }\n\n ensureAttributes(geometry, program._attributeData);\n\n const buffers = geometry.buffers;\n\n // @TODO: We don't know if VAO is supported.\n vao = gl.createVertexArray();\n\n gl.bindVertexArray(vao);\n\n // first update - and create the buffers!\n // only create a gl buffer if it actually gets\n for (let i = 0; i < buffers.length; i++)\n {\n const buffer = buffers[i];\n\n bufferSystem.bind(buffer);\n }\n\n // TODO - maybe make this a data object?\n // lets wait to see if we need to first!\n\n this.activateVao(geometry, program);\n\n // add it to the cache!\n vaoObjectHash[program._key] = vao;\n vaoObjectHash[signature] = vao;\n\n gl.bindVertexArray(null);\n\n return vao;\n }\n\n /**\n * Disposes geometry.\n * @param geometry - Geometry with buffers. Only VAO will be disposed\n * @param [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n protected onGeometryDestroy(geometry: Geometry, contextLost?: boolean): void\n {\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\n\n const gl = this.gl;\n\n if (vaoObjectHash)\n {\n if (contextLost)\n {\n for (const i in vaoObjectHash)\n {\n if (this._activeVao !== vaoObjectHash[i])\n {\n this.unbind();\n }\n\n gl.deleteVertexArray(vaoObjectHash[i]);\n }\n }\n\n this._geometryVaoHash[geometry.uid] = null;\n }\n }\n\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n public destroyAll(contextLost = false): void\n {\n const gl = this.gl;\n\n for (const i in this._geometryVaoHash)\n {\n if (contextLost)\n {\n for (const j in this._geometryVaoHash[i])\n {\n const vaoObjectHash = this._geometryVaoHash[i];\n\n if (this._activeVao !== vaoObjectHash)\n {\n this.unbind();\n }\n\n gl.deleteVertexArray(vaoObjectHash[j]);\n }\n }\n\n this._geometryVaoHash[i] = null;\n }\n }\n\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n protected activateVao(geometry: Geometry, program: GlProgram): void\n {\n const gl = this._renderer.gl;\n\n const bufferSystem = this._renderer.buffer;\n const attributes = geometry.attributes;\n\n if (geometry.indexBuffer)\n {\n // first update the index buffer if we have one..\n bufferSystem.bind(geometry.indexBuffer);\n }\n\n let lastBuffer = null;\n\n // add a new one!\n for (const j in attributes)\n {\n const attribute = attributes[j];\n const buffer = attribute.buffer;\n const glBuffer = bufferSystem.getGlBuffer(buffer);\n const programAttrib = program._attributeData[j];\n\n if (programAttrib)\n {\n if (lastBuffer !== glBuffer)\n {\n bufferSystem.bind(buffer);\n\n lastBuffer = glBuffer;\n }\n\n const location = attribute.location;\n\n // TODO introduce state again\n // we can optimise this for older devices that have no VAOs\n gl.enableVertexAttribArray(location);\n\n const attributeInfo = getAttributeInfoFromFormat(attribute.format);\n\n const type = getGlTypeFromFormat(attribute.format);\n\n if (programAttrib.format?.substring(1, 4) === 'int')\n {\n gl.vertexAttribIPointer(location,\n attributeInfo.size,\n type,\n attribute.stride,\n attribute.offset);\n }\n else\n {\n gl.vertexAttribPointer(location,\n attributeInfo.size,\n type,\n attributeInfo.normalised,\n attribute.stride,\n attribute.offset);\n }\n\n if (attribute.instance)\n {\n // TODO calculate instance count based of this...\n if (this.hasInstance)\n {\n gl.vertexAttribDivisor(location, 1);// attribute.divisor);\n }\n else\n {\n throw new Error('geometry error, GPU Instancing is not supported on this device');\n }\n }\n }\n }\n }\n\n /**\n * Draws the currently bound geometry.\n * @param topology - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n */\n public draw(topology?: Topology, size?: number, start?: number, instanceCount?: number): this\n {\n const { gl } = this._renderer;\n const geometry = this._activeGeometry;\n\n const glTopology = topologyToGlMap[geometry.topology || topology];\n\n instanceCount ||= geometry.instanceCount;\n\n if (geometry.indexBuffer)\n {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n\n if (instanceCount > 1)\n {\n /* eslint-disable max-len */\n gl.drawElementsInstanced(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount);\n /* eslint-enable max-len */\n }\n else\n {\n /* eslint-disable max-len */\n gl.drawElements(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n /* eslint-enable max-len */\n }\n }\n else if (instanceCount > 1)\n {\n // TODO need a better way to calculate size..\n gl.drawArraysInstanced(glTopology, start || 0, size || geometry.getSize(), instanceCount);\n }\n else\n {\n gl.drawArrays(glTopology, start || 0, size || geometry.getSize());\n }\n\n return this;\n }\n\n /** Unbind/reset everything. */\n protected unbind(): void\n {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n\n public destroy(): void\n {\n this._renderer = null;\n this.gl = null;\n this._activeVao = null;\n this._activeGeometry = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { warn } from '../../../utils/logging/warn';\nimport { Geometry } from '../shared/geometry/Geometry';\nimport { Shader } from '../shared/shader/Shader';\nimport { State } from '../shared/state/State';\nimport { TextureSource } from '../shared/texture/sources/TextureSource';\nimport { Texture } from '../shared/texture/Texture';\nimport { GlProgram } from './shader/GlProgram';\n\nimport type { RenderOptions } from '../shared/system/AbstractRenderer';\nimport type { System } from '../shared/system/System';\nimport type { WebGLRenderer } from './WebGLRenderer';\n\nconst bigTriangleGeometry = new Geometry({\n attributes: {\n aPosition: [\n -1.0, -1.0, // Bottom left corner\n 3.0, -1.0, // Bottom right corner, extending beyond right edge\n -1.0, 3.0 // Top left corner, extending beyond top edge\n ],\n },\n});\n\n/**\n * The options for the back buffer system.\n * @memberof rendering\n * @property {boolean} [useBackBuffer=false] - if true will use the back buffer where required\n * @property {boolean} [antialias=false] - if true will ensure the texture is antialiased\n */\nexport interface GlBackBufferOptions\n{\n /**\n * if true will use the back buffer where required\n * @default false\n * @memberof rendering.WebGLOptions\n */\n useBackBuffer?: boolean;\n /** if true will ensure the texture is antialiased */\n antialias?: boolean;\n}\n\n/**\n * For blend modes you need to know what pixels you are actually drawing to. For this to be possible in WebGL\n * we need to render to a texture and then present that texture to the screen. This system manages that process.\n *\n * As the main scene is rendered to a texture, it means we can sample it anc copy its pixels,\n * something not possible on the main canvas.\n *\n * If antialiasing is set to to true and useBackBuffer is set to true, then the back buffer will be antialiased.\n * and the main gl context will not.\n *\n * You only need to activate this back buffer if you are using a blend mode that requires it.\n *\n * to activate is simple, you pass `useBackBuffer:true` to your render options\n * @memberof rendering\n */\nexport class GlBackBufferSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'backBuffer',\n priority: 1\n } as const;\n\n /** default options for the back buffer system */\n public static defaultOptions: GlBackBufferOptions = {\n /** if true will use the back buffer where required */\n useBackBuffer: false,\n };\n\n /** if true, the back buffer is used */\n public useBackBuffer = false;\n\n private _backBufferTexture: Texture;\n private readonly _renderer: WebGLRenderer;\n private _targetTexture: TextureSource;\n private _useBackBufferThisRender = false;\n private _antialias: boolean;\n private _state: State;\n private _bigTriangleShader: Shader;\n\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n public init(options: GlBackBufferOptions = {})\n {\n const { useBackBuffer, antialias } = { ...GlBackBufferSystem.defaultOptions, ...options };\n\n this.useBackBuffer = useBackBuffer;\n\n this._antialias = antialias;\n\n if (!this._renderer.context.supports.msaa)\n {\n warn('antialiasing, is not supported on when using the back buffer');\n\n this._antialias = false;\n }\n\n this._state = State.for2d();\n\n const bigTriangleProgram = new GlProgram({\n vertex: `\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }`,\n fragment: `\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }`,\n name: 'big-triangle',\n });\n\n this._bigTriangleShader = new Shader({\n glProgram: bigTriangleProgram,\n resources: {\n uTexture: Texture.WHITE.source,\n },\n });\n }\n\n /**\n * This is called before the RenderTargetSystem is started. This is where\n * we replace the target with the back buffer if required.\n * @param options - The options for this render.\n */\n protected renderStart(options: RenderOptions)\n {\n const renderTarget = this._renderer.renderTarget.getRenderTarget(options.target);\n\n this._useBackBufferThisRender = this.useBackBuffer && !!renderTarget.isRoot;\n\n if (this._useBackBufferThisRender)\n {\n const renderTarget = this._renderer.renderTarget.getRenderTarget(options.target);\n\n this._targetTexture = renderTarget.colorTexture;\n\n options.target = this._getBackBufferTexture(renderTarget.colorTexture);\n }\n }\n\n protected renderEnd()\n {\n this._presentBackBuffer();\n }\n\n private _presentBackBuffer()\n {\n const renderer = this._renderer;\n\n renderer.renderTarget.finishRenderPass();\n\n if (!this._useBackBufferThisRender) return;\n\n renderer.renderTarget.bind(this._targetTexture, false);\n\n this._bigTriangleShader.resources.uTexture = this._backBufferTexture.source;\n\n renderer.encoder.draw({\n geometry: bigTriangleGeometry,\n shader: this._bigTriangleShader,\n state: this._state,\n });\n }\n\n private _getBackBufferTexture(targetSourceTexture: TextureSource)\n {\n this._backBufferTexture = this._backBufferTexture || new Texture({\n source: new TextureSource({\n width: targetSourceTexture.width,\n height: targetSourceTexture.height,\n resolution: targetSourceTexture._resolution,\n antialias: this._antialias,\n }),\n });\n\n // this will not resize if its the same size already! No extra check required\n this._backBufferTexture.source.resize(\n targetSourceTexture.width,\n targetSourceTexture.height,\n targetSourceTexture._resolution,\n );\n\n return this._backBufferTexture;\n }\n\n /** destroys the back buffer */\n public destroy()\n {\n if (this._backBufferTexture)\n {\n this._backBufferTexture.destroy();\n this._backBufferTexture = null;\n }\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { System } from '../shared/system/System';\nimport type { WebGLRenderer } from './WebGLRenderer';\n\n/**\n * The system that handles color masking for the WebGL.\n * @memberof rendering\n */\nexport class GlColorMaskSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'colorMask',\n } as const;\n\n private readonly _renderer: WebGLRenderer;\n private _colorMaskCache = 0b1111;\n\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n public setMask(colorMask: number)\n {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n\n this._renderer.gl.colorMask(\n !!(colorMask & 0b1000),\n !!(colorMask & 0b0100),\n !!(colorMask & 0b0010),\n !!(colorMask & 0b0001)\n );\n }\n\n public destroy?: () => void;\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { Topology } from '../shared/geometry/const';\nimport type { Geometry } from '../shared/geometry/Geometry';\nimport type { Shader } from '../shared/shader/Shader';\nimport type { State } from '../shared/state/State';\nimport type { System } from '../shared/system/System';\nimport type { WebGLRenderer } from './WebGLRenderer';\n\n/**\n * The system that handles encoding commands for the WebGL.\n * @memberof rendering\n */\nexport class GlEncoderSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'encoder',\n } as const;\n\n public readonly commandFinished = Promise.resolve();\n private readonly _renderer: WebGLRenderer;\n\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n public setGeometry(geometry: Geometry, shader?: Shader)\n {\n this._renderer.geometry.bind(geometry, shader.glProgram);\n }\n\n public finishRenderPass()\n {\n // noop\n }\n\n public draw(options: {\n geometry: Geometry,\n shader: Shader,\n state?: State,\n topology?: Topology,\n size?: number,\n start?: number,\n instanceCount?: number\n skipSync?: boolean,\n })\n {\n const renderer = this._renderer;\n const { geometry, shader, state, skipSync, topology: type, size, start, instanceCount } = options;\n\n renderer.shader.bind(shader, skipSync);\n\n renderer.geometry.bind(geometry, renderer.shader._activeProgram);\n\n if (state)\n {\n renderer.state.set(state);\n }\n\n renderer.geometry.draw(type, size, start, instanceCount ?? geometry.instanceCount);\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n }\n}\n","/**\n * Represents a render target.\n * @memberof rendering\n * @ignore\n */\nexport class GlRenderTarget\n{\n public width = -1;\n public height = -1;\n public msaa = false;\n public framebuffer: WebGLFramebuffer;\n public resolveTargetFramebuffer: WebGLFramebuffer;\n public msaaRenderBuffer: WebGLRenderbuffer[] = [];\n public depthStencilRenderBuffer: WebGLRenderbuffer;\n}\n","import { STENCIL_MODES } from '../../shared/state/const';\n\nexport interface StencilState\n{\n stencilWriteMask?: number\n stencilReadMask?: number;\n stencilFront?: {\n compare: 'always' | 'equal';\n passOp: 'increment-clamp' | 'decrement-clamp' | 'keep';\n },\n stencilBack?: {\n compare: 'always' | 'equal';\n passOp: 'increment-clamp' | 'decrement-clamp' | 'keep';\n }\n}\n\nexport const GpuStencilModesToPixi: StencilState[] = [];\n\nGpuStencilModesToPixi[STENCIL_MODES.NONE] = undefined;\n\nGpuStencilModesToPixi[STENCIL_MODES.DISABLED] = {\n stencilWriteMask: 0,\n stencilReadMask: 0,\n};\n\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD] = {\n stencilFront: {\n compare: 'equal',\n passOp: 'increment-clamp',\n },\n stencilBack: {\n compare: 'equal',\n passOp: 'increment-clamp',\n },\n};\n\nGpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE] = {\n stencilFront: {\n compare: 'equal',\n passOp: 'decrement-clamp',\n },\n stencilBack: {\n compare: 'equal',\n passOp: 'decrement-clamp',\n },\n};\n\nGpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE] = {\n stencilWriteMask: 0,\n stencilFront: {\n compare: 'equal',\n passOp: 'keep',\n },\n stencilBack: {\n compare: 'equal',\n passOp: 'keep',\n },\n};\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { GpuStencilModesToPixi } from '../gpu/state/GpuStencilModesToPixi';\nimport { STENCIL_MODES } from '../shared/state/const';\n\nimport type { RenderTarget } from '../shared/renderTarget/RenderTarget';\nimport type { System } from '../shared/system/System';\nimport type { WebGLRenderer } from './WebGLRenderer';\n\n/**\n * This manages the stencil buffer. Used primarily for masking\n * @memberof rendering\n */\nexport class GlStencilSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'stencil',\n } as const;\n\n private _gl: WebGLRenderingContext;\n\n private readonly _stencilCache = {\n enabled: false,\n stencilReference: 0,\n stencilMode: STENCIL_MODES.NONE,\n };\n\n private _renderTargetStencilState: Record = Object.create(null);\n\n private _stencilOpsMapping: {\n keep: number;\n zero: number;\n replace: number;\n invert: number;\n 'increment-clamp': number;\n 'decrement-clamp': number;\n 'increment-wrap': number;\n 'decrement-wrap': number;\n };\n\n private _comparisonFuncMapping: {\n always: number;\n never: number;\n equal: number;\n 'not-equal': number;\n less: number;\n 'less-equal': number;\n greater: number;\n 'greater-equal': number;\n };\n\n private _activeRenderTarget: RenderTarget;\n\n constructor(renderer: WebGLRenderer)\n {\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n\n protected contextChange(gl: WebGLRenderingContext)\n {\n // TODO - this could be declared in a gl const\n // we know the numbers don't tend to change!\n this._gl = gl;\n\n this._comparisonFuncMapping = {\n always: gl.ALWAYS,\n never: gl.NEVER,\n equal: gl.EQUAL,\n 'not-equal': gl.NOTEQUAL,\n less: gl.LESS,\n 'less-equal': gl.LEQUAL,\n greater: gl.GREATER,\n 'greater-equal': gl.GEQUAL,\n };\n\n this._stencilOpsMapping = {\n keep: gl.KEEP,\n zero: gl.ZERO,\n replace: gl.REPLACE,\n invert: gl.INVERT,\n 'increment-clamp': gl.INCR,\n 'decrement-clamp': gl.DECR,\n 'increment-wrap': gl.INCR_WRAP,\n 'decrement-wrap': gl.DECR_WRAP,\n };\n\n // reset stencil cache\n this._stencilCache.enabled = false;\n this._stencilCache.stencilMode = STENCIL_MODES.NONE;\n this._stencilCache.stencilReference = 0;\n }\n\n protected onRenderTargetChange(renderTarget: RenderTarget)\n {\n if (this._activeRenderTarget === renderTarget) return;\n\n this._activeRenderTarget = renderTarget;\n\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n\n if (!stencilState)\n {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0,\n };\n }\n\n // restore the current render targets stencil state..\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n\n public setStencilMode(stencilMode: STENCIL_MODES, stencilReference: number)\n {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n\n const gl = this._gl;\n const mode = GpuStencilModesToPixi[stencilMode];\n\n const _stencilCache = this._stencilCache;\n\n // store the stencil state for restoration later, if a render target changes\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n\n if (stencilMode === STENCIL_MODES.DISABLED)\n {\n if (this._stencilCache.enabled)\n {\n this._stencilCache.enabled = false;\n\n gl.disable(gl.STENCIL_TEST);\n }\n\n return;\n }\n\n if (!this._stencilCache.enabled)\n {\n this._stencilCache.enabled = true;\n gl.enable(gl.STENCIL_TEST);\n }\n\n if (stencilMode !== _stencilCache.stencilMode || _stencilCache.stencilReference !== stencilReference)\n {\n _stencilCache.stencilMode = stencilMode;\n _stencilCache.stencilReference = stencilReference;\n\n // this is pretty simple mapping.\n // will work for pixi's simple mask cases.\n // although a true mapping of the GPU state to webGL state should be done\n gl.stencilFunc(this._comparisonFuncMapping[mode.stencilBack.compare], stencilReference, 0xFF);\n gl.stencilOp(gl.KEEP, gl.KEEP, this._stencilOpsMapping[mode.stencilBack.passOp]);\n }\n }\n\n public destroy?: () => void;\n}\n","import { unsafeEvalSupported } from '../../../../utils/browser/unsafeEvalSupported';\nimport { Buffer } from '../buffer/Buffer';\nimport { BufferUsage } from '../buffer/const';\n\nimport type { System } from '../system/System';\nimport type { UboElement, UboLayout, UniformData, UniformsSyncCallback } from './types';\nimport type { UniformGroup } from './UniformGroup';\n\nexport interface UboAdaptor\n{\n createUboElements: (uniformData: UniformData[]) => UboLayout;\n generateUboSync: (uboElements: UboElement[]) => UniformsSyncCallback;\n}\n\n/**\n * System plugin to the renderer to manage uniform buffers.\n * @memberof rendering\n */\nexport class UboSystem implements System\n{\n /** Cache of uniform buffer layouts and sync functions, so we don't have to re-create them */\n private _syncFunctionHash: Record, data: Float32Array, offset: number) => void\n }> = Object.create(null);\n\n private readonly _adaptor: UboAdaptor;\n\n constructor(adaptor: UboAdaptor)\n {\n this._adaptor = adaptor;\n\n // Validation check that this environment support `new Function`\n this._systemCheck();\n }\n\n /**\n * Overrideable function by `pixi.js/unsafe-eval` to silence\n * throwing an error if platform doesn't support unsafe-evals.\n * @private\n */\n private _systemCheck(): void\n {\n if (!unsafeEvalSupported())\n {\n throw new Error('Current environment does not allow unsafe-eval, '\n + 'please use pixi.js/unsafe-eval module to enable support.');\n }\n }\n\n public ensureUniformGroup(uniformGroup: UniformGroup): void\n {\n const uniformData = this.getUniformGroupData(uniformGroup);\n\n uniformGroup.buffer ||= new Buffer({\n data: new Float32Array(uniformData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST,\n });\n }\n\n public getUniformGroupData(uniformGroup: UniformGroup)\n {\n return this._syncFunctionHash[uniformGroup._signature] || this._initUniformGroup(uniformGroup);\n }\n\n private _initUniformGroup(uniformGroup: UniformGroup)\n {\n const uniformGroupSignature = uniformGroup._signature;\n\n let uniformData = this._syncFunctionHash[uniformGroupSignature];\n\n if (!uniformData)\n {\n const elements = Object.keys(uniformGroup.uniformStructures).map((i) => uniformGroup.uniformStructures[i]);\n\n const layout = this._adaptor.createUboElements(elements);\n\n const syncFunction = this._generateUboSync(layout.uboElements);\n\n uniformData = this._syncFunctionHash[uniformGroupSignature] = {\n layout,\n syncFunction\n };\n }\n\n return this._syncFunctionHash[uniformGroupSignature];\n }\n\n private _generateUboSync(\n uboElements: UboElement[],\n ): UniformsSyncCallback\n {\n return this._adaptor.generateUboSync(uboElements);\n }\n\n public syncUniformGroup(uniformGroup: UniformGroup, data?: Float32Array, offset?: number): boolean\n {\n const uniformGroupData = this.getUniformGroupData(uniformGroup);\n\n uniformGroup.buffer ||= new Buffer({\n data: new Float32Array(uniformGroupData.layout.size / 4),\n usage: BufferUsage.UNIFORM | BufferUsage.COPY_DST,\n });\n\n data ||= (uniformGroup.buffer.data as Float32Array);\n offset ||= 0;\n\n uniformGroupData.syncFunction(uniformGroup.uniforms, data, offset);\n\n return true;\n }\n\n public updateUniformGroup(uniformGroup: UniformGroup): boolean\n {\n if (uniformGroup.isStatic && !uniformGroup._dirtyId) return false;\n uniformGroup._dirtyId = 0;\n\n const synced = this.syncUniformGroup(uniformGroup);\n\n uniformGroup.buffer.update();\n\n return synced;\n }\n\n public destroy(): void\n {\n this._syncFunctionHash = null;\n }\n}\n","import type { UboElement, UboLayout, UniformData } from '../../../shared/shader/types';\n\nexport const WGSL_TO_STD40_SIZE: Record = {\n f32: 4,\n 'vec2': 8,\n 'vec3': 12,\n 'vec4': 16,\n\n 'mat2x2': 16 * 2,\n 'mat3x3': 16 * 3,\n 'mat4x4': 16 * 4,\n\n // TODO - not essential for now but support these in the future\n // int: 4,\n // ivec2: 8,\n // ivec3: 12,\n // ivec4: 16,\n\n // uint: 4,\n // uvec2: 8,\n // uvec3: 12,\n // uvec4: 16,\n\n // bool: 4,\n // bvec2: 8,\n // bvec3: 12,\n // bvec4: 16,\n\n // mat2: 16 * 2,\n // mat3: 16 * 3,\n // mat4: 16 * 4,\n};\n\nexport function createUboElementsSTD40(uniformData: UniformData[]): UboLayout\n{\n const uboElements: UboElement[] = uniformData.map((data: UniformData) =>\n ({\n data,\n offset: 0,\n size: 0,\n }));\n\n let size = 0;\n let chunkSize = 0;\n let offset = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n size = WGSL_TO_STD40_SIZE[uboElement.data.type];\n\n if (!size)\n {\n throw new Error(`Unknown type ${uboElement.data.type}`);\n }\n\n if (uboElement.data.size > 1)\n {\n size = Math.max(size, 16) * uboElement.data.size;\n }\n\n uboElement.size = size;\n\n // add some size offset..\n // must align to the nearest 16 bytes or internally nearest round size\n if (chunkSize % size !== 0 && chunkSize < 16)\n {\n // diff required to line up..\n const lineUpValue = (chunkSize % size) % 16;\n\n chunkSize += lineUpValue;\n offset += lineUpValue;\n }\n\n if ((chunkSize + size) > 16)\n {\n offset = Math.ceil(offset / 16) * 16;\n uboElement.offset = offset;\n offset += size;\n chunkSize = size;\n }\n else\n {\n uboElement.offset = offset;\n chunkSize += size;\n offset += size;\n }\n }\n\n offset = Math.ceil(offset / 16) * 16;\n\n return { uboElements, size: offset };\n}\n\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n// Parsers, each one of these will take a look at the type of shader property and uniform.\n// if they pass the test function then the code function is called that returns a the shader upload code for that uniform.\n// Shader upload code is automagically generated with these parsers.\n// If no parser is valid then the default upload functions are used.\n// exposing Parsers means that custom upload logic can be added to pixi's shaders.\n// A good example would be a pixi rectangle can be directly set on a uniform.\n// If the shader sees it it knows how to upload the rectangle structure as a vec4\n// format is as follows:\n//\n// {\n// test: (data, uniform) => {} <--- test is this code should be used for this uniform\n// code: (name, uniform) => {} <--- returns the string of the piece of code that uploads the uniform\n// codeUbo: (name, uniform) => {} <--- returns the string of the piece of code that uploads the\n// uniform to a uniform buffer\n// }\n// import { Texture } from '../../texture/Texture';\n\nimport type { Color } from '../../../../../color/Color';\nimport type { Matrix } from '../../../../../maths/matrix/Matrix';\nimport type { PointLike } from '../../../../../maths/point/PointLike';\nimport type { Rectangle } from '../../../../../maths/shapes/Rectangle';\nimport type { UNIFORM_TYPES, UniformData } from '../types';\n\ninterface UniformParserDefinition\n{\n type: UNIFORM_TYPES;\n test(data: UniformData): boolean;\n ubo?: string;\n uboWgsl?: string;\n uboStd40?: string;\n uniform?: string;\n}\n\nexport const uniformParsers: UniformParserDefinition[] = [\n // uploading pixi matrix object to mat3\n {\n type: 'mat3x3',\n test: (data: UniformData): boolean =>\n {\n const value = data.value as Matrix;\n\n return value.a !== undefined;\n },\n ubo: `\n var matrix = uv[name].toArray(true);\n data[offset] = matrix[0];\n data[offset + 1] = matrix[1];\n data[offset + 2] = matrix[2];\n data[offset + 4] = matrix[3];\n data[offset + 5] = matrix[4];\n data[offset + 6] = matrix[5];\n data[offset + 8] = matrix[6];\n data[offset + 9] = matrix[7];\n data[offset + 10] = matrix[8];\n `,\n uniform: ` \n gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));\n `\n },\n // uploading a pixi rectangle as a vec4\n {\n type: 'vec4',\n test: (data: UniformData): boolean =>\n data.type === 'vec4' && data.size === 1 && (data.value as Rectangle).width !== undefined,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n data[offset + 2] = v.width;\n data[offset + 3] = v.height;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);\n }\n `\n },\n // uploading a pixi point as a vec2\n {\n type: 'vec2',\n test: (data: UniformData): boolean =>\n data.type === 'vec2' && data.size === 1 && (data.value as PointLike).x !== undefined,\n ubo: `\n v = uv[name];\n data[offset] = v.x;\n data[offset + 1] = v.y;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.x || cv[1] !== v.y) {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[name].location, v.x, v.y);\n }\n `\n },\n // uploading a pixi color as a vec4\n {\n type: 'vec4',\n test: (data: UniformData): boolean =>\n data.type === 'vec4' && data.size === 1 && (data.value as Color).red !== undefined,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n data[offset + 3] = v.alpha;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n cv[3] = v.alpha;\n gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);\n }\n `\n },\n // uploading a pixi color as a vec3\n {\n type: 'vec3',\n test: (data: UniformData): boolean =>\n data.type === 'vec3' && data.size === 1 && (data.value as Color).red !== undefined,\n ubo: `\n v = uv[name];\n data[offset] = v.red;\n data[offset + 1] = v.green;\n data[offset + 2] = v.blue;\n `,\n uniform: `\n cv = ud[name].value;\n v = uv[name];\n if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {\n cv[0] = v.red;\n cv[1] = v.green;\n cv[2] = v.blue;\n gl.uniform3f(ud[name].location, v.red, v.green, v.blue);\n }\n `\n },\n];\n","/* eslint-disable quote-props */\nimport { uniformParsers } from './uniformParsers';\n\nimport type { UboElement, UNIFORM_TYPES_SINGLE, UniformsSyncCallback } from '../types';\n\nexport function createUboSyncFunction(\n uboElements: UboElement[],\n parserCode: 'uboWgsl' | 'uboStd40',\n arrayGenerationFunction: (uboElement: UboElement, offsetToAdd: number) => string,\n singleSettersMap: Record,\n): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n\n let prev = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n const name = uboElement.data.name;\n\n let parsed = false;\n let offset = 0;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const uniformParser = uniformParsers[j];\n\n if (uniformParser.test(uboElement.data))\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n if (uboElement.data.size > 1)\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n }\n else\n {\n const template = singleSettersMap[uboElement.data.type as UNIFORM_TYPES_SINGLE];\n\n offset = uboElement.offset / 4;\n\n funcFragments.push(/* wgsl */`\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `);\n }\n }\n\n prev = offset;\n }\n\n const fragmentSrc = funcFragments.join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function(\n 'uv',\n 'data',\n 'offset',\n fragmentSrc,\n ) as UniformsSyncCallback;\n}\n","import type { UNIFORM_TYPES_SINGLE } from '../types';\n\nfunction loopMatrix(col: number, row: number)\n{\n const total = col * row;\n\n return `\n for (let i = 0; i < ${total}; i++) {\n data[offset + (((i / ${col})|0) * 4) + (i % ${col})] = v[i];\n }\n `;\n}\n\nexport const uboSyncFunctionsSTD40: Record = {\n f32: `\n data[offset] = v;`,\n i32: `\n data[offset] = v;`,\n 'vec2': `\n data[offset] = v[0];\n data[offset + 1] = v[1];`,\n 'vec3': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];`,\n 'vec4': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];`,\n 'mat2x2': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 4] = v[2];\n data[offset + 5] = v[3];`,\n 'mat3x3': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];`,\n 'mat4x4': `\n for (let i = 0; i < 16; i++) {\n data[offset + i] = v[i];\n }`,\n 'mat3x2': loopMatrix(3, 2),\n 'mat4x2': loopMatrix(4, 2),\n 'mat2x3': loopMatrix(2, 3),\n 'mat4x3': loopMatrix(4, 3),\n 'mat2x4': loopMatrix(2, 4),\n 'mat3x4': loopMatrix(3, 4),\n};\n\nexport const uboSyncFunctionsWGSL: Record = {\n ...uboSyncFunctionsSTD40,\n 'mat2x2': `\n data[offset] = v[0];\n data[offset + 1] = v[1];\n data[offset + 2] = v[2];\n data[offset + 3] = v[3];\n `,\n};\n","import { WGSL_TO_STD40_SIZE } from './createUboElementsSTD40';\n\nimport type { UboElement } from '../../../shared/shader/types';\n\n/**\n * This generates a function that will sync an array to the uniform buffer\n * following the std140 layout\n * @param uboElement - the element to generate the array sync for\n * @param offsetToAdd - the offset to append at the start of the code\n * @returns - the generated code\n */\nexport function generateArraySyncSTD40(uboElement: UboElement, offsetToAdd: number): string\n{\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = (uboElement.data.value as Array).length / uboElement.data.size;// size / rowSize;\n\n const remainder = (4 - (elementSize % 4)) % 4;\n\n return `\n v = uv.${uboElement.data.name};\n offset += ${offsetToAdd};\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n data[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : ''}\n }\n `;\n}\n","/* eslint-disable quote-props */\n\nimport { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction';\nimport { uboSyncFunctionsSTD40 } from '../../../shared/shader/utils/uboSyncFunctions';\nimport { generateArraySyncSTD40 } from './generateArraySyncSTD40';\n\nimport type { UboElement, UniformsSyncCallback } from '../../../shared/shader/types';\n\nexport function createUboSyncFunctionSTD40(\n uboElements: UboElement[],\n): UniformsSyncCallback\n{\n return createUboSyncFunction(\n uboElements,\n 'uboStd40',\n generateArraySyncSTD40,\n uboSyncFunctionsSTD40,\n );\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { UboSystem } from '../shared/shader/UboSystem';\nimport { createUboElementsSTD40 } from './shader/utils/createUboElementsSTD40';\nimport { createUboSyncFunctionSTD40 } from './shader/utils/createUboSyncSTD40';\n\n/**\n * System plugin to the renderer to manage uniform buffers. But with an WGSL adaptor.\n * @memberof rendering\n */\nexport class GlUboSystem extends UboSystem\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGLSystem],\n name: 'ubo',\n } as const;\n\n constructor()\n {\n super({\n createUboElements: createUboElementsSTD40,\n generateUboSync: createUboSyncFunctionSTD40,\n });\n }\n}\n","import { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { warn } from '../../../../utils/logging/warn';\nimport { CLEAR } from '../const';\nimport { GlRenderTarget } from '../GlRenderTarget';\n\nimport type { RgbaArray } from '../../../../color/Color';\nimport type { RenderTarget } from '../../shared/renderTarget/RenderTarget';\nimport type { RenderTargetAdaptor, RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem';\nimport type { Texture } from '../../shared/texture/Texture';\nimport type { CLEAR_OR_BOOL } from '../const';\nimport type { WebGLRenderer } from '../WebGLRenderer';\n\n/**\n * The WebGL adaptor for the render target system. Allows the Render Target System to be used with the WebGL renderer\n * @memberof rendering\n * @ignore\n */\nexport class GlRenderTargetAdaptor implements RenderTargetAdaptor\n{\n private _renderTargetSystem: RenderTargetSystem;\n private _renderer: WebGLRenderer;\n private _clearColorCache: RgbaArray = [0, 0, 0, 0];\n private _viewPortCache: Rectangle = new Rectangle();\n\n public init(renderer: WebGLRenderer, renderTargetSystem: RenderTargetSystem): void\n {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n\n renderer.runners.contextChange.add(this);\n }\n\n public contextChange(): void\n {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n }\n\n public copyToTexture(\n sourceRenderSurfaceTexture: RenderTarget,\n destinationTexture: Texture,\n originSrc: { x: number; y: number; },\n size: { width: number; height: number; },\n originDest: { x: number; y: number; },\n )\n {\n const renderTargetSystem = this._renderTargetSystem;\n\n const renderer = this._renderer;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const gl = renderer.gl;\n\n this.finishRenderPass(sourceRenderSurfaceTexture);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n\n renderer.texture.bind(destinationTexture, 0);\n\n gl.copyTexSubImage2D(gl.TEXTURE_2D, 0,\n originDest.x, originDest.y,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height\n );\n\n return destinationTexture;\n }\n\n public startRenderPass(\n renderTarget: RenderTarget,\n clear: CLEAR_OR_BOOL = true,\n clearColor?: RgbaArray,\n viewport?: Rectangle\n )\n {\n const renderTargetSystem = this._renderTargetSystem;\n\n const source = renderTarget.colorTexture;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n let viewPortY = viewport.y;\n\n if (renderTarget.isRoot)\n {\n // /TODO this is the same logic?\n viewPortY = source.pixelHeight - viewport.height;\n }\n\n // unbind the current render texture..\n renderTarget.colorTextures.forEach((texture) =>\n {\n this._renderer.texture.unbind(texture);\n });\n\n const gl = this._renderer.gl;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, gpuRenderTarget.framebuffer);\n\n const viewPortCache = this._viewPortCache;\n\n if (viewPortCache.x !== viewport.x\n || viewPortCache.y !== viewPortY\n || viewPortCache.width !== viewport.width\n || viewPortCache.height !== viewport.height)\n {\n viewPortCache.x = viewport.x;\n viewPortCache.y = viewPortY;\n viewPortCache.width = viewport.width;\n viewPortCache.height = viewport.height;\n\n gl.viewport(\n viewport.x,\n viewPortY,\n viewport.width,\n viewport.height,\n );\n }\n\n // if the stencil buffer has been requested, we need to create a stencil buffer\n if (!gpuRenderTarget.depthStencilRenderBuffer && (renderTarget.stencil || renderTarget.depth))\n {\n this._initStencil(gpuRenderTarget);\n }\n\n this.clear(renderTarget, clear, clearColor);\n }\n\n public finishRenderPass(renderTarget?: RenderTarget)\n {\n const renderTargetSystem = this._renderTargetSystem;\n\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n if (!glRenderTarget.msaa) return;\n\n const gl = this._renderer.gl;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, glRenderTarget.framebuffer);\n\n gl.blitFramebuffer(\n 0, 0, glRenderTarget.width, glRenderTarget.height,\n 0, 0, glRenderTarget.width, glRenderTarget.height,\n gl.COLOR_BUFFER_BIT, gl.NEAREST,\n );\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.framebuffer);\n\n // dont think we need this anymore? keeping around just in case the wheels fall off\n // gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n }\n\n public initGpuRenderTarget(renderTarget: RenderTarget): GlRenderTarget\n {\n const renderer = this._renderer;\n\n const gl = renderer.gl;\n\n // do single...\n\n const glRenderTarget = new GlRenderTarget();\n\n // we are rendering to the main canvas..\n if (renderTarget.colorTexture.resource === renderer.gl.canvas)\n {\n glRenderTarget.framebuffer = null;\n\n return glRenderTarget;\n }\n\n this._initColor(renderTarget, glRenderTarget);\n\n // set up a depth texture..\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return glRenderTarget;\n }\n\n public destroyGpuRenderTarget(gpuRenderTarget: GlRenderTarget)\n {\n const gl = this._renderer.gl;\n\n if (gpuRenderTarget.framebuffer)\n {\n gl.deleteFramebuffer(gpuRenderTarget.framebuffer);\n gpuRenderTarget.framebuffer = null;\n }\n\n if (gpuRenderTarget.resolveTargetFramebuffer)\n {\n gl.deleteFramebuffer(gpuRenderTarget.resolveTargetFramebuffer);\n gpuRenderTarget.resolveTargetFramebuffer = null;\n }\n\n if (gpuRenderTarget.depthStencilRenderBuffer)\n {\n gl.deleteRenderbuffer(gpuRenderTarget.depthStencilRenderBuffer);\n gpuRenderTarget.depthStencilRenderBuffer = null;\n }\n\n gpuRenderTarget.msaaRenderBuffer.forEach((renderBuffer) =>\n {\n gl.deleteRenderbuffer(renderBuffer);\n });\n\n gpuRenderTarget.msaaRenderBuffer = null;\n }\n\n public clear(_renderTarget: RenderTarget, clear: CLEAR_OR_BOOL, clearColor?: RgbaArray)\n {\n if (!clear) return;\n\n const renderTargetSystem = this._renderTargetSystem;\n\n // if clear is boolean..\n if (typeof clear === 'boolean')\n {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n\n const gl = this._renderer.gl;\n\n if (clear & CLEAR.COLOR)\n {\n clearColor ??= renderTargetSystem.defaultClearColor;\n\n const clearColorCache = this._clearColorCache;\n const clearColorArray = clearColor as number[];\n\n if (clearColorCache[0] !== clearColorArray[0]\n || clearColorCache[1] !== clearColorArray[1]\n || clearColorCache[2] !== clearColorArray[2]\n || clearColorCache[3] !== clearColorArray[3])\n {\n clearColorCache[0] = clearColorArray[0];\n clearColorCache[1] = clearColorArray[1];\n clearColorCache[2] = clearColorArray[2];\n clearColorCache[3] = clearColorArray[3];\n\n gl.clearColor(clearColorArray[0], clearColorArray[1], clearColorArray[2], clearColorArray[3]);\n }\n }\n\n gl.clear(clear);\n }\n\n public resizeGpuRenderTarget(renderTarget: RenderTarget)\n {\n if (renderTarget.isRoot) return;\n\n const renderTargetSystem = this._renderTargetSystem;\n\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n this._resizeColor(renderTarget, glRenderTarget);\n\n if (renderTarget.stencil)\n {\n this._resizeStencil(glRenderTarget);\n }\n }\n\n private _initColor(renderTarget: RenderTarget, glRenderTarget: GlRenderTarget)\n {\n const renderer = this._renderer;\n\n const gl = renderer.gl;\n // deal with our outputs..\n const resolveTargetFramebuffer = gl.createFramebuffer();\n\n glRenderTarget.resolveTargetFramebuffer = resolveTargetFramebuffer;\n\n // set up the texture..\n gl.bindFramebuffer(gl.FRAMEBUFFER, resolveTargetFramebuffer);\n\n glRenderTarget.width = renderTarget.colorTexture.source.pixelWidth;\n glRenderTarget.height = renderTarget.colorTexture.source.pixelHeight;\n\n renderTarget.colorTextures.forEach((colorTexture, i) =>\n {\n const source = colorTexture.source;\n\n if (source.antialias)\n {\n if (renderer.context.supports.msaa)\n {\n glRenderTarget.msaa = true;\n }\n else\n {\n warn('[RenderTexture] Antialiasing on textures is not supported in WebGL1');\n }\n }\n\n // TODO bindSource could return the glTexture\n renderer.texture.bindSource(source, 0);\n const glSource = renderer.texture.getGlSource(source);\n\n const glTexture = glSource.texture;\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n 3553, // texture.target,\n glTexture,\n 0);// mipLevel);\n });\n\n if (glRenderTarget.msaa)\n {\n const viewFramebuffer = gl.createFramebuffer();\n\n glRenderTarget.framebuffer = viewFramebuffer;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n\n renderTarget.colorTextures.forEach((_, i) =>\n {\n const msaaRenderBuffer = gl.createRenderbuffer();\n\n glRenderTarget.msaaRenderBuffer[i] = msaaRenderBuffer;\n });\n }\n else\n {\n glRenderTarget.framebuffer = resolveTargetFramebuffer;\n }\n\n this._resizeColor(renderTarget, glRenderTarget);\n }\n\n private _resizeColor(renderTarget: RenderTarget, glRenderTarget: GlRenderTarget)\n {\n const source = renderTarget.colorTexture.source;\n\n glRenderTarget.width = source.pixelWidth;\n glRenderTarget.height = source.pixelHeight;\n\n renderTarget.colorTextures.forEach((colorTexture, i) =>\n {\n // nno need to resize the first texture..\n if (i === 0) return;\n\n colorTexture.source.resize(source.width, source.height, source._resolution);\n });\n\n if (glRenderTarget.msaa)\n {\n const renderer = this._renderer;\n const gl = renderer.gl;\n\n const viewFramebuffer = glRenderTarget.framebuffer;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n\n renderTarget.colorTextures.forEach((colorTexture, i) =>\n {\n const source = colorTexture.source;\n\n renderer.texture.bindSource(source, 0);\n const glSource = renderer.texture.getGlSource(source);\n\n const glInternalFormat = glSource.internalFormat;\n\n const msaaRenderBuffer = glRenderTarget.msaaRenderBuffer[i];\n\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n glInternalFormat,\n source.pixelWidth,\n source.pixelHeight\n );\n\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n });\n }\n }\n\n private _initStencil(glRenderTarget: GlRenderTarget)\n {\n // this already exists on the default screen\n if (glRenderTarget.framebuffer === null) return;\n\n const gl = this._renderer.gl;\n\n const depthStencilRenderBuffer = gl.createRenderbuffer();\n\n glRenderTarget.depthStencilRenderBuffer = depthStencilRenderBuffer;\n\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n\n // TDO DO>>\n this._resizeStencil(glRenderTarget);\n }\n\n private _resizeStencil(glRenderTarget: GlRenderTarget)\n {\n const gl = this._renderer.gl;\n\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n glRenderTarget.depthStencilRenderBuffer\n );\n\n if (glRenderTarget.msaa)\n {\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n gl.DEPTH24_STENCIL8,\n glRenderTarget.width,\n glRenderTarget.height\n );\n }\n else\n {\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n this._renderer.context.webGLVersion === 2\n ? gl.DEPTH24_STENCIL8\n : gl.DEPTH_STENCIL,\n glRenderTarget.width,\n glRenderTarget.height\n );\n }\n }\n}\n","import type { Matrix } from '../../../../maths/matrix/Matrix';\n\nexport function calculateProjection(\n pm: Matrix,\n x: number,\n y: number,\n width: number,\n height: number,\n flipY: boolean\n): Matrix\n{\n const sign = flipY ? 1 : -1;\n\n pm.identity();\n\n pm.a = (1 / width * 2);\n pm.d = sign * (1 / height * 2);\n\n pm.tx = -1 - (x * pm.a);\n pm.ty = -sign - (y * pm.d);\n\n return pm;\n}\n","import { CanvasSource } from '../sources/CanvasSource';\nimport { Texture } from '../Texture';\n\nimport type { ICanvas } from '../../../../../environment/canvas/ICanvas';\nimport type { CanvasSourceOptions } from '../sources/CanvasSource';\n\nconst canvasCache: Map = new Map();\n\nexport function getCanvasTexture(canvas: ICanvas, options?: CanvasSourceOptions): Texture\n{\n if (!canvasCache.has(canvas))\n {\n const texture = new Texture({\n source: new CanvasSource({\n resource: canvas,\n ...options,\n })\n });\n\n const onDestroy = () =>\n {\n if (canvasCache.get(canvas) === texture)\n {\n canvasCache.delete(canvas);\n }\n };\n\n texture.once('destroy', onDestroy);\n texture.source.once('destroy', onDestroy);\n\n canvasCache.set(canvas, texture);\n }\n\n return canvasCache.get(canvas);\n}\n\nexport function hasCachedCanvasTexture(canvas: ICanvas): boolean\n{\n return canvasCache.has(canvas);\n}\n","import type { RenderTarget } from './RenderTarget';\n\n/**\n * Checks if the render target is viewable on the screen\n * Basically, is it a canvas element and is that canvas element in the DOM\n * @param renderTarget - the render target to check\n * @returns true if the render target is viewable on the screen\n */\nexport function isRenderingToScreen(renderTarget: RenderTarget): boolean\n{\n const resource = renderTarget.colorTexture.source.resource;\n\n return ((globalThis.HTMLCanvasElement && resource instanceof HTMLCanvasElement) && document.body.contains(resource));\n}\n","// what we are building is a platform and a framework.\n// import { Matrix } from '../../shared/maths/Matrix';\nimport { uid } from '../../../../utils/data/uid';\nimport { TextureSource } from '../texture/sources/TextureSource';\nimport { Texture } from '../texture/Texture';\n\nimport type { BindableTexture } from '../texture/Texture';\n\n/**\n * Options for creating a render target.\n * @memberof rendering\n */\nexport interface RenderTargetOptions\n{\n /** the width of the RenderTarget */\n width?: number;\n /** the height of the RenderTarget */\n height?: number;\n /** the resolution of the RenderTarget */\n resolution?: number;\n /** an array of textures, or a number indicating how many color textures there should be */\n colorTextures?: BindableTexture[] | number;\n /** should this render target have a stencil buffer? */\n stencil?: boolean;\n /** should this render target have a depth buffer? */\n depth?: boolean;\n /** a depth stencil texture that the depth and stencil outputs will be written to */\n depthStencilTexture?: BindableTexture | boolean;\n /** should this render target be antialiased? */\n antialias?: boolean;\n /** is this a root element, true if this is gl context owners render target */\n isRoot?: boolean;\n}\n\n/**\n * A class that describes what the renderers are rendering to.\n * This can be as simple as a Texture, or as complex as a multi-texture, multi-sampled render target.\n * Support for stencil and depth buffers is also included.\n *\n * If you need something more complex than a Texture to render to, you should use this class.\n * Under the hood, all textures you render to have a RenderTarget created on their behalf.\n * @memberof rendering\n */\nexport class RenderTarget\n{\n /** The default options for a render target */\n public static defaultOptions: RenderTargetOptions = {\n /** the width of the RenderTarget */\n width: 0,\n /** the height of the RenderTarget */\n height: 0,\n /** the resolution of the RenderTarget */\n resolution: 1,\n /** an array of textures, or a number indicating how many color textures there should be */\n colorTextures: 1,\n /** should this render target have a stencil buffer? */\n stencil: false,\n /** should this render target have a depth buffer? */\n depth: false,\n /** should this render target be antialiased? */\n antialias: false, // save on perf by default!\n /** is this a root element, true if this is gl context owners render target */\n isRoot: false\n };\n\n public uid = uid('renderTarget');\n\n /**\n * An array of textures that can be written to by the GPU - mostly this has one texture in Pixi, but you could\n * write to multiple if required! (eg deferred lighting)\n */\n public colorTextures: TextureSource[] = [];\n /** the stencil and depth buffer will right to this texture in WebGPU */\n public depthStencilTexture: TextureSource;\n /** if true, will ensure a stencil buffer is added. For WebGPU, this will automatically create a depthStencilTexture */\n public stencil: boolean;\n /** if true, will ensure a depth buffer is added. For WebGPU, this will automatically create a depthStencilTexture */\n public depth: boolean;\n\n public dirtyId = 0;\n public isRoot = false;\n\n private readonly _size = new Float32Array(2);\n /** if true, then when the render target is destroyed, it will destroy all the textures that were created for it. */\n private readonly _managedColorTextures: boolean = false;\n\n /**\n * @param [descriptor] - Options for creating a render target.\n */\n constructor(descriptor: RenderTargetOptions = {})\n {\n descriptor = { ...RenderTarget.defaultOptions, ...descriptor };\n\n this.stencil = descriptor.stencil;\n this.depth = descriptor.depth;\n this.isRoot = descriptor.isRoot;\n\n if (typeof descriptor.colorTextures === 'number')\n {\n this._managedColorTextures = true;\n\n for (let i = 0; i < descriptor.colorTextures; i++)\n {\n this.colorTextures.push(new TextureSource({\n width: descriptor.width,\n height: descriptor.height,\n resolution: descriptor.resolution,\n antialias: descriptor.antialias,\n })\n );\n }\n }\n else\n {\n this.colorTextures = [...descriptor.colorTextures.map((texture) => texture.source)];\n\n const colorSource = this.colorTexture.source;\n\n this.resize(colorSource.width, colorSource.height, colorSource._resolution);\n }\n\n // the first color texture drives the size of all others..\n this.colorTexture.source.on('resize', this.onSourceResize, this);\n\n // TODO should listen for texture destroyed?\n\n if (descriptor.depthStencilTexture || this.stencil)\n {\n // TODO add a test\n if (descriptor.depthStencilTexture instanceof Texture\n || descriptor.depthStencilTexture instanceof TextureSource)\n {\n this.depthStencilTexture = descriptor.depthStencilTexture.source;\n }\n else\n {\n this.ensureDepthStencilTexture();\n }\n }\n }\n\n get size(): [number, number]\n {\n const _size = this._size;\n\n _size[0] = this.pixelWidth;\n _size[1] = this.pixelHeight;\n\n return _size as any as [number, number];\n }\n\n get width(): number\n {\n return this.colorTexture.source.width;\n }\n\n get height(): number\n {\n return this.colorTexture.source.height;\n }\n get pixelWidth(): number\n {\n return this.colorTexture.source.pixelWidth;\n }\n\n get pixelHeight(): number\n {\n return this.colorTexture.source.pixelHeight;\n }\n\n get resolution(): number\n {\n return this.colorTexture.source._resolution;\n }\n\n get colorTexture(): TextureSource\n {\n return this.colorTextures[0];\n }\n\n protected onSourceResize(source: TextureSource)\n {\n this.resize(source.width, source.height, source._resolution, true);\n }\n\n /**\n * This will ensure a depthStencil texture is created for this render target.\n * Most likely called by the mask system to make sure we have stencil buffer added.\n * @internal\n * @ignore\n */\n public ensureDepthStencilTexture()\n {\n if (!this.depthStencilTexture)\n {\n this.depthStencilTexture = new TextureSource({\n width: this.width,\n height: this.height,\n resolution: this.resolution,\n format: 'depth24plus-stencil8',\n autoGenerateMipmaps: false,\n antialias: false,\n mipLevelCount: 1,\n // sampleCount: handled by the render target system..\n });\n }\n }\n\n public resize(width: number, height: number, resolution = this.resolution, skipColorTexture = false)\n {\n this.dirtyId++;\n\n this.colorTextures.forEach((colorTexture, i) =>\n {\n if (skipColorTexture && i === 0) return;\n\n colorTexture.source.resize(width, height, resolution);\n });\n\n if (this.depthStencilTexture)\n {\n this.depthStencilTexture.source.resize(width, height, resolution);\n }\n }\n\n public destroy()\n {\n this.colorTexture.source.off('resize', this.onSourceResize, this);\n\n if (this._managedColorTextures)\n {\n this.colorTextures.forEach((texture) =>\n {\n texture.destroy();\n });\n }\n\n if (this.depthStencilTexture)\n {\n this.depthStencilTexture.destroy();\n delete this.depthStencilTexture;\n }\n }\n}\n","import { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { CLEAR } from '../../gl/const';\nimport { calculateProjection } from '../../gpu/renderTarget/calculateProjection';\nimport { SystemRunner } from '../system/SystemRunner';\nimport { CanvasSource } from '../texture/sources/CanvasSource';\nimport { TextureSource } from '../texture/sources/TextureSource';\nimport { Texture } from '../texture/Texture';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture';\nimport { isRenderingToScreen } from './isRenderingToScreen';\nimport { RenderTarget } from './RenderTarget';\n\nimport type { RgbaArray } from '../../../../color/Color';\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { CLEAR_OR_BOOL } from '../../gl/const';\nimport type { GlRenderTarget } from '../../gl/GlRenderTarget';\nimport type { GpuRenderTarget } from '../../gpu/renderTarget/GpuRenderTarget';\nimport type { Renderer } from '../../types';\nimport type { System } from '../system/System';\nimport type { BindableTexture } from '../texture/Texture';\n\n/**\n * A render surface is a texture, canvas, or render target\n * @memberof rendering\n * @see environment.ICanvas\n * @see rendering.Texture\n * @see rendering.RenderTarget\n */\nexport type RenderSurface = ICanvas | BindableTexture | RenderTarget;\n\n/**\n * stores a render target and its frame\n * @ignore\n */\ninterface RenderTargetAndFrame\n{\n /** the render target */\n renderTarget: RenderTarget;\n /** the frame to use when using the render target */\n frame: Rectangle\n}\n\n/**\n * An adaptor interface for RenderTargetSystem to support WebGL and WebGPU.\n * This is used internally by the renderer, and is not intended to be used directly.\n * @ignore\n */\nexport interface RenderTargetAdaptor\n{\n init(\n /** the renderer */\n renderer: Renderer,\n /** the render target system */\n renderTargetSystem: RenderTargetSystem\n ): void\n\n /** A function copies the contents of a render surface to a texture */\n copyToTexture(\n /** the render surface to copy from */\n sourceRenderSurfaceTexture: RenderTarget,\n /** the texture to copy to */\n destinationTexture: Texture,\n /** the origin of the copy */\n originSrc: { x: number; y: number },\n /** the size of the copy */\n size: { width: number; height: number },\n /** the destination origin (top left to paste from!) */\n originDest?: { x: number; y: number },\n ): Texture\n\n /** starts a render pass on the render target */\n startRenderPass(\n /** the render target to start the render pass on */\n renderTarget: RenderTarget,\n /* the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111* */\n clear: CLEAR_OR_BOOL,\n /** the color to clear to */\n clearColor?: RgbaArray,\n /** the viewport to use */\n viewport?: Rectangle\n ): void\n\n /** clears the current render target to the specified color */\n clear(\n /** the render target to clear */\n renderTarget: RenderTarget,\n /** the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111 */\n clear: CLEAR_OR_BOOL,\n /** the color to clear to */\n clearColor?: RgbaArray,\n /** the viewport to use */\n viewport?: Rectangle\n ): void\n\n /** finishes the current render pass */\n finishRenderPass(renderTarget: RenderTarget): void\n\n /**\n * initializes a gpu render target. Both renderers use this function to initialize a gpu render target\n * Its different type of object depending on the renderer.\n */\n initGpuRenderTarget(\n /** the render target to initialize */\n renderTarget: RenderTarget\n ): RENDER_TARGET\n\n /** called when a render target is resized */\n resizeGpuRenderTarget(\n /** the render target to resize */\n renderTarget: RenderTarget\n ): void\n\n /** destroys the gpu render target */\n destroyGpuRenderTarget(\n /** the render target to destroy */\n gpuRenderTarget: RENDER_TARGET\n ): void\n}\n\n/**\n * A system that manages render targets. A render target is essentially a place where the shaders can color in the pixels.\n * The render target system is responsible for binding the render target to the renderer, and managing the viewport.\n * Render targets can be pushed and popped.\n *\n * To make it easier, you can also bind textures and canvases too. This will automatically create a render target for you.\n * The render target itself is a lot more powerful than just a texture or canvas,\n * as it can have multiple textures attached to it.\n * It will also give ou fine grain control over the stencil buffer / depth texture.\n * @example\n *\n * ```js\n *\n * // create a render target\n * const renderTarget = new RenderTarget({\n * colorTextures: [new TextureSource({ width: 100, height: 100 })],\n * });\n *\n * // bind the render target\n * renderer.renderTarget.bind(renderTarget);\n *\n * // draw something!\n * ```\n * @memberof rendering\n */\nexport class RenderTargetSystem implements System\n{\n /** When rendering of a scene begins, this is where the root render surface is stored */\n public rootRenderTarget: RenderTarget;\n /** This is the root viewport for the render pass*/\n public rootViewPort = new Rectangle();\n /** A boolean that lets the dev know if the current render pass is rendering to the screen. Used by some plugins */\n public renderingToScreen: boolean;\n /** the current active render target */\n public renderTarget: RenderTarget;\n /** the current active render surface that the render target is created from */\n public renderSurface: RenderSurface;\n /** the current viewport that the gpu is using */\n public readonly viewport = new Rectangle();\n /**\n * a runner that lets systems know if the active render target has changed.\n * Eg the Stencil System needs to know so it can manage the stencil buffer\n */\n public readonly onRenderTargetChange = new SystemRunner('onRenderTargetChange');\n /** the projection matrix that is used by the shaders based on the active render target and the viewport */\n public readonly projectionMatrix = new Matrix();\n /** the default clear color for render targets */\n public readonly defaultClearColor: RgbaArray = [0, 0, 0, 0];\n /** a reference to the adaptor that interfaces with WebGL / WebGP */\n public readonly adaptor: RenderTargetAdaptor;\n /**\n * a hash that stores the render target for a given render surface. When you pass in a texture source,\n * a render target is created for it. This map stores and makes it easy to retrieve the render target\n */\n private readonly _renderSurfaceToRenderTargetHash: Map\n = new Map();\n /** A hash that stores a gpu render target for a given render target. */\n private _gpuRenderTargetHash: Record = Object.create(null);\n /**\n * A stack that stores the render target and frame that is currently being rendered to.\n * When push is called, the current render target is stored in this stack.\n * When pop is called, the previous render target is restored.\n */\n private readonly _renderTargetStack: RenderTargetAndFrame[] = [];\n /** A reference to the renderer */\n private readonly _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n /** called when dev wants to finish a render pass */\n public finishRenderPass()\n {\n this.adaptor.finishRenderPass(this.renderTarget);\n }\n\n /**\n * called when the renderer starts to render a scene.\n * @param options\n * @param options.target - the render target to render to\n * @param options.clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param options.clearColor - the color to clear to\n * @param options.frame - the frame to render to\n */\n public renderStart({\n target,\n clear,\n clearColor,\n frame\n }: {\n target: RenderSurface;\n clear: CLEAR_OR_BOOL;\n clearColor: RgbaArray;\n frame?: Rectangle\n }): void\n {\n // TODO no need to reset this - use optimised index instead\n this._renderTargetStack.length = 0;\n\n this.push(\n target,\n clear,\n clearColor,\n frame\n );\n\n this.rootViewPort.copyFrom(this.viewport);\n this.rootRenderTarget = this.renderTarget;\n this.renderingToScreen = isRenderingToScreen(this.rootRenderTarget);\n }\n\n /**\n * Binding a render surface! This is the main function of the render target system.\n * It will take the RenderSurface (which can be a texture, canvas, or render target) and bind it to the renderer.\n * Once bound all draw calls will be rendered to the render surface.\n *\n * If a frame is not provide and the render surface is a texture, the frame of the texture will be used.\n * @param renderSurface - the render surface to bind\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to render to\n * @returns the render target that was bound\n */\n public bind(\n renderSurface: RenderSurface,\n clear: CLEAR_OR_BOOL = true,\n clearColor?: RgbaArray,\n frame?: Rectangle\n ): RenderTarget\n {\n const renderTarget = this.getRenderTarget(renderSurface);\n\n const didChange = this.renderTarget !== renderTarget;\n\n this.renderTarget = renderTarget;\n this.renderSurface = renderSurface;\n\n const gpuRenderTarget = this.getGpuRenderTarget(renderTarget);\n\n if (renderTarget.pixelWidth !== gpuRenderTarget.width\n || renderTarget.pixelHeight !== gpuRenderTarget.height)\n {\n this.adaptor.resizeGpuRenderTarget(renderTarget);\n\n gpuRenderTarget.width = renderTarget.pixelWidth;\n gpuRenderTarget.height = renderTarget.pixelHeight;\n }\n\n const source = renderTarget.colorTexture;\n const viewport = this.viewport;\n\n const pixelWidth = source.pixelWidth;\n const pixelHeight = source.pixelHeight;\n\n if (!frame && renderSurface instanceof Texture)\n {\n frame = renderSurface.frame;\n }\n\n if (frame)\n {\n const resolution = source._resolution;\n\n viewport.x = ((frame.x * resolution) + 0.5) | 0;\n viewport.y = ((frame.y * resolution) + 0.5) | 0;\n viewport.width = ((frame.width * resolution) + 0.5) | 0;\n viewport.height = ((frame.height * resolution) + 0.5) | 0;\n }\n else\n {\n viewport.x = 0;\n viewport.y = 0;\n viewport.width = pixelWidth;\n viewport.height = pixelHeight;\n }\n\n calculateProjection(\n this.projectionMatrix,\n 0, 0,\n viewport.width / source.resolution,\n viewport.height / source.resolution,\n !renderTarget.isRoot\n );\n\n this.adaptor.startRenderPass(renderTarget, clear, clearColor, viewport);\n\n if (didChange)\n {\n this.onRenderTargetChange.emit(renderTarget);\n }\n\n return renderTarget;\n }\n\n public clear(\n target?: RenderSurface,\n clear: CLEAR_OR_BOOL = CLEAR.ALL,\n clearColor?: RgbaArray,\n )\n {\n if (!clear) return;\n\n if (target)\n {\n target = this.getRenderTarget(target);\n }\n\n this.adaptor.clear(\n (target as RenderTarget) || this.renderTarget,\n clear,\n clearColor,\n this.viewport\n );\n }\n\n protected contextChange(): void\n {\n this._gpuRenderTargetHash = Object.create(null);\n }\n\n /**\n * Push a render surface to the renderer. This will bind the render surface to the renderer,\n * @param renderSurface - the render surface to push\n * @param clear - the clear mode to use. Can be true or a CLEAR number 'COLOR | DEPTH | STENCIL' 0b111\n * @param clearColor - the color to clear to\n * @param frame - the frame to use when rendering to the render surface\n */\n public push(\n renderSurface: RenderSurface,\n clear: CLEAR | boolean = CLEAR.ALL,\n clearColor?: RgbaArray,\n frame?: Rectangle\n )\n {\n const renderTarget = this.bind(renderSurface, clear, clearColor, frame);\n\n this._renderTargetStack.push({\n renderTarget,\n frame,\n });\n\n return renderTarget;\n }\n\n /** Pops the current render target from the renderer and restores the previous render target. */\n public pop()\n {\n this._renderTargetStack.pop();\n\n const currentRenderTargetData = this._renderTargetStack[this._renderTargetStack.length - 1];\n\n this.bind(currentRenderTargetData.renderTarget, false, null, currentRenderTargetData.frame);\n }\n\n /**\n * Gets the render target from the provide render surface. Eg if its a texture,\n * it will return the render target for the texture.\n * If its a render target, it will return the same render target.\n * @param renderSurface - the render surface to get the render target for\n * @returns the render target for the render surface\n */\n public getRenderTarget(renderSurface: RenderSurface): RenderTarget\n {\n if (((renderSurface as Texture).isTexture))\n {\n renderSurface = (renderSurface as Texture).source;\n }\n\n return this._renderSurfaceToRenderTargetHash.get(renderSurface)\n ?? this._initRenderTarget(renderSurface);\n }\n\n /**\n * Copies a render surface to another texture\n * @param sourceRenderSurfaceTexture - the render surface to copy from\n * @param destinationTexture - the texture to copy to\n * @param originSrc - the origin of the copy\n * @param originSrc.x - the x origin of the copy\n * @param originSrc.y - the y origin of the copy\n * @param size - the size of the copy\n * @param size.width - the width of the copy\n * @param size.height - the height of the copy\n * @param originDest - the destination origin (top left to paste from!)\n * @param originDest.x - the x origin of the paste\n * @param originDest.y - the y origin of the paste\n */\n public copyToTexture(\n sourceRenderSurfaceTexture: RenderTarget,\n destinationTexture: Texture,\n originSrc: { x: number; y: number },\n size: { width: number; height: number },\n originDest: { x: number; y: number; },\n )\n {\n // fit the size to the source we don't want to go out of bounds\n\n if (originSrc.x < 0)\n {\n size.width += originSrc.x;\n originDest.x -= originSrc.x;\n originSrc.x = 0;\n }\n\n if (originSrc.y < 0)\n {\n size.height += originSrc.y;\n originDest.y -= originSrc.y;\n originSrc.y = 0;\n }\n\n const { pixelWidth, pixelHeight } = sourceRenderSurfaceTexture;\n\n size.width = Math.min(size.width, pixelWidth - originSrc.x);\n size.height = Math.min(size.height, pixelHeight - originSrc.y);\n\n return this.adaptor.copyToTexture(\n sourceRenderSurfaceTexture,\n destinationTexture,\n originSrc,\n size,\n originDest\n );\n }\n\n /**\n * ensures that we have a depth stencil buffer available to render to\n * This is used by the mask system to make sure we have a stencil buffer.\n */\n public ensureDepthStencil()\n {\n if (!this.renderTarget.stencil)\n {\n this.renderTarget.stencil = true;\n\n this.adaptor.startRenderPass(this.renderTarget, false, null, this.viewport);\n }\n }\n\n /** nukes the render target system */\n public destroy()\n {\n (this._renderer as null) = null;\n\n this._renderSurfaceToRenderTargetHash.forEach((renderTarget, key) =>\n {\n if (renderTarget !== key)\n {\n renderTarget.destroy();\n }\n });\n\n this._renderSurfaceToRenderTargetHash.clear();\n\n this._gpuRenderTargetHash = Object.create(null);\n }\n\n private _initRenderTarget(renderSurface: RenderSurface): RenderTarget\n {\n let renderTarget: RenderTarget = null;\n\n if (CanvasSource.test(renderSurface))\n {\n renderSurface = getCanvasTexture(renderSurface as ICanvas);\n }\n\n if (renderSurface instanceof RenderTarget)\n {\n renderTarget = renderSurface;\n }\n else if (renderSurface instanceof TextureSource)\n {\n renderTarget = new RenderTarget({\n colorTextures: [renderSurface],\n });\n\n if (CanvasSource.test(renderSurface.source.resource))\n {\n renderTarget.isRoot = true;\n }\n\n // TODO add a test for this\n renderSurface.once('destroy', () =>\n {\n renderTarget.destroy();\n\n const gpuRenderTarget = this._gpuRenderTargetHash[renderTarget.uid];\n\n if (gpuRenderTarget)\n {\n this._gpuRenderTargetHash[renderTarget.uid] = null;\n this.adaptor.destroyGpuRenderTarget(gpuRenderTarget);\n }\n });\n }\n\n this._renderSurfaceToRenderTargetHash.set(renderSurface, renderTarget);\n\n return renderTarget;\n }\n\n public getGpuRenderTarget(renderTarget: RenderTarget)\n {\n return this._gpuRenderTargetHash[renderTarget.uid]\n || (this._gpuRenderTargetHash[renderTarget.uid] = this.adaptor.initGpuRenderTarget(renderTarget));\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem';\nimport { GlRenderTargetAdaptor } from './GlRenderTargetAdaptor';\n\nimport type { GlRenderTarget } from '../GlRenderTarget';\nimport type { WebGLRenderer } from '../WebGLRenderer';\n\n/**\n * The WebGL adaptor for the render target system. Allows the Render Target System to be used with the WebGl renderer\n * @memberof rendering\n */\nexport class GlRenderTargetSystem extends RenderTargetSystem\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGLSystem],\n name: 'renderTarget',\n } as const;\n\n public adaptor = new GlRenderTargetAdaptor();\n\n constructor(renderer: WebGLRenderer)\n {\n super(renderer);\n\n this.adaptor.init(renderer, this);\n }\n}\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid';\n\nimport type { BindResource } from '../../gpu/shader/BindResource';\nimport type { Buffer } from './Buffer';\n\n/**\n * A resource that can be bound to a bind group and used in a shader.\n * Whilst a buffer can be used as a resource, this class allows you to specify an offset and size of the buffer to use.\n * This is useful if you have a large buffer and only part of it is used in a shader.\n *\n * This resource, will listen for changes on the underlying buffer and emit a itself if the buffer changes shape.\n * @example\n *\n * const buffer = new Buffer({\n * data: new Float32Array(1000),\n * usage: BufferUsage.UNIFORM,\n * });\n * // Create a buffer resource that uses the first 100 bytes of a buffer\n * const bufferResource = new BufferResource({\n * buffer,\n * offset: 0,\n * size: 100,\n * });\n * @memberof rendering\n */\nexport class BufferResource extends EventEmitter<{\n change: BindResource,\n}> implements BindResource\n{\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n\n /**\n * a unique id for this uniform group used through the renderer\n * @internal\n * @ignore\n */\n public readonly uid = uid('buffer');\n\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n * @ignore\n */\n public readonly _resourceType = 'bufferResource';\n\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n * @ignore\n */\n public _touched = 0;\n\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n * @ignore\n */\n public _resourceId = uid('resource');\n\n /** the underlying buffer that this resource is using */\n public buffer: Buffer;\n /** the offset of the buffer this resource is using. If not provided, then it will use the offset of the buffer. */\n public readonly offset: number;\n /** the size of the buffer this resource is using. If not provided, then it will use the size of the buffer. */\n public readonly size: number;\n /**\n * A cheeky hint to the GL renderer to let it know this is a BufferResource\n * @internal\n * @ignore\n */\n public readonly _bufferResource = true;\n\n /**\n * Has the Buffer resource been destroyed?\n * @readonly\n */\n public destroyed = false;\n\n /**\n * Create a new Buffer Resource.\n * @param options - The options for the buffer resource\n * @param options.buffer - The underlying buffer that this resource is using\n * @param options.offset - The offset of the buffer this resource is using.\n * If not provided, then it will use the offset of the buffer.\n * @param options.size - The size of the buffer this resource is using.\n * If not provided, then it will use the size of the buffer.\n */\n constructor({ buffer, offset, size }: { buffer: Buffer; offset?: number; size?: number; })\n {\n super();\n\n this.buffer = buffer;\n this.offset = offset | 0;\n this.size = size;\n\n this.buffer.on('change', this.onBufferChange, this);\n }\n\n protected onBufferChange(): void\n {\n this._resourceId = uid('resource');\n\n this.emit('change', this);\n }\n\n /**\n * Destroys this resource. Make sure the underlying buffer is not used anywhere else\n * if you want to destroy it as well, or code will explode\n * @param destroyBuffer - Should the underlying buffer be destroyed as well?\n */\n public destroy(destroyBuffer = false): void\n {\n this.destroyed = true;\n\n if (destroyBuffer)\n {\n this.buffer.destroy();\n }\n\n this.emit('change', this);\n\n this.buffer = null;\n }\n}\n","import { BufferResource } from '../../shared/buffer/BufferResource';\nimport { UniformGroup } from '../../shared/shader/UniformGroup';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource';\n\nimport type { Shader } from '../../shared/shader/Shader';\nimport type { GlShaderSystem, ShaderSyncFunction } from './GlShaderSystem';\n\n/**\n * Generates the a function that will efficiantly sync shader resources with the GPU.\n * @param shader - The shader to generate the code for\n * @param shaderSystem - An instance of the shader system\n */\nexport function generateShaderSyncCode(shader: Shader, shaderSystem: GlShaderSystem): ShaderSyncFunction\n{\n const funcFragments: string[] = [];\n\n /**\n * rS = renderer.shader\n * sS = shaderSystem\n * sD = shaderData\n * g = shader.groups\n * s = shader\n * r = renderer\n * ugS = renderer.uniformGroupSystem\n */\n const headerFragments: string[] = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n\n let addedTextreSystem = false;\n let blockIndex = 0;\n let textureCount = 0;\n\n const programData = shaderSystem._getProgramData(shader.glProgram);\n\n for (const i in shader.groups)\n {\n const group = shader.groups[i];\n\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n\n for (const j in group.resources)\n {\n const resource = group.resources[j];\n\n if (resource instanceof UniformGroup)\n {\n if (resource.ubo)\n {\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n sS._uniformBindMap[${i}[${j}],\n ${blockIndex++}\n );\n `);\n }\n else\n {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n }\n else if (resource instanceof BufferResource)\n {\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n sS._uniformBindMap[${i}[${j}],\n ${blockIndex++}\n );\n `);\n }\n else if (resource instanceof TextureSource)\n {\n const uniformName = shader._uniformBindMap[i as unknown as number][j as unknown as number];\n\n const uniformData = programData.uniformData[uniformName];\n\n if (uniformData)\n {\n if (!addedTextreSystem)\n {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n\n textureCount++;\n }\n }\n }\n }\n\n const functionSource = [...headerFragments, ...funcFragments].join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function('r', 's', 'sD', functionSource) as ShaderSyncFunction;\n}\n","/**\n * @private\n */\nexport class IGLUniformData\n{\n public location: WebGLUniformLocation;\n public value: number | boolean | Float32Array | Int32Array | Uint32Array | boolean[];\n}\n\n/**\n * Helper class to create a WebGL Program\n * @private\n */\nexport class GlProgramData\n{\n /** The shader program. */\n public program: WebGLProgram;\n\n /**\n * Holds the uniform data which contains uniform locations\n * and current uniform values used for caching and preventing unneeded GPU commands.\n */\n public uniformData: Record;\n\n /**\n * UniformGroups holds the various upload functions for the shader. Each uniform group\n * and program have a unique upload function generated.\n */\n public uniformGroups: Record;\n\n /** A hash that stores where UBOs are bound to on the program. */\n public uniformBlockBindings: Record;\n\n /** A hash for lazily-generated uniform uploading functions. */\n public uniformSync: Record;\n\n /**\n * A place where dirty ticks are stored for groups\n * If a tick here does not match with the Higher level Programs tick, it means\n * we should re upload the data.\n */\n public uniformDirtyGroups: Record;\n\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program: WebGLProgram, uniformData: {[key: string]: IGLUniformData})\n {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBlockBindings = {};\n }\n\n /** Destroys this program. */\n public destroy(): void\n {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBlockBindings = null;\n this.program = null;\n }\n}\n","/**\n * @private\n * @param {WebGLRenderingContext} gl - The current WebGL context {WebGLProgram}\n * @param {number} type - the type, can be either VERTEX_SHADER or FRAGMENT_SHADER\n * @param {string} src - The vertex shader source as an array of strings.\n * @returns {WebGLShader} the shader\n */\nexport function compileShader(gl: WebGLRenderingContextBase, type: number, src: string): WebGLShader\n{\n const shader = gl.createShader(type);\n\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n\n return shader;\n}\n","function booleanArray(size: number): Array\n{\n const array = new Array(size);\n\n for (let i = 0; i < array.length; i++)\n {\n array[i] = false;\n }\n\n return array;\n}\n\n/**\n * @method defaultValue\n * @param {string} type - Type of value\n * @param {number} size\n * @private\n */\nexport function defaultValue(\n type: string,\n size: number\n): number | Float32Array | Int32Array | Uint32Array | boolean | boolean[]\n{\n switch (type)\n {\n case 'float':\n return 0;\n\n case 'vec2':\n return new Float32Array(2 * size);\n\n case 'vec3':\n return new Float32Array(3 * size);\n\n case 'vec4':\n return new Float32Array(4 * size);\n\n case 'int':\n case 'uint':\n case 'sampler2D':\n case 'sampler2DArray':\n return 0;\n\n case 'ivec2':\n return new Int32Array(2 * size);\n\n case 'ivec3':\n return new Int32Array(3 * size);\n\n case 'ivec4':\n return new Int32Array(4 * size);\n\n case 'uvec2':\n return new Uint32Array(2 * size);\n\n case 'uvec3':\n return new Uint32Array(3 * size);\n\n case 'uvec4':\n return new Uint32Array(4 * size);\n\n case 'bool':\n return false;\n\n case 'bvec2':\n\n return booleanArray(2 * size);\n\n case 'bvec3':\n return booleanArray(3 * size);\n\n case 'bvec4':\n return booleanArray(4 * size);\n\n case 'mat2':\n return new Float32Array([1, 0,\n 0, 1]);\n\n case 'mat3':\n return new Float32Array([1, 0, 0,\n 0, 1, 0,\n 0, 0, 1]);\n\n case 'mat4':\n return new Float32Array([1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1]);\n }\n\n return null;\n}\n","import type { Dict } from '../../../../../utils/types';\nimport type { VertexFormat } from '../../../shared/geometry/const';\n\nlet GL_TABLE: Dict = null;\n\nconst GL_TO_GLSL_TYPES: Dict = {\n FLOAT: 'float',\n FLOAT_VEC2: 'vec2',\n FLOAT_VEC3: 'vec3',\n FLOAT_VEC4: 'vec4',\n\n INT: 'int',\n INT_VEC2: 'ivec2',\n INT_VEC3: 'ivec3',\n INT_VEC4: 'ivec4',\n\n UNSIGNED_INT: 'uint',\n UNSIGNED_INT_VEC2: 'uvec2',\n UNSIGNED_INT_VEC3: 'uvec3',\n UNSIGNED_INT_VEC4: 'uvec4',\n\n BOOL: 'bool',\n BOOL_VEC2: 'bvec2',\n BOOL_VEC3: 'bvec3',\n BOOL_VEC4: 'bvec4',\n\n FLOAT_MAT2: 'mat2',\n FLOAT_MAT3: 'mat3',\n FLOAT_MAT4: 'mat4',\n\n SAMPLER_2D: 'sampler2D',\n INT_SAMPLER_2D: 'sampler2D',\n UNSIGNED_INT_SAMPLER_2D: 'sampler2D',\n SAMPLER_CUBE: 'samplerCube',\n INT_SAMPLER_CUBE: 'samplerCube',\n UNSIGNED_INT_SAMPLER_CUBE: 'samplerCube',\n SAMPLER_2D_ARRAY: 'sampler2DArray',\n INT_SAMPLER_2D_ARRAY: 'sampler2DArray',\n UNSIGNED_INT_SAMPLER_2D_ARRAY: 'sampler2DArray',\n};\n\nconst GLSL_TO_VERTEX_TYPES: Record = {\n\n float: 'float32',\n vec2: 'float32x2',\n vec3: 'float32x3',\n vec4: 'float32x4',\n\n int: 'sint32',\n ivec2: 'sint32x2',\n ivec3: 'sint32x3',\n ivec4: 'sint32x4',\n\n uint: 'uint32',\n uvec2: 'uint32x2',\n uvec3: 'uint32x3',\n uvec4: 'uint32x4',\n\n bool: 'uint32',\n bvec2: 'uint32x2',\n bvec3: 'uint32x3',\n bvec4: 'uint32x4',\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function mapType(gl: any, type: number): string\n{\n if (!GL_TABLE)\n {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n\n GL_TABLE = {};\n\n for (let i = 0; i < typeNames.length; ++i)\n {\n const tn = typeNames[i];\n\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n\n return GL_TABLE[type];\n}\n\nexport function mapGlToVertexFormat(gl: any, type: number): VertexFormat\n{\n const typeValue = mapType(gl, type);\n\n return GLSL_TO_VERTEX_TYPES[typeValue] || 'float32';\n}\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat';\nimport { mapGlToVertexFormat } from './mapType';\n\nimport type { Attribute } from '../../../shared/geometry/Geometry';\n\nexport type ExtractedAttributeData = Omit;\n\n/**\n * returns the attribute data from the program\n * @private\n * @param {WebGLProgram} [program] - the WebGL program\n * @param {WebGLRenderingContext} [gl] - the WebGL context\n * @returns {object} the attribute data for this program\n */\n\nexport function extractAttributesFromGlProgram(\n program: WebGLProgram,\n gl: WebGLRenderingContextBase,\n sortAttributes = false\n): Record\n{\n const attributes: {[key: string]: ExtractedAttributeData} = {};\n\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let i = 0; i < totalAttributes; i++)\n {\n const attribData = gl.getActiveAttrib(program, i);\n\n // ignore the default ones!\n if (attribData.name.startsWith('gl_'))\n {\n continue;\n }\n\n const format = mapGlToVertexFormat(gl, attribData.type);\n\n attributes[attribData.name] = {\n location: 0, // set further down..\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0,\n };\n }\n\n const keys = Object.keys(attributes);\n\n if (sortAttributes)\n {\n keys.sort((a, b) => (a > b) ? 1 : -1); // eslint-disable-line no-confusing-arrow\n\n for (let i = 0; i < keys.length; i++)\n {\n attributes[keys[i]].location = i;\n\n gl.bindAttribLocation(program, i, keys[i]);\n }\n\n gl.linkProgram(program);\n }\n else\n {\n for (let i = 0; i < keys.length; i++)\n {\n attributes[keys[i]].location = gl.getAttribLocation(program, keys[i]);\n }\n }\n\n return attributes;\n}\n","import type { GlUniformBlockData } from '../GlProgram';\n\n/**\n * returns the uniform block data from the program\n * @private\n * @param program - the webgl program\n * @param gl - the WebGL context\n * @returns {object} the uniform data for this program\n */\nexport function getUboData(program: WebGLProgram, gl: WebGL2RenderingContext): Record\n{\n // if uniform buffer data is not supported, early out\n if (!gl.ACTIVE_UNIFORM_BLOCKS) return {};\n\n const uniformBlocks: Record = {};\n\n // const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n const totalUniformsBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n\n for (let i = 0; i < totalUniformsBlocks; i++)\n {\n const name = gl.getActiveUniformBlockName(program, i);\n const uniformBlockIndex = gl.getUniformBlockIndex(program, name);\n\n const size = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_DATA_SIZE);\n\n uniformBlocks[name] = {\n name,\n index: uniformBlockIndex,\n size,\n };\n }\n\n return uniformBlocks;\n}\n","import { defaultValue } from './defaultValue';\nimport { mapType } from './mapType';\n\nimport type { GlUniformData } from '../GlProgram';\n\n/**\n * returns the uniform data from the program\n * @private\n * @param program - the webgl program\n * @param gl - the WebGL context\n * @returns {object} the uniform data for this program\n */\nexport function getUniformData(program: WebGLProgram, gl: WebGLRenderingContextBase): {[key: string]: GlUniformData}\n{\n const uniforms: {[key: string]: GlUniformData} = {};\n\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n\n for (let i = 0; i < totalUniforms; i++)\n {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, '');\n\n const isArray = !!(uniformData.name.match(/\\[.*?\\]$/));\n\n const type = mapType(gl, uniformData.type);\n\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size),\n };\n }\n\n return uniforms;\n}\n","/**\n * will log a shader error highlighting the lines with the error\n * also will add numbers along the side.\n * @param gl - the WebGLContext\n * @param shader - the shader to log errors for\n */\nfunction logPrettyShaderError(gl: WebGLRenderingContext, shader: WebGLShader): void\n{\n const shaderSrc = gl.getShaderSource(shader)\n .split('\\n')\n .map((line, index) => `${index}: ${line}`);\n\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split('\\n');\n\n const dedupe: Record = {};\n\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, '$1')))\n .filter((n) =>\n {\n if (n && !dedupe[n])\n {\n dedupe[n] = true;\n\n return true;\n }\n\n return false;\n });\n\n const logArgs = [''];\n\n lineNumbers.forEach((number) =>\n {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push('background: #FF0000; color:#FFFFFF; font-size: 10px', 'font-size: 10px');\n });\n\n const fragmentSourceToLog = shaderSrc\n .join('\\n');\n\n logArgs[0] = fragmentSourceToLog;\n\n console.error(shaderLog);\n\n // eslint-disable-next-line no-console\n console.groupCollapsed('click to view full shader code');\n console.warn(...logArgs);\n // eslint-disable-next-line no-console\n console.groupEnd();\n}\n\n/**\n *\n * logs out any program errors\n * @param gl - The current WebGL context\n * @param program - the WebGL program to display errors for\n * @param vertexShader - the fragment WebGL shader program\n * @param fragmentShader - the vertex WebGL shader program\n * @private\n */\nexport function logProgramError(\n gl: WebGLRenderingContext,\n program: WebGLProgram,\n vertexShader: WebGLShader,\n fragmentShader: WebGLShader\n): void\n{\n // if linking fails, then log and cleanup\n if (!gl.getProgramParameter(program, gl.LINK_STATUS))\n {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS))\n {\n logPrettyShaderError(gl, vertexShader);\n }\n\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS))\n {\n logPrettyShaderError(gl, fragmentShader);\n }\n\n console.error('PixiJS Error: Could not initialize shader.');\n\n // if there is a program info log, log it\n if (gl.getProgramInfoLog(program) !== '')\n {\n console.warn('PixiJS Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program));\n }\n }\n}\n","import { warn } from '../../../../../utils/logging/warn';\nimport { GlProgramData } from '../GlProgramData';\nimport { compileShader } from './compileShader';\nimport { defaultValue } from './defaultValue';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram';\nimport { getUboData } from './getUboData';\nimport { getUniformData } from './getUniformData';\nimport { logProgramError } from './logProgramError';\n\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlProgram } from '../GlProgram';\nimport type { IGLUniformData } from '../GlProgramData';\n\n/**\n * generates a WebGL Program object from a high level Pixi Program.\n * @param gl - a rendering context on which to generate the program\n * @param program - the high level Pixi Program.\n * @private\n */\nexport function generateProgram(gl: GlRenderingContext, program: GlProgram): GlProgramData\n{\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n\n const webGLProgram = gl.createProgram();\n\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n\n if (transformFeedbackVaryings)\n {\n if (typeof gl.transformFeedbackVaryings !== 'function')\n {\n // #if _DEBUG\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n // #endif\n }\n else\n {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === 'separate'\n ? gl.SEPARATE_ATTRIBS\n : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n\n gl.linkProgram(webGLProgram);\n\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS))\n {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n\n // GLSL 1.00: bind attributes sorted by name in ascending order\n // GLSL 3.00: don't change the attribute locations that where chosen by the compiler\n // or assigned by the layout specifier in the shader source code\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !(/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m).test(program.vertex)\n );\n\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n\n const uniformData: {[key: string]: IGLUniformData} = {};\n\n for (const i in program._uniformData)\n {\n const data = program._uniformData[i];\n\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size),\n };\n }\n\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n\n return glProgram;\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { generateShaderSyncCode } from './GenerateShaderSyncCode';\nimport { generateProgram } from './program/generateProgram';\n\nimport type { BufferResource } from '../../shared/buffer/BufferResource';\nimport type { Shader } from '../../shared/shader/Shader';\nimport type { UniformGroup } from '../../shared/shader/UniformGroup';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\nimport type { WebGLRenderer } from '../WebGLRenderer';\nimport type { GlProgram } from './GlProgram';\nimport type { GlProgramData } from './GlProgramData';\n\nexport interface ShaderSyncData\n{\n textureCount: number;\n blockIndex: number;\n}\n\nexport type ShaderSyncFunction = (renderer: WebGLRenderer, shader: Shader, syncData: ShaderSyncData) => void;\n\n// default sync data so we don't create a new one each time!\nconst defaultSyncData: ShaderSyncData = {\n textureCount: 0,\n blockIndex: 0,\n};\n\n/**\n * System plugin to the renderer to manage the shaders for WebGL.\n * @memberof rendering\n */\nexport class GlShaderSystem\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'shader',\n } as const;\n\n /**\n * @internal\n * @private\n */\n public _activeProgram: GlProgram = null;\n\n private _programDataHash: Record = Object.create(null);\n private readonly _renderer: WebGLRenderer;\n public _gl: WebGL2RenderingContext;\n private _maxBindings: number;\n private _nextIndex = 0;\n private _boundUniformsIdsToIndexHash: Record = Object.create(null);\n private _boundIndexToUniformsHash: Record = Object.create(null);\n private _shaderSyncFunctions: Record = Object.create(null);\n\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n protected contextChange(gl: GlRenderingContext): void\n {\n this._gl = gl;\n\n this._maxBindings = gl.MAX_UNIFORM_BUFFER_BINDINGS ? gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS) : 0;\n\n this._programDataHash = Object.create(null);\n this._boundUniformsIdsToIndexHash = Object.create(null);\n this._boundIndexToUniformsHash = Object.create(null);\n this._activeProgram = null;\n }\n\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param skipSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n public bind(shader: Shader, skipSync?: boolean): void\n {\n this._setProgram(shader.glProgram);\n\n if (skipSync) return;\n\n defaultSyncData.textureCount = 0;\n defaultSyncData.blockIndex = 0;\n\n let syncFunction = this._shaderSyncFunctions[shader.glProgram._key];\n\n if (!syncFunction)\n {\n syncFunction = this._shaderSyncFunctions[shader.glProgram._key] = this._generateShaderSync(shader, this);\n }\n\n syncFunction(this._renderer, shader, defaultSyncData);\n }\n\n /**\n * Updates the uniform group.\n * @param uniformGroup - the uniform group to update\n */\n public updateUniformGroup(uniformGroup: UniformGroup): void\n {\n this._renderer.uniformGroup.updateUniformGroup(uniformGroup, this._activeProgram, defaultSyncData);\n }\n\n /**\n * Binds a uniform block to the shader.\n * @param uniformGroup - the uniform group to bind\n * @param name - the name of the uniform block\n * @param index - the index of the uniform block\n */\n public bindUniformBlock(uniformGroup: UniformGroup | BufferResource, name: string, index = 0): void\n {\n const bufferSystem = this._renderer.buffer;\n const programData = this._getProgramData(this._activeProgram);\n\n const isBufferResource = (uniformGroup as BufferResource)._bufferResource;\n\n if (isBufferResource)\n {\n this._renderer.ubo.updateUniformGroup(uniformGroup as UniformGroup);\n }\n\n bufferSystem.updateBuffer(uniformGroup.buffer);\n\n let boundIndex = this._boundUniformsIdsToIndexHash[uniformGroup.uid];\n\n // check if it is already bound..\n if (boundIndex === undefined)\n {\n const nextIndex = this._nextIndex++ % this._maxBindings;\n\n const currentBoundUniformGroup = this._boundIndexToUniformsHash[nextIndex];\n\n if (currentBoundUniformGroup)\n {\n this._boundUniformsIdsToIndexHash[currentBoundUniformGroup.uid] = undefined;\n }\n\n // find a free slot..\n boundIndex = this._boundUniformsIdsToIndexHash[uniformGroup.uid] = nextIndex;\n this._boundIndexToUniformsHash[nextIndex] = uniformGroup;\n\n if (isBufferResource)\n {\n bufferSystem.bindBufferRange(uniformGroup.buffer, nextIndex, (uniformGroup as BufferResource).offset);\n }\n else\n {\n bufferSystem.bindBufferBase(uniformGroup.buffer, nextIndex);\n }\n }\n\n const gl = this._gl;\n\n const uniformBlockIndex = this._activeProgram._uniformBlockData[name].index;\n\n if (programData.uniformBlockBindings[index] === boundIndex) return;\n programData.uniformBlockBindings[index] = boundIndex;\n\n gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundIndex);\n }\n\n private _setProgram(program: GlProgram)\n {\n if (this._activeProgram === program) return;\n\n this._activeProgram = program;\n\n const programData = this._getProgramData(program);\n\n this._gl.useProgram(programData.program);\n }\n\n /**\n * @param program - the program to get the data for\n * @internal\n * @private\n */\n public _getProgramData(program: GlProgram): GlProgramData\n {\n return this._programDataHash[program._key] || this._createProgramData(program);\n }\n\n private _createProgramData(program: GlProgram): GlProgramData\n {\n const key = program._key;\n\n this._programDataHash[key] = generateProgram(this._gl, program);\n\n return this._programDataHash[key];\n }\n\n public destroy(): void\n {\n for (const key of Object.keys(this._programDataHash))\n {\n const programData = this._programDataHash[key];\n\n programData.destroy();\n this._programDataHash[key] = null;\n }\n\n this._programDataHash = null;\n this._boundUniformsIdsToIndexHash = null;\n }\n\n /**\n * Creates a function that can be executed that will sync the shader as efficiently as possible.\n * Overridden by the unsafe eval package if you don't want eval used in your project.\n * @param shader - the shader to generate the sync function for\n * @param shaderSystem - the shader system to use\n * @returns - the generated sync function\n * @ignore\n */\n public _generateShaderSync(shader: Shader, shaderSystem: GlShaderSystem): ShaderSyncFunction\n {\n return generateShaderSyncCode(shader, shaderSystem);\n }\n}\n","// cu = Cached value's uniform data field\n// cv = Cached value\n// v = value to upload\n// ud = uniformData\n// uv = uniformValue\n\nimport type { UNIFORM_TYPES } from '../../../shared/shader/types';\n\nexport type ArraySetterFunction = (v: any, location: WebGLUniformLocation, gl: any) => void;\n\nexport const UNIFORM_TO_SINGLE_SETTERS: Record = {\n f32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n 'vec2': `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(location, v[0], v[1]);\n }`,\n 'vec3': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(location, v[0], v[1], v[2]);\n }`,\n 'vec4': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n i32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n 'vec2': `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n 'vec3': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n 'vec4': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n u32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(location, v);\n }`,\n 'vec2': `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n 'vec3': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n 'vec4': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n 'vec2': `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n 'vec3': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n 'vec4': `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n 'mat2x2': `gl.uniformMatrix2fv(location, false, v);`,\n 'mat3x3': `gl.uniformMatrix3fv(location, false, v);`,\n 'mat4x4': `gl.uniformMatrix4fv(location, false, v);`,\n};\n\nexport const UNIFORM_TO_ARRAY_SETTERS: Record = {\n f32: `gl.uniform1fv(location, v);`,\n 'vec2': `gl.uniform2fv(location, v);`,\n 'vec3': `gl.uniform3fv(location, v);`,\n 'vec4': `gl.uniform4fv(location, v);`,\n 'mat2x2': `gl.uniformMatrix2fv(location, false, v);`,\n 'mat3x3': `gl.uniformMatrix3fv(location, false, v);`,\n 'mat4x4': `gl.uniformMatrix4fv(location, false, v);`,\n i32: `gl.uniform1iv(location, v);`,\n 'vec2': `gl.uniform2iv(location, v);`,\n 'vec3': `gl.uniform3iv(location, v);`,\n 'vec4': `gl.uniform4iv(location, v);`,\n u32: `gl.uniform1iv(location, v);`,\n 'vec2': `gl.uniform2iv(location, v);`,\n 'vec3': `gl.uniform3iv(location, v);`,\n 'vec4': `gl.uniform4iv(location, v);`,\n bool: `gl.uniform1iv(location, v);`,\n 'vec2': `gl.uniform2iv(location, v);`,\n 'vec3': `gl.uniform3iv(location, v);`,\n 'vec4': `gl.uniform4iv(location, v);`,\n};\n","// cu = Cached value's uniform data field\n// cv = Cached value\n// v = value to upload\n// ud = uniformData\n// uv = uniformValue\n\nimport { BufferResource } from '../../../shared/buffer/BufferResource';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers';\nimport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS } from './generateUniformsSyncTypes';\n\nimport type { UniformsSyncCallback } from '../../../shared/shader/types';\n\nexport function generateUniformsSync(group: UniformGroup, uniformData: Record): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n\n for (const i in group.uniforms)\n {\n if (!uniformData[i])\n {\n if (group.uniforms[i] instanceof UniformGroup)\n {\n if ((group.uniforms[i] as UniformGroup).ubo)\n {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n }\n else\n {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n }\n else if (group.uniforms[i] instanceof BufferResource)\n {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n\n continue;\n }\n\n const uniform = group.uniformStructures[i];\n\n let parsed = false;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const parser = uniformParsers[j];\n\n if (uniform.type === parser.type && parser.test(uniform))\n {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n\n const template = templateType[uniform.type].replace('location', `ud[\"${i}\"].location`);\n\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n\n /*\n * the introduction of syncData is to solve an issue where textures in uniform groups are not set correctly\n * the texture count was always starting from 0 in each group. This needs to increment each time a texture is used\n * no matter which group is being used\n *\n */\n // eslint-disable-next-line no-new-func\n return new Function('ud', 'uv', 'renderer', 'syncData', funcFragments.join('\\n')) as UniformsSyncCallback;\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { generateUniformsSync } from './utils/generateUniformsSync';\n\nimport type { UniformsSyncCallback } from '../../shared/shader/types';\nimport type { UniformGroup } from '../../shared/shader/UniformGroup';\nimport type { System } from '../../shared/system/System';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\nimport type { WebGLRenderer } from '../WebGLRenderer';\nimport type { GlProgram, GlUniformData } from './GlProgram';\n\n/**\n * System plugin to the renderer to manage shaders.\n * @memberof rendering\n */\nexport class GlUniformGroupSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'uniformGroup',\n } as const;\n\n /**\n * The current WebGL rendering context.\n * @member {WebGLRenderingContext}\n */\n protected gl: GlRenderingContext;\n\n /** Cache to holds the generated functions. Stored against UniformObjects unique signature. */\n private _cache: Record = {};\n private _renderer: WebGLRenderer;\n\n private _uniformGroupSyncHash: Record> = {};\n\n /** @param renderer - The renderer this System works for. */\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n\n this.gl = null;\n this._cache = {};\n }\n\n protected contextChange(gl: GlRenderingContext): void\n {\n this.gl = gl;\n }\n\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param group - the uniforms values that be applied to the current shader\n * @param program\n * @param syncData\n * @param syncData.textureCount\n */\n public updateUniformGroup(group: UniformGroup, program: GlProgram, syncData: { textureCount: number }): void\n {\n const programData = this._renderer.shader._getProgramData(program);\n\n if (!group.isStatic || group._dirtyId !== programData.uniformDirtyGroups[group.uid])\n {\n programData.uniformDirtyGroups[group.uid] = group._dirtyId;\n\n const syncFunc = this._getUniformSyncFunction(group, program);\n\n syncFunc(programData.uniformData, group.uniforms, this._renderer, syncData);\n }\n }\n\n /**\n * Overrideable by the pixi.js/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param program\n */\n private _getUniformSyncFunction(group: UniformGroup, program: GlProgram): UniformsSyncCallback\n {\n return this._uniformGroupSyncHash[group._signature]?.[program._key]\n || this._createUniformSyncFunction(group, program);\n }\n\n private _createUniformSyncFunction(group: UniformGroup, program: GlProgram): UniformsSyncCallback\n {\n const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature]\n || (this._uniformGroupSyncHash[group._signature] = {});\n\n const id = this._getSignature(group, program._uniformData, 'u');\n\n if (!this._cache[id])\n {\n this._cache[id] = this._generateUniformsSync(group, program._uniformData);\n }\n\n uniformGroupSyncHash[program._key] = this._cache[id];\n\n return uniformGroupSyncHash[program._key];\n }\n\n private _generateUniformsSync(group: UniformGroup, uniformData: Record): UniformsSyncCallback\n {\n return generateUniformsSync(group, uniformData);\n }\n\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n private _getSignature(group: UniformGroup, uniformData: Record, preFix: string): string\n {\n const uniforms = group.uniforms;\n\n const strings = [`${preFix}-`];\n\n for (const i in uniforms)\n {\n strings.push(i);\n\n if (uniformData[i])\n {\n strings.push(uniformData[i].type);\n }\n }\n\n return strings.join('-');\n }\n\n /** Destroys this System and removes all its textures. */\n public destroy(): void\n {\n this._renderer = null;\n this._cache = null;\n }\n}\n","export function migrateFragmentFromV7toV8(fragmentShader: string): string\n{\n fragmentShader = fragmentShader\n .replaceAll('texture2D', 'texture')\n .replaceAll('gl_FragColor', 'finalColor')\n .replaceAll('varying', 'in');\n\n fragmentShader = `\n out vec4 finalColor;\n ${fragmentShader}\n `;\n\n return fragmentShader;\n}\n","import type { Dict } from '../../../../../utils/types';\n\nconst GLSL_TO_SIZE: Dict = {\n float: 1,\n vec2: 2,\n vec3: 3,\n vec4: 4,\n\n int: 1,\n ivec2: 2,\n ivec3: 3,\n ivec4: 4,\n\n uint: 1,\n uvec2: 2,\n uvec3: 3,\n uvec4: 4,\n\n bool: 1,\n bvec2: 2,\n bvec3: 3,\n bvec4: 4,\n\n mat2: 4,\n mat3: 9,\n mat4: 16,\n\n sampler2D: 1,\n};\n\n/**\n * @private\n * @method mapSize\n * @param {string} type\n */\nexport function mapSize(type: string): number\n{\n return GLSL_TO_SIZE[type];\n}\n","import type { BLEND_MODES } from '../../shared/state/const';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\n\n/**\n * Maps gl blend combinations to WebGL.\n * @param gl\n * @returns {object} Map of gl blend combinations to WebGL.\n */\nexport function mapWebGLBlendModesToPixi(gl: GlRenderingContext): Record\n{\n const blendMap: Partial> = {};\n\n // TODO - premultiply alpha would be different.\n // add a boolean for that!\n blendMap.normal = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.add = [gl.ONE, gl.ONE];\n blendMap.multiply = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.screen = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.none = [0, 0];\n\n // not-premultiplied blend modes\n blendMap['normal-npm'] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap['add-npm'] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n blendMap['screen-npm'] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n\n blendMap.erase = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n // TODO - implement if requested!\n // composite operations\n // array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];\n // array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];\n // array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n // array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];\n // array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];\n // array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n // array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];\n // array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];\n // SUBTRACT from flash\n // array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];\n\n return blendMap as Record;\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { State } from '../../shared/state/State';\nimport { mapWebGLBlendModesToPixi } from './mapWebGLBlendModesToPixi';\n\nimport type { BLEND_MODES } from '../../shared/state/const';\nimport type { System } from '../../shared/system/System';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\n\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\n\n/**\n * System plugin to the renderer to manage WebGL state machines\n * @memberof rendering\n */\nexport class GlStateSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'state',\n } as const;\n\n /**\n * State ID\n * @readonly\n */\n public stateId: number;\n\n /**\n * Polygon offset\n * @readonly\n */\n public polygonOffset: number;\n\n /**\n * Blend mode\n * @default 'none'\n * @readonly\n */\n public blendMode: BLEND_MODES;\n\n /** Whether current blend equation is different */\n protected _blendEq: boolean;\n\n /**\n * GL context\n * @member {WebGLRenderingContext}\n * @readonly\n */\n protected gl: GlRenderingContext;\n\n protected blendModesMap: Record;\n\n /**\n * Collection of calls\n * @member {Function[]}\n */\n protected readonly map: ((value: boolean) => void)[];\n\n /**\n * Collection of check calls\n * @member {Function[]}\n */\n protected readonly checks: ((system: this, state: State) => void)[];\n\n /**\n * Default WebGL State\n * @readonly\n */\n protected defaultState: State;\n\n constructor()\n {\n this.gl = null;\n\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = 'none';\n\n this._blendEq = false;\n\n // map functions for when we set state..\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n\n this.checks = [];\n\n this.defaultState = State.for2d();\n }\n\n protected contextChange(gl: GlRenderingContext): void\n {\n this.gl = gl;\n\n this.blendModesMap = mapWebGLBlendModesToPixi(gl);\n\n this.reset();\n }\n\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n public set(state: State): void\n {\n state = state || this.defaultState;\n\n // TODO maybe to an object check? ( this.state === state )?\n if (this.stateId !== state.data)\n {\n let diff = this.stateId ^ state.data;\n let i = 0;\n\n // order from least to most common\n while (diff)\n {\n if (diff & 1)\n {\n // state change!\n this.map[i].call(this, !!(state.data & (1 << i)));\n }\n\n diff = diff >> 1;\n i++;\n }\n\n this.stateId = state.data;\n }\n\n // based on the above settings we check for specific modes..\n // for example if blend is active we check and set the blend modes\n // or of polygon offset is active we check the poly depth.\n for (let i = 0; i < this.checks.length; i++)\n {\n this.checks[i](this, state);\n }\n }\n\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n public forceState(state: State): void\n {\n state = state || this.defaultState;\n for (let i = 0; i < this.map.length; i++)\n {\n this.map[i].call(this, !!(state.data & (1 << i)));\n }\n for (let i = 0; i < this.checks.length; i++)\n {\n this.checks[i](this, state);\n }\n\n this.stateId = state.data;\n }\n\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n public setBlend(value: boolean): void\n {\n this._updateCheck(GlStateSystem._checkBlendMode, value);\n\n this.gl[value ? 'enable' : 'disable'](this.gl.BLEND);\n }\n\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n public setOffset(value: boolean): void\n {\n this._updateCheck(GlStateSystem._checkPolygonOffset, value);\n\n this.gl[value ? 'enable' : 'disable'](this.gl.POLYGON_OFFSET_FILL);\n }\n\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n public setDepthTest(value: boolean): void\n {\n this.gl[value ? 'enable' : 'disable'](this.gl.DEPTH_TEST);\n }\n\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n public setDepthMask(value: boolean): void\n {\n this.gl.depthMask(value);\n }\n\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n public setCullFace(value: boolean): void\n {\n this.gl[value ? 'enable' : 'disable'](this.gl.CULL_FACE);\n }\n\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n public setFrontFace(value: boolean): void\n {\n this.gl.frontFace(this.gl[value ? 'CW' : 'CCW']);\n }\n\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n public setBlendMode(value: BLEND_MODES): void\n {\n if (!this.blendModesMap[value])\n {\n value = 'normal';\n }\n\n if (value === this.blendMode)\n {\n return;\n }\n\n this.blendMode = value;\n\n const mode = this.blendModesMap[value];\n const gl = this.gl;\n\n if (mode.length === 2)\n {\n gl.blendFunc(mode[0], mode[1]);\n }\n else\n {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n\n if (mode.length === 6)\n {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n }\n else if (this._blendEq)\n {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n public setPolygonOffset(value: number, scale: number): void\n {\n this.gl.polygonOffset(value, scale);\n }\n\n // used\n /** Resets all the logic and disables the VAOs. */\n public reset(): void\n {\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n\n this.forceState(this.defaultState);\n\n this._blendEq = true;\n // setting to '' means the blend mode will be set as soon as we set the first blend mode when rendering!\n this.blendMode = '' as BLEND_MODES;\n this.setBlendMode('normal');\n }\n\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n private _updateCheck(func: (system: this, state: State) => void, value: boolean): void\n {\n const index = this.checks.indexOf(func);\n\n if (value && index === -1)\n {\n this.checks.push(func);\n }\n else if (!value && index !== -1)\n {\n this.checks.splice(index, 1);\n }\n }\n\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n private static _checkBlendMode(system: GlStateSystem, state: State): void\n {\n system.setBlendMode(state.blendMode);\n }\n\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n private static _checkPolygonOffset(system: GlStateSystem, state: State): void\n {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n\n /**\n * @ignore\n */\n public destroy(): void\n {\n this.gl = null;\n this.checks.length = 0;\n }\n}\n","import { GL_FORMATS, GL_TARGETS, GL_TYPES } from './const';\n\n/**\n * Internal texture for WebGL context\n * @memberof rendering\n * @ignore\n */\nexport class GlTexture\n{\n public target: GL_TARGETS = GL_TARGETS.TEXTURE_2D;\n\n /** The WebGL texture. */\n public texture: WebGLTexture;\n\n /** Width of texture that was used in texImage2D. */\n public width: number;\n\n /** Height of texture that was used in texImage2D. */\n public height: number;\n\n /** Whether mip levels has to be generated. */\n public mipmap: boolean;\n\n /** Type copied from texture source. */\n public type: number;\n\n /** Type copied from texture source. */\n public internalFormat: number;\n\n /** Type of sampler corresponding to this texture. See {@link SAMPLER_TYPES} */\n public samplerType: number;\n\n public format: GL_FORMATS;\n\n constructor(texture: WebGLTexture)\n {\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.type = GL_TYPES.UNSIGNED_BYTE;\n this.internalFormat = GL_FORMATS.RGBA;\n this.format = GL_FORMATS.RGBA;\n this.samplerType = 0;\n }\n}\n","import type { TextureSource } from '../../../shared/texture/sources/TextureSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nexport const glUploadBufferImageResource = {\n\n id: 'image',\n\n upload(source: TextureSource, glTexture: GlTexture, gl: GlRenderingContext)\n {\n if (glTexture.width === source.width || glTexture.height === source.height)\n {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n else\n {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n source.width,\n source.height,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n\n glTexture.width = source.width;\n glTexture.height = source.height;\n }\n} as GLTextureUploader;\n\n","import type { CompressedSource } from '../../../shared/texture/sources/CompressedSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nconst compressedFormatMap: Record = {\n 'bc1-rgba-unorm': true,\n 'bc1-rgba-unorm-srgb': true,\n 'bc2-rgba-unorm': true,\n 'bc2-rgba-unorm-srgb': true,\n 'bc3-rgba-unorm': true,\n 'bc3-rgba-unorm-srgb': true,\n 'bc4-r-unorm': true,\n 'bc4-r-snorm': true,\n 'bc5-rg-unorm': true,\n 'bc5-rg-snorm': true,\n 'bc6h-rgb-ufloat': true,\n 'bc6h-rgb-float': true,\n 'bc7-rgba-unorm': true,\n 'bc7-rgba-unorm-srgb': true,\n\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'etc2-rgb8unorm': true,\n 'etc2-rgb8unorm-srgb': true,\n 'etc2-rgb8a1unorm': true,\n 'etc2-rgb8a1unorm-srgb': true,\n 'etc2-rgba8unorm': true,\n 'etc2-rgba8unorm-srgb': true,\n 'eac-r11unorm': true,\n 'eac-r11snorm': true,\n 'eac-rg11unorm': true,\n 'eac-rg11snorm': true,\n\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'astc-4x4-unorm': true,\n 'astc-4x4-unorm-srgb': true,\n 'astc-5x4-unorm': true,\n 'astc-5x4-unorm-srgb': true,\n 'astc-5x5-unorm': true,\n 'astc-5x5-unorm-srgb': true,\n 'astc-6x5-unorm': true,\n 'astc-6x5-unorm-srgb': true,\n 'astc-6x6-unorm': true,\n 'astc-6x6-unorm-srgb': true,\n 'astc-8x5-unorm': true,\n 'astc-8x5-unorm-srgb': true,\n 'astc-8x6-unorm': true,\n 'astc-8x6-unorm-srgb': true,\n 'astc-8x8-unorm': true,\n 'astc-8x8-unorm-srgb': true,\n 'astc-10x5-unorm': true,\n 'astc-10x5-unorm-srgb': true,\n 'astc-10x6-unorm': true,\n 'astc-10x6-unorm-srgb': true,\n 'astc-10x8-unorm': true,\n 'astc-10x8-unorm-srgb': true,\n 'astc-10x10-unorm': true,\n 'astc-10x10-unorm-srgb': true,\n 'astc-12x10-unorm': true,\n 'astc-12x10-unorm-srgb': true,\n 'astc-12x12-unorm': true,\n 'astc-12x12-unorm-srgb': true,\n};\n\nexport const glUploadCompressedTextureResource = {\n\n id: 'compressed',\n\n upload(source: CompressedSource, glTexture: GlTexture, gl: GlRenderingContext)\n {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n\n const compressed = !!compressedFormatMap[source.format];\n\n for (let i = 0; i < source.resource.length; i++)\n {\n const levelBuffer = source.resource[i];\n\n if (compressed)\n {\n gl.compressedTexImage2D(\n gl.TEXTURE_2D, i, glTexture.internalFormat,\n mipWidth, mipHeight, 0,\n levelBuffer\n );\n }\n else\n {\n gl.texImage2D(\n gl.TEXTURE_2D, i, glTexture.internalFormat,\n mipWidth, mipHeight, 0,\n glTexture.format, glTexture.type,\n levelBuffer);\n }\n\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n} as GLTextureUploader;\n\n","import type { CanvasSource } from '../../../shared/texture/sources/CanvasSource';\nimport type { ImageSource } from '../../../shared/texture/sources/ImageSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nexport const glUploadImageResource = {\n\n id: 'image',\n\n upload(source: ImageSource | CanvasSource, glTexture: GlTexture, gl: GlRenderingContext, webGLVersion: number)\n {\n const premultipliedAlpha = source.alphaMode === 'premultiply-alpha-on-upload';\n\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);\n\n const glWidth = glTexture.width;\n const glHeight = glTexture.height;\n\n const textureWidth = source.pixelWidth;\n const textureHeight = source.pixelHeight;\n\n const resourceWidth = source.resourceWidth;\n const resourceHeight = source.resourceHeight;\n\n if (resourceWidth < textureWidth || resourceHeight < textureHeight)\n {\n if (glWidth !== textureWidth || glHeight !== textureHeight)\n {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n\n if (webGLVersion === 2)\n {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n resourceWidth,\n resourceHeight,\n glTexture.format,\n glTexture.type,\n source.resource as TexImageSource\n );\n }\n else\n {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource as TexImageSource\n );\n }\n }\n else if (glWidth === textureWidth || glHeight === textureHeight)\n {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource as TexImageSource\n );\n }\n else if (webGLVersion === 2)\n {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource as TexImageSource\n );\n }\n else\n {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n glTexture.format,\n glTexture.type,\n source.resource as TexImageSource\n );\n }\n\n glTexture.width = textureWidth;\n glTexture.height = textureHeight;\n }\n} as GLTextureUploader;\n\n","import { glUploadImageResource } from './glUploadImageResource';\n\nimport type { VideoSource } from '../../../shared/texture/sources/VideoSource';\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { GlTexture } from '../GlTexture';\nimport type { GLTextureUploader } from './GLTextureUploader';\n\nexport const glUploadVideoResource = {\n\n id: 'video',\n\n upload(source: VideoSource, glTexture: GlTexture, gl: GlRenderingContext, webGLVersion: number)\n {\n if (!source.isValid)\n {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n 1,\n 1,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n\n return;\n }\n\n glUploadImageResource.upload(source, glTexture, gl, webGLVersion);\n }\n} as GLTextureUploader;\n\n","export const scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728,\n};\n\nexport const mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985,\n },\n nearest: {\n linear: 9986,\n nearest: 9984,\n }\n};\n\nexport const wrapModeToGlAddress = {\n 'clamp-to-edge': 33071,\n repeat: 10497,\n 'mirror-repeat': 33648,\n};\n\nexport const compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n 'less-equal': 515,\n greater: 516,\n 'not-equal': 517,\n 'greater-equal': 518,\n always: 519,\n};\n\n","import {\n compareModeToGlCompare,\n mipmapScaleModeToGlFilter,\n scaleModeToGlFilter,\n wrapModeToGlAddress\n} from './pixiToGlMaps';\n\nimport type { TextureStyle } from '../../../shared/texture/TextureStyle';\n\nexport function applyStyleParams(\n style: TextureStyle,\n gl: WebGL2RenderingContext,\n mipmaps: boolean,\n // eslint-disable-next-line camelcase\n anisotropicExt: EXT_texture_filter_anisotropic,\n glFunctionName: 'samplerParameteri' | 'texParameteri',\n firstParam: 3553 | WebGLSampler,\n forceClamp: boolean,\n /** if true we can skip setting certain values if the values is the same as the default gl values */\n firstCreation: boolean\n)\n{\n const castParam = firstParam as 3553;\n\n if (!firstCreation\n || style.addressModeU !== 'repeat'\n || style.addressModeV !== 'repeat'\n || style.addressModeW !== 'repeat'\n )\n {\n // 1. set the wrapping mode\n const wrapModeS = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? 'clamp-to-edge' : style.addressModeW];\n\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n\n // does not exist in webGL1\n if (gl.TEXTURE_WRAP_R) gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n\n if (!firstCreation || style.magFilter !== 'linear')\n {\n // 2. set the filtering mode\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n\n // assuming the currently bound texture is the one we want to set the filter for\n // the only smelly part of this code, WebGPU is much better here :P\n if (mipmaps)\n {\n if (!firstCreation || style.mipmapFilter !== 'linear')\n {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n }\n\n else\n {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n\n // 3. set the anisotropy\n if (anisotropicExt && style.maxAnisotropy > 1)\n {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n\n // 4. set the compare mode\n if (style.compare)\n {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n","import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlFormat(gl: GlRenderingContext): Record\n{\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n 'rgba8unorm-srgb': gl.RGBA,\n\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n 'bgra8unorm-srgb': gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n 'depth24plus-stencil8': gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n 'depth32float-stencil8': gl.DEPTH_STENCIL,\n\n };\n}\n","import { DOMAdapter } from '../../../../../environment/adapter';\n\nimport type { GlRenderingContext } from '../../context/GlRenderingContext';\nimport type { WebGLExtensions } from '../../context/WebGLExtensions';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param gl - The rendering context.\n * @param extensions - The WebGL extensions.\n * @returns Lookup table.\n */\nexport function mapFormatToGlInternalFormat(\n gl: GlRenderingContext,\n extensions: WebGLExtensions,\n): Record\n{\n let srgb = {};\n let bgra8unorm: number = gl.RGBA;\n\n if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext()))\n {\n srgb = {\n 'rgba8unorm-srgb': gl.SRGB8_ALPHA8,\n 'bgra8unorm-srgb': gl.SRGB8_ALPHA8,\n };\n\n bgra8unorm = gl.RGBA8;\n }\n else if (extensions.srgb)\n {\n srgb = {\n 'rgba8unorm-srgb': extensions.srgb.SRGB8_ALPHA8_EXT,\n 'bgra8unorm-srgb': extensions.srgb.SRGB8_ALPHA8_EXT,\n };\n }\n\n return {\n // 8-bit formats\n r8unorm: gl.R8,\n r8snorm: gl.R8_SNORM,\n r8uint: gl.R8UI,\n r8sint: gl.R8I,\n\n // 16-bit formats\n r16uint: gl.R16UI,\n r16sint: gl.R16I,\n r16float: gl.R16F,\n rg8unorm: gl.RG8,\n rg8snorm: gl.RG8_SNORM,\n rg8uint: gl.RG8UI,\n rg8sint: gl.RG8I,\n\n // 32-bit formats\n r32uint: gl.R32UI,\n r32sint: gl.R32I,\n r32float: gl.R32F,\n rg16uint: gl.RG16UI,\n rg16sint: gl.RG16I,\n rg16float: gl.RG16F,\n rgba8unorm: gl.RGBA,\n\n ...srgb,\n\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA8_SNORM,\n rgba8uint: gl.RGBA8UI,\n rgba8sint: gl.RGBA8I,\n bgra8unorm,\n rgb9e5ufloat: gl.RGB9_E5,\n rgb10a2unorm: gl.RGB10_A2,\n rg11b10ufloat: gl.R11F_G11F_B10F,\n\n // 64-bit formats\n rg32uint: gl.RG32UI,\n rg32sint: gl.RG32I,\n rg32float: gl.RG32F,\n rgba16uint: gl.RGBA16UI,\n rgba16sint: gl.RGBA16I,\n rgba16float: gl.RGBA16F,\n\n // 128-bit formats\n rgba32uint: gl.RGBA32UI,\n rgba32sint: gl.RGBA32I,\n rgba32float: gl.RGBA32F,\n\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT16,\n depth24plus: gl.DEPTH_COMPONENT24,\n 'depth24plus-stencil8': gl.DEPTH24_STENCIL8,\n depth32float: gl.DEPTH_COMPONENT32F,\n 'depth32float-stencil8': gl.DEPTH32F_STENCIL8,\n\n // Compressed formats\n ...extensions.s3tc ? {\n 'bc1-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 'bc2-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 'bc3-rgba-unorm': extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n } : {},\n ...extensions.s3tc_sRGB ? {\n 'bc1-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n 'bc2-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n 'bc3-rgba-unorm-srgb': extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\n } : {},\n ...extensions.rgtc ? {\n 'bc4-r-unorm': extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,\n 'bc4-r-snorm': extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n 'bc5-rg-unorm': extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,\n 'bc5-rg-snorm': extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\n } : {},\n ...extensions.bptc ? {\n 'bc6h-rgb-float': extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n 'bc6h-rgb-ufloat': extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n 'bc7-rgba-unorm': extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n 'bc7-rgba-unorm-srgb': extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,\n } : {},\n ...extensions.etc ? {\n 'etc2-rgb8unorm': extensions.etc.COMPRESSED_RGB8_ETC2,\n 'etc2-rgb8unorm-srgb': extensions.etc.COMPRESSED_SRGB8_ETC2,\n 'etc2-rgb8a1unorm': extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 'etc2-rgb8a1unorm-srgb': extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 'etc2-rgba8unorm': extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,\n 'etc2-rgba8unorm-srgb': extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n 'eac-r11unorm': extensions.etc.COMPRESSED_R11_EAC,\n // 'eac-r11snorm'\n 'eac-rg11unorm': extensions.etc.COMPRESSED_SIGNED_RG11_EAC,\n // 'eac-rg11snorm'\n } : {},\n ...extensions.astc ? {\n 'astc-4x4-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,\n 'astc-4x4-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n 'astc-5x4-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,\n 'astc-5x4-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,\n 'astc-5x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,\n 'astc-5x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n 'astc-6x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,\n 'astc-6x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n 'astc-6x6-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,\n 'astc-6x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n 'astc-8x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,\n 'astc-8x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n 'astc-8x6-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,\n 'astc-8x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n 'astc-8x8-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,\n 'astc-8x8-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n 'astc-10x5-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,\n 'astc-10x5-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n 'astc-10x6-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,\n 'astc-10x6-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n 'astc-10x8-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,\n 'astc-10x8-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n 'astc-10x10-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,\n 'astc-10x10-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n 'astc-12x10-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,\n 'astc-12x10-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n 'astc-12x12-unorm': extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,\n 'astc-12x12-unorm-srgb': extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,\n } : {},\n };\n}\n","import type { GlRenderingContext } from '../../context/GlRenderingContext';\n\n/**\n * Returns a lookup table that maps each type-format pair to a compatible internal format.\n * @function mapTypeAndFormatToInternalFormat\n * @private\n * @param {WebGLRenderingContext} gl - The rendering context.\n * @returns Lookup table.\n */\nexport function mapFormatToGlType(gl: GlRenderingContext): Record\n{\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n 'rgba8unorm-srgb': gl.UNSIGNED_BYTE,\n\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n 'bgra8unorm-srgb': gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n 'depth24plus-stencil8': gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n 'depth32float-stencil8': gl.FLOAT_32_UNSIGNED_INT_24_8_REV,\n\n };\n}\n","export function unpremultiplyAlpha(pixels: Uint8Array | Uint8ClampedArray): void\n{\n if (pixels instanceof Uint8ClampedArray)\n {\n pixels = new Uint8Array(pixels.buffer);\n }\n\n const n = pixels.length;\n\n for (let i = 0; i < n; i += 4)\n {\n const alpha = pixels[i + 3];\n\n if (alpha !== 0)\n {\n const a = 255.001 / alpha;\n\n pixels[i] = (pixels[i] * a) + 0.5;\n pixels[i + 1] = (pixels[i + 1] * a) + 0.5;\n pixels[i + 2] = (pixels[i + 2] * a) + 0.5;\n }\n }\n}\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { Texture } from '../../shared/texture/Texture';\nimport { GlTexture } from './GlTexture';\nimport { glUploadBufferImageResource } from './uploaders/glUploadBufferImageResource';\nimport { glUploadCompressedTextureResource } from './uploaders/glUploadCompressedTextureResource';\nimport { glUploadImageResource } from './uploaders/glUploadImageResource';\nimport { glUploadVideoResource } from './uploaders/glUploadVideoResource';\nimport { applyStyleParams } from './utils/applyStyleParams';\nimport { mapFormatToGlFormat } from './utils/mapFormatToGlFormat';\nimport { mapFormatToGlInternalFormat } from './utils/mapFormatToGlInternalFormat';\nimport { mapFormatToGlType } from './utils/mapFormatToGlType';\nimport { unpremultiplyAlpha } from './utils/unpremultiplyAlpha';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { System } from '../../shared/system/System';\nimport type { CanvasGenerator, GetPixelsOutput } from '../../shared/texture/GenerateCanvas';\nimport type { TextureSource } from '../../shared/texture/sources/TextureSource';\nimport type { BindableTexture } from '../../shared/texture/Texture';\nimport type { TextureStyle } from '../../shared/texture/TextureStyle';\nimport type { GlRenderingContext } from '../context/GlRenderingContext';\nimport type { WebGLRenderer } from '../WebGLRenderer';\nimport type { GLTextureUploader } from './uploaders/GLTextureUploader';\n\nconst BYTES_PER_PIXEL = 4;\n\n/**\n * The system for managing textures in WebGL.\n * @memberof rendering\n */\nexport class GlTextureSystem implements System, CanvasGenerator\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ],\n name: 'texture',\n } as const;\n\n public readonly managedTextures: TextureSource[] = [];\n\n private readonly _renderer: WebGLRenderer;\n\n private _glTextures: Record = Object.create(null);\n private _glSamplers: Record = Object.create(null);\n\n private _boundTextures: TextureSource[] = [];\n private _activeTextureLocation = -1;\n\n private _boundSamplers: Record = Object.create(null);\n\n private readonly _uploads: Record = {\n image: glUploadImageResource,\n buffer: glUploadBufferImageResource,\n video: glUploadVideoResource,\n compressed: glUploadCompressedTextureResource,\n };\n\n private _gl: GlRenderingContext;\n private _mapFormatToInternalFormat: Record;\n private _mapFormatToType: Record;\n private _mapFormatToFormat: Record;\n\n // TODO - separate samplers will be a cool thing to add, but not right now!\n private readonly _useSeparateSamplers = false;\n\n constructor(renderer: WebGLRenderer)\n {\n this._renderer = renderer;\n }\n\n protected contextChange(gl: GlRenderingContext): void\n {\n this._gl = gl;\n\n if (!this._mapFormatToInternalFormat)\n {\n this._mapFormatToInternalFormat = mapFormatToGlInternalFormat(gl, this._renderer.context.extensions);\n\n this._mapFormatToType = mapFormatToGlType(gl);\n this._mapFormatToFormat = mapFormatToGlFormat(gl);\n }\n\n this._glTextures = Object.create(null);\n this._glSamplers = Object.create(null);\n this._boundSamplers = Object.create(null);\n\n for (let i = 0; i < 16; i++)\n {\n this.bind(Texture.EMPTY, i);\n }\n }\n\n public initSource(source: TextureSource)\n {\n this.bind(source);\n }\n\n public bind(texture: BindableTexture, location = 0)\n {\n const source = texture.source;\n\n if (texture)\n {\n this.bindSource(source, location);\n\n if (this._useSeparateSamplers)\n {\n this._bindSampler(source.style, location);\n }\n }\n else\n {\n this.bindSource(null, location);\n\n if (this._useSeparateSamplers)\n {\n this._bindSampler(null, location);\n }\n }\n }\n\n public bindSource(source: TextureSource, location = 0): void\n {\n const gl = this._gl;\n\n source._touched = this._renderer.textureGC.count;\n\n if (this._boundTextures[location] !== source)\n {\n this._boundTextures[location] = source;\n this._activateLocation(location);\n\n source = source || Texture.EMPTY.source;\n\n // bind texture and source!\n const glTexture = this.getGlSource(source);\n\n gl.bindTexture(glTexture.target, glTexture.texture);\n }\n }\n\n private _bindSampler(style: TextureStyle, location = 0): void\n {\n const gl = this._gl;\n\n if (!style)\n {\n this._boundSamplers[location] = null;\n gl.bindSampler(location, null);\n\n return;\n }\n\n const sampler = this._getGlSampler(style);\n\n if (this._boundSamplers[location] !== sampler)\n {\n this._boundSamplers[location] = sampler;\n gl.bindSampler(location, sampler);\n }\n }\n\n public unbind(texture: BindableTexture): void\n {\n const source = texture.source;\n const boundTextures = this._boundTextures;\n const gl = this._gl;\n\n for (let i = 0; i < boundTextures.length; i++)\n {\n if (boundTextures[i] === source)\n {\n this._activateLocation(i);\n\n const glTexture = this.getGlSource(source);\n\n gl.bindTexture(glTexture.target, null);\n boundTextures[i] = null;\n }\n }\n }\n\n private _activateLocation(location: number): void\n {\n if (this._activeTextureLocation !== location)\n {\n this._activeTextureLocation = location;\n this._gl.activeTexture(this._gl.TEXTURE0 + location);\n }\n }\n\n private _initSource(source: TextureSource): GlTexture\n {\n const gl = this._gl;\n\n const glTexture = new GlTexture(gl.createTexture());\n\n glTexture.type = this._mapFormatToType[source.format];\n glTexture.internalFormat = this._mapFormatToInternalFormat[source.format];\n glTexture.format = this._mapFormatToFormat[source.format];\n\n if (source.autoGenerateMipmaps && (this._renderer.context.supports.nonPowOf2mipmaps || source.isPowerOfTwo))\n {\n const biggestDimension = Math.max(source.width, source.height);\n\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n\n this._glTextures[source.uid] = glTexture;\n\n if (!this.managedTextures.includes(source))\n {\n source.on('update', this.onSourceUpdate, this);\n source.on('resize', this.onSourceUpdate, this);\n source.on('styleChange', this.onStyleChange, this);\n source.on('destroy', this.onSourceDestroy, this);\n source.on('unload', this.onSourceUnload, this);\n source.on('updateMipmaps', this.onUpdateMipmaps, this);\n\n this.managedTextures.push(source);\n }\n\n this.onSourceUpdate(source);\n this.updateStyle(source, false);\n\n return glTexture;\n }\n\n protected onStyleChange(source: TextureSource): void\n {\n this.updateStyle(source, false);\n }\n\n protected updateStyle(source: TextureSource, firstCreation: boolean): void\n {\n const gl = this._gl;\n\n const glTexture = this.getGlSource(source);\n\n gl.bindTexture(gl.TEXTURE_2D, glTexture.texture);\n\n this._boundTextures[this._activeTextureLocation] = source;\n\n applyStyleParams(\n source.style,\n gl,\n source.mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n 'texParameteri',\n gl.TEXTURE_2D,\n // will force a clamp to edge if the texture is not a power of two\n !this._renderer.context.supports.nonPowOf2wrapping && !source.isPowerOfTwo,\n firstCreation,\n );\n }\n\n protected onSourceUnload(source: TextureSource): void\n {\n const glTexture = this._glTextures[source.uid];\n\n if (!glTexture) return;\n\n this.unbind(source);\n this._glTextures[source.uid] = null;\n\n this._gl.deleteTexture(glTexture.texture);\n }\n\n protected onSourceUpdate(source: TextureSource): void\n {\n const gl = this._gl;\n\n const glTexture = this.getGlSource(source);\n\n gl.bindTexture(gl.TEXTURE_2D, glTexture.texture);\n\n this._boundTextures[this._activeTextureLocation] = source;\n\n if (this._uploads[source.uploadMethodId])\n {\n this._uploads[source.uploadMethodId].upload(source, glTexture, gl, this._renderer.context.webGLVersion);\n }\n else\n {\n // eslint-disable-next-line max-len\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, source.pixelWidth, source.pixelHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1)\n {\n this.onUpdateMipmaps(source, false);\n }\n }\n\n protected onUpdateMipmaps(source: TextureSource, bind = true): void\n {\n if (bind) this.bindSource(source, 0);\n\n const glTexture = this.getGlSource(source);\n\n this._gl.generateMipmap(glTexture.target);\n }\n\n protected onSourceDestroy(source: TextureSource): void\n {\n source.off('destroy', this.onSourceDestroy, this);\n source.off('update', this.onSourceUpdate, this);\n source.off('resize', this.onSourceUpdate, this);\n source.off('unload', this.onSourceUnload, this);\n source.off('styleChange', this.onStyleChange, this);\n source.off('updateMipmaps', this.onUpdateMipmaps, this);\n\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n\n this.onSourceUnload(source);\n }\n\n private _initSampler(style: TextureStyle): WebGLSampler\n {\n const gl = this._gl;\n\n const glSampler = this._gl.createSampler();\n\n this._glSamplers[style._resourceId] = glSampler;\n\n applyStyleParams(\n style,\n gl,\n this._boundTextures[this._activeTextureLocation].mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n 'samplerParameteri',\n glSampler,\n false,\n true,\n );\n\n return this._glSamplers[style._resourceId];\n }\n\n private _getGlSampler(sampler: TextureStyle): WebGLSampler\n {\n return this._glSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n\n public getGlSource(source: TextureSource): GlTexture\n {\n return this._glTextures[source.uid] || this._initSource(source);\n }\n\n public generateCanvas(texture: Texture): ICanvas\n {\n const { pixels, width, height } = this.getPixels(texture);\n\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext('2d');\n\n if (ctx)\n {\n const imageData = ctx.createImageData(width, height);\n\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n\n return canvas;\n }\n\n public getPixels(texture: Texture): GetPixelsOutput\n {\n const resolution = texture.source.resolution;\n const frame = texture.frame;\n\n const width = Math.max(Math.round(frame.width * resolution), 1);\n const height = Math.max(Math.round(frame.height * resolution), 1);\n const pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n\n const renderer = this._renderer;\n\n const renderTarget = renderer.renderTarget.getRenderTarget(texture);\n const glRenterTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget);\n\n const gl = renderer.gl;\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenterTarget.resolveTargetFramebuffer);\n\n gl.readPixels(\n Math.round(frame.x * resolution),\n Math.round(frame.y * resolution),\n width,\n height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n pixels\n );\n\n // if (texture.source.premultiplyAlpha > 0)\n // TODO - premultiplied alpha does not exist right now, need to add that back in!\n // eslint-disable-next-line no-constant-condition\n if (false)\n {\n unpremultiplyAlpha(pixels);\n }\n\n return { pixels: new Uint8ClampedArray(pixels.buffer), width, height };\n }\n\n public destroy(): void\n {\n // we copy the array as the array with a slice as onSourceDestroy\n // will remove the source from the real managedTextures array\n this.managedTextures\n .slice()\n .forEach((source) => this.onSourceDestroy(source));\n\n (this.managedTextures as null) = null;\n\n (this._renderer as null) = null;\n }\n}\n\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit';\nimport { generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { batchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/batchSamplersUniformGroup';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\n\nimport type { Batch } from '../../../rendering/batcher/shared/Batcher';\nimport type { WebGLRenderer } from '../../../rendering/renderers/gl/WebGLRenderer';\nimport type { Graphics } from '../shared/Graphics';\nimport type { GraphicsAdaptor, GraphicsPipe } from '../shared/GraphicsPipe';\n\n/**\n * A GraphicsAdaptor that uses WebGL to render graphics.\n * @memberof rendering\n * @ignore\n */\nexport class GlGraphicsAdaptor implements GraphicsAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor,\n ],\n name: 'graphics',\n } as const;\n\n public shader: Shader;\n\n public init()\n {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4' },\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n uRound: { value: 0, type: 'f32' },\n });\n\n const glProgram = compileHighShaderGlProgram({\n name: 'graphics',\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n localUniformBitGl,\n roundPixelsBitGl,\n ]\n });\n\n this.shader = new Shader({\n glProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: batchSamplersUniformGroup,\n }\n });\n }\n\n public execute(graphicsPipe: GraphicsPipe, renderable: Graphics): void\n {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer as WebGLRenderer;\n const contextSystem = renderer.graphicsContext;\n\n const {\n geometry, instructions,\n } = contextSystem.getContextRenderData(context);\n\n // WebGL specific..\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n\n renderer.state.set(graphicsPipe.state);\n\n renderer.shader.bind(shader);\n\n renderer.geometry.bind(geometry, shader.glProgram);\n\n const batches = instructions.instructions as Batch[];\n\n for (let i = 0; i < instructions.instructionSize; i++)\n {\n const batch = batches[i];\n\n if (batch.size)\n {\n for (let j = 0; j < batch.textures.textures.length; j++)\n {\n renderer.texture.bind(batch.textures.textures[j], j);\n }\n\n renderer.geometry.draw('triangle-list', batch.size, batch.start);\n }\n }\n }\n\n public destroy(): void\n {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { Mesh } from '../shared/Mesh';\nimport type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';\n\n/**\n * A MeshAdaptor that uses the WebGL to render meshes.\n * @memberof rendering\n * @ignore\n */\nexport class GlMeshAdaptor implements MeshAdaptor\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor,\n ],\n name: 'mesh',\n } as const;\n\n private _shader: Shader;\n\n public init(): void\n {\n const glProgram = compileHighShaderGlProgram({\n name: 'mesh',\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl,\n ]\n });\n\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: 'mat3x3', value: new Matrix() },\n }\n }\n });\n }\n\n public execute(meshPipe: MeshPipe, mesh: Mesh): void\n {\n const renderer = meshPipe.renderer;\n\n let shader: Shader = mesh._shader;\n\n if (!shader)\n {\n shader = this._shader;\n\n const texture = mesh.texture;\n const source = texture.source;\n\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n }\n else if (!shader.glProgram)\n {\n // #if _DEBUG\n warn('Mesh shader has no glProgram', mesh.shader);\n // #endif\n\n return;\n }\n\n // setting the groups to be high to be compatible and not\n // overlap any other groups\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state,\n });\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n","import { ExtensionType } from '../../extensions/Extensions';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { RenderContainer } from './RenderContainer';\n\n/**\n * The CustomRenderPipe is a render pipe that allows for custom rendering logic for your renderable objects.\n * @example\n * import { RenderContainer } from 'pixi.js';\n *\n * const renderContainer = new RenderContainer(\n * (renderer) => {\n * renderer.clear({\n * clearColor: 'green', // clear the screen to green when rendering this item\n * });\n * })\n * @memberof rendering\n */\nexport class CustomRenderPipe implements InstructionPipe\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'customRender',\n } as const;\n\n private _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderable(container: RenderContainer, instructionSet: InstructionSet): void\n {\n this._renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add(container);\n }\n\n public execute(container: RenderContainer)\n {\n if (!container.isRenderable) return;\n\n container.render(this._renderer);\n }\n\n public destroy(): void\n {\n this._renderer = null;\n }\n}\n","import type { InstructionPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { RenderPipes } from '../../../rendering/renderers/types';\nimport type { RenderGroup } from '../RenderGroup';\n\nexport function executeInstructions(renderGroup: RenderGroup, renderer: RenderPipes)\n{\n const instructionSet = renderGroup.instructionSet;\n const instructions = instructionSet.instructions;\n\n for (let i = 0; i < instructionSet.instructionSize; i++)\n {\n const instruction = instructions[i];\n\n (renderer[instruction.renderPipeId as keyof RenderPipes] as InstructionPipe).execute(instruction);\n }\n}\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { executeInstructions } from './utils/executeInstructions';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { RenderGroup } from './RenderGroup';\n\nexport class RenderGroupPipe implements InstructionPipe\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'renderGroup',\n } as const;\n\n private _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderGroup(renderGroup: RenderGroup, instructionSet: InstructionSet): void\n {\n this._renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add(renderGroup);\n }\n\n public execute(renderGroup: RenderGroup)\n {\n if (!renderGroup.isRenderable) return;\n\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.worldTransform,\n worldColor: renderGroup.worldColorAlpha,\n });\n\n executeInstructions(renderGroup, this._renderer.renderPipes);\n\n this._renderer.globalUniforms.pop();\n\n // now render a quad..\n }\n\n public destroy(): void\n {\n this._renderer = null;\n }\n}\n","import type { RenderGroup } from '../RenderGroup';\n\nexport function collectRenderGroups(renderGroup: RenderGroup, out: RenderGroup[] = [])\n{\n out.push(renderGroup);\n\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++)\n {\n collectRenderGroups(renderGroup.renderGroupChildren[i], out);\n }\n\n return out;\n}\n","export function mixHexColors(color1: number, color2: number, ratio: number): number\n{\n const r1 = (color1 >> 16) & 0xFF;\n const g1 = (color1 >> 8) & 0xFF;\n const b1 = color1 & 0xFF;\n\n const r2 = (color2 >> 16) & 0xFF;\n const g2 = (color2 >> 8) & 0xFF;\n const b2 = color2 & 0xFF;\n\n const r = r1 + ((r2 - r1) * ratio);\n const g = g1 + ((g2 - g1) * ratio);\n const b = b1 + ((b2 - b1) * ratio);\n\n return (r << 16) + (g << 8) + b;\n}\n\n","import { mixHexColors } from './mixHexColors';\n\nconst WHITE_BGR = 0xFFFFFF;\n\nexport function mixColors(localBGRColor: number, parentBGRColor: number)\n{\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR)\n {\n return localBGRColor + parentBGRColor - WHITE_BGR;\n }\n\n return mixHexColors(localBGRColor, parentBGRColor, 0.5);\n}\n\nexport function mixStandardAnd32BitColors(localColorRGB: number, localAlpha: number, parentColor: number)\n{\n const parentAlpha = ((parentColor >> 24) & 0xFF) / 255;\n\n const globalAlpha = ((localAlpha * parentAlpha) * 255);\n\n // flip rgb to bgr\n const localBGRColor = ((localColorRGB & 0xFF) << 16) + (localColorRGB & 0xFF00) + ((localColorRGB >> 16) & 0xFF);\n\n const parentBGRColor = parentColor & 0x00FFFFFF;\n\n let sharedBGRColor: number;\n\n if (localBGRColor === WHITE_BGR || parentBGRColor === WHITE_BGR)\n {\n sharedBGRColor = localBGRColor + parentBGRColor - WHITE_BGR;\n }\n else\n {\n sharedBGRColor = mixHexColors(localBGRColor, parentBGRColor, 0.5);\n }\n\n return sharedBGRColor + (globalAlpha << 24);\n}\n","import { Container, UPDATE_BLEND, UPDATE_COLOR, UPDATE_VISIBLE } from '../Container';\nimport { mixColors } from './mixColors';\n\nimport type { RenderGroup } from '../RenderGroup';\n\nconst tempContainer = new Container();\n\nexport function updateRenderGroupTransforms(renderGroup: RenderGroup, updateChildRenderGroups = false)\n{\n updateRenderGroupTransform(renderGroup);\n\n const childrenToUpdate = renderGroup.childrenToUpdate;\n\n const updateTick = renderGroup.updateTick;\n\n renderGroup.updateTick++;\n\n for (const j in childrenToUpdate)\n {\n const childrenAtDepth = childrenToUpdate[j];\n\n const list = childrenAtDepth.list;\n const index = childrenAtDepth.index;\n\n for (let i = 0; i < index; i++)\n {\n updateTransformAndChildren(list[i], updateTick, 0);\n }\n\n childrenAtDepth.index = 0;\n }\n\n if (updateChildRenderGroups)\n {\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++)\n {\n updateRenderGroupTransforms(renderGroup.renderGroupChildren[i], updateChildRenderGroups);\n }\n }\n}\n\nexport function updateRenderGroupTransform(renderGroup: RenderGroup)\n{\n const root = renderGroup.root;\n\n let worldAlpha;\n\n if (renderGroup.renderGroupParent)\n {\n const renderGroupParent = renderGroup.renderGroupParent;\n\n renderGroup.worldTransform.appendFrom(\n root.relativeGroupTransform,\n renderGroupParent.worldTransform,\n );\n\n renderGroup.worldColor = mixColors(\n root.groupColor,\n renderGroupParent.worldColor,\n );\n\n worldAlpha = root.groupAlpha * renderGroupParent.worldAlpha;\n }\n else\n {\n renderGroup.worldTransform.copyFrom(root.localTransform);\n renderGroup.worldColor = root.localColor;\n worldAlpha = root.localAlpha;\n }\n\n // eslint-disable-next-line no-nested-ternary\n worldAlpha = worldAlpha < 0 ? 0 : (worldAlpha > 1 ? 1 : worldAlpha);\n renderGroup.worldAlpha = worldAlpha;\n\n renderGroup.worldColorAlpha = renderGroup.worldColor\n + (((worldAlpha * 255) | 0) << 24);\n}\n\nexport function updateTransformAndChildren(container: Container, updateTick: number, updateFlags: number)\n{\n if (updateTick === container.updateTick) return;\n container.updateTick = updateTick;\n\n container.didChange = false;\n\n const localTransform = container.localTransform;\n\n container.updateLocalTransform();\n\n const parent = container.parent;\n\n if ((parent && !parent.isRenderGroupRoot))\n {\n updateFlags = updateFlags | container._updateFlags;\n\n container.relativeGroupTransform.appendFrom(\n localTransform,\n parent.relativeGroupTransform,\n );\n\n if (updateFlags)\n {\n updateColorBlendVisibility(container, parent, updateFlags);\n }\n }\n else\n {\n updateFlags = container._updateFlags;\n\n container.relativeGroupTransform.copyFrom(localTransform);\n\n if (updateFlags)\n {\n updateColorBlendVisibility(container, tempContainer, updateFlags);\n }\n }\n\n // don't update children if its a layer..\n if (!container.isRenderGroupRoot)\n {\n const children = container.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++)\n {\n updateTransformAndChildren(children[i], updateTick, updateFlags);\n }\n\n const renderGroup = container.renderGroup;\n\n if (container.renderPipeId && !renderGroup.structureDidChange)\n {\n renderGroup.updateRenderable(container);\n }\n }\n}\n\nfunction updateColorBlendVisibility(\n container: Container,\n parent: Container,\n updateFlags: number,\n): void\n{\n if (updateFlags & UPDATE_COLOR)\n {\n container.groupColor = mixColors(\n container.localColor,\n parent.groupColor\n );\n\n let groupAlpha = container.localAlpha * parent.groupAlpha;\n\n // eslint-disable-next-line no-nested-ternary\n groupAlpha = groupAlpha < 0 ? 0 : (groupAlpha > 1 ? 1 : groupAlpha);\n\n container.groupAlpha = groupAlpha;\n container.groupColorAlpha = container.groupColor + (((groupAlpha * 255) | 0) << 24);\n }\n\n if (updateFlags & UPDATE_BLEND)\n {\n container.groupBlendMode = container.localBlendMode === 'inherit' ? parent.groupBlendMode : container.localBlendMode;\n }\n\n if (updateFlags & UPDATE_VISIBLE)\n {\n container.globalDisplayStatus = container.localDisplayStatus & parent.globalDisplayStatus;\n }\n\n container._updateFlags = 0;\n}\n\n","import type { RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { RenderPipes } from '../../../rendering/renderers/types';\nimport type { RenderGroup } from '../RenderGroup';\n\nexport function validateRenderables(renderGroup: RenderGroup, renderPipes: RenderPipes): boolean\n{\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n\n let rebuildRequired = false;\n\n for (let i = 0; i < index; i++)\n {\n const container = list[i];\n\n const renderable = container;\n const pipe = renderPipes[renderable.renderPipeId as keyof RenderPipes] as RenderPipe;\n\n rebuildRequired = pipe.validateRenderable(container);\n\n if (rebuildRequired)\n {\n break;\n }\n }\n\n renderGroup.structureDidChange = rebuildRequired;\n\n return rebuildRequired;\n}\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { Matrix } from '../../maths/matrix/Matrix';\nimport { buildInstructions } from './utils/buildInstructions';\nimport { collectRenderGroups } from './utils/collectRenderGroups';\nimport { executeInstructions } from './utils/executeInstructions';\nimport { updateRenderGroupTransforms } from './utils/updateRenderGroupTransforms';\nimport { validateRenderables } from './utils/validateRenderables';\n\nimport type { WebGPURenderer } from '../../rendering/renderers/gpu/WebGPURenderer';\nimport type { System } from '../../rendering/renderers/shared/system/System';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { Container } from './Container';\nimport type { RenderGroup } from './RenderGroup';\n\nconst tempMatrix = new Matrix();\n\n/**\n * The view system manages the main canvas that is attached to the DOM.\n * This main role is to deal with how the holding the view reference and dealing with how it is resized.\n * @memberof rendering\n */\nexport class RenderGroupSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'renderGroup',\n } as const;\n\n private readonly _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n protected render({ container, transform }: {container: Container, transform: Matrix}): void\n {\n container.isRenderGroup = true;\n\n const parent = container.parent;\n const renderGroupParent = container.renderGroup.renderGroupParent;\n\n container.parent = null;\n container.renderGroup.renderGroupParent = null;\n\n const renderer = this._renderer;\n\n // collect all the renderGroups in the scene and then render them one by one..\n const renderGroups = collectRenderGroups(container.renderGroup, []);\n\n let originalLocalTransform: Matrix = tempMatrix;\n\n if (transform)\n {\n originalLocalTransform = originalLocalTransform.copyFrom(container.renderGroup.localTransform);\n container.renderGroup.localTransform.copyFrom(transform);\n }\n\n const renderPipes = (renderer as WebGPURenderer).renderPipes;\n\n for (let i = 0; i < renderGroups.length; i++)\n {\n const renderGroup = renderGroups[i];\n\n renderGroup.runOnRender();\n\n renderGroup.instructionSet.renderPipes = renderPipes;\n\n if (!renderGroup.structureDidChange)\n {\n // phase 1 - validate all the renderables\n validateRenderables(renderGroup, renderPipes);\n }\n\n // phase 2 - update all the transforms\n // including updating the renderables..\n updateRenderGroupTransforms(renderGroup);\n\n if (renderGroup.structureDidChange)\n {\n renderGroup.structureDidChange = false;\n\n // build the renderables\n buildInstructions(renderGroup, renderPipes);\n }\n else\n {\n // update remaining renderables\n updateRenderables(renderGroup);\n }\n\n // reset the renderables to update\n renderGroup.childrenRenderablesToUpdate.index = 0;\n\n // upload all the things!\n renderer.renderPipes.batch.upload(renderGroup.instructionSet);\n }\n\n renderer.globalUniforms.start({\n worldTransformMatrix: transform ? container.renderGroup.localTransform : container.renderGroup.worldTransform,\n worldColor: container.renderGroup.worldColorAlpha,\n\n });\n\n executeInstructions(container.renderGroup, renderPipes);\n\n // TODO need to add some events / runners for things like this to hook up to\n if (renderPipes.uniformBatch)\n {\n renderPipes.uniformBatch.renderEnd();\n }\n\n if (transform)\n {\n container.renderGroup.localTransform.copyFrom(originalLocalTransform);\n }\n\n container.parent = parent;\n container.renderGroup.renderGroupParent = renderGroupParent;\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n }\n}\n\nfunction updateRenderables(renderGroup: RenderGroup)\n{\n const { list, index } = renderGroup.childrenRenderablesToUpdate;\n\n for (let i = 0; i < index; i++)\n {\n const container = list[i];\n\n if (container.didViewUpdate)\n {\n renderGroup.updateRenderable(container);\n }\n }\n}\n\n","import { ExtensionType } from '../../extensions/Extensions';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { BatchableSprite } from './BatchableSprite';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { PoolItem } from '../../utils/pool/Pool';\nimport type { Sprite } from './Sprite';\n\nexport class SpritePipe implements RenderPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'sprite',\n } as const;\n\n private _renderer: Renderer;\n private _gpuSpriteHash: Record = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderable(sprite: Sprite, _instructionSet: InstructionSet)\n {\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (sprite._didSpriteUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n // TODO visibility\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n\n public updateRenderable(sprite: Sprite)\n {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n\n if (sprite._didSpriteUpdate) this._updateBatchableSprite(sprite, gpuSprite);\n\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n\n public validateRenderable(sprite: Sprite): boolean\n {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n\n if (gpuSprite.texture._source !== texture._source)\n {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n\n return false;\n }\n\n public destroyRenderable(sprite: Sprite)\n {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n\n // this will call reset!\n BigPool.return(batchableSprite as PoolItem);\n\n this._gpuSpriteHash[sprite.uid] = null;\n }\n\n private _updateBatchableSprite(sprite: Sprite, batchableSprite: BatchableSprite)\n {\n sprite._didSpriteUpdate = false;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.texture = sprite._texture;\n }\n\n private _getGpuSprite(sprite: Sprite): BatchableSprite\n {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n\n private _initGPUSprite(sprite: Sprite): BatchableSprite\n {\n const batchableSprite = BigPool.get(BatchableSprite);\n\n batchableSprite.renderable = sprite;\n\n batchableSprite.texture = sprite._texture;\n batchableSprite.bounds = sprite.bounds;\n batchableSprite.roundPixels = (this._renderer._roundPixels | sprite._roundPixels) as 0 | 1;\n\n this._gpuSpriteHash[sprite.uid] = batchableSprite;\n\n sprite._didSpriteUpdate = false;\n\n // TODO perhaps manage this outside this pipe? (a bit like how we update / add)\n sprite.on('destroyed', () =>\n {\n this.destroyRenderable(sprite);\n });\n\n return batchableSprite;\n }\n\n public destroy()\n {\n for (const i in this._gpuSpriteHash)\n {\n BigPool.return(this._gpuSpriteHash[i] as PoolItem);\n }\n\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n","import { Color } from '../../../../color/Color';\nimport { ExtensionType } from '../../../../extensions/Extensions';\n\nimport type { ColorSource, RgbaArray } from '../../../../color/Color';\nimport type { System } from '../system/System';\n\n/**\n * Options for the background system.\n * @property {ColorSource} [backgroundColor='black']\n * The background color used to clear the canvas. See {@link ColorSource} for accepted color values.\n * @property {ColorSource} [background] - Alias for backgroundColor\n * @property {number} [backgroundAlpha=1] -\n * Transparency of the background color, value from `0` (fully transparent) to `1` (fully opaque).\n * @property {boolean} [clearBeforeRender=true] - Whether to clear the canvas before new render passes.\n * @memberof rendering\n */\nexport interface BackgroundSystemOptions\n{\n /**\n * The background color used to clear the canvas. See {@link ColorSource} for accepted color values.\n * @memberof rendering.SharedRendererOptions\n * @default 'black'\n */\n backgroundColor: ColorSource;\n /**\n * Alias for backgroundColor\n * @memberof rendering.SharedRendererOptions\n */\n background?: ColorSource\n /**\n * Transparency of the background color, value from `0` (fully transparent) to `1` (fully opaque).\n * @memberof rendering.SharedRendererOptions\n * @default 1\n */\n backgroundAlpha: number;\n /**\n * Whether to clear the canvas before new render passes.\n * @memberof rendering.SharedRendererOptions\n * @default true\n */\n clearBeforeRender: boolean;\n}\n\n/**\n * The background system manages the background color and alpha of the main view.\n * @memberof rendering\n */\nexport class BackgroundSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'background',\n priority: 0,\n } as const;\n\n /** default options used by the system */\n public static defaultOptions: BackgroundSystemOptions = {\n /**\n * {@link WebGLOptions.backgroundAlpha}\n * @default 1\n */\n backgroundAlpha: 1,\n /**\n * {@link WebGLOptions.backgroundColor}\n * @default 0x000000\n */\n backgroundColor: 0x0,\n /**\n * {@link WebGLOptions.clearBeforeRender}\n * @default true\n */\n clearBeforeRender: true,\n };\n\n /**\n * This sets if the CanvasRenderer will clear the canvas or not before the new render pass.\n * If the scene is NOT transparent PixiJS will use a canvas sized fillRect operation every\n * frame to set the canvas background color. If the scene is transparent PixiJS will use clearRect\n * to clear the canvas every frame. Disable this by setting this to false. For example, if\n * your game has a canvas filling background image you often don't need this set.\n */\n public clearBeforeRender: boolean;\n\n private readonly _backgroundColor: Color;\n\n constructor()\n {\n this.clearBeforeRender = true;\n\n this._backgroundColor = new Color(0x000000);\n\n this.color = this._backgroundColor; // run bg color setter\n this.alpha = 1;\n }\n\n /**\n * initiates the background system\n * @param options - the options for the background colors\n */\n public init(options: BackgroundSystemOptions): void\n {\n options = { ...BackgroundSystem.defaultOptions, ...options };\n\n this.clearBeforeRender = options.clearBeforeRender;\n this.color = options.background || options.backgroundColor || this._backgroundColor; // run bg color setter\n this.alpha = options.backgroundAlpha;\n\n this._backgroundColor.setAlpha(options.backgroundAlpha);\n }\n\n /** The background color to fill if not transparent */\n get color(): Color\n {\n return this._backgroundColor;\n }\n\n set color(value: ColorSource)\n {\n this._backgroundColor.setValue(value);\n }\n\n /** The background color alpha. Setting this to 0 will make the canvas transparent. */\n get alpha(): number\n {\n return this._backgroundColor.alpha;\n }\n\n set alpha(value: number)\n {\n this._backgroundColor.setAlpha(value);\n }\n\n /** The background color as an [R, G, B, A] array. */\n get colorRgba(): RgbaArray\n {\n return this._backgroundColor.toArray() as RgbaArray;\n }\n\n /**\n * destroys the background system\n * @internal\n * @ignore\n */\n public destroy(): void\n {\n // No cleanup required\n }\n}\n","import { extensions, ExtensionType } from '../../../../extensions/Extensions';\nimport { FilterEffect } from '../../../../filters/FilterEffect';\nimport { warn } from '../../../../utils/logging/warn';\n\nimport type { BlendModeFilter } from '../../../../filters/blend-modes/BlendModeFilter';\nimport type { FilterInstruction } from '../../../../filters/FilterSystem';\nimport type { Renderer } from '../../types';\nimport type { Instruction } from '../instructions/Instruction';\nimport type { InstructionSet } from '../instructions/InstructionSet';\nimport type { InstructionPipe } from '../instructions/RenderPipe';\nimport type { Renderable } from '../Renderable';\nimport type { BLEND_MODES } from '../state/const';\n\ninterface AdvancedBlendInstruction extends Instruction\n{\n renderPipeId: 'blendMode',\n blendMode: BLEND_MODES,\n activeBlend: Renderable[],\n}\n\n// class map\nconst BLEND_MODE_FILTERS: Partial BlendModeFilter>> = {} as const;\n\nextensions.handle(ExtensionType.BlendMode, (value) =>\n{\n if (!value.name)\n {\n throw new Error('BlendMode extension must have a name property');\n }\n BLEND_MODE_FILTERS[value.name as BLEND_MODES] = value.ref;\n}, (value) =>\n{\n delete BLEND_MODE_FILTERS[value.name as BLEND_MODES];\n});\n\n/**\n * This Pipe handles the blend mode switching of the renderer.\n * It will insert instructions into the {@link renderers.InstructionSet} to switch the blend mode according to the\n * blend modes of the scene graph.\n *\n * This pipe is were wwe handle Advanced blend modes. Advanced blend modes essentially wrap the renderables\n * in a filter that applies the blend mode.\n *\n * You only need to use this class if you are building your own render instruction set rather than letting PixiJS build\n * the instruction set for you by traversing the scene graph\n * @memberof rendering\n */\nexport class BlendModePipe implements InstructionPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'blendMode',\n } as const;\n\n private _renderer: Renderer;\n\n private _renderableList: Renderable[];\n private _activeBlendMode: BLEND_MODES;\n\n private _isAdvanced = false;\n\n private _filterHash: Partial> = Object.create(null);\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n /**\n * This ensures that a blendMode switch is added to the instruction set if the blend mode has changed.\n * @param renderable - The renderable we are adding to the instruction set\n * @param blendMode - The blend mode of the renderable\n * @param instructionSet - The instruction set we are adding to\n */\n public setBlendMode(renderable: Renderable, blendMode: BLEND_MODES, instructionSet: InstructionSet)\n {\n if (this._activeBlendMode === blendMode)\n {\n if (this._isAdvanced) this._renderableList.push(renderable);\n\n return;\n }\n\n this._activeBlendMode = blendMode;\n\n if (this._isAdvanced)\n {\n this._endAdvancedBlendMode(instructionSet);\n }\n\n this._isAdvanced = !!BLEND_MODE_FILTERS[blendMode];\n\n if (this._isAdvanced)\n {\n this._beginAdvancedBlendMode(instructionSet);\n\n this._renderableList.push(renderable);\n }\n }\n\n private _beginAdvancedBlendMode(instructionSet: InstructionSet)\n {\n this._renderer.renderPipes.batch.break(instructionSet);\n\n const blendMode = this._activeBlendMode;\n\n if (!BLEND_MODE_FILTERS[blendMode as keyof typeof BLEND_MODE_FILTERS])\n {\n // #if _DEBUG\n warn(`Unable to assign BlendMode: '${blendMode}'. `\n + `You may want to include: import 'pixi.js/advanced-blend-modes'`);\n // #endif\n\n return;\n }\n\n // this does need an execute?\n if (!this._filterHash[blendMode])\n {\n this._filterHash[blendMode] = new FilterEffect({\n filters: [new BLEND_MODE_FILTERS[blendMode as keyof typeof BLEND_MODE_FILTERS]()]\n });\n }\n\n const instruction: FilterInstruction = {\n renderPipeId: 'filter',\n action: 'pushFilter',\n renderables: [],\n filterEffect: this._filterHash[blendMode],\n canBundle: false,\n };\n\n this._renderableList = instruction.renderables;\n instructionSet.add(instruction);\n }\n\n private _endAdvancedBlendMode(instructionSet: InstructionSet)\n {\n this._renderableList = null;\n this._renderer.renderPipes.batch.break(instructionSet);\n\n instructionSet.add({\n renderPipeId: 'filter',\n action: 'popFilter',\n canBundle: false,\n });\n }\n\n /**\n * called when the instruction build process is starting this will reset internally to the default blend mode\n * @internal\n * @ignore\n */\n public buildStart()\n {\n this._isAdvanced = false;\n }\n\n /**\n * called when the instruction build process is finished, ensuring that if there is an advanced blend mode\n * active, we add the final render instructions added to the instruction set\n * @param instructionSet - The instruction set we are adding to\n * @internal\n * @ignore\n */\n public buildEnd(instructionSet: InstructionSet)\n {\n if (this._isAdvanced)\n {\n this._endAdvancedBlendMode(instructionSet);\n }\n }\n\n /**\n * @internal\n * @ignore\n */\n public destroy()\n {\n this._renderer = null;\n this._renderableList = null;\n\n for (const i in this._filterHash)\n {\n this._filterHash[i as BLEND_MODES].destroy();\n }\n\n this._filterHash = null;\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { Container } from '../../../../scene/container/Container';\nimport { Texture } from '../texture/Texture';\n\nimport type { ColorSource } from '../../../../color/Color';\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport type { Renderer } from '../../types';\nimport type { System } from '../system/System';\nimport type { GetPixelsOutput } from '../texture/GenerateCanvas';\nimport type { GenerateTextureOptions } from './GenerateTextureSystem';\n\nconst imageTypes = {\n png: 'image/png',\n jpg: 'image/jpeg',\n webp: 'image/webp',\n};\n\ntype Formats = keyof typeof imageTypes;\n\n/**\n * Options for creating an image from a renderer.\n * @memberof rendering\n */\nexport interface ImageOptions\n{\n /** The format of the image. */\n format?: Formats;\n /** The quality of the image. */\n quality?: number;\n}\n\n/**\n * Options for extracting content from a renderer.\n * @memberof rendering\n */\nexport interface BaseExtractOptions\n{\n /** The target to extract. */\n target: Container | Texture;\n /** The region of the target to extract. */\n frame?: Rectangle;\n /** The resolution of the extracted content. */\n resolution?: number;\n /** The color used to clear the extracted content. */\n clearColor?: ColorSource;\n /** Whether to enable anti-aliasing. This may affect performance. */\n antialias?: boolean;\n}\n/**\n * Options for extracting an HTMLImage from the renderer.\n * @memberof rendering\n */\nexport type ExtractImageOptions = BaseExtractOptions & ImageOptions;\n/**\n * Options for extracting and downloading content from a renderer.\n * @memberof rendering\n */\nexport type ExtractDownloadOptions = BaseExtractOptions & {\n /** The filename to use when downloading the content. */\n filename: string;\n};\n/**\n * Options for extracting content from a renderer.\n * @memberof rendering\n */\nexport type ExtractOptions = BaseExtractOptions | ExtractImageOptions | ExtractDownloadOptions;\n\n/**\n * This class provides renderer-specific plugins for exporting content from a renderer.\n * For instance, these plugins can be used for saving an Image, Canvas element or for exporting the raw image data (pixels).\n *\n * Do not instantiate these plugins directly. It is available from the `renderer.extract` property.\n * @example\n * import { Application, Graphics } from 'pixi.js';\n *\n * // Create a new application (extract will be auto-added to renderer)\n * const app = new Application();\n * await app.init();\n *\n * // Draw a red circle\n * const graphics = new Graphics()\n * .circle(0, 0, 50);\n * .fill(0xFF0000)\n *\n * // Render the graphics as an HTMLImageElement\n * const image = await app.renderer.extract.image(graphics);\n * document.body.appendChild(image);\n * @memberof rendering\n */\nexport class ExtractSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'extract',\n } as const;\n\n /** Default options for creating an image. */\n public static defaultImageOptions: ImageOptions = {\n /** The format of the image. */\n format: 'png' as Formats,\n /** The quality of the image. */\n quality: 1,\n };\n\n private _renderer: Renderer;\n\n /** @param renderer - The renderer this System works for. */\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n private _normalizeOptions(\n options: ExtractImageOptions | Container | Texture,\n defaults: Partial = {},\n ): T\n {\n if (options instanceof Container || options instanceof Texture)\n {\n return {\n target: options,\n ...defaults\n } as T;\n }\n\n return {\n ...defaults,\n ...options,\n } as T;\n }\n\n /**\n * Will return a HTML Image of the target\n * @param options - The options for creating the image, or the target to extract\n * @returns - HTML Image of the target\n */\n public async image(options: ExtractImageOptions | Container | Texture): Promise\n {\n const image = new Image();\n\n image.src = await this.base64(options);\n\n return image;\n }\n\n /**\n * Will return a base64 encoded string of this target. It works by calling\n * `Extract.canvas` and then running toDataURL on that.\n * @param options - The options for creating the image, or the target to extract\n */\n public async base64(options: ExtractImageOptions | Container | Texture): Promise\n {\n options = this._normalizeOptions(\n options,\n ExtractSystem.defaultImageOptions\n );\n\n const { format, quality } = options;\n\n const canvas = this.canvas(options);\n\n if (canvas.toBlob !== undefined)\n {\n return new Promise((resolve, reject) =>\n {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n canvas.toBlob!((blob) =>\n {\n if (!blob)\n {\n reject(new Error('ICanvas.toBlob failed!'));\n\n return;\n }\n\n const reader = new FileReader();\n\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }, imageTypes[format], quality);\n });\n }\n if (canvas.toDataURL !== undefined)\n {\n return canvas.toDataURL(imageTypes[format], quality);\n }\n if (canvas.convertToBlob !== undefined)\n {\n const blob = await canvas.convertToBlob({ type: imageTypes[format], quality });\n\n return new Promise((resolve, reject) =>\n {\n const reader = new FileReader();\n\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n\n throw new Error('Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, '\n + 'or ICanvas.convertToBlob to be implemented');\n }\n\n /**\n * Creates a Canvas element, renders this target to it and then returns it.\n * @param options - The options for creating the canvas, or the target to extract\n * @returns - A Canvas element with the texture rendered on.\n */\n public canvas(options: ExtractOptions | Container | Texture): ICanvas\n {\n options = this._normalizeOptions(options);\n\n const target = options.target;\n\n const renderer = this._renderer;\n\n if (target instanceof Texture)\n {\n return renderer.texture.generateCanvas(target);\n }\n\n const texture = renderer.textureGenerator.generateTexture(options as GenerateTextureOptions);\n\n const canvas = renderer.texture.generateCanvas(texture);\n\n texture.destroy();\n\n return canvas;\n }\n\n /**\n * Will return a one-dimensional array containing the pixel data of the entire texture in RGBA\n * order, with integer values between 0 and 255 (included).\n * @param options - The options for extracting the image, or the target to extract\n * @returns - One-dimensional array containing the pixel data of the entire texture\n */\n public pixels(options: ExtractOptions | Container | Texture): GetPixelsOutput\n {\n options = this._normalizeOptions(options);\n\n const target = options.target;\n\n const renderer = this._renderer;\n const texture = target instanceof Texture\n ? target\n : renderer.textureGenerator.generateTexture(options as GenerateTextureOptions);\n\n const pixelInfo = renderer.texture.getPixels(texture);\n\n if (target instanceof Container)\n {\n // destroy generated texture\n texture.destroy();\n }\n\n return pixelInfo;\n }\n\n /**\n * Will return a texture of the target\n * @param options - The options for creating the texture, or the target to extract\n * @returns - A texture of the target\n */\n public texture(options: ExtractOptions | Container | Texture): Texture\n {\n options = this._normalizeOptions(options);\n\n if (options.target instanceof Texture) return options.target;\n\n return this._renderer.textureGenerator.generateTexture(options as GenerateTextureOptions);\n }\n\n /**\n * Will extract a HTMLImage of the target and download it\n * @param options - The options for downloading and extracting the image, or the target to extract\n */\n public download(options: ExtractDownloadOptions | Container | Texture)\n {\n options = this._normalizeOptions(options);\n\n const canvas = this.canvas(options);\n\n const link = document.createElement('a');\n\n link.download = options.filename ?? 'image.png';\n link.href = canvas.toDataURL('image/png');\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n /**\n * Logs the target to the console as an image. This is a useful way to debug what's happening in the renderer.\n * @param options - The options for logging the image, or the target to log\n */\n public log(options: (ExtractOptions & {width?: number}) | Container | Texture)\n {\n const width = options.width ?? 200;\n\n options = this._normalizeOptions(options);\n\n const canvas = this.canvas(options);\n\n const base64 = canvas.toDataURL();\n\n // eslint-disable-next-line no-console\n console.log(`[Pixi Texture] ${canvas.width}px ${canvas.height}px`);\n\n const style = [\n 'font-size: 1px;',\n `padding: ${width}px ${300}px;`,\n `background: url(${base64}) no-repeat;`,\n 'background-size: contain;',\n ].join(' ');\n\n // eslint-disable-next-line no-console\n console.log('%c ', style);\n }\n\n public destroy(): void\n {\n this._renderer = null as any as Renderer;\n }\n}\n","import { TextureSource } from './sources/TextureSource';\nimport { Texture } from './Texture';\n\nimport type { TextureSourceOptions } from './sources/TextureSource';\n\n/**\n * A render texture, extends `Texture`.\n * @see {@link rendering.Texture}\n * @memberof rendering\n */\nexport class RenderTexture extends Texture\n{\n public static create(options: TextureSourceOptions): Texture\n {\n return new Texture({\n source: new TextureSource(options)\n });\n }\n\n /**\n * Resizes the render texture.\n * @param width - The new width of the render texture.\n * @param height - The new height of the render texture.\n * @param resolution - The new resolution of the render texture.\n * @returns This texture.\n */\n public resize(width: number, height: number, resolution?: number): this\n {\n this.source.resize(width, height, resolution);\n\n return this;\n }\n}\n","import { Color, type ColorSource } from '../../../../color/Color';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds';\nimport { getLocalBounds } from '../../../../scene/container/bounds/getLocalBounds';\nimport { Container } from '../../../../scene/container/Container';\nimport { RenderTexture } from '../texture/RenderTexture';\n\nimport type { Renderer } from '../../types';\nimport type { System } from '../system/System';\nimport type { TextureSourceOptions } from '../texture/sources/TextureSource';\nimport type { Texture } from '../texture/Texture';\n\nexport type GenerateTextureSourceOptions = Omit;\n\n/**\n * Options for generating a texture from a container.\n * @memberof rendering\n */\nexport type GenerateTextureOptions =\n{\n /** The container to generate the texture from */\n target: Container;\n /**\n * The region of the container, that shall be rendered,\n * if no region is specified, defaults to the local bounds of the container.\n */\n frame?: Rectangle;\n /** The resolution of the texture being generated. */\n resolution?: number;\n /** The color used to clear the texture. */\n clearColor?: ColorSource;\n /** Whether to enable anti-aliasing. This may affect performance. */\n antialias?: boolean;\n /** The options passed to the texture source. */\n textureSourceOptions?: GenerateTextureSourceOptions,\n};\n\nconst tempRect = new Rectangle();\nconst tempBounds = new Bounds();\nconst noColor: ColorSource = [0, 0, 0, 0];\n\n/**\n * System that manages the generation of textures from the renderer\n *\n *\n * Do not instantiate these plugins directly. It is available from the `renderer.textureGenerator` property.\n * @memberof rendering\n */\nexport class GenerateTextureSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'textureGenerator',\n } as const;\n\n private readonly _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n /**\n * A Useful function that returns a texture of the display object that can then be used to create sprites\n * This can be quite useful if your container is complicated and needs to be reused multiple times.\n * @param {GenerateTextureOptions | Container} options - Generate texture options.\n * @param {Container} [options.container] - If not given, the renderer's resolution is used.\n * @param {Rectangle} options.region - The region of the container, that shall be rendered,\n * @param {number} [options.resolution] - The resolution of the texture being generated.\n * if no region is specified, defaults to the local bounds of the container.\n * @param {GenerateTextureSourceOptions} [options.textureSourceOptions] - Texture options for GPU.\n * @returns a shiny new texture of the container passed in\n */\n public generateTexture(options: GenerateTextureOptions | Container): Texture\n {\n if (options instanceof Container)\n {\n options = {\n target: options,\n frame: undefined,\n textureSourceOptions: {},\n resolution: undefined,\n };\n }\n\n const resolution = options.resolution || this._renderer.resolution;\n const antialias = options.antialias || this._renderer.view.antialias;\n\n const container = options.target;\n\n let clearColor = options.clearColor;\n\n if (clearColor)\n {\n const isRGBAArray = Array.isArray(clearColor) && clearColor.length === 4;\n\n clearColor = isRGBAArray ? clearColor : Color.shared.setValue(clearColor).toArray();\n }\n else\n {\n clearColor = noColor;\n }\n\n const region = options.frame?.copyTo(tempRect)\n || getLocalBounds(container, tempBounds).rectangle;\n\n region.width = Math.max(region.width, 1 / resolution) | 0;\n region.height = Math.max(region.height, 1 / resolution) | 0;\n\n const target = RenderTexture.create({\n ...options.textureSourceOptions,\n width: region.width,\n height: region.height,\n resolution,\n antialias,\n });\n\n const transform = Matrix.shared.translate(-region.x, -region.y);\n\n this._renderer.render({\n container,\n transform,\n target,\n clearColor,\n });\n\n return target;\n }\n\n public destroy(): void\n {\n (this._renderer as null) = null;\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Point } from '../../../../maths/point/Point';\nimport { color32BitToUniform } from '../../../../scene/graphics/gpu/colorToUniform';\nimport { BindGroup } from '../../gpu/shader/BindGroup';\nimport { type Renderer, RendererType } from '../../types';\nimport { UniformGroup } from '../shader/UniformGroup';\n\nimport type { PointData } from '../../../../maths/point/PointData';\nimport type { GlRenderTargetSystem } from '../../gl/renderTarget/GlRenderTargetSystem';\nimport type { GpuRenderTargetSystem } from '../../gpu/renderTarget/GpuRenderTargetSystem';\nimport type { WebGPURenderer } from '../../gpu/WebGPURenderer';\nimport type { UboSystem } from '../shader/UboSystem';\nimport type { System } from '../system/System';\n\nexport type GlobalUniformGroup = UniformGroup<{\n uProjectionMatrix: { value: Matrix; type: 'mat3x3' }\n uWorldTransformMatrix: { value: Matrix; type: 'mat3x3' }\n uWorldColorAlpha: { value: Float32Array; type: 'vec4' }\n uResolution: { value: number[]; type: 'vec2' }\n}>;\n\nexport interface GlobalUniformOptions\n{\n size?: number[],\n projectionMatrix?: Matrix,\n worldTransformMatrix?: Matrix\n worldColor?: number\n offset?: PointData\n}\n\nexport interface GlobalUniformData\n{\n projectionMatrix: Matrix\n worldTransformMatrix: Matrix\n worldColor: number\n resolution: number[]\n offset: PointData\n bindGroup: BindGroup\n}\n\ninterface GlobalUniformRenderer\n{\n renderTarget: GlRenderTargetSystem | GpuRenderTargetSystem\n renderPipes: Renderer['renderPipes'];\n ubo: UboSystem;\n type: RendererType;\n}\n\n/**\n * System plugin to the renderer to manage global uniforms for the renderer.\n * @memberof rendering\n */\nexport class GlobalUniformSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'globalUniforms',\n } as const;\n\n private readonly _renderer: GlobalUniformRenderer;\n\n private _stackIndex = 0;\n private _globalUniformDataStack: GlobalUniformData[] = [];\n\n private readonly _uniformsPool: GlobalUniformGroup[] = [];\n private readonly _activeUniforms: GlobalUniformGroup[] = [];\n\n private readonly _bindGroupPool: BindGroup[] = [];\n private readonly _activeBindGroups: BindGroup[] = [];\n\n private _currentGlobalUniformData: GlobalUniformData;\n\n constructor(renderer: GlobalUniformRenderer)\n {\n this._renderer = renderer;\n }\n\n public reset()\n {\n this._stackIndex = 0;\n\n for (let i = 0; i < this._activeUniforms.length; i++)\n {\n this._uniformsPool.push(this._activeUniforms[i]);\n }\n\n for (let i = 0; i < this._activeBindGroups.length; i++)\n {\n this._bindGroupPool.push(this._activeBindGroups[i]);\n }\n\n this._activeUniforms.length = 0;\n this._activeBindGroups.length = 0;\n }\n\n public start(options: GlobalUniformOptions): void\n {\n this.reset();\n\n this.push(options);\n }\n\n public bind({\n size,\n projectionMatrix,\n worldTransformMatrix,\n worldColor,\n offset,\n }: GlobalUniformOptions)\n {\n const renderTarget = this._renderer.renderTarget.renderTarget;\n\n const currentGlobalUniformData = this._stackIndex ? this._globalUniformDataStack[this._stackIndex - 1] : {\n projectionData: renderTarget,\n worldTransformMatrix: new Matrix(),\n worldColor: 0xFFFFFFFF,\n offset: new Point(),\n };\n\n const globalUniformData: GlobalUniformData = {\n projectionMatrix: projectionMatrix || this._renderer.renderTarget.projectionMatrix,\n resolution: size || renderTarget.size,\n worldTransformMatrix: worldTransformMatrix || currentGlobalUniformData.worldTransformMatrix,\n worldColor: worldColor || currentGlobalUniformData.worldColor,\n offset: offset || currentGlobalUniformData.offset,\n bindGroup: null,\n };\n\n const uniformGroup = this._uniformsPool.pop() || this._createUniforms();\n\n this._activeUniforms.push(uniformGroup);\n\n const uniforms = uniformGroup.uniforms;\n\n uniforms.uProjectionMatrix = globalUniformData.projectionMatrix;\n\n uniforms.uResolution = globalUniformData.resolution;\n\n uniforms.uWorldTransformMatrix.copyFrom(globalUniformData.worldTransformMatrix);\n\n uniforms.uWorldTransformMatrix.tx -= globalUniformData.offset.x;\n uniforms.uWorldTransformMatrix.ty -= globalUniformData.offset.y;\n\n color32BitToUniform(\n globalUniformData.worldColor,\n uniforms.uWorldColorAlpha,\n 0\n );\n\n uniformGroup.update();\n\n let bindGroup: BindGroup;\n\n if ((this._renderer as WebGPURenderer).renderPipes.uniformBatch)\n {\n bindGroup = (this._renderer as WebGPURenderer).renderPipes.uniformBatch.getUniformBindGroup(uniformGroup, false);\n }\n else\n {\n bindGroup = this._bindGroupPool.pop() || new BindGroup();\n this._activeBindGroups.push(bindGroup);\n bindGroup.setResource(uniformGroup, 0);\n }\n\n globalUniformData.bindGroup = bindGroup;\n\n this._currentGlobalUniformData = globalUniformData;\n }\n\n public push(options: GlobalUniformOptions)\n {\n this.bind(options);\n\n this._globalUniformDataStack[this._stackIndex++] = this._currentGlobalUniformData;\n }\n\n public pop()\n {\n this._currentGlobalUniformData = this._globalUniformDataStack[--this._stackIndex - 1];\n\n // for webGL we need to update the uniform group here\n // as we are not using bind groups\n if (this._renderer.type === RendererType.WEBGL)\n {\n (this._currentGlobalUniformData.bindGroup.resources[0] as UniformGroup).update();\n }\n }\n\n get bindGroup(): BindGroup\n {\n return this._currentGlobalUniformData.bindGroup;\n }\n\n get uniformGroup()\n {\n return this._currentGlobalUniformData.bindGroup.resources[0] as UniformGroup;\n }\n\n private _createUniforms(): GlobalUniformGroup\n {\n const globalUniforms = new UniformGroup({\n uProjectionMatrix: { value: new Matrix(), type: 'mat3x3' },\n uWorldTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n // TODO - someone smart - set this to be a unorm8x4 rather than a vec4\n uWorldColorAlpha: { value: new Float32Array(4), type: 'vec4' },\n uResolution: { value: [0, 0], type: 'vec2' },\n }, {\n isStatic: true,\n });\n\n return globalUniforms;\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n }\n}\n","import { DOMAdapter } from '../environment/adapter';\n\nlet saidHello = false;\n\nexport const VERSION = '$_VERSION';\n\n/**\n * Prints out the version and renderer information for this running instance of PixiJS.\n * @param type - The name of the renderer this instance is using.\n * @returns {void}\n */\nexport function sayHello(type: string): void\n{\n if (saidHello)\n {\n return;\n }\n\n if (DOMAdapter.get().getNavigator().userAgent.toLowerCase().indexOf('chrome') > -1)\n {\n const args = [\n `%c %c %c %c %c PixiJS %c v${VERSION} (${type}) http://www.pixijs.com/\\n\\n`,\n 'background: #E72264; padding:5px 0;',\n 'background: #6CA2EA; padding:5px 0;',\n 'background: #B5D33D; padding:5px 0;',\n 'background: #FED23F; padding:5px 0;',\n 'color: #FFFFFF; background: #E72264; padding:5px 0;',\n 'color: #E72264; background: #FFFFFF; padding:5px 0;',\n ];\n\n globalThis.console.log(...args);\n }\n else if (globalThis.console)\n {\n globalThis.console.log(`PixiJS ${VERSION} - ${type} - http://www.pixijs.com/`);\n }\n\n saidHello = true;\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { sayHello } from '../../../../utils/sayHello';\nimport { type Renderer, RendererType } from '../../types';\n\nimport type { WebGLRenderer } from '../../gl/WebGLRenderer';\nimport type { System } from '../system/System';\n\n/**\n * Options for the startup system.\n * @property {boolean} [hello=false] - Whether to log the version and type information of renderer to console.\n * @memberof rendering\n */\nexport interface HelloSystemOptions\n{\n /**\n * Whether to log the version and type information of renderer to console.\n * @memberof rendering.SharedRendererOptions\n * @default false\n */\n hello: boolean;\n}\n\n/**\n * A simple system responsible for initiating the renderer.\n * @memberof rendering\n */\nexport class HelloSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'hello',\n priority: -2,\n } as const;\n\n /** The default options for the system. */\n public static defaultOptions: HelloSystemOptions = {\n /** {@link WebGLOptions.hello} */\n hello: false,\n };\n\n private readonly _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n /**\n * It all starts here! This initiates every system, passing in the options for any system by name.\n * @param options - the config for the renderer and all its systems\n */\n public init(options: HelloSystemOptions): void\n {\n if (options.hello)\n {\n let name = this._renderer.name;\n\n if (this._renderer.type === RendererType.WEBGL)\n {\n name += ` ${(this._renderer as WebGLRenderer).context.webGLVersion}`;\n }\n\n sayHello(name);\n }\n }\n}\n","import { extensions, ExtensionType } from '../../../../extensions/Extensions';\n\nimport type { Renderer } from '../../types';\nimport type { System } from '../system/System';\n\n/**\n * Options for the {@link TextureGCSystem}.\n * @memberof rendering\n * @property {boolean} [textureGCActive=true] - If set to true, this will enable the garbage collector on the GPU.\n * @property {number} [textureGCAMaxIdle=60 * 60] -\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @property {number} [textureGCCheckCountMax=600] - Frames between two garbage collections.\n */\nexport interface TextureGCSystemOptions\n{\n /**\n * If set to true, this will enable the garbage collector on the GPU.\n * @default true\n * @memberof rendering.SharedRendererOptions\n */\n textureGCActive: boolean;\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n * @memberof rendering.SharedRendererOptions\n */\n textureGCAMaxIdle: number;\n /**\n * Frames between two garbage collections.\n * @default 600\n * @memberof rendering.SharedRendererOptions\n */\n textureGCCheckCountMax: number;\n}\n/**\n * System plugin to the renderer to manage texture garbage collection on the GPU,\n * ensuring that it does not get clogged up with textures that are no longer being used.\n * @memberof rendering\n */\nexport class TextureGCSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ],\n name: 'textureGC',\n } as const;\n\n /** default options for the TextureGCSystem */\n public static defaultOptions: TextureGCSystemOptions = {\n /**\n * If set to true, this will enable the garbage collector on the GPU.\n * @default true\n */\n textureGCActive: true,\n /**\n * The maximum idle frames before a texture is destroyed by garbage collection.\n * @default 60 * 60\n */\n textureGCAMaxIdle: 60 * 60,\n /**\n * Frames between two garbage collections.\n * @default 600\n */\n textureGCCheckCountMax: 600,\n };\n\n /**\n * Frame count since started.\n * @readonly\n */\n public count: number;\n\n /**\n * Frame count since last garbage collection.\n * @readonly\n */\n public checkCount: number;\n\n /**\n * Maximum idle frames before a texture is destroyed by garbage collection.\n * @see TextureGCSystem.defaultMaxIdle\n */\n public maxIdle: number;\n\n /**\n * Frames between two garbage collections.\n * @see TextureGCSystem.defaultCheckCountMax\n */\n public checkCountMax: number;\n\n /**\n * Current garbage collection mode.\n * @see TextureGCSystem.defaultMode\n */\n public active: boolean;\n private _renderer: Renderer;\n\n /** @param renderer - The renderer this System works for. */\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n\n this.count = 0;\n this.checkCount = 0;\n }\n\n public init(options: TextureGCSystemOptions): void\n {\n options = { ...TextureGCSystem.defaultOptions, ...options };\n\n this.checkCountMax = options.textureGCCheckCountMax;\n this.maxIdle = options.textureGCAMaxIdle;\n this.active = options.textureGCActive;\n }\n\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n protected postrender(): void\n {\n if (!this._renderer.renderingToScreen)\n {\n return;\n }\n\n this.count++;\n\n if (!this.active) return;\n\n this.checkCount++;\n\n if (this.checkCount > this.checkCountMax)\n {\n this.checkCount = 0;\n\n this.run();\n }\n }\n\n /**\n * Checks to see when the last time a texture was used.\n * If the texture has not been used for a specified amount of time, it will be removed from the GPU.\n */\n public run(): void\n {\n const managedTextures = this._renderer.texture.managedTextures;\n\n for (let i = 0; i < managedTextures.length; i++)\n {\n const texture = managedTextures[i];\n\n // Only supports non generated textures at the moment!\n if (\n texture.autoGarbageCollect\n && texture.resource\n && texture._touched > -1\n && this.count - texture._touched > this.maxIdle\n )\n {\n texture._touched = -1;\n texture.unload();\n }\n }\n }\n\n public destroy(): void\n {\n this._renderer = null as any as Renderer;\n }\n}\n\nextensions.add(TextureGCSystem);\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\nimport { RenderTarget } from '../renderTarget/RenderTarget';\nimport { getCanvasTexture } from '../texture/utils/getCanvasTexture';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { TypeOrBool } from '../../../../scene/container/destroyTypes';\nimport type { System } from '../system/System';\nimport type { CanvasSource, CanvasSourceOptions } from '../texture/sources/CanvasSource';\nimport type { Texture } from '../texture/Texture';\n\n/**\n * Options passed to the ViewSystem\n * @memberof rendering\n * @property {number} [width=800] - The width of the screen.\n * @property {number} [height=600] - The height of the screen.\n * @property {ICanvas} [canvas] - The canvas to use as a view, optional.\n * @property {boolean} [autoDensity=false] - Resizes renderer view in CSS pixels to allow for resolutions other than 1.\n * @property {number} [resolution] - The resolution / device pixel ratio of the renderer.\n * @property {boolean} [antialias=false] - Whether to enable anti-aliasing. This may affect performance.\n * @property {boolean} [depth] -\n * Whether to ensure the main view has can make use of the depth buffer. Always true for WebGL renderer.\n * @property {boolean} [multiView] - TODO: multiView\n * @property {number} [backgroundAlpha] - The alpha of the background.\n */\nexport interface ViewSystemOptions\n{\n /**\n * The width of the screen.\n * @default 800\n * @memberof rendering.SharedRendererOptions\n */\n width?: number;\n /**\n * The height of the screen.\n * @default 600\n * @memberof rendering.SharedRendererOptions\n */\n height?: number;\n /**\n * The canvas to use as a view, optional.\n * @memberof rendering.SharedRendererOptions\n */\n canvas?: ICanvas;\n /** @deprecated */\n view?: ICanvas;\n /**\n * Resizes renderer view in CSS pixels to allow for resolutions other than 1.\n * @memberof rendering.SharedRendererOptions\n */\n autoDensity?: boolean;\n /**\n * The resolution / device pixel ratio of the renderer.\n * @memberof rendering.SharedRendererOptions\n */\n resolution?: number;\n /**\n * Whether to enable anti-aliasing. This may affect performance.\n * @memberof rendering.SharedRendererOptions\n */\n antialias?: boolean;\n /**\n * Whether to ensure the main view has can make use of the depth buffer. Always true for WebGL renderer.\n * @memberof rendering.SharedRendererOptions\n */\n depth?: boolean;\n /**\n * TODO: multiView\n * @memberof rendering.SharedRendererOptions\n */\n multiView?: boolean;\n\n /**\n * Transparency of the background color, value from `0` (fully transparent) to `1` (fully opaque).\n * @default 1\n */\n backgroundAlpha?: number;\n}\n\nexport interface ViewSystemDestroyOptions\n{\n /** Whether to remove the view element from the DOM. Defaults to `false`. */\n removeView?: boolean;\n}\n\n/**\n * The view system manages the main canvas that is attached to the DOM.\n * This main role is to deal with how the holding the view reference and dealing with how it is resized.\n * @memberof rendering\n */\nexport class ViewSystem implements System>\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem,\n ],\n name: 'view',\n priority: 0,\n } as const;\n\n /** The default options for the view system. */\n public static defaultOptions: ViewSystemOptions = {\n /**\n * {@link WebGLOptions.width}\n * @default 800\n */\n width: 800,\n /**\n * {@link WebGLOptions.height}\n * @default 600\n */\n height: 600,\n /**\n * {@link WebGLOptions.autoDensity}\n * @default false\n */\n autoDensity: false,\n /**\n * {@link WebGLOptions.antialias}\n * @default false\n */\n antialias: false,\n };\n\n public multiView: boolean;\n\n /** The canvas element that everything is drawn to. */\n public canvas!: ICanvas;\n\n /** The texture that is used to draw the canvas to the screen. */\n public texture: Texture;\n\n /**\n * Whether CSS dimensions of canvas view should be resized to screen dimensions automatically.\n * @member {boolean}\n */\n public autoDensity: boolean;\n\n /** Whether to enable anti-aliasing. This may affect performance. */\n public antialias: boolean;\n\n /**\n * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n *\n * Its safe to use as filterArea or hitArea for the whole stage.\n */\n public screen: Rectangle;\n /** The render target that the view is drawn to. */\n public renderTarget: RenderTarget;\n\n /** The resolution / device pixel ratio of the renderer. */\n get resolution(): number\n {\n return this.texture.source._resolution;\n }\n\n set resolution(value: number)\n {\n this.texture.source.resize(\n this.texture.source.width,\n this.texture.source.height,\n value\n );\n }\n\n /**\n * initiates the view system\n * @param options - the options for the view\n */\n public init(options: ViewSystemOptions): void\n {\n options = {\n ...ViewSystem.defaultOptions,\n ...options,\n };\n\n if (options.view)\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'ViewSystem.view has been renamed to ViewSystem.canvas');\n // #endif\n\n options.canvas = options.view;\n }\n\n this.screen = new Rectangle(0, 0, options.width, options.height);\n this.canvas = options.canvas || DOMAdapter.get().createCanvas();\n this.antialias = !!options.antialias;\n this.texture = getCanvasTexture(this.canvas, options as CanvasSourceOptions);\n this.renderTarget = new RenderTarget({\n colorTextures: [this.texture],\n depth: !!options.depth,\n isRoot: true,\n });\n\n (this.texture.source as CanvasSource).transparent = options.backgroundAlpha < 1;\n this.multiView = !!options.multiView;\n\n if (this.autoDensity)\n {\n this.canvas.style.width = `${this.texture.width}px`;\n this.canvas.style.height = `${this.texture.height}px`;\n }\n\n this.resolution = options.resolution;\n }\n\n /**\n * Resizes the screen and canvas to the specified dimensions.\n * @param desiredScreenWidth - The new width of the screen.\n * @param desiredScreenHeight - The new height of the screen.\n * @param resolution\n */\n public resize(desiredScreenWidth: number, desiredScreenHeight: number, resolution: number): void\n {\n this.texture.source.resize(desiredScreenWidth, desiredScreenHeight, resolution);\n\n this.screen.width = this.texture.frame.width;\n this.screen.height = this.texture.frame.height;\n\n if (this.autoDensity)\n {\n this.canvas.style.width = `${desiredScreenWidth}px`;\n this.canvas.style.height = `${desiredScreenHeight}px`;\n }\n }\n\n /**\n * Destroys this System and optionally removes the canvas from the dom.\n * @param {options | false} options - The options for destroying the view, or \"false\".\n * @param options.removeView - Whether to remove the view element from the DOM. Defaults to `false`.\n */\n public destroy(options: TypeOrBool = false): void\n {\n const removeView = typeof options === 'boolean' ? options : !!options?.removeView;\n\n if (removeView && this.canvas.parentNode)\n {\n this.canvas.parentNode.removeChild(this.canvas);\n }\n\n // note: don't nullify the element\n // other systems may need to unbind from it during the destroy iteration (eg. GLContextSystem)\n }\n}\n","import { CustomRenderPipe } from '../../../../scene/container/CustomRenderPipe';\nimport { RenderGroupPipe } from '../../../../scene/container/RenderGroupPipe';\nimport { RenderGroupSystem } from '../../../../scene/container/RenderGroupSystem';\nimport { SpritePipe } from '../../../../scene/sprite/SpritePipe';\nimport { BatcherPipe } from '../../../batcher/shared/BatcherPipe';\nimport { AlphaMaskPipe } from '../../../mask/alpha/AlphaMaskPipe';\nimport { ColorMaskPipe } from '../../../mask/color/ColorMaskPipe';\nimport { StencilMaskPipe } from '../../../mask/stencil/StencilMaskPipe';\nimport { BackgroundSystem } from '../background/BackgroundSystem';\nimport { BlendModePipe } from '../blendModes/BlendModePipe';\nimport { ExtractSystem } from '../extract/ExtractSystem';\nimport { GenerateTextureSystem } from '../extract/GenerateTextureSystem';\nimport { GlobalUniformSystem } from '../renderTarget/GlobalUniformSystem';\nimport { HelloSystem } from '../startup/HelloSystem';\nimport { TextureGCSystem } from '../texture/TextureGCSystem';\nimport { ViewSystem } from '../view/ViewSystem';\n\nimport type { ExtractRendererOptions } from './utils/typeUtils';\n\nexport const SharedSystems = [\n BackgroundSystem,\n GlobalUniformSystem,\n HelloSystem,\n ViewSystem,\n RenderGroupSystem,\n TextureGCSystem,\n GenerateTextureSystem,\n ExtractSystem,\n];\n\nexport const SharedRenderPipes = [\n BlendModePipe,\n BatcherPipe,\n SpritePipe,\n RenderGroupPipe,\n AlphaMaskPipe,\n StencilMaskPipe,\n ColorMaskPipe,\n CustomRenderPipe\n];\n\n/**\n * Options for the shared systems of a renderer.\n * @memberof rendering\n */\nexport interface SharedRendererOptions extends ExtractRendererOptions, PixiMixins.RendererOptions{}\n","import { extensions, ExtensionType } from '../../../extensions/Extensions';\nimport { GlGraphicsAdaptor } from '../../../scene/graphics/gl/GlGraphicsAdaptor';\nimport { GlMeshAdaptor } from '../../../scene/mesh/gl/GlMeshAdaptor';\nimport { GlBatchAdaptor } from '../../batcher/gl/GlBatchAdaptor';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer';\nimport { SharedRenderPipes, SharedSystems } from '../shared/system/SharedSystems';\nimport { RendererType } from '../types';\nimport { GlBufferSystem } from './buffer/GlBufferSystem';\nimport { GlContextSystem } from './context/GlContextSystem';\nimport { GlGeometrySystem } from './geometry/GlGeometrySystem';\nimport { GlBackBufferSystem } from './GlBackBufferSystem';\nimport { GlColorMaskSystem } from './GlColorMaskSystem';\nimport { GlEncoderSystem } from './GlEncoderSystem';\nimport { GlStencilSystem } from './GlStencilSystem';\nimport { GlUboSystem } from './GlUboSystem';\nimport { GlRenderTargetSystem } from './renderTarget/GlRenderTargetSystem';\nimport { GlShaderSystem } from './shader/GlShaderSystem';\nimport { GlUniformGroupSystem } from './shader/GlUniformGroupSystem';\nimport { GlStateSystem } from './state/GlStateSystem';\nimport { GlTextureSystem } from './texture/GlTextureSystem';\n\nimport type { ICanvas } from '../../../environment/canvas/ICanvas';\nimport type { PipeConstructor } from '../shared/instructions/RenderPipe';\nimport type { SharedRendererOptions } from '../shared/system/SharedSystems';\nimport type { SystemConstructor } from '../shared/system/System';\nimport type { ExtractRendererOptions, ExtractSystemTypes } from '../shared/system/utils/typeUtils';\nimport type { GlRenderingContext } from './context/GlRenderingContext';\n\nconst DefaultWebGLSystems = [\n ...SharedSystems,\n GlUboSystem,\n GlBackBufferSystem,\n GlContextSystem,\n GlBufferSystem,\n GlTextureSystem,\n GlRenderTargetSystem,\n GlGeometrySystem,\n GlUniformGroupSystem,\n GlShaderSystem,\n GlEncoderSystem,\n GlStateSystem,\n GlStencilSystem,\n GlColorMaskSystem,\n];\nconst DefaultWebGLPipes = [...SharedRenderPipes];\nconst DefaultWebGLAdapters = [GlBatchAdaptor, GlMeshAdaptor, GlGraphicsAdaptor];\n\n// installed systems will bbe added to this array by the extensions manager..\nconst systems: { name: string; value: SystemConstructor }[] = [];\nconst renderPipes: { name: string; value: PipeConstructor }[] = [];\nconst renderPipeAdaptors: { name: string; value: any }[] = [];\n\nextensions.handleByNamedList(ExtensionType.WebGLSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGLPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor, renderPipeAdaptors);\n\n// add all the default systems as well as any user defined ones from the extensions\nextensions.add(...DefaultWebGLSystems, ...DefaultWebGLPipes, ...DefaultWebGLAdapters);\n\n/** The default WebGL renderer, uses WebGL2 contexts. */\ntype WebGLSystems = ExtractSystemTypes & PixiMixins.RendererSystems & PixiMixins.WebGLSystems;\n\n/** The default WebGL renderer, uses WebGL2 contexts. */\nexport type WebGLPipes = ExtractSystemTypes & PixiMixins.RendererPipes & PixiMixins.WebGLPipes;\n\n/**\n * Options for WebGLRenderer.\n * @memberof rendering\n */\nexport interface WebGLOptions\n extends\n SharedRendererOptions,\n ExtractRendererOptions,\n PixiMixins.WebGLOptions {}\n\n/**\n * The default WebGL renderer, uses WebGL2 contexts.\n * @memberof rendering\n */\nexport interface WebGLRenderer\n extends AbstractRenderer,\n WebGLSystems {}\n\n/* eslint-disable max-len */\n/**\n * The WebGL PixiJS Renderer. This renderer allows you to use the most common graphics API, WebGL (and WebGL2).\n *\n * ```ts\n * // Create a new renderer\n * const renderer = new WebGLRenderer();\n * await renderer.init();\n *\n * // Add the renderer to the stage\n * document.body.appendChild(renderer.canvas);\n *\n * // Create a new stage\n * const stage = new Container();\n *\n * // Render the stage\n * renderer.render(stage);\n * ```\n *\n * You can use {@link rendering.autoDetectRenderer} to create a renderer that will automatically detect the best\n * renderer for the environment.\n *\n *\n * ```ts\n * // Create a new renderer\n * const renderer = await rendering.autoDetectRenderer({\n * preference:'webgl',\n * });\n * ```\n *\n * The renderer is composed of systems that manage specific tasks. The following systems are added by default\n * whenever you create a WebGL renderer:\n *\n * | WebGL Core Systems | Systems that are specific to the WebGL renderer |\n * | ------------------------------------------- | ----------------------------------------------------------------------------- |\n * | {@link rendering.GlUboSystem} | This manages WebGL2 uniform buffer objects feature for shaders |\n * | {@link rendering.GlBackBufferSystem} | manages the back buffer, used so that we can pixi can pixels from the screen |\n * | {@link rendering.GlContextSystem} | This manages the WebGL context and its extensions |\n * | {@link rendering.GlBufferSystem} | This manages buffers and their GPU resources, keeps everything in sync |\n * | {@link rendering.GlTextureSystem} | This manages textures and their GPU resources, keeps everything in sync |\n * | {@link rendering.GlRenderTargetSystem} | This manages what we render too. For example the screen, or another texture |\n * | {@link rendering.GlGeometrySystem} | This manages geometry, used for drawing meshes via the GPU |\n * | {@link rendering.GlUniformGroupSystem} | This manages uniform groups. Syncing shader properties with the GPU |\n * | {@link rendering.GlShaderSystem} | This manages shaders, programs that run on the GPU to output lovely pixels |\n * | {@link rendering.GlEncoderSystem} | This manages encoders, a WebGPU Paradigm, use it to draw a mesh + shader |\n * | {@link rendering.GlStateSystem} | This manages the state of the WebGL context. eg the various flags that can be set blend modes / depthTesting etc |\n * | {@link rendering.GlStencilSystem} | This manages the stencil buffer. Used primarily for masking |\n * | {@link rendering.GlColorMaskSystem} | This manages the color mask. Used for color masking |\n *\n * The breadth of the API surface provided by the renderer is contained within these systems.\n * @memberof rendering\n * @property {rendering.GlUboSystem} ubo - UboSystem instance.\n * @property {rendering.GlBackBufferSystem} backBuffer - BackBufferSystem instance.\n * @property {rendering.GlContextSystem} context - ContextSystem instance.\n * @property {rendering.GlBufferSystem} buffer - BufferSystem instance.\n * @property {rendering.GlTextureSystem} texture - TextureSystem instance.\n * @property {rendering.GlRenderTargetSystem} renderTarget - RenderTargetSystem instance.\n * @property {rendering.GlGeometrySystem} geometry - GeometrySystem instance.\n * @property {rendering.GlUniformGroupSystem} uniformGroup - UniformGroupSystem instance.\n * @property {rendering.GlShaderSystem} shader - ShaderSystem instance.\n * @property {rendering.GlEncoderSystem} encoder - EncoderSystem instance.\n * @property {rendering.GlStateSystem} state - StateSystem instance.\n * @property {rendering.GlStencilSystem} stencil - StencilSystem instance.\n * @property {rendering.GlColorMaskSystem} colorMask - ColorMaskSystem instance.\n * @extends rendering.AbstractRenderer\n */\n/* eslint-enable max-len */\nexport class WebGLRenderer\n extends AbstractRenderer\n implements WebGLSystems\n{\n public gl: GlRenderingContext;\n\n constructor()\n {\n const systemConfig = {\n name: 'webgl',\n type: RendererType.WEBGL,\n systems,\n renderPipes,\n renderPipeAdaptors,\n };\n\n super(systemConfig);\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { Buffer } from '../shared/buffer/Buffer';\nimport type { BufferResource } from '../shared/buffer/BufferResource';\nimport type { UniformGroup } from '../shared/shader/UniformGroup';\nimport type { System } from '../shared/system/System';\nimport type { TextureSource } from '../shared/texture/sources/TextureSource';\nimport type { TextureStyle } from '../shared/texture/TextureStyle';\nimport type { GPU } from './GpuDeviceSystem';\nimport type { BindGroup } from './shader/BindGroup';\nimport type { BindResource } from './shader/BindResource';\nimport type { GpuProgram } from './shader/GpuProgram';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * This manages the WebGPU bind groups. this is how data is bound to a shader when rendering\n * @memberof rendering\n */\nexport class BindGroupSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'bindGroup',\n } as const;\n\n private readonly _renderer: WebGPURenderer;\n\n private _hash: Record = Object.create(null);\n private _gpu: GPU;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n\n public getBindGroup(bindGroup: BindGroup, program: GpuProgram, groupIndex: number): GPUBindGroup\n {\n bindGroup._updateKey();\n\n const gpuBindGroup = this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);\n\n return gpuBindGroup;\n }\n\n private _createBindGroup(group: BindGroup, program: GpuProgram, groupIndex: number): GPUBindGroup\n {\n const device = this._gpu.device;\n const groupLayout = program.layout[groupIndex];\n const entries: GPUBindGroupEntry[] = [];\n const renderer = this._renderer;\n\n for (const j in groupLayout)\n {\n const resource: BindResource = group.resources[j] ?? group.resources[groupLayout[j]];\n let gpuResource: GPUSampler | GPUTextureView | GPUExternalTexture | GPUBufferBinding;\n // TODO make this dynamic..\n\n if (resource._resourceType === 'uniformGroup')\n {\n const uniformGroup = resource as UniformGroup;\n\n renderer.ubo.updateUniformGroup(uniformGroup as UniformGroup);\n\n const buffer = uniformGroup.buffer;\n\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size,\n };\n }\n else if (resource._resourceType === 'buffer')\n {\n const buffer = resource as Buffer;\n\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size,\n };\n }\n else if (resource._resourceType === 'bufferResource')\n {\n const bufferResource = resource as BufferResource;\n\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(bufferResource.buffer),\n offset: bufferResource.offset,\n size: bufferResource.size,\n };\n }\n else if (resource._resourceType === 'textureSampler')\n {\n const sampler = resource as TextureStyle;\n\n gpuResource = renderer.texture.getGpuSampler(sampler);\n }\n else if (resource._resourceType === 'textureSource')\n {\n const texture = resource as TextureSource;\n\n gpuResource = renderer.texture.getGpuSource(texture).createView({\n\n });\n }\n\n entries.push({\n binding: groupLayout[j],\n resource: gpuResource,\n });\n }\n\n const layout = renderer.shader.getProgramData(program).bindGroups[groupIndex];\n\n const gpuBindGroup = device.createBindGroup({\n layout,\n entries,\n });\n\n this._hash[group._key] = gpuBindGroup;\n\n return gpuBindGroup;\n }\n\n public destroy(): void\n {\n for (const key of Object.keys(this._hash))\n {\n this._hash[key] = null;\n }\n\n this._hash = null;\n\n (this._renderer as null) = null;\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { fastCopy } from '../../shared/buffer/utils/fastCopy';\n\nimport type { Buffer } from '../../shared/buffer/Buffer';\nimport type { System } from '../../shared/system/System';\nimport type { GPU } from '../GpuDeviceSystem';\n\n/**\n * System plugin to the renderer to manage buffers.\n * @memberof rendering\n */\nexport class GpuBufferSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'buffer',\n } as const;\n\n protected CONTEXT_UID: number;\n private _gpuBuffers: { [key: number]: GPUBuffer } = Object.create(null);\n private readonly _managedBuffers: Buffer[] = [];\n\n private _gpu: GPU;\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n\n public getGPUBuffer(buffer: Buffer): GPUBuffer\n {\n return this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n }\n\n public updateBuffer(buffer: Buffer): GPUBuffer\n {\n const gpuBuffer = this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n\n const data = buffer.data;\n\n // TODO this can be better...\n if (buffer._updateID && data)\n {\n buffer._updateID = 0;\n\n // make sure\n this._gpu.device.queue.writeBuffer(\n gpuBuffer, 0, data.buffer, 0,\n // round to the nearest 4 bytes\n ((buffer._updateSize || data.byteLength) + 3) & ~3\n );\n }\n\n return gpuBuffer;\n }\n\n /** dispose all WebGL resources of all managed buffers */\n public destroyAll(): void\n {\n for (const id in this._gpuBuffers)\n {\n this._gpuBuffers[id].destroy();\n }\n\n this._gpuBuffers = {};\n }\n\n public createGPUBuffer(buffer: Buffer): GPUBuffer\n {\n if (!this._gpuBuffers[buffer.uid])\n {\n buffer.on('update', this.updateBuffer, this);\n buffer.on('change', this.onBufferChange, this);\n buffer.on('destroy', this.onBufferDestroy, this);\n }\n\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n\n buffer._updateID = 0;\n\n if (buffer.data)\n {\n // TODO if data is static, this can be mapped at creation\n fastCopy(buffer.data.buffer, gpuBuffer.getMappedRange());\n\n gpuBuffer.unmap();\n }\n\n this._gpuBuffers[buffer.uid] = gpuBuffer;\n\n this._managedBuffers.push(buffer);\n\n return gpuBuffer;\n }\n\n protected onBufferChange(buffer: Buffer)\n {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n\n gpuBuffer.destroy();\n buffer._updateID = 0;\n this._gpuBuffers[buffer.uid] = this.createGPUBuffer(buffer);\n }\n\n /**\n * Disposes buffer\n * @param buffer - buffer with data\n */\n protected onBufferDestroy(buffer: Buffer): void\n {\n this._managedBuffers.splice(this._managedBuffers.indexOf(buffer), 1);\n\n this._destroyBuffer(buffer);\n }\n\n public destroy(): void\n {\n this._managedBuffers.forEach((buffer) => this._destroyBuffer(buffer));\n\n (this._managedBuffers as null) = null;\n\n this._gpuBuffers = null;\n }\n\n private _destroyBuffer(buffer: Buffer): void\n {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n\n gpuBuffer.destroy();\n\n buffer.off('update', this.updateBuffer, this);\n buffer.off('change', this.onBufferChange, this);\n buffer.off('destroy', this.onBufferDestroy, this);\n\n this._gpuBuffers[buffer.uid] = null;\n }\n}\n\n","import { Buffer } from '../../shared/buffer/Buffer';\nimport { BufferUsage } from '../../shared/buffer/const';\n\nimport type { WebGPURenderer } from '../WebGPURenderer';\n\nexport function GpuReadBuffer(buffer: Buffer, renderer: WebGPURenderer)\n{\n const bufferSize = buffer.descriptor.size;\n\n const device = renderer.gpu.device;\n\n const stagingBuffer = new Buffer({\n data: new Float32Array(2400000),\n usage: BufferUsage.MAP_READ | BufferUsage.COPY_DST,\n });\n\n const stagingGPUBuffer = renderer.buffer.createGPUBuffer(stagingBuffer);\n\n const commandEncoder = device.createCommandEncoder();\n\n commandEncoder.copyBufferToBuffer(\n renderer.buffer.getGPUBuffer(buffer),\n 0, // Source offset\n stagingGPUBuffer,\n 0, // Destination offset\n bufferSize,\n );\n\n device.queue.submit([commandEncoder.finish()]);\n\n void stagingGPUBuffer.mapAsync(\n GPUMapMode.READ,\n 0, // Offset\n bufferSize, // Length\n ).then(() =>\n {\n stagingGPUBuffer.getMappedRange(0, bufferSize);\n stagingGPUBuffer.unmap();\n });\n}\n","import type { Buffer } from '../../shared/buffer/Buffer';\n\nexport class UboBatch\n{\n private _buffer: Buffer;\n public data: Float32Array;\n private readonly _minUniformOffsetAlignment: number = 256;\n\n public byteIndex = 0;\n\n constructor({ minUniformOffsetAlignment }: {minUniformOffsetAlignment: number})\n {\n this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n this.data = new Float32Array(65535);\n }\n\n public clear(): void\n {\n this.byteIndex = 0;\n }\n\n public addEmptyGroup(size: number): number\n {\n // update the buffer.. only float32 for now!\n if (size > this._minUniformOffsetAlignment / 4)\n {\n throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n }\n\n const start = this.byteIndex;\n\n let newSize = start + (size * 4);\n\n newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n\n if (newSize > this.data.length * 4)\n {\n // TODO push a new buffer\n throw new Error('UniformBufferBatch: ubo batch got too big');\n }\n\n this.byteIndex = newSize;\n\n return start;\n }\n\n public addGroup(array: Float32Array): number\n {\n const offset = this.addEmptyGroup(array.length);\n\n for (let i = 0; i < array.length; i++)\n {\n this.data[(offset / 4) + i] = array[i];\n }\n\n return offset;\n }\n\n public destroy()\n {\n this._buffer.destroy();\n this._buffer = null;\n\n this.data = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { System } from '../shared/system/System';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * The system that handles color masking for the GPU.\n * @memberof rendering\n */\nexport class GpuColorMaskSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'colorMask',\n } as const;\n\n private readonly _renderer: WebGPURenderer;\n\n private _colorMaskCache = 0b1111;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n public setMask(colorMask: number)\n {\n if (this._colorMaskCache === colorMask) return;\n this._colorMaskCache = colorMask;\n\n this._renderer.pipeline.setColorMask(colorMask);\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n this._colorMaskCache = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { System } from '../shared/system/System';\nimport type { GpuPowerPreference } from '../types';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/** The GPU object. */\nexport interface GPU\n{\n /** The GPU adapter */\n adapter: GPUAdapter;\n /** The GPU device */\n device: GPUDevice;\n}\n\n/**\n * Options for the WebGPU context.\n * @property {GpuPowerPreference} [powerPreference=default] - An optional hint indicating what configuration of GPU\n * is suitable for the WebGPU context, can be `'high-performance'` or `'low-power'`.\n * Setting to `'high-performance'` will prioritize rendering performance over power consumption,\n * while setting to `'low-power'` will prioritize power saving over rendering performance.\n * @property {boolean} [forceFallbackAdapter=false] - Force the use of the fallback adapter\n * @memberof rendering\n */\nexport interface GpuContextOptions\n{\n /**\n * An optional hint indicating what configuration of GPU is suitable for the WebGPU context,\n * can be `'high-performance'` or `'low-power'`.\n * Setting to `'high-performance'` will prioritize rendering performance over power consumption,\n * while setting to `'low-power'` will prioritize power saving over rendering performance.\n * @default undefined\n * @memberof rendering.WebGPUOptions\n */\n powerPreference?: GpuPowerPreference;\n /**\n * Force the use of the fallback adapter\n * @default false\n * @memberof rendering.WebGPUOptions\n */\n forceFallbackAdapter: boolean;\n}\n\n/**\n * System plugin to the renderer to manage the context.\n * @class\n * @memberof rendering\n */\nexport class GpuDeviceSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'device',\n } as const;\n\n /** The default options for the GpuDeviceSystem. */\n public static defaultOptions: GpuContextOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: undefined,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false,\n };\n\n /** The GPU device */\n public gpu: GPU;\n\n private _renderer: WebGPURenderer;\n private _initPromise: Promise;\n\n /**\n * @param {WebGPURenderer} renderer - The renderer this System works for.\n */\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n public async init(options: GpuContextOptions): Promise\n {\n if (this._initPromise) return this._initPromise;\n\n this._initPromise = this._createDeviceAndAdaptor(options)\n .then((gpu) =>\n {\n this.gpu = gpu;\n\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n\n return this._initPromise;\n }\n\n /**\n * Handle the context change event\n * @param gpu\n */\n protected contextChange(gpu: GPU): void\n {\n this._renderer.gpu = gpu;\n }\n\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n private async _createDeviceAndAdaptor(options: GpuContextOptions): Promise\n {\n // TODO we only need one of these..\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter,\n });\n\n const requiredFeatures = [\n 'texture-compression-bc',\n 'texture-compression-astc',\n 'texture-compression-etc2',\n ].filter((feature) => adapter.features.has(feature)) as GPUFeatureName[];\n\n // TODO and one of these!\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n\n return { adapter, device };\n }\n\n public destroy(): void\n {\n this.gpu = null;\n this._renderer = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { Rectangle } from '../../../maths/shapes/Rectangle';\nimport type { Buffer } from '../shared/buffer/Buffer';\nimport type { Topology } from '../shared/geometry/const';\nimport type { Geometry } from '../shared/geometry/Geometry';\nimport type { Shader } from '../shared/shader/Shader';\nimport type { UniformGroup } from '../shared/shader/UniformGroup';\nimport type { State } from '../shared/state/State';\nimport type { System } from '../shared/system/System';\nimport type { GPU } from './GpuDeviceSystem';\nimport type { GpuRenderTarget } from './renderTarget/GpuRenderTarget';\nimport type { GpuRenderTargetAdaptor } from './renderTarget/GpuRenderTargetAdaptor';\nimport type { BindGroup } from './shader/BindGroup';\nimport type { GpuProgram } from './shader/GpuProgram';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * The system that handles encoding commands for the GPU.\n * @memberof rendering\n */\nexport class GpuEncoderSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGPUSystem],\n name: 'encoder',\n priority: 1\n } as const;\n\n public commandEncoder: GPUCommandEncoder;\n public renderPassEncoder: GPURenderPassEncoder;\n public commandFinished: Promise;\n\n private _resolveCommandFinished: (value: void) => void;\n\n private _gpu: GPU;\n private _boundBindGroup: Record = Object.create(null);\n private _boundVertexBuffer: Record = Object.create(null);\n private _boundIndexBuffer: Buffer;\n private _boundPipeline: GPURenderPipeline;\n\n private readonly _renderer: WebGPURenderer;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n public renderStart(): void\n {\n this.commandFinished = new Promise((resolve) =>\n {\n this._resolveCommandFinished = resolve;\n });\n\n // generate a render pass description..\n // create an encoder..\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n\n public beginRenderPass(gpuRenderTarget: GpuRenderTarget)\n {\n this.endRenderPass();\n\n this._clearCache();\n\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n\n public endRenderPass()\n {\n if (this.renderPassEncoder)\n {\n this.renderPassEncoder.end();\n }\n\n this.renderPassEncoder = null;\n }\n\n public setViewport(viewport: Rectangle): void\n {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n\n public setPipelineFromGeometryProgramAndState(\n geometry: Geometry,\n program: GpuProgram,\n state: any,\n topology?: Topology,\n ): void\n {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n\n this.setPipeline(pipeline);\n }\n\n public setPipeline(pipeline: GPURenderPipeline)\n {\n if (this._boundPipeline === pipeline) return;\n this._boundPipeline = pipeline;\n\n this.renderPassEncoder.setPipeline(pipeline);\n }\n\n private _setVertexBuffer(index: number, buffer: Buffer)\n {\n if (this._boundVertexBuffer[index] === buffer) return;\n\n this._boundVertexBuffer[index] = buffer;\n\n this.renderPassEncoder.setVertexBuffer(index, this._renderer.buffer.updateBuffer(buffer));\n }\n\n private _setIndexBuffer(buffer: Buffer)\n {\n if (this._boundIndexBuffer === buffer) return;\n\n this._boundIndexBuffer = buffer;\n\n const indexFormat = buffer.data.BYTES_PER_ELEMENT === 2 ? 'uint16' : 'uint32';\n\n this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer), indexFormat);\n }\n\n public resetBindGroup(index: number)\n {\n this._boundBindGroup[index] = null;\n }\n\n public setBindGroup(index: number, bindGroup: BindGroup, program: GpuProgram)\n {\n if (this._boundBindGroup[index] === bindGroup) return;\n this._boundBindGroup[index] = bindGroup;\n\n bindGroup._touch(this._renderer.textureGC.count);\n\n // TODO getting the bind group works as it looks at th e assets and generates a key\n // should this just be hidden behind a dirty flag?\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n\n // mark each item as having been used..\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n\n public setGeometry(geometry: Geometry)\n {\n for (const i in geometry.attributes)\n {\n const attribute = geometry.attributes[i];\n\n this._setVertexBuffer(attribute.location, attribute.buffer);\n }\n\n if (geometry.indexBuffer)\n {\n this._setIndexBuffer(geometry.indexBuffer);\n }\n }\n\n private _setShaderBindGroups(shader: Shader, skipSync?: boolean)\n {\n for (const i in shader.groups)\n {\n const bindGroup = shader.groups[i] as BindGroup;\n\n // update any uniforms?\n if (!skipSync)\n {\n this._syncBindGroup(bindGroup);\n }\n\n this.setBindGroup(i as unknown as number, bindGroup, shader.gpuProgram);\n }\n }\n\n private _syncBindGroup(bindGroup: BindGroup)\n {\n for (const j in bindGroup.resources)\n {\n const resource = bindGroup.resources[j];\n\n if ((resource as UniformGroup).isUniformGroup)\n {\n this._renderer.ubo.updateUniformGroup(resource as UniformGroup);\n }\n }\n }\n\n public draw(options: {\n geometry: Geometry;\n shader: Shader;\n state?: State;\n topology?: Topology;\n size?: number;\n start?: number;\n instanceCount?: number;\n skipSync?: boolean;\n })\n {\n const { geometry, shader, state, topology, size, start, instanceCount, skipSync } = options;\n\n this.setPipelineFromGeometryProgramAndState(geometry, shader.gpuProgram, state, topology);\n this.setGeometry(geometry);\n this._setShaderBindGroups(shader, skipSync);\n\n if (geometry.indexBuffer)\n {\n this.renderPassEncoder.drawIndexed(\n size || geometry.indexBuffer.data.length,\n instanceCount || geometry.instanceCount,\n start || 0\n );\n }\n else\n {\n this.renderPassEncoder.draw(size || geometry.getSize(), instanceCount || geometry.instanceCount, start || 0);\n }\n }\n\n public finishRenderPass()\n {\n if (this.renderPassEncoder)\n {\n this.renderPassEncoder.end();\n this.renderPassEncoder = null;\n }\n }\n\n public postrender()\n {\n this.finishRenderPass();\n\n this._gpu.device.queue.submit([this.commandEncoder.finish()]);\n\n this._resolveCommandFinished();\n\n this.commandEncoder = null;\n }\n\n // restores a render pass if finishRenderPass was called\n // not optimised as really used for debugging!\n // used when we want to stop drawing and log a texture..\n public restoreRenderPass()\n {\n const descriptor = (this._renderer.renderTarget.adaptor as GpuRenderTargetAdaptor).getDescriptor(\n this._renderer.renderTarget.renderTarget,\n false,\n [0, 0, 0, 1],\n );\n\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(descriptor);\n\n const boundPipeline = this._boundPipeline;\n const boundVertexBuffer = { ...this._boundVertexBuffer };\n const boundIndexBuffer = this._boundIndexBuffer;\n const boundBindGroup = { ...this._boundBindGroup };\n\n this._clearCache();\n\n const viewport = this._renderer.renderTarget.viewport;\n\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n\n // reinstate the cache...\n\n this.setPipeline(boundPipeline);\n\n for (const i in boundVertexBuffer)\n {\n this._setVertexBuffer(i as unknown as number, boundVertexBuffer[i]);\n }\n\n for (const i in boundBindGroup)\n {\n this.setBindGroup(i as unknown as number, boundBindGroup[i], null);\n }\n\n this._setIndexBuffer(boundIndexBuffer);\n }\n\n private _clearCache()\n {\n for (let i = 0; i < 16; i++)\n {\n this._boundBindGroup[i] = null;\n this._boundVertexBuffer[i] = null;\n }\n\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n this._gpu = null;\n this._boundBindGroup = null;\n this._boundVertexBuffer = null;\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { STENCIL_MODES } from '../shared/state/const';\n\nimport type { RenderTarget } from '../shared/renderTarget/RenderTarget';\nimport type { System } from '../shared/system/System';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * This manages the stencil buffer. Used primarily for masking\n * @memberof rendering\n */\nexport class GpuStencilSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'stencil',\n } as const;\n\n private readonly _renderer: WebGPURenderer;\n\n private _renderTargetStencilState: Record = Object.create(null);\n\n private _activeRenderTarget: RenderTarget;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n\n protected onRenderTargetChange(renderTarget: RenderTarget)\n {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n\n if (!stencilState)\n {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0,\n };\n }\n\n this._activeRenderTarget = renderTarget;\n\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n\n public setStencilMode(stencilMode: STENCIL_MODES, stencilReference: number)\n {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n\n const renderer = this._renderer;\n\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n\n public destroy()\n {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n\n (this._renderer as null) = null;\n\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n","import type { UboElement, UboLayout, UNIFORM_TYPES, UniformData } from '../../../shared/shader/types';\n\nexport const WGSL_ALIGN_SIZE_DATA: Record = {\n i32: { align: 4, size: 4 },\n u32: { align: 4, size: 4 },\n f32: { align: 4, size: 4 },\n f16: { align: 2, size: 2 },\n 'vec2': { align: 8, size: 8 },\n 'vec2': { align: 8, size: 8 },\n 'vec2': { align: 8, size: 8 },\n 'vec2': { align: 4, size: 4 },\n 'vec3': { align: 16, size: 12 },\n 'vec3': { align: 16, size: 12 },\n 'vec3': { align: 16, size: 12 },\n 'vec3': { align: 8, size: 6 },\n 'vec4': { align: 16, size: 16 },\n 'vec4': { align: 16, size: 16 },\n 'vec4': { align: 16, size: 16 },\n 'vec4': { align: 8, size: 8 },\n 'mat2x2': { align: 8, size: 16 },\n 'mat2x2': { align: 4, size: 8 },\n 'mat3x2': { align: 8, size: 24 },\n 'mat3x2': { align: 4, size: 12 },\n 'mat4x2': { align: 8, size: 32 },\n 'mat4x2': { align: 4, size: 16 },\n 'mat2x3': { align: 16, size: 32 },\n 'mat2x3': { align: 8, size: 16 },\n 'mat3x3': { align: 16, size: 48 },\n 'mat3x3': { align: 8, size: 24 },\n 'mat4x3': { align: 16, size: 64 },\n 'mat4x3': { align: 8, size: 32 },\n 'mat2x4': { align: 16, size: 32 },\n 'mat2x4': { align: 8, size: 16 },\n 'mat3x4': { align: 16, size: 48 },\n 'mat3x4': { align: 8, size: 24 },\n 'mat4x4': { align: 16, size: 64 },\n 'mat4x4': { align: 8, size: 32 },\n};\n\nexport function createUboElementsWGSL(uniformData: UniformData[]): UboLayout\n{\n const uboElements: UboElement[] = uniformData.map((data: UniformData) =>\n ({\n data,\n offset: 0,\n size: 0,\n }));\n\n let offset = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n let size = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;\n const align = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;\n\n if (!WGSL_ALIGN_SIZE_DATA[uboElement.data.type])\n {\n throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${uboElement.data.type}`);\n }\n\n if (uboElement.data.size > 1)\n {\n size = Math.max(size, align) * uboElement.data.size;\n }\n\n offset = Math.ceil((offset) / align) * align;\n\n // TODO deal with Arrays\n uboElement.size = size;\n\n uboElement.offset = offset;\n\n offset += size;\n }\n\n // must align to 16 bits!\n offset = Math.ceil(offset / 16) * 16;\n\n return { uboElements, size: offset };\n}\n\n","import { WGSL_ALIGN_SIZE_DATA } from './createUboElementsWGSL';\n\nimport type { UboElement } from '../../../shared/shader/types';\n\n/**\n * This generates a function that will sync an array to the uniform buffer\n * following the wgsl layout\n * @param uboElement - the element to generate the array sync for\n * @param offsetToAdd - the offset to append at the start of the code\n * @returns - the generated code\n */\nexport function generateArraySyncWGSL(uboElement: UboElement, offsetToAdd: number): string\n{\n // this is in byte..\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n\n const remainder = (align - size) / 4;\n\n return `\n v = uv.${uboElement.data.name};\n ${offsetToAdd !== 0 ? `offset += ${offsetToAdd};` : ''}\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * (size / 4)}; i++)\n {\n for(var j = 0; j < ${size / 4}; j++)\n {\n data[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : ''}\n }\n `;\n}\n","/* eslint-disable quote-props */\nimport { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction';\nimport { uboSyncFunctionsWGSL } from '../../../shared/shader/utils/uboSyncFunctions';\nimport { generateArraySyncWGSL } from './generateArraySyncWGSL';\n\nimport type { UboElement, UniformsSyncCallback } from '../../../shared/shader/types';\n\nexport function createUboSyncFunctionWGSL(\n uboElements: UboElement[],\n): UniformsSyncCallback\n{\n return createUboSyncFunction(\n uboElements,\n 'uboWgsl',\n generateArraySyncWGSL,\n uboSyncFunctionsWGSL,\n );\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { UboSystem } from '../shared/shader/UboSystem';\nimport { createUboElementsWGSL } from './shader/utils/createUboElementsWGSL';\nimport { createUboSyncFunctionWGSL } from './shader/utils/createUboSyncFunctionWGSL';\n\n/**\n * System plugin to the renderer to manage uniform buffers. With a WGSL twist!\n * @memberof rendering\n */\nexport class GpuUboSystem extends UboSystem\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGPUSystem],\n name: 'ubo',\n } as const;\n\n constructor()\n {\n super({\n createUboElements: createUboElementsWGSL,\n generateUboSync: createUboSyncFunctionWGSL,\n });\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Buffer } from '../shared/buffer/Buffer';\nimport { BufferResource } from '../shared/buffer/BufferResource';\nimport { BufferUsage } from '../shared/buffer/const';\nimport { UboBatch } from './buffer/UboBatch';\nimport { BindGroup } from './shader/BindGroup';\n\nimport type { UniformGroup } from '../shared/shader/UniformGroup';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\nconst minUniformOffsetAlignment = 128;// 256 / 2;\n\n// TODO renderStart and renderFinish - perhaps just make them instructions to fit the architecture of the\n// rest of the system\nexport class GpuUniformBatchPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipes,\n ],\n name: 'uniformBatch',\n } as const;\n\n private _renderer: WebGPURenderer;\n\n private _bindGroupHash: Record = Object.create(null);\n private readonly _batchBuffer: UboBatch;\n\n // number of buffers..\n private _buffers: Buffer[] = [];\n\n private _bindGroups: BindGroup[] = [];\n private _bufferResources: BufferResource[] = [];\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n\n this._batchBuffer = new UboBatch({ minUniformOffsetAlignment });\n\n const totalBuffers = (256 / minUniformOffsetAlignment);\n\n for (let i = 0; i < totalBuffers; i++)\n {\n let usage = BufferUsage.UNIFORM | BufferUsage.COPY_DST;\n\n if (i === 0) usage |= BufferUsage.COPY_SRC;\n\n this._buffers.push(new Buffer({\n data: this._batchBuffer.data,\n usage\n }));\n }\n }\n\n public renderEnd()\n {\n this._uploadBindGroups();\n this._resetBindGroups();\n }\n\n private _resetBindGroups()\n {\n for (const i in this._bindGroupHash)\n {\n this._bindGroupHash[i] = null;\n }\n\n this._batchBuffer.clear();\n }\n\n // just works for single bind groups for now\n public getUniformBindGroup(group: UniformGroup, duplicate: boolean): BindGroup\n {\n if (!duplicate && this._bindGroupHash[group.uid])\n {\n return this._bindGroupHash[group.uid];\n }\n\n this._renderer.ubo.ensureUniformGroup(group);\n\n const data = group.buffer.data as Float32Array;\n\n const offset = this._batchBuffer.addEmptyGroup(data.length);\n\n this._renderer.ubo.syncUniformGroup(group, this._batchBuffer.data, offset / 4);\n\n this._bindGroupHash[group.uid] = this._getBindGroup(offset / minUniformOffsetAlignment);\n\n return this._bindGroupHash[group.uid];\n }\n\n public getUboResource(group: UniformGroup): BufferResource\n {\n this._renderer.ubo.updateUniformGroup(group);\n\n const data = group.buffer.data as Float32Array;\n\n const offset = this._batchBuffer.addGroup(data);\n\n return this._getBufferResource(offset / minUniformOffsetAlignment);\n }\n\n public getArrayBindGroup(data: Float32Array): BindGroup\n {\n const offset = this._batchBuffer.addGroup(data);\n\n return this._getBindGroup(offset / minUniformOffsetAlignment);\n }\n\n public getArrayBufferResource(data: Float32Array): BufferResource\n {\n const offset = this._batchBuffer.addGroup(data);\n\n const index = offset / minUniformOffsetAlignment;\n\n return this._getBufferResource(index);\n }\n\n private _getBufferResource(index: number): BufferResource\n {\n if (!this._bufferResources[index])\n {\n const buffer = this._buffers[index % 2];\n\n this._bufferResources[index] = new BufferResource({\n buffer,\n offset: ((index / 2) | 0) * 256,\n size: minUniformOffsetAlignment\n });\n }\n\n return this._bufferResources[index];\n }\n\n private _getBindGroup(index: number): BindGroup\n {\n if (!this._bindGroups[index])\n {\n // even!\n const bindGroup = new BindGroup({\n 0: this._getBufferResource(index),\n });\n\n this._bindGroups[index] = bindGroup;\n }\n\n return this._bindGroups[index];\n }\n\n private _uploadBindGroups()\n {\n const bufferSystem = this._renderer.buffer;\n\n const firstBuffer = this._buffers[0];\n\n firstBuffer.update(this._batchBuffer.byteIndex);\n\n bufferSystem.updateBuffer(firstBuffer);\n\n const commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n\n for (let i = 1; i < this._buffers.length; i++)\n {\n const buffer = this._buffers[i];\n\n commandEncoder.copyBufferToBuffer(\n bufferSystem.getGPUBuffer(firstBuffer),\n minUniformOffsetAlignment,\n bufferSystem.getGPUBuffer(buffer),\n 0,\n this._batchBuffer.byteIndex\n );\n }\n\n // TODO make a system that will que up all commands in to one array?\n this._renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n }\n\n public destroy()\n {\n for (let i = 0; i < this._bindGroups.length; i++)\n {\n this._bindGroups[i].destroy();\n }\n\n this._bindGroups = null;\n this._bindGroupHash = null;\n\n for (let i = 0; i < this._buffers.length; i++)\n {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n\n for (let i = 0; i < this._bufferResources.length; i++)\n {\n this._bufferResources[i].destroy();\n }\n\n this._bufferResources = null;\n\n this._batchBuffer.destroy();\n this._bindGroupHash = null;\n\n this._renderer = null;\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { ensureAttributes } from '../../gl/shader/program/ensureAttributes';\nimport { STENCIL_MODES } from '../../shared/state/const';\nimport { createIdFromString } from '../../shared/utils/createIdFromString';\nimport { GpuStencilModesToPixi } from '../state/GpuStencilModesToPixi';\n\nimport type { Topology } from '../../shared/geometry/const';\nimport type { Geometry } from '../../shared/geometry/Geometry';\nimport type { State } from '../../shared/state/State';\nimport type { System } from '../../shared/system/System';\nimport type { GPU } from '../GpuDeviceSystem';\nimport type { GpuRenderTarget } from '../renderTarget/GpuRenderTarget';\nimport type { GpuProgram } from '../shader/GpuProgram';\nimport type { StencilState } from '../state/GpuStencilModesToPixi';\nimport type { WebGPURenderer } from '../WebGPURenderer';\n\nconst topologyStringToId = {\n 'point-list': 0,\n 'line-list': 1,\n 'line-strip': 2,\n 'triangle-list': 3,\n 'triangle-strip': 4,\n};\n\n// geometryLayouts = 256; // 8 bits // 256 states // value 0-255;\n// shaderKeys = 256; // 8 bits // 256 states // value 0-255;\n// state = 64; // 6 bits // 64 states // value 0-63;\n// blendMode = 32; // 5 bits // 32 states // value 0-31;\n// topology = 8; // 3 bits // 8 states // value 0-7;\nfunction getGraphicsStateKey(\n geometryLayout: number,\n shaderKey: number,\n state: number,\n blendMode: number,\n topology: number,\n): number\n{\n return (geometryLayout << 24) // Allocate the 8 bits for geometryLayouts at the top\n | (shaderKey << 16) // Next 8 bits for shaderKeys\n | (state << 10) // 6 bits for state\n | (blendMode << 5) // 5 bits for blendMode\n | topology; // And 3 bits for topology at the least significant position\n}\n\n// colorMask = 16;// 4 bits // 16 states // value 0-15;\n// stencilState = 8; // 3 bits // 8 states // value 0-7;\n// renderTarget = 1; // 2 bit // 3 states // value 0-3; // none, stencil, depth, depth-stencil\n// multiSampleCount = 1; // 1 bit // 2 states // value 0-1;\nfunction getGlobalStateKey(\n stencilStateId: number,\n multiSampleCount: number,\n colorMask: number,\n renderTarget: number,\n): number\n{\n return (colorMask << 6) // Allocate the 4 bits for colorMask at the top\n | (stencilStateId << 3) // Next 3 bits for stencilStateId\n | (renderTarget << 1) // 2 bits for renderTarget\n | multiSampleCount; // And 1 bit for multiSampleCount at the least significant position\n}\n\ntype PipeHash = Record;\n\n/**\n * A system that creates and manages the GPU pipelines.\n *\n * Caching Mechanism: At its core, the system employs a two-tiered caching strategy to minimize\n * the redundant creation of GPU pipelines (or \"pipes\"). This strategy is based on generating unique\n * keys that represent the state of the graphics settings and the specific requirements of the\n * item being rendered. By caching these pipelines, subsequent draw calls with identical configurations\n * can reuse existing pipelines instead of generating new ones.\n *\n * State Management: The system differentiates between \"global\" state properties (like color masks\n * and stencil masks, which do not change frequently) and properties that may vary between draw calls\n * (such as geometry, shaders, and blend modes). Unique keys are generated for both these categories\n * using getStateKey for global state and getGraphicsStateKey for draw-specific settings. These keys are\n * then then used to caching the pipe. The next time we need a pipe we can check\n * the cache by first looking at the state cache and then the pipe cache.\n * @memberof rendering\n */\nexport class PipelineSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGPUSystem],\n name: 'pipeline',\n } as const;\n private readonly _renderer: WebGPURenderer;\n\n protected CONTEXT_UID: number;\n\n private _moduleCache: Record = Object.create(null);\n private _bufferLayoutsCache: Record = Object.create(null);\n\n private _pipeCache: PipeHash = Object.create(null);\n private readonly _pipeStateCaches: Record = Object.create(null);\n\n private _gpu: GPU;\n private _stencilState: StencilState;\n\n private _stencilMode: STENCIL_MODES;\n private _colorMask = 0b1111;\n private _multisampleCount = 1;\n private _depthStencilAttachment: 0 | 1;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n this.setStencilMode(STENCIL_MODES.DISABLED);\n\n this._updatePipeHash();\n }\n\n public setMultisampleCount(multisampleCount: number): void\n {\n if (this._multisampleCount === multisampleCount) return;\n\n this._multisampleCount = multisampleCount;\n\n this._updatePipeHash();\n }\n\n public setRenderTarget(renderTarget: GpuRenderTarget)\n {\n this._multisampleCount = renderTarget.msaaSamples;\n this._depthStencilAttachment = renderTarget.descriptor.depthStencilAttachment ? 1 : 0;\n\n this._updatePipeHash();\n }\n\n public setColorMask(colorMask: number): void\n {\n if (this._colorMask === colorMask) return;\n\n this._colorMask = colorMask;\n\n this._updatePipeHash();\n }\n\n public setStencilMode(stencilMode: STENCIL_MODES): void\n {\n if (this._stencilMode === stencilMode) return;\n\n this._stencilMode = stencilMode;\n this._stencilState = GpuStencilModesToPixi[stencilMode];\n\n this._updatePipeHash();\n }\n\n public setPipeline(geometry: Geometry, program: GpuProgram, state: State, passEncoder: GPURenderPassEncoder): void\n {\n const pipeline = this.getPipeline(geometry, program, state);\n\n passEncoder.setPipeline(pipeline);\n }\n\n public getPipeline(\n geometry: Geometry,\n program: GpuProgram,\n state: State,\n topology?: Topology,\n ): GPURenderPipeline\n {\n if (!geometry._layoutKey)\n {\n ensureAttributes(geometry, program.attributeData);\n\n // prepare the geometry for the pipeline\n this._generateBufferKey(geometry);\n }\n\n topology = topology || geometry.topology;\n\n // now we have set the Ids - the key is different...\n // eslint-disable-next-line max-len\n const key = getGraphicsStateKey(\n geometry._layoutKey,\n program._layoutKey,\n state.data,\n state._blendModeId,\n topologyStringToId[topology],\n );\n\n if (this._pipeCache[key]) return this._pipeCache[key];\n\n this._pipeCache[key] = this._createPipeline(geometry, program, state, topology);\n\n return this._pipeCache[key];\n }\n\n private _createPipeline(geometry: Geometry, program: GpuProgram, state: State, topology: Topology): GPURenderPipeline\n {\n const device = this._gpu.device;\n\n const buffers = this._createVertexBufferLayouts(geometry);\n\n const blendModes = this._renderer.state.getColorTargets(state);\n\n blendModes[0].writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\n\n const layout = this._renderer.shader.getProgramData(program).pipeline;\n\n const descriptor: GPURenderPipelineDescriptor = {\n // TODO later check if its helpful to create..\n // layout,\n vertex: {\n module: this._getModule(program.vertex.source),\n entryPoint: program.vertex.entryPoint,\n // geometry..\n buffers,\n },\n fragment: {\n module: this._getModule(program.fragment.source),\n entryPoint: program.fragment.entryPoint,\n targets: blendModes,\n },\n primitive: {\n topology,\n cullMode: state.cullMode,\n },\n layout,\n multisample: {\n count: this._multisampleCount,\n },\n // depthStencil,\n label: `PIXI Pipeline`,\n };\n\n // only apply if the texture has stencil or depth\n if (this._depthStencilAttachment)\n {\n // mask states..\n descriptor.depthStencil = {\n ...this._stencilState,\n format: 'depth24plus-stencil8',\n depthWriteEnabled: state.depthTest,\n depthCompare: state.depthTest ? 'less' : 'always',\n };\n }\n\n const pipeline = device.createRenderPipeline(descriptor);\n\n return pipeline;\n }\n\n private _getModule(code: string): GPUShaderModule\n {\n return this._moduleCache[code] || this._createModule(code);\n }\n\n private _createModule(code: string): GPUShaderModule\n {\n const device = this._gpu.device;\n\n this._moduleCache[code] = device.createShaderModule({\n code,\n });\n\n return this._moduleCache[code];\n }\n\n private _generateBufferKey(geometry: Geometry): number\n {\n const keyGen = [];\n let index = 0;\n // generate a key..\n\n const attributeKeys = Object.keys(geometry.attributes).sort();\n\n for (let i = 0; i < attributeKeys.length; i++)\n {\n const attribute = geometry.attributes[attributeKeys[i]];\n\n keyGen[index++] = attribute.location;\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n }\n\n const stringKey = keyGen.join('');\n\n geometry._layoutKey = createIdFromString(stringKey, 'geometry');\n\n return geometry._layoutKey;\n }\n\n private _createVertexBufferLayouts(geometry: Geometry): GPUVertexBufferLayout[]\n {\n if (this._bufferLayoutsCache[geometry._layoutKey])\n {\n return this._bufferLayoutsCache[geometry._layoutKey];\n }\n\n const vertexBuffersLayout: GPUVertexBufferLayout[] = [];\n\n geometry.buffers.forEach((buffer) =>\n {\n const bufferEntry: GPUVertexBufferLayout = {\n arrayStride: 0,\n stepMode: 'vertex',\n attributes: [],\n };\n\n const bufferEntryAttributes = bufferEntry.attributes as GPUVertexAttribute[];\n\n for (const i in geometry.attributes)\n {\n const attribute = geometry.attributes[i];\n\n if (attribute.buffer === buffer)\n {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? 'instance' : 'vertex';\n\n bufferEntryAttributes.push({\n shaderLocation: attribute.location,\n offset: attribute.offset,\n format: attribute.format,\n });\n }\n }\n\n if (bufferEntryAttributes.length)\n {\n vertexBuffersLayout.push(bufferEntry);\n }\n });\n\n this._bufferLayoutsCache[geometry._layoutKey] = vertexBuffersLayout;\n\n return vertexBuffersLayout;\n }\n\n private _updatePipeHash(): void\n {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment\n );\n\n if (!this._pipeStateCaches[key])\n {\n this._pipeStateCaches[key] = Object.create(null);\n }\n\n this._pipeCache = this._pipeStateCaches[key];\n }\n\n public destroy(): void\n {\n (this._renderer as null) = null;\n this._bufferLayoutsCache = null;\n }\n}\n","import type { TextureSource } from '../../shared/texture/sources/TextureSource';\n\n/**\n * A class which holds the canvas contexts and textures for a render target.\n * @memberof rendering\n * @ignore\n */\nexport class GpuRenderTarget\n{\n public contexts: GPUCanvasContext[] = [];\n public msaaTextures: TextureSource[] = [];\n public msaa: boolean;\n public msaaSamples = 1;\n public width: number;\n public height: number;\n public descriptor: GPURenderPassDescriptor;\n}\n","import { CLEAR } from '../../gl/const';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource';\nimport { GpuRenderTarget } from './GpuRenderTarget';\n\nimport type { RgbaArray } from '../../../../color/Color';\nimport type { Rectangle } from '../../../../maths/shapes/Rectangle';\nimport type { CLEAR_OR_BOOL } from '../../gl/const';\nimport type { RenderTarget } from '../../shared/renderTarget/RenderTarget';\nimport type { RenderTargetAdaptor, RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem';\nimport type { Texture } from '../../shared/texture/Texture';\nimport type { WebGPURenderer } from '../WebGPURenderer';\n\n/**\n * The WebGPU adaptor for the render target system. Allows the Render Target System to\n * be used with the WebGPU renderer\n * @memberof rendering\n * @ignore\n */\nexport class GpuRenderTargetAdaptor implements RenderTargetAdaptor\n{\n private _renderTargetSystem: RenderTargetSystem;\n private _renderer: WebGPURenderer;\n\n public init(renderer: WebGPURenderer, renderTargetSystem: RenderTargetSystem): void\n {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n\n public copyToTexture(\n sourceRenderSurfaceTexture: RenderTarget,\n destinationTexture: Texture,\n originSrc: { x: number; y: number; },\n size: { width: number; height: number; },\n originDest: { x: number; y: number; },\n )\n {\n const renderer = this._renderer;\n\n const baseGpuTexture = this._getGpuColorTexture(\n sourceRenderSurfaceTexture\n );\n\n const backGpuTexture = renderer.texture.getGpuSource(\n destinationTexture.source\n );\n\n renderer.encoder.commandEncoder.copyTextureToTexture(\n {\n texture: baseGpuTexture,\n origin: originSrc,\n },\n {\n texture: backGpuTexture,\n origin: originDest,\n },\n size\n );\n\n return destinationTexture;\n }\n\n public startRenderPass(\n renderTarget: RenderTarget,\n clear: CLEAR_OR_BOOL = true,\n clearColor?: RgbaArray,\n viewport?: Rectangle\n )\n {\n const renderTargetSystem = this._renderTargetSystem;\n\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor);\n\n gpuRenderTarget.descriptor = descriptor;\n\n // TODO we should not finish a render pass each time we bind\n // for example filters - we would want to push / pop render targets\n this._renderer.pipeline.setRenderTarget(gpuRenderTarget);\n this._renderer.encoder.beginRenderPass(gpuRenderTarget);\n this._renderer.encoder.setViewport(viewport);\n }\n\n public finishRenderPass()\n {\n this._renderer.encoder.endRenderPass();\n }\n\n /**\n * returns the gpu texture for the first color texture in the render target\n * mainly used by the filter manager to get copy the texture for blending\n * @param renderTarget\n * @returns a gpu texture\n */\n private _getGpuColorTexture(renderTarget: RenderTarget): GPUTexture\n {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n if (gpuRenderTarget.contexts[0])\n {\n return gpuRenderTarget.contexts[0].getCurrentTexture();\n }\n\n return this._renderer.texture.getGpuSource(\n renderTarget.colorTextures[0].source\n );\n }\n\n public getDescriptor(\n renderTarget: RenderTarget,\n clear: CLEAR_OR_BOOL,\n clearValue: RgbaArray\n ): GPURenderPassDescriptor\n {\n if (typeof clear === 'boolean')\n {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n\n const renderTargetSystem = this._renderTargetSystem;\n\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n const colorAttachments = renderTarget.colorTextures.map(\n (texture, i) =>\n {\n const context = gpuRenderTarget.contexts[i];\n\n let view: GPUTextureView;\n let resolveTarget: GPUTextureView;\n\n if (context)\n {\n const currentTexture = context.getCurrentTexture();\n\n const canvasTextureView = currentTexture.createView();\n\n view = canvasTextureView;\n }\n else\n {\n view = this._renderer.texture.getGpuSource(texture).createView({\n mipLevelCount: 1,\n });\n }\n\n if (gpuRenderTarget.msaaTextures[i])\n {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n\n const loadOp = ((clear as CLEAR) & CLEAR.COLOR ? 'clear' : 'load') as GPULoadOp;\n\n clearValue ??= renderTargetSystem.defaultClearColor;\n\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: 'store',\n loadOp\n };\n }\n ) as GPURenderPassColorAttachment[];\n\n let depthStencilAttachment: GPURenderPassDepthStencilAttachment;\n\n // if we have a depth or stencil buffer, we need to ensure we have a texture for it\n // this is WebGPU specific - as WebGL does not require textures to run a depth / stencil buffer\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture)\n {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n\n if (renderTarget.depthStencilTexture)\n {\n const stencilLoadOp = (clear & CLEAR.STENCIL ? 'clear' : 'load') as GPULoadOp;\n const depthLoadOp = (clear & CLEAR.DEPTH ? 'clear' : 'load') as GPULoadOp;\n\n depthStencilAttachment = {\n view: this._renderer.texture\n .getGpuSource(renderTarget.depthStencilTexture.source)\n .createView(),\n stencilStoreOp: 'store',\n stencilLoadOp,\n depthClearValue: 1.0,\n depthLoadOp,\n depthStoreOp: 'store',\n };\n }\n\n const descriptor: GPURenderPassDescriptor = {\n colorAttachments,\n depthStencilAttachment,\n };\n\n return descriptor;\n }\n\n public clear(renderTarget: RenderTarget, clear: CLEAR_OR_BOOL = true, clearColor?: RgbaArray, viewport?: Rectangle)\n {\n if (!clear) return;\n\n const { gpu, encoder } = this._renderer;\n\n const device = gpu.device;\n\n const standAlone = encoder.commandEncoder === null;\n\n if (standAlone)\n {\n const commandEncoder = device.createCommandEncoder();\n const renderPassDescriptor = this.getDescriptor(renderTarget, clear, clearColor);\n\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n\n passEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n\n passEncoder.end();\n\n const gpuCommands = commandEncoder.finish();\n\n device.queue.submit([gpuCommands]);\n }\n else\n {\n this.startRenderPass(renderTarget, clear, clearColor, viewport);\n }\n }\n\n public initGpuRenderTarget(renderTarget: RenderTarget): GpuRenderTarget\n {\n // always false for WebGPU\n renderTarget.isRoot = true;\n\n const gpuRenderTarget = new GpuRenderTarget();\n\n // create a context...\n // is a canvas...\n renderTarget.colorTextures.forEach((colorTexture, i) =>\n {\n if (CanvasSource.test(colorTexture.resource))\n {\n const context = colorTexture.resource.getContext(\n 'webgpu'\n ) as unknown as GPUCanvasContext;\n\n const alphaMode = (colorTexture as CanvasSource).transparent ? 'premultiplied' : 'opaque';\n\n try\n {\n context.configure({\n device: this._renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.TEXTURE_BINDING\n | GPUTextureUsage.COPY_DST\n | GPUTextureUsage.RENDER_ATTACHMENT\n | GPUTextureUsage.COPY_SRC,\n format: 'bgra8unorm',\n alphaMode,\n });\n }\n catch (e)\n {\n console.error(e);\n }\n\n gpuRenderTarget.contexts[i] = context;\n }\n\n gpuRenderTarget.msaa = colorTexture.source.antialias;\n\n if (colorTexture.source.antialias)\n {\n const msaaTexture = new TextureSource({\n width: 0,\n height: 0,\n sampleCount: 4,\n });\n\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n\n if (gpuRenderTarget.msaa)\n {\n gpuRenderTarget.msaaSamples = 4;\n\n if (renderTarget.depthStencilTexture)\n {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n\n return gpuRenderTarget;\n }\n\n public destroyGpuRenderTarget(gpuRenderTarget: GpuRenderTarget)\n {\n gpuRenderTarget.contexts.forEach((context) =>\n {\n context.unconfigure();\n });\n\n gpuRenderTarget.msaaTextures.forEach((texture) =>\n {\n texture.destroy();\n });\n\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n\n public ensureDepthStencilTexture(renderTarget: RenderTarget)\n {\n // TODO This function will be more useful once we cache the descriptors\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa)\n {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n\n public resizeGpuRenderTarget(renderTarget: RenderTarget)\n {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n\n if (gpuRenderTarget.msaa)\n {\n renderTarget.colorTextures.forEach((colorTexture, i) =>\n {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor';\n\nimport type { WebGPURenderer } from '../WebGPURenderer';\nimport type { GpuRenderTarget } from './GpuRenderTarget';\n\n/**\n * The WebGL adaptor for the render target system. Allows the Render Target System to be used with the WebGl renderer\n * @memberof rendering\n */\nexport class GpuRenderTargetSystem extends RenderTargetSystem\n{\n /** @ignore */\n public static extension = {\n type: [ExtensionType.WebGPUSystem],\n name: 'renderTarget',\n } as const;\n\n public adaptor = new GpuRenderTargetAdaptor();\n\n constructor(renderer: WebGPURenderer)\n {\n super(renderer);\n\n this.adaptor.init(renderer, this);\n }\n}\n","import { ExtensionType } from '../../../../extensions/Extensions';\n\nimport type { System } from '../../shared/system/System';\nimport type { GPU } from '../GpuDeviceSystem';\nimport type { GpuProgram } from './GpuProgram';\n\nexport interface GPUProgramData\n{\n bindGroups: GPUBindGroupLayout[]\n pipeline: GPUPipelineLayout\n}\n\n/**\n * A system that manages the rendering of GpuPrograms.\n * @memberof rendering\n */\nexport class GpuShaderSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'shader',\n } as const;\n\n private _gpu: GPU;\n\n private readonly _gpuProgramData: Record = Object.create(null);\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n\n public getProgramData(program: GpuProgram)\n {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n\n private _createGPUProgramData(program: GpuProgram)\n {\n const device = this._gpu.device;\n\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc),\n };\n\n // generally we avoid having to make this automatically\n // keeping this for a reminder, if any issues popup\n // program._gpuLayout = {\n // bindGroups: null,\n // pipeline: 'auto',\n // };\n\n return this._gpuProgramData[program._layoutKey];\n }\n\n public destroy(): void\n {\n // TODO destroy the _gpuProgramData\n this._gpu = null;\n (this._gpuProgramData as null) = null;\n }\n}\n","import type { BLEND_MODES } from '../../shared/state/const';\n\nexport const GpuBlendModesToPixi: Partial> = {};\n\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'one',\n dstFactor: 'one',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'dst',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'zero',\n dstFactor: 'zero',\n operation: 'add',\n },\n};\n\n// not-premultiplied blend modes\nGpuBlendModesToPixi['normal-npm'] = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi['add-npm'] = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one',\n operation: 'add',\n },\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi['screen-npm'] = {\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src',\n operation: 'add',\n },\n};\n\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: 'zero',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add',\n },\n color: {\n srcFactor: 'zero',\n dstFactor: 'one-minus-src',\n operation: 'add',\n },\n};\n\n// composite operations\n// GpuBlendModesToPixi[BLEND_MODES.SRC_IN] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'dst-alpha',\n// dstFactor: 'zero',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.SRC_OUT] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'one-minus-dst-alpha',\n// dstFactor: 'zero',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.SRC_ATOP] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'dst-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.DST_OVER] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'one-minus-dst-alpha',\n// dstFactor: 'one',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.DST_IN] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'zero',\n// dstFactor: 'src-alpha',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.DST_OUT] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'zero',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.DST_ATOP] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'one-minus-dst-alpha',\n// dstFactor: 'src-alpha',\n// operation: 'add',\n// },\n// };\n\n// GpuBlendModesToPixi[BLEND_MODES.XOR] = {\n// alpha: {\n// srcFactor: 'src-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'one-minus-dst-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// };\n\n// TODO - fix me\n// GLBlendModesToPixi[BLEND_MODES.SUBTRACT] = {\n// alpha: {\n// srcFactor: 'one',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// color: {\n// srcFactor: 'one-minus-dst-alpha',\n// dstFactor: 'one-minus-src-alpha',\n// operation: 'add',\n// },\n// };\n","import { ExtensionType } from '../../../../extensions/Extensions';\nimport { State } from '../../shared/state/State';\nimport { GpuBlendModesToPixi } from './GpuBlendModesToPixi';\n\nimport type { BLEND_MODES } from '../../shared/state/const';\nimport type { System } from '../../shared/system/System';\nimport type { GPU } from '../GpuDeviceSystem';\n\n/**\n * System plugin to the renderer to manage WebGL state machines.\n * @memberof rendering\n */\nexport class GpuStateSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'state',\n } as const;\n /**\n * State ID\n * @readonly\n */\n public stateId: number;\n\n /**\n * Polygon offset\n * @readonly\n */\n public polygonOffset: number;\n\n /**\n * Blend mode\n * @default 'none'\n * @readonly\n */\n public blendMode: BLEND_MODES;\n\n /** Whether current blend equation is different */\n protected _blendEq: boolean;\n\n /**\n * GL context\n * @member {WebGLRenderingContext}\n * @readonly\n */\n protected gpu: GPU;\n\n /**\n * Default WebGL State\n * @readonly\n */\n protected defaultState: State;\n\n constructor()\n {\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n\n protected contextChange(gpu: GPU): void\n {\n this.gpu = gpu;\n }\n\n /**\n * Gets the blend mode data for the current state\n * @param state - The state to get the blend mode from\n */\n public getColorTargets(state: State): GPUColorTargetState[]\n {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n\n return [\n {\n format: 'bgra8unorm',\n writeMask: 0,\n blend,\n },\n ];\n }\n\n public destroy(): void\n {\n this.gpu = null;\n }\n}\n","import type { BufferImageSource } from '../../../shared/texture/sources/BufferSource';\nimport type { GPU } from '../../GpuDeviceSystem';\nimport type { GpuTextureUploader } from './GpuTextureUploader';\n\nexport const gpuUploadBufferImageResource = {\n\n type: 'image',\n\n upload(source: BufferImageSource, gpuTexture: GPUTexture, gpu: GPU)\n {\n const resource = source.resource;\n\n const total = (source.pixelWidth | 0) * (source.pixelHeight | 0);\n\n const bytesPerPixel = resource.byteLength / total;\n\n gpu.device.queue.writeTexture(\n { texture: gpuTexture },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelHeight * bytesPerPixel,\n },\n {\n width: source.pixelWidth,\n height: source.pixelHeight,\n depthOrArrayLayers: 1,\n }\n );\n }\n} as GpuTextureUploader;\n\n","import type { CompressedSource } from '../../../shared/texture/sources/CompressedSource';\nimport type { GPU } from '../../GpuDeviceSystem';\nimport type { GpuTextureUploader } from './GpuTextureUploader';\n\nexport const blockDataMap: Record = {\n 'bc1-rgba-unorm': { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n 'bc2-rgba-unorm': { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n 'bc3-rgba-unorm': { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n 'bc7-rgba-unorm': { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n 'etc1-rgb-unorm': { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n 'etc2-rgba8unorm': { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n 'astc-4x4-unorm': { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n};\n\nconst defaultBlockData = { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n\nexport const gpuUploadCompressedTextureResource = {\n\n type: 'compressed',\n\n upload(source: CompressedSource, gpuTexture: GPUTexture, gpu: GPU)\n {\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n\n const blockData = blockDataMap[source.format] || defaultBlockData;\n\n for (let i = 0; i < source.resource.length; i++)\n {\n const levelBuffer = source.resource[i];\n\n const bytesPerRow = Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockBytes;\n\n gpu.device.queue.writeTexture(\n {\n texture: gpuTexture,\n mipLevel: i\n },\n levelBuffer,\n {\n offset: 0,\n bytesPerRow,\n },\n {\n width: Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockWidth,\n height: Math.ceil(mipHeight / blockData.blockHeight) * blockData.blockHeight,\n depthOrArrayLayers: 1,\n }\n );\n\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n} as GpuTextureUploader;\n\n","import type { TextureSource } from '../../../shared/texture/sources/TextureSource';\nimport type { GPU } from '../../GpuDeviceSystem';\nimport type { GpuTextureUploader } from './GpuTextureUploader';\n\nexport const gpuUploadImageResource = {\n\n type: 'image',\n\n upload(source: TextureSource, gpuTexture: GPUTexture, gpu: GPU)\n {\n const resource = source.resource as ImageBitmap | HTMLCanvasElement | OffscreenCanvas;\n\n if (!resource) return;\n\n const width = Math.min(gpuTexture.width, source.resourceWidth || source.pixelWidth);\n const height = Math.min(gpuTexture.height, source.resourceHeight || source.pixelHeight);\n\n const premultipliedAlpha = source.alphaMode === 'premultiply-alpha-on-upload';\n\n gpu.device.queue.copyExternalImageToTexture(\n { source: resource },\n { texture: gpuTexture, premultipliedAlpha },\n {\n width,\n height,\n }\n );\n }\n} as GpuTextureUploader;\n\n","import { gpuUploadImageResource } from './gpuUploadImageSource';\n\nimport type { VideoSource } from '../../../shared/texture/sources/VideoSource';\nimport type { GPU } from '../../GpuDeviceSystem';\nimport type { GpuTextureUploader } from './GpuTextureUploader';\n\nexport const gpuUploadVideoResource = {\n\n type: 'video',\n\n upload(source: VideoSource, gpuTexture: GPUTexture, gpu: GPU)\n {\n gpuUploadImageResource.upload(source, gpuTexture, gpu);\n }\n} as GpuTextureUploader;\n\n","/**\n * A class which generates mipmaps for a GPUTexture.\n * Thanks to @toji for the original implementation\n * https://github.com/toji/web-texture-tool/blob/main/src/webgpu-mipmap-generator.js\n * @memberof rendering\n * @ignore\n */\nexport class GpuMipmapGenerator\n{\n public device: GPUDevice;\n public sampler: GPUSampler;\n public pipelines: Record;\n\n public mipmapShaderModule: any;\n\n constructor(device: GPUDevice)\n {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: 'linear' });\n // We'll need a new pipeline for every texture format used.\n this.pipelines = {};\n }\n\n private _getMipmapPipeline(format: GPUTextureFormat)\n {\n let pipeline = this.pipelines[format];\n\n if (!pipeline)\n {\n // Shader modules is shared between all pipelines, so only create once.\n if (!this.mipmapShaderModule)\n {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: /* wgsl */ `\n var pos : array, 3> = array, 3>(\n vec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4,\n @location(0) texCoord : vec2,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2(0.5, -0.5) + vec2(0.5);\n output.position = vec4(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2) -> @location(0) vec4 {\n return textureSample(img, imgSampler, texCoord);\n }\n `,\n });\n }\n\n pipeline = this.device.createRenderPipeline({\n layout: 'auto',\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: 'vertexMain',\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: 'fragmentMain',\n targets: [{ format }],\n }\n });\n\n this.pipelines[format] = pipeline;\n }\n\n return pipeline;\n }\n\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n public generateMipmap(texture: GPUTexture)\n {\n const pipeline = this._getMipmapPipeline(texture.format);\n\n if (texture.dimension === '3d' || texture.dimension === '1d')\n {\n throw new Error('Generating mipmaps for non-2d textures is currently unsupported!');\n }\n\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1; // Only valid for 2D textures.\n\n // If the texture was created with RENDER_ATTACHMENT usage we can render directly between mip levels.\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n\n if (!renderToSource)\n {\n // Otherwise we have to use a separate texture to render into. It can be one mip level smaller than the source\n // texture, since we already have the top level.\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount,\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1,\n };\n\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n\n const commandEncoder = this.device.createCommandEncoder({});\n // TODO: Consider making this static.\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer)\n {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: '2d',\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1,\n });\n\n let dstMipLevel = renderToSource ? 1 : 0;\n\n for (let i = 1; i < texture.mipLevelCount; ++i)\n {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: '2d',\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1,\n });\n\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: 'store',\n loadOp: 'clear',\n clearValue: { r: 0, g: 0, b: 0, a: 0 },\n }],\n });\n\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler,\n }, {\n binding: 1,\n resource: srcView,\n }],\n });\n\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n\n passEncoder.end();\n\n srcView = dstView;\n }\n }\n\n // If we didn't render to the source texture, finish by copying the mip results from the temporary mipmap texture\n // to the source.\n if (!renderToSource)\n {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount,\n };\n\n for (let i = 1; i < texture.mipLevelCount; ++i)\n {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1,\n }, {\n texture,\n mipLevel: i,\n }, mipLevelSize);\n\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n\n this.device.queue.submit([commandEncoder.finish()]);\n\n if (!renderToSource)\n {\n mipTexture.destroy();\n }\n\n return texture;\n }\n}\n","import { DOMAdapter } from '../../../../environment/adapter';\nimport { ExtensionType } from '../../../../extensions/Extensions';\nimport { CanvasPool } from '../../shared/texture/CanvasPool';\nimport { BindGroup } from '../shader/BindGroup';\nimport { gpuUploadBufferImageResource } from './uploaders/gpuUploadBufferImageResource';\nimport { blockDataMap, gpuUploadCompressedTextureResource } from './uploaders/gpuUploadCompressedTextureResource';\nimport { gpuUploadImageResource } from './uploaders/gpuUploadImageSource';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\nimport type { System } from '../../shared/system/System';\nimport type { CanvasGenerator, GetPixelsOutput } from '../../shared/texture/GenerateCanvas';\nimport type { TextureSource } from '../../shared/texture/sources/TextureSource';\nimport type { BindableTexture, Texture } from '../../shared/texture/Texture';\nimport type { TextureStyle } from '../../shared/texture/TextureStyle';\nimport type { GPU } from '../GpuDeviceSystem';\nimport type { WebGPURenderer } from '../WebGPURenderer';\nimport type { GpuTextureUploader } from './uploaders/GpuTextureUploader';\n\n/**\n * The system that handles textures for the GPU.\n * @memberof rendering\n */\nexport class GpuTextureSystem implements System, CanvasGenerator\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'texture',\n } as const;\n\n public readonly managedTextures: TextureSource[] = [];\n\n protected CONTEXT_UID: number;\n private _gpuSources: Record = Object.create(null);\n private _gpuSamplers: Record = Object.create(null);\n private _bindGroupHash: Record = Object.create(null);\n private _textureViewHash: Record = Object.create(null);\n\n private readonly _uploads: Record = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n\n private _gpu: GPU;\n private _mipmapGenerator?: GpuMipmapGenerator;\n\n private readonly _renderer: WebGPURenderer;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n }\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n\n public initSource(source: TextureSource): GPUTexture\n {\n if (source.autoGenerateMipmaps)\n {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n\n if (source.uploadMethodId !== 'compressed')\n {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n\n const textureDescriptor: GPUTextureDescriptor = {\n label: source.label,\n size: { width, height },\n format: source.format,\n sampleCount: source.sampleCount,\n mipLevelCount: source.mipLevelCount,\n dimension: source.dimension,\n usage\n };\n\n const gpuTexture = this._gpu.device.createTexture(textureDescriptor);\n\n this._gpuSources[source.uid] = gpuTexture;\n\n if (!this.managedTextures.includes(source))\n {\n source.on('update', this.onSourceUpdate, this);\n source.on('resize', this.onSourceResize, this);\n source.on('destroy', this.onSourceDestroy, this);\n source.on('unload', this.onSourceUnload, this);\n source.on('updateMipmaps', this.onUpdateMipmaps, this);\n\n this.managedTextures.push(source);\n }\n\n this.onSourceUpdate(source);\n\n return gpuTexture;\n }\n\n protected onSourceUpdate(source: TextureSource): void\n {\n const gpuTexture = this.getGpuSource(source);\n\n // destroyed!\n if (!gpuTexture) return;\n\n if (this._uploads[source.uploadMethodId])\n {\n this._uploads[source.uploadMethodId].upload(source, gpuTexture, this._gpu);\n }\n\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1)\n {\n this.onUpdateMipmaps(source);\n }\n }\n\n protected onSourceUnload(source: TextureSource): void\n {\n const gpuTexture = this._gpuSources[source.uid];\n\n if (gpuTexture)\n {\n this._gpuSources[source.uid] = null;\n\n gpuTexture.destroy();\n }\n }\n\n protected onUpdateMipmaps(source: TextureSource): void\n {\n if (!this._mipmapGenerator)\n {\n this._mipmapGenerator = new GpuMipmapGenerator(this._gpu.device);\n }\n\n const gpuTexture = this.getGpuSource(source);\n\n this._mipmapGenerator.generateMipmap(gpuTexture);\n }\n\n protected onSourceDestroy(source: TextureSource): void\n {\n source.off('update', this.onSourceUpdate, this);\n source.off('unload', this.onSourceUnload, this);\n source.off('destroy', this.onSourceDestroy, this);\n source.off('resize', this.onSourceResize, this);\n source.off('updateMipmaps', this.onUpdateMipmaps, this);\n\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n\n this.onSourceUnload(source);\n }\n\n protected onSourceResize(source: TextureSource): void\n {\n const gpuTexture = this._gpuSources[source.uid];\n\n if (!gpuTexture)\n {\n this.initSource(source);\n }\n else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight)\n {\n this._textureViewHash[source.uid] = null;\n this._bindGroupHash[source.uid] = null;\n\n this.onSourceUnload(source);\n this.initSource(source);\n }\n }\n\n private _initSampler(sampler: TextureStyle): GPUSampler\n {\n this._gpuSamplers[sampler._resourceId] = this._gpu.device.createSampler(sampler);\n\n return this._gpuSamplers[sampler._resourceId];\n }\n\n public getGpuSampler(sampler: TextureStyle): GPUSampler\n {\n return this._gpuSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n\n public getGpuSource(source: TextureSource): GPUTexture\n {\n return this._gpuSources[source.uid] || this.initSource(source);\n }\n\n public getTextureBindGroup(texture: Texture)\n {\n return this._bindGroupHash[texture.uid] ?? this._createTextureBindGroup(texture);\n }\n\n private _createTextureBindGroup(texture: BindableTexture)\n {\n const source = texture.source;\n\n const bindGroupId = source.uid;\n\n this._bindGroupHash[bindGroupId] = new BindGroup({\n 0: source,\n 1: source.style,\n });\n\n return this._bindGroupHash[bindGroupId];\n }\n\n public getTextureView(texture: BindableTexture)\n {\n const source = texture.source;\n\n return this._textureViewHash[source.uid] ?? this._createTextureView(source);\n }\n\n private _createTextureView(texture: TextureSource)\n {\n this._textureViewHash[texture.uid] = this.getGpuSource(texture).createView();\n\n return this._textureViewHash[texture.uid];\n }\n\n public generateCanvas(texture: Texture): ICanvas\n {\n const renderer = this._renderer;\n\n const commandEncoder = renderer.gpu.device.createCommandEncoder();\n\n // create canvas\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = texture.source.pixelWidth;\n canvas.height = texture.source.pixelHeight;\n\n const context = canvas.getContext('webgpu') as unknown as GPUCanvasContext;\n\n context.configure({\n device: renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: navigator.gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n\n commandEncoder.copyTextureToTexture({\n texture: renderer.texture.getGpuSource(texture.source),\n origin: {\n x: 0,\n y: 0,\n },\n }, {\n texture: context.getCurrentTexture(),\n }, {\n width: canvas.width,\n height: canvas.height,\n });\n\n renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n\n return canvas;\n }\n\n public getPixels(texture: Texture): GetPixelsOutput\n {\n const webGPUCanvas = this.generateCanvas(texture);\n\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(webGPUCanvas.width, webGPUCanvas.height);\n\n const context = canvasAndContext.context;\n\n context.drawImage(webGPUCanvas, 0, 0);\n\n const { width, height } = webGPUCanvas;\n\n const imageData = context.getImageData(0, 0, width, height);\n\n const pixels = new Uint8ClampedArray(imageData.data.buffer);\n\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n\n return { pixels, width, height };\n }\n\n public destroy(): void\n {\n // we copy the array as the aarry with a slice as onSourceDestroy\n // will remove the source from the real managedTextures array\n this.managedTextures\n .slice()\n .forEach((source) => this.onSourceDestroy(source));\n\n (this.managedTextures as null) = null;\n\n for (const k of Object.keys(this._bindGroupHash))\n {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n\n bindGroup?.destroy();\n this._bindGroupHash[key] = null;\n }\n\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSources = null;\n this._bindGroupHash = null;\n this._textureViewHash = null;\n this._gpuSamplers = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\n\nimport type { Batch } from '../../../rendering/batcher/shared/Batcher';\nimport type { GpuEncoderSystem } from '../../../rendering/renderers/gpu/GpuEncoderSystem';\nimport type { WebGPURenderer } from '../../../rendering/renderers/gpu/WebGPURenderer';\nimport type { Graphics } from '../shared/Graphics';\nimport type { GraphicsAdaptor, GraphicsPipe } from '../shared/GraphicsPipe';\n\n/**\n * A GraphicsAdaptor that uses the GPU to render graphics.\n * @memberof rendering\n * @ignore\n */\nexport class GpuGraphicsAdaptor implements GraphicsAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor,\n ],\n name: 'graphics',\n } as const;\n\n public shader: Shader;\n\n public init()\n {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: 'mat3x3' },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: 'vec4' },\n uRound: { value: 0, type: 'f32' },\n });\n\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'graphics',\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms,\n },\n });\n }\n\n public execute(graphicsPipe: GraphicsPipe, renderable: Graphics): void\n {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer as WebGPURenderer;\n const contextSystem = renderer.graphicsContext;\n\n const {\n geometry, instructions\n } = contextSystem.getContextRenderData(context);\n\n // WebGPU specific...\n\n // TODO perf test this a bit...\n const encoder = renderer.encoder as GpuEncoderSystem;\n\n encoder.setPipelineFromGeometryProgramAndState(\n geometry,\n shader.gpuProgram,\n graphicsPipe.state\n );\n\n encoder.setGeometry(geometry);\n\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n\n const localBindGroup = (renderer as WebGPURenderer)\n .renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n\n const batches = instructions.instructions as Batch[];\n\n for (let i = 0; i < instructions.instructionSize; i++)\n {\n const batch = batches[i];\n\n shader.groups[1] = batch.bindGroup;\n\n if (!batch.gpuBindGroup)\n {\n const textureBatch = batch.textures;\n\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup, shader.gpuProgram, 1\n );\n }\n\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n\n public destroy(): void\n {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n","import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { WebGPURenderer } from '../../../rendering/renderers/gpu/WebGPURenderer';\nimport type { Mesh } from '../shared/Mesh';\nimport type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';\n\n/**\n * The WebGL adaptor for the mesh system. Allows the Mesh System to be used with the WebGl renderer\n * @memberof rendering\n * @ignore\n */\nexport class GpuMeshAdapter implements MeshAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor,\n ],\n name: 'mesh',\n } as const;\n\n private _shader: Shader;\n\n public init(): void\n {\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'mesh',\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit,\n ]\n });\n\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: 'mat3x3', value: new Matrix() },\n }\n }\n });\n }\n\n public execute(meshPipe: MeshPipe, mesh: Mesh)\n {\n const renderer = meshPipe.renderer;\n\n let shader: Shader = mesh._shader;\n\n if (!shader)\n {\n shader = this._shader;\n\n shader.resources.uTexture = mesh.texture.source;\n shader.resources.uSampler = mesh.texture.source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = mesh.texture.textureMatrix.mapCoord;\n }\n else if (!shader.gpuProgram)\n {\n // #if _DEBUG\n warn('Mesh shader has no gpuProgram', mesh.shader);\n // #endif\n\n return;\n }\n\n const gpuProgram = shader.gpuProgram;\n // GPU..\n\n if (gpuProgram.autoAssignGlobalUniforms)\n {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n\n if (gpuProgram.autoAssignLocalUniforms)\n {\n const localUniforms = meshPipe.localUniforms;\n\n shader.groups[1] = (renderer as WebGPURenderer)\n .renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n","import { extensions, ExtensionType } from '../../../extensions/Extensions';\nimport { GpuGraphicsAdaptor } from '../../../scene/graphics/gpu/GpuGraphicsAdaptor';\nimport { GpuMeshAdapter } from '../../../scene/mesh/gpu/GpuMeshAdapter';\nimport { GpuBatchAdaptor } from '../../batcher/gpu/GpuBatchAdaptor';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer';\nimport { SharedRenderPipes, SharedSystems } from '../shared/system/SharedSystems';\nimport { RendererType } from '../types';\nimport { BindGroupSystem } from './BindGroupSystem';\nimport { GpuBufferSystem } from './buffer/GpuBufferSystem';\nimport { GpuColorMaskSystem } from './GpuColorMaskSystem';\nimport { type GPU, GpuDeviceSystem } from './GpuDeviceSystem';\nimport { GpuEncoderSystem } from './GpuEncoderSystem';\nimport { GpuStencilSystem } from './GpuStencilSystem';\nimport { GpuUboSystem } from './GpuUboSystem';\nimport { GpuUniformBatchPipe } from './GpuUniformBatchPipe';\nimport { PipelineSystem } from './pipeline/PipelineSystem';\nimport { GpuRenderTargetSystem } from './renderTarget/GpuRenderTargetSystem';\nimport { GpuShaderSystem } from './shader/GpuShaderSystem';\nimport { GpuStateSystem } from './state/GpuStateSystem';\nimport { GpuTextureSystem } from './texture/GpuTextureSystem';\n\nimport type { ICanvas } from '../../../environment/canvas/ICanvas';\nimport type { PipeConstructor } from '../shared/instructions/RenderPipe';\nimport type { SharedRendererOptions } from '../shared/system/SharedSystems';\nimport type { SystemConstructor } from '../shared/system/System';\nimport type { ExtractRendererOptions, ExtractSystemTypes } from '../shared/system/utils/typeUtils';\n\nconst DefaultWebGPUSystems = [\n ...SharedSystems,\n GpuUboSystem,\n GpuEncoderSystem,\n GpuDeviceSystem,\n GpuBufferSystem,\n GpuTextureSystem,\n GpuRenderTargetSystem,\n GpuShaderSystem,\n GpuStateSystem,\n PipelineSystem,\n GpuColorMaskSystem,\n GpuStencilSystem,\n BindGroupSystem,\n];\nconst DefaultWebGPUPipes = [...SharedRenderPipes, GpuUniformBatchPipe];\nconst DefaultWebGPUAdapters = [GpuBatchAdaptor, GpuMeshAdapter, GpuGraphicsAdaptor];\n\n// installed systems will bbe added to this array by the extensions manager..\nconst systems: { name: string; value: SystemConstructor }[] = [];\nconst renderPipes: { name: string; value: PipeConstructor }[] = [];\nconst renderPipeAdaptors: { name: string; value: any }[] = [];\n\nextensions.handleByNamedList(ExtensionType.WebGPUSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGPUPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor, renderPipeAdaptors);\n\n// add all the default systems as well as any user defined ones from the extensions\nextensions.add(...DefaultWebGPUSystems, ...DefaultWebGPUPipes, ...DefaultWebGPUAdapters);\n\ntype WebGPUSystems = ExtractSystemTypes &\nPixiMixins.RendererSystems &\nPixiMixins.WebGPUSystems;\n\nexport type WebGPUPipes = ExtractSystemTypes &\nPixiMixins.RendererPipes &\nPixiMixins.WebGPUPipes;\n\n/**\n * Options for WebGPURenderer.\n * @memberof rendering\n */\nexport interface WebGPUOptions extends\n SharedRendererOptions,\n ExtractRendererOptions,\n PixiMixins.WebGPUOptions{}\n\nexport interface WebGPURenderer\n extends AbstractRenderer,\n WebGPUSystems {}\n\n/* eslint-disable max-len */\n/**\n * The WebGPU PixiJS Renderer. This renderer allows you to use the next-generation graphics API, WebGPU.\n * ```ts\n * // Create a new renderer\n * const renderer = new WebGPURenderer();\n * await renderer.init();\n *\n * // Add the renderer to the stage\n * document.body.appendChild(renderer.canvas);\n *\n * // Create a new stage\n * const stage = new Container();\n *\n * // Render the stage\n * renderer.render(stage);\n * ```\n *\n * You can use {@link rendering.autoDetectRenderer} to create a renderer that will automatically detect the best\n * renderer for the environment.\n * ```ts\n * // Create a new renderer\n * const renderer = await rendering.autoDetectRenderer();\n * ```\n *\n * The renderer is composed of systems that manage specific tasks. The following systems are added by default\n * whenever you create a WebGPU renderer:\n *\n * | WebGPU Core Systems | Systems that are specific to the WebGL renderer |\n * | ---------------------------------------- | ----------------------------------------------------------------------------- |\n * | {@link rendering.GpuUboSystem} | This manages WebGPU uniform buffer objects feature for shaders |\n * | {@link rendering.GpuEncoderSystem} | This manages the WebGPU command encoder |\n * | {@link rendering.GpuDeviceSystem} | This manages the WebGPU Device and its extensions |\n * | {@link rendering.GpuBufferSystem} | This manages buffers and their GPU resources, keeps everything in sync |\n * | {@link rendering.GpuTextureSystem} | This manages textures and their GPU resources, keeps everything in sync |\n * | {@link rendering.GpuRenderTargetSystem} | This manages what we render too. For example the screen, or another texture |\n * | {@link rendering.GpuShaderSystem} | This manages shaders, programs that run on the GPU to output lovely pixels |\n * | {@link rendering.GpuStateSystem} | This manages the state of the WebGPU Pipelines. eg the various flags that can be set blend modes / depthTesting etc |\n * | {@link rendering.PipelineSystem} | This manages the WebGPU pipelines, used for rendering |\n * | {@link rendering.GpuColorMaskSystem} | This manages the color mask. Used for color masking |\n * | {@link rendering.GpuStencilSystem} | This manages the stencil buffer. Used primarily for masking |\n * | {@link rendering.BindGroupSystem} | This manages the WebGPU bind groups. this is how data is bound to a shader when rendering |\n *\n * The breadth of the API surface provided by the renderer is contained within these systems.\n * @memberof rendering\n * @property {rendering.GpuUboSystem} ubo - UboSystem instance.\n * @property {rendering.GpuEncoderSystem} encoder - EncoderSystem instance.\n * @property {rendering.GpuDeviceSystem} device - DeviceSystem instance.\n * @property {rendering.GpuBufferSystem} buffer - BufferSystem instance.\n * @property {rendering.GpuTextureSystem} texture - TextureSystem instance.\n * @property {rendering.GpuRenderTargetSystem} renderTarget - RenderTargetSystem instance.\n * @property {rendering.GpuShaderSystem} shader - ShaderSystem instance.\n * @property {rendering.GpuStateSystem} state - StateSystem instance.\n * @property {rendering.PipelineSystem} pipeline - PipelineSystem instance.\n * @property {rendering.GpuColorMaskSystem} colorMask - ColorMaskSystem instance.\n * @property {rendering.GpuStencilSystem} stencil - StencilSystem instance.\n * @property {rendering.BindGroupSystem} bindGroup - BindGroupSystem instance.\n * @extends rendering.AbstractRenderer\n */\nexport class WebGPURenderer\n extends AbstractRenderer\n implements WebGPUSystems\n{\n /** The WebGPU Device. */\n public gpu: GPU;\n\n constructor()\n {\n const systemConfig = {\n name: 'webgpu',\n type: RendererType.WEBGPU,\n systems,\n renderPipes,\n renderPipeAdaptors,\n };\n\n super(systemConfig);\n }\n}\n","import { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\n\n/**\n * The different topology types supported by the renderer used to describe how the geometry should be renderer\n * @memberof rendering\n */\nexport type Topology =\n 'point-list'\n | 'line-list'\n | 'line-strip'\n | 'triangle-list'\n | 'triangle-strip';\n\nconst DEPRECATED_DRAW_MODES = {\n POINTS: 'point-list',\n LINES: 'line-list',\n LINE_STRIP: 'line-strip',\n TRIANGLES: 'triangle-list',\n TRIANGLE_STRIP: 'triangle-strip',\n};\n\n/** @deprecated since 8.0.0 */\nexport const DRAW_MODES = new Proxy(DEPRECATED_DRAW_MODES, {\n get(target, prop: keyof typeof DEPRECATED_DRAW_MODES)\n {\n // #if _DEBUG\n deprecation(v8_0_0, `DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_DRAW_MODES[prop]}' instead`);\n // #endif\n\n return target[prop];\n },\n});\n\n/**\n * The different types of vertex formats supported by the renderer\n * @memberof rendering\n */\nexport type VertexFormat =\n | 'uint8x2'\n | 'uint8x4'\n | 'sint8x2'\n | 'sint8x4'\n | 'unorm8x2'\n | 'unorm8x4'\n | 'snorm8x2'\n | 'snorm8x4'\n | 'uint16x2'\n | 'uint16x4'\n | 'sint16x2'\n | 'sint16x4'\n | 'unorm16x2'\n | 'unorm16x4'\n | 'snorm16x2'\n | 'snorm16x4'\n | 'float16x2'\n | 'float16x4'\n | 'float32'\n | 'float32x2'\n | 'float32x3'\n | 'float32x4'\n | 'uint32'\n | 'uint32x2'\n | 'uint32x3'\n | 'uint32x4'\n | 'sint32'\n | 'sint32x2'\n | 'sint32x3'\n | 'sint32x4';\n\n","import { Rectangle } from '../../../../maths/shapes/Rectangle';\n\nimport type { TextureSource } from '../texture/sources/TextureSource';\n\nconst fullFrame = new Rectangle(0, 0, 1, 1);\n\n/**\n * Takes a Texture source and a normalised frame\n * and returns a viewport for that frame.\n * @param viewport - The viewport rectangle to set.\n * @param source - The source to get the pixel width and height from.\n * @param frame - The frame to get the viewport from.\n * @returns the passed in viewport.\n */\nexport function viewportFromFrame(\n viewport: Rectangle,\n source: TextureSource,\n frame?: Rectangle\n)\n{\n frame ||= fullFrame;\n\n const pixelWidth = source.pixelWidth;\n const pixelHeight = source.pixelHeight;\n\n viewport.x = (frame.x * pixelWidth) | 0;\n viewport.y = (frame.y * pixelHeight) | 0;\n viewport.width = (frame.width * pixelWidth) | 0;\n viewport.height = (frame.height * pixelHeight) | 0;\n\n return viewport;\n}\n","/* eslint-disable @typescript-eslint/indent */\n\nimport { deprecation, v8_0_0 } from '../../../../utils/logging/deprecation';\n\n/**\n * Specifies the alpha composition mode for textures.\n *\n * - `no-premultiply-alpha`: Does not premultiply alpha.\n * - `premultiply-alpha-on-upload`: Premultiplies alpha on texture upload.\n * - `premultiplied-alpha`: Assumes the texture is already in premultiplied alpha format.\n * @typedef {'no-premultiply-alpha' | 'premultiply-alpha-on-upload' | 'premultiplied-alpha'} ALPHA_MODES\n */\nexport type ALPHA_MODES =\n 'no-premultiply-alpha' |\n 'premultiply-alpha-on-upload' |\n 'premultiplied-alpha';\n\n/**\n * Constants for multi-sampling antialiasing.\n * @see Framebuffer#multisample\n * @name MSAA_QUALITY\n * @static\n * @enum {number}\n * @property {number} NONE - No multisampling for this renderTexture\n * @property {number} LOW - Try 2 samples\n * @property {number} MEDIUM - Try 4 samples\n * @property {number} HIGH - Try 8 samples\n */\nexport enum MSAA_QUALITY\n // eslint-disable-next-line @typescript-eslint/indent\n{\n NONE = 0,\n LOW = 2,\n MEDIUM = 4,\n HIGH = 8\n}\n\nexport type TEXTURE_FORMATS =\n // eslint-disable-next-line @typescript-eslint/indent\n\n // 8-bit formats\n 'r8unorm' |\n 'r8snorm' |\n 'r8uint' |\n 'r8sint' |\n\n // 16-bit formats\n 'r16uint' |\n 'r16sint' |\n 'r16float' |\n 'rg8unorm' |\n 'rg8snorm' |\n 'rg8uint' |\n 'rg8sint' |\n\n // 32-bit formats\n 'r32uint' |\n 'r32sint' |\n 'r32float' |\n 'rg16uint' |\n 'rg16sint' |\n 'rg16float' |\n 'rgba8unorm' |\n 'rgba8unorm-srgb' |\n 'rgba8snorm' |\n 'rgba8uint' |\n 'rgba8sint' |\n 'bgra8unorm' |\n 'bgra8unorm-srgb' |\n // Packed 32-bit formats\n 'rgb9e5ufloat' |\n 'rgb10a2unorm' |\n 'rg11b10ufloat' |\n\n // 64-bit formats\n 'rg32uint' |\n 'rg32sint' |\n 'rg32float' |\n 'rgba16uint' |\n 'rgba16sint' |\n 'rgba16float' |\n\n // 128-bit formats\n 'rgba32uint' |\n 'rgba32sint' |\n 'rgba32float' |\n\n // Depth/stencil formats\n 'stencil8' |\n 'depth16unorm' |\n 'depth24plus' |\n 'depth24plus-stencil8' |\n 'depth32float' |\n\n // \"depth32float-stencil8\" feature\n 'depth32float-stencil8' |\n\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'bc1-rgba-unorm' |\n 'bc1-rgba-unorm-srgb' |\n 'bc2-rgba-unorm' |\n 'bc2-rgba-unorm-srgb' |\n 'bc3-rgba-unorm' |\n 'bc3-rgba-unorm-srgb' |\n 'bc4-r-unorm' |\n 'bc4-r-snorm' |\n 'bc5-rg-unorm' |\n 'bc5-rg-snorm' |\n 'bc6h-rgb-ufloat' |\n 'bc6h-rgb-float' |\n 'bc7-rgba-unorm' |\n 'bc7-rgba-unorm-srgb' |\n\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'etc2-rgb8unorm' |\n 'etc2-rgb8unorm-srgb' |\n 'etc2-rgb8a1unorm' |\n 'etc2-rgb8a1unorm-srgb' |\n 'etc2-rgba8unorm' |\n 'etc2-rgba8unorm-srgb' |\n 'eac-r11unorm' |\n 'eac-r11snorm' |\n 'eac-rg11unorm' |\n 'eac-rg11snorm' |\n\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n 'astc-4x4-unorm' |\n 'astc-4x4-unorm-srgb' |\n 'astc-5x4-unorm' |\n 'astc-5x4-unorm-srgb' |\n 'astc-5x5-unorm' |\n 'astc-5x5-unorm-srgb' |\n 'astc-6x5-unorm' |\n 'astc-6x5-unorm-srgb' |\n 'astc-6x6-unorm' |\n 'astc-6x6-unorm-srgb' |\n 'astc-8x5-unorm' |\n 'astc-8x5-unorm-srgb' |\n 'astc-8x6-unorm' |\n 'astc-8x6-unorm-srgb' |\n 'astc-8x8-unorm' |\n 'astc-8x8-unorm-srgb' |\n 'astc-10x5-unorm' |\n 'astc-10x5-unorm-srgb' |\n 'astc-10x6-unorm' |\n 'astc-10x6-unorm-srgb' |\n 'astc-10x8-unorm' |\n 'astc-10x8-unorm-srgb' |\n 'astc-10x10-unorm' |\n 'astc-10x10-unorm-srgb' |\n 'astc-12x10-unorm' |\n 'astc-12x10-unorm-srgb' |\n 'astc-12x12-unorm' |\n 'astc-12x12-unorm-srgb';\n\nexport type TEXTURE_VIEW_DIMENSIONS =\n '1d' |\n '2d' |\n '2d-array' |\n 'cube' |\n 'cube-array' |\n '3d';\n\nexport type TEXTURE_DIMENSIONS =\n | '1d'\n | '2d'\n | '3d';\n\nexport type WRAP_MODE =\n /**\n * The texture uvs are clamped\n * @default 33071\n */\n | 'clamp-to-edge'\n /**\n * The texture uvs tile and repeat\n * @default 10497\n */\n | 'repeat'\n /**\n * The texture uvs tile and repeat with mirroring\n * @default 33648\n */\n | 'mirror-repeat';\n\nexport enum DEPRECATED_WRAP_MODES\n{\n CLAMP = 'clamp-to-edge',\n\n REPEAT = 'repeat',\n\n MIRRORED_REPEAT = 'mirror-repeat',\n}\n\n/** @deprecated since 8.0.0 */\nexport const WRAP_MODES = new Proxy(DEPRECATED_WRAP_MODES, {\n get(target, prop: keyof typeof DEPRECATED_WRAP_MODES)\n {\n // #if _DEBUG\n deprecation(v8_0_0, `DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_WRAP_MODES[prop]}' instead`);\n // #endif\n\n return target[prop];\n },\n});\n\n/**\n * The scale modes that are supported by pixi.\n *\n * The {@link settings.SCALE_MODE} scale mode affects the default scaling mode of future operations.\n * It can be re-assigned to either LINEAR or NEAREST, depending upon suitability.\n * @static\n */\nexport type SCALE_MODE =\n /** Pixelating scaling */\n | 'nearest'\n /** Smooth scaling */\n | 'linear';\n\nexport enum DEPRECATED_SCALE_MODES\n{\n NEAREST = 'nearest',\n LINEAR = 'linear',\n}\n\n/**\n * @deprecated since 8.0.0\n */\nexport const SCALE_MODES = new Proxy(DEPRECATED_SCALE_MODES, {\n get(target, prop: keyof typeof DEPRECATED_SCALE_MODES)\n {\n // #if _DEBUG\n deprecation(v8_0_0, `DRAW_MODES.${prop} is deprecated, use '${DEPRECATED_SCALE_MODES[prop]}' instead`);\n // #endif\n\n return target[prop];\n },\n});\n\nexport type COMPARE_FUNCTION =\n | 'never'\n | 'less'\n | 'equal'\n | 'less-equal'\n | 'greater'\n | 'not-equal'\n | 'greater-equal'\n | 'always';\n","import { groupD8 } from '../../../../maths/matrix/groupD8';\n\nimport type { Size } from '../../../../maths/misc/Size';\nimport type { Rectangle } from '../../../../maths/shapes/Rectangle';\n\n/**\n * Stores a texture's frame in UV coordinates, in\n * which everything lies in the rectangle `[(0,0), (1,0),\n * (1,1), (0,1)]`.\n *\n * | Corner | Coordinates |\n * |--------------|-------------|\n * | Top-Left | `(x0,y0)` |\n * | Top-Right | `(x1,y1)` |\n * | Bottom-Right | `(x2,y2)` |\n * | Bottom-Left | `(x3,y3)` |\n * @protected\n * @memberof rendering\n */\nexport class TextureUvs\n{\n /** X-component of top-left corner `(x0,y0)`. */\n public x0: number;\n\n /** Y-component of top-left corner `(x0,y0)`. */\n public y0: number;\n\n /** X-component of top-right corner `(x1,y1)`. */\n public x1: number;\n\n /** Y-component of top-right corner `(x1,y1)`. */\n public y1: number;\n\n /** X-component of bottom-right corner `(x2,y2)`. */\n public x2: number;\n\n /** Y-component of bottom-right corner `(x2,y2)`. */\n public y2: number;\n\n /** X-component of bottom-left corner `(x3,y3)`. */\n public x3: number;\n\n /** Y-component of bottom-right corner `(x3,y3)`. */\n public y3: number;\n public uvsFloat32: Float32Array;\n\n constructor()\n {\n this.x0 = 0;\n this.y0 = 0;\n this.x1 = 1;\n this.y1 = 0;\n this.x2 = 1;\n this.y2 = 1;\n this.x3 = 0;\n this.y3 = 1;\n\n this.uvsFloat32 = new Float32Array(8);\n }\n\n /**\n * Sets the texture Uvs based on the given frame information.\n * @protected\n * @param frame - The frame of the texture\n * @param baseFrame - The base frame of the texture\n * @param rotate - Rotation of frame, see {@link groupD8}\n */\n public set(frame: Rectangle, baseFrame: Size, rotate: number): void\n {\n const tw = baseFrame.width;\n const th = baseFrame.height;\n\n if (rotate)\n {\n // width and height div 2 div baseFrame size\n const w2 = frame.width / 2 / tw;\n const h2 = frame.height / 2 / th;\n\n // coordinates of center\n const cX = (frame.x / tw) + w2;\n const cY = (frame.y / th) + h2;\n\n rotate = groupD8.add(rotate, groupD8.NW); // NW is top-left corner\n this.x0 = cX + (w2 * groupD8.uX(rotate));\n this.y0 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2); // rotate 90 degrees clockwise\n this.x1 = cX + (w2 * groupD8.uX(rotate));\n this.y1 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2);\n this.x2 = cX + (w2 * groupD8.uX(rotate));\n this.y2 = cY + (h2 * groupD8.uY(rotate));\n\n rotate = groupD8.add(rotate, 2);\n this.x3 = cX + (w2 * groupD8.uX(rotate));\n this.y3 = cY + (h2 * groupD8.uY(rotate));\n }\n else\n {\n this.x0 = frame.x / tw;\n this.y0 = frame.y / th;\n\n this.x1 = (frame.x + frame.width) / tw;\n this.y1 = frame.y / th;\n\n this.x2 = (frame.x + frame.width) / tw;\n this.y2 = (frame.y + frame.height) / th;\n\n this.x3 = frame.x / tw;\n this.y3 = (frame.y + frame.height) / th;\n }\n\n this.uvsFloat32[0] = this.x0;\n this.uvsFloat32[1] = this.y0;\n this.uvsFloat32[2] = this.x1;\n this.uvsFloat32[3] = this.y1;\n this.uvsFloat32[4] = this.x2;\n this.uvsFloat32[5] = this.y2;\n this.uvsFloat32[6] = this.x3;\n this.uvsFloat32[7] = this.y3;\n }\n\n // #if _DEBUG\n public toString(): string\n {\n return `[pixi.js/core:TextureUvs `\n + `x0=${this.x0} y0=${this.y0} `\n + `x1=${this.x1} y1=${this.y1} x2=${this.x2} `\n + `y2=${this.y2} x3=${this.x3} y3=${this.y3}`\n + `]`;\n }\n // #endif\n}\n","let uidCount = 0;\n\nexport function generateUID(): number\n{\n return uidCount++;\n}\n","export function parseFunctionBody(fn: (...args: any[]) => any): string\n{\n const fnStr = fn.toString();\n const bodyStart = fnStr.indexOf('{');\n const bodyEnd = fnStr.lastIndexOf('}');\n\n if (bodyStart === -1 || bodyEnd === -1)\n {\n throw new Error('getFunctionBody: No body found in function definition');\n }\n\n return fnStr.slice(bodyStart + 1, bodyEnd).trim();\n}\n","import { Bounds, type BoundsData } from './bounds/Bounds';\nimport { Container } from './Container';\n\nimport type { Point } from '../../maths/point/Point';\nimport type { Instruction } from '../../rendering/renderers/shared/instructions/Instruction';\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { Renderer } from '../../rendering/renderers/types';\nimport type { ContainerOptions } from './Container';\n\ntype RenderFunction = (renderer: Renderer) => void;\n\n/**\n * Options for the {@link scene.RenderContainer} constructor.\n * @memberof scene\n */\nexport interface RenderContainerOptions extends ContainerOptions\n{\n /** the optional custom render function if you want to inject the function via the constructor */\n render?: RenderFunction;\n /** how to know if the custom render logic contains a point or not, used for interaction */\n containsPoint?: (point: Point) => boolean;\n /** how to add the bounds of this object when measuring */\n addBounds?: (bounds: BoundsData) => void;\n}\n\n/**\n * A container that allows for custom rendering logic. Its essentially calls the render function each frame\n * and allows for custom rendering logic - the render could be a WebGL renderer or WebGPU render or even a canvas render.\n * Its up to you to define the logic.\n *\n * This can be used in two ways, either by extending the class and overriding the render method,\n * or by passing a custom render function\n * @example\n * ```js\n * import { RenderContainer } from 'pixi.js';\n *\n * // extend the class\n * class MyRenderContainer extends RenderContainer\n * {\n * render(renderer)\n * {\n * renderer.clear({\n * clearColor: 'green', // clear the screen to green when rendering this item\n * });\n * }\n * }\n *\n * // override the render method\n * const renderContainer = new RenderContainer(\n * (renderer) => {\n * renderer.clear({\n * clearColor: 'green', // clear the screen to green when rendering this item\n * });\n * })\n * ```\n * @memberof scene\n * @extends scene.Container\n */\nexport class RenderContainer extends Container implements View, Instruction\n{\n public batched = false;\n /**\n * Whether or not to round the x/y position of the sprite.\n * @type {boolean}\n */\n public roundPixels: boolean;\n public _roundPixels: 0 | 1;\n\n /**\n * The local bounds of the sprite.\n * @type {rendering.Bounds}\n */\n public bounds = new Bounds();\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint: (point: Point) => boolean;\n /**\n * Adds the bounds of this text to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds: (bounds: Bounds) => void;\n\n public canBundle = false;\n public renderPipeId = 'customRender';\n\n /**\n * @param options - The options for the container.\n */\n constructor(options: RenderContainerOptions | RenderFunction)\n {\n if (typeof options === 'function')\n {\n options = { render: options };\n }\n\n const { render, ...rest } = options;\n\n super({\n label: 'RenderContainer',\n ...rest,\n });\n\n if (render) this.render = render;\n\n this.containsPoint = options.containsPoint ?? (() => false);\n this.addBounds = options.addBounds ?? (() => false);\n }\n\n /**\n * An overrideable function that can be used to render the object using the current renderer.\n * @param _renderer - The current renderer\n */\n public render(_renderer: Renderer): void\n {\n // override me!\n }\n}\n","import type { Matrix } from '../../../maths/matrix/Matrix';\nimport type { Container } from '../Container';\n\nexport function updateLocalTransform(lt: Matrix, container: Container): void\n{\n const scale = container._scale;\n const pivot = container._pivot;\n const position = container._position;\n\n const sx = scale._x;\n const sy = scale._y;\n\n const px = pivot._x;\n const py = pivot._y;\n\n // get the matrix values of the container based on its this properties..\n lt.a = container._cx * sx;\n lt.b = container._sx * sx;\n lt.c = container._cy * sy;\n lt.d = container._sy * sy;\n\n lt.tx = position._x - ((px * lt.a) + (py * lt.c));\n lt.ty = position._y - ((px * lt.b) + (py * lt.d));\n}\n","import type { Matrix } from '../../../maths/matrix/Matrix';\n\nexport function updateWorldTransform(local: Matrix, parent: Matrix, world: Matrix): void\n{\n const lta = local.a;\n const ltb = local.b;\n const ltc = local.c;\n const ltd = local.d;\n const lttx = local.tx;\n const ltty = local.ty;\n\n const pta = parent.a;\n const ptb = parent.b;\n const ptc = parent.c;\n const ptd = parent.d;\n\n world.a = (lta * pta) + (ltb * ptc);\n world.b = (lta * ptb) + (ltb * ptd);\n world.c = (ltc * pta) + (ltd * ptc);\n world.d = (ltc * ptb) + (ltd * ptd);\n world.tx = (lttx * pta) + (ltty * ptc) + parent.tx;\n world.ty = (lttx * ptb) + (ltty * ptd) + parent.ty;\n}\n","import { buildSimpleUvs, buildUvs } from '../../../../rendering/renderers/shared/geometry/utils/buildUvs';\nimport { transformVertices } from '../../../../rendering/renderers/shared/geometry/utils/transformVertices';\nimport { MeshGeometry } from '../../../mesh/shared/MeshGeometry';\nimport { buildCircle } from '../buildCommands/buildCircle';\nimport { buildPolygon } from '../buildCommands/buildPolygon';\nimport { buildRectangle } from '../buildCommands/buildRectangle';\nimport { buildTriangle } from '../buildCommands/buildTriangle';\nimport { GraphicsPath } from '../path/GraphicsPath';\n\nimport type { Matrix } from '../../../../maths/matrix/Matrix';\nimport type { ShapeBuildCommand } from '../buildCommands/ShapeBuildCommand';\n\nconst buildMap: Record = {\n rectangle: buildRectangle,\n polygon: buildPolygon,\n triangle: buildTriangle,\n circle: buildCircle,\n ellipse: buildCircle,\n roundedRectangle: buildCircle,\n};\n\nexport interface GeometryPathOptions\n{\n /** the path to build the geometry from */\n path: GraphicsPath\n /** a `Matrix` that can be used to modify the the texture UVs of the the path being built */\n textureMatrix?: Matrix\n /** an optional `MeshGeometry` to write too instead of creating a new one*/\n out?: MeshGeometry\n}\n\n/**\n * When building a mesh, it helps to leverage the simple API we have in `GraphicsPath` as it can often be easier to\n * to define the geometry in a more human readable way. This function takes a `GraphicsPath` and returns a `MeshGeometry`.\n * @example\n * ```ts\n *\n * const path = new GraphicsPath()\n * .drawRect(0, 0, 100, 100)\n *\n * const geometry:MeshGeometry = buildGeometryFromPath(path);\n *\n * const mesh = new Mesh({geometry});\n *\n * ```\n * You can also pass in a Matrix to transform the uvs as by defualt you may want to control how they are set up.\n * @param options - either a `GraphicsPath` or `GeometryPathOptions`\n * @returns a new `MeshGeometry` instance build from the path\n */\nexport function buildGeometryFromPath(options: GraphicsPath | GeometryPathOptions): MeshGeometry\n{\n if (options instanceof GraphicsPath)\n {\n options = {\n path: options,\n textureMatrix: null,\n out: null,\n };\n }\n\n const vertices: number[] = [];\n const uvs: number[] = [];\n const indices: number[] = [];\n\n // build path collection of polygons and shapes points..\n const shapePath = options.path.shapePath;\n const textureMatrix = options.textureMatrix;\n\n shapePath.shapePrimitives.forEach(({ shape, transform: matrix }) =>\n {\n const indexOffset = indices.length;\n const vertOffset = vertices.length / 2;\n\n const points: number[] = [];\n\n const build = buildMap[shape.type];\n\n build.build(shape, points);\n\n if (matrix)\n {\n transformVertices(points, matrix);\n }\n\n build.triangulate(points, vertices, 2, vertOffset, indices, indexOffset);\n\n const uvsOffset = uvs.length / 2;\n\n if (textureMatrix)\n {\n // todo can prolly do this before calculating uvs..\n if (matrix)\n {\n textureMatrix.append(matrix.clone().invert());\n }\n\n buildUvs(vertices, 2, vertOffset, uvs, uvsOffset, 2, (vertices.length / 2) - vertOffset, textureMatrix);\n }\n else\n {\n buildSimpleUvs(uvs, uvsOffset, 2, (vertices.length / 2) - vertOffset);\n }\n });\n\n const out = options.out;\n\n if (out)\n {\n out.positions = new Float32Array(vertices);\n out.uvs = new Float32Array(uvs);\n out.indices = new Uint32Array(indices);\n\n return out;\n }\n\n const geometry = new MeshGeometry({\n positions: new Float32Array(vertices),\n uvs: new Float32Array(uvs),\n indices: new Uint32Array(indices),\n });\n\n return geometry;\n}\n","import { definedProps } from '../container/utils/definedProps';\nimport { Mesh } from '../mesh/shared/Mesh';\nimport { PlaneGeometry } from './PlaneGeometry';\n\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { DestroyOptions } from '../container/destroyTypes';\nimport type { MeshOptions } from '../mesh/shared/Mesh';\n\n/**\n * Constructor options used for `MeshPlane` instances.\n * ```js\n * const meshPlane = new MeshPlane({\n * texture: Texture.from('snake.png'),\n * verticesX: 20,\n * verticesY: 20,\n * });\n * ```\n * @see {@link scene.MeshPlane}\n * @memberof scene\n */\nexport interface MeshPlaneOptions extends Omit\n{\n /** The texture to use on the plane. */\n texture: Texture;\n /** The number of vertices in the x-axis */\n verticesX?: number;\n /** The number of vertices in the y-axis */\n verticesY?: number;\n}\n\n/**\n * The MeshPlane allows you to draw a texture across several points and then manipulate these points\n * @example\n * import { Point, MeshPlane, Texture } from 'pixi.js';\n *\n * for (let i = 0; i < 20; i++) {\n * points.push(new Point(i * 50, 0));\n * }\n * const MeshPlane = new MeshPlane({ texture: Texture.from('snake.png'), verticesX: points });\n * @memberof scene\n */\nexport class MeshPlane extends Mesh\n{\n /** The geometry is automatically updated when the texture size changes. */\n public autoResize: boolean;\n protected _textureID: number;\n\n /**\n * @param options - Options to be applied to MeshPlane\n */\n constructor(options: MeshPlaneOptions)\n {\n const { texture, verticesX, verticesY, ...rest } = options;\n const planeGeometry = new PlaneGeometry(definedProps({\n width: texture.width,\n height: texture.height,\n verticesX,\n verticesY,\n }));\n\n super(definedProps({ ...rest, geometry: planeGeometry, texture }));\n\n // lets call the setter to ensure all necessary updates are performed\n this.texture = texture;\n this.autoResize = true;\n }\n\n /**\n * Method used for overrides, to do something in case texture frame was changed.\n * Meshes based on plane can override it and change more details based on texture.\n */\n public textureUpdated(): void\n {\n const geometry: PlaneGeometry = this.geometry as any;\n const { width, height } = this.texture;\n\n if (this.autoResize && (geometry.width !== width || geometry.height !== height))\n {\n geometry.width = width;\n geometry.height = height;\n geometry.build({});\n }\n }\n\n set texture(value: Texture)\n {\n this._texture?.off('update', this.textureUpdated, this);\n\n super.texture = value;\n\n value.on('update', this.textureUpdated, this);\n\n this.textureUpdated();\n }\n\n /** The texture of the MeshPlane */\n get texture(): Texture\n {\n return this._texture;\n }\n\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n public destroy(options?: DestroyOptions): void\n {\n this.texture.off('update', this.textureUpdated, this);\n super.destroy(options);\n }\n}\n","import { MeshGeometry } from '../mesh/shared/MeshGeometry';\n\nimport type { PointData } from '../../maths/point/PointData';\nimport type { MeshGeometryOptions } from '../mesh/shared/MeshGeometry';\n\n/**\n * Constructor options used for `RopeGeometry` instances.\n * ```js\n * const ropeGeometry = new RopeGeometry({\n * points: [new Point(0, 0), new Point(100, 0)],\n * width: 10,\n * textureScale: 0,\n * });\n * ```\n * @see {@link scene.RopeGeometry}\n * @memberof scene\n */\nexport interface RopeGeometryOptions\n{\n /** The width (i.e., thickness) of the rope. */\n width?: number;\n /** An array of points that determine the rope. */\n points?: PointData[];\n /**\n * Rope texture scale, if zero then the rope texture is stretched.\n * By default the rope texture will be stretched to match\n * rope length. If textureScale is positive this value will be treated as a scaling\n * factor and the texture will preserve its aspect ratio instead. To create a tiling rope\n * set baseTexture.wrapMode to 'repeat' and use a power of two texture,\n * then set textureScale=1 to keep the original texture pixel size.\n * In order to reduce alpha channel artifacts provide a larger texture and downsample -\n * i.e. set textureScale=0.5 to scale it down twice.\n */\n textureScale?: number;\n}\n\n/**\n * RopeGeometry allows you to draw a geometry across several points and then manipulate these points.\n * @example\n * import { Point, RopeGeometry } from 'pixi.js';\n *\n * for (let i = 0; i < 20; i++) {\n * points.push(new Point(i * 50, 0));\n * };\n * const rope = new RopeGeometry(100, points);\n * @memberof scene\n */\nexport class RopeGeometry extends MeshGeometry\n{\n /** Default options for RopeGeometry constructor. */\n public static defaultOptions: RopeGeometryOptions & MeshGeometryOptions = {\n /** The width (i.e., thickness) of the rope. */\n width: 200,\n /** An array of points that determine the rope. */\n points: [],\n /** Rope texture scale, if zero then the rope texture is stretched. */\n textureScale: 0,\n };\n\n /** An array of points that determine the rope. */\n public points: PointData[];\n\n /** Rope texture scale, if zero then the rope texture is stretched. */\n public readonly textureScale: number;\n\n /**\n * The width (i.e., thickness) of the rope.\n * @readonly\n */\n public _width: number;\n\n /**\n * @param options - Options to be applied to rope geometry\n */\n constructor(options: RopeGeometryOptions)\n {\n const { width, points, textureScale } = { ...RopeGeometry.defaultOptions, ...options };\n\n super({\n positions: new Float32Array(points.length * 4),\n uvs: new Float32Array(points.length * 4),\n indices: new Uint32Array((points.length - 1) * 6),\n });\n\n this.points = points;\n this._width = width;\n this.textureScale = textureScale;\n\n this._build();\n }\n\n /**\n * The width (i.e., thickness) of the rope.\n * @readonly\n */\n get width(): number\n {\n return this._width;\n }\n\n /** Refreshes Rope indices and uvs */\n private _build(): void\n {\n const points = this.points;\n\n if (!points) return;\n\n const vertexBuffer = this.getBuffer('aPosition');\n const uvBuffer = this.getBuffer('aUV');\n const indexBuffer = this.getIndex();\n\n // if too little points, or texture hasn't got UVs set yet just move on.\n if (points.length < 1)\n {\n return;\n }\n\n // if the number of points has changed we will need to recreate the arraybuffers\n if (vertexBuffer.data.length / 4 !== points.length)\n {\n vertexBuffer.data = new Float32Array(points.length * 4);\n uvBuffer.data = new Float32Array(points.length * 4);\n indexBuffer.data = new Uint16Array((points.length - 1) * 6);\n }\n\n const uvs = uvBuffer.data;\n const indices = indexBuffer.data;\n\n uvs[0] = 0;\n uvs[1] = 0;\n uvs[2] = 0;\n uvs[3] = 1;\n\n let amount = 0;\n let prev = points[0];\n const textureWidth = this._width * this.textureScale;\n const total = points.length; // - 1;\n\n for (let i = 0; i < total; i++)\n {\n // time to do some smart drawing!\n const index = i * 4;\n\n if (this.textureScale > 0)\n {\n // calculate pixel distance from previous point\n const dx = prev.x - points[i].x;\n const dy = prev.y - points[i].y;\n const distance = Math.sqrt((dx * dx) + (dy * dy));\n\n prev = points[i];\n amount += distance / textureWidth;\n }\n else\n {\n // stretch texture\n amount = i / (total - 1);\n }\n\n uvs[index] = amount;\n uvs[index + 1] = 0;\n\n uvs[index + 2] = amount;\n uvs[index + 3] = 1;\n }\n\n let indexCount = 0;\n\n for (let i = 0; i < total - 1; i++)\n {\n const index = i * 2;\n\n indices[indexCount++] = index;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 2;\n\n indices[indexCount++] = index + 2;\n indices[indexCount++] = index + 1;\n indices[indexCount++] = index + 3;\n }\n\n // ensure that the changes are uploaded\n uvBuffer.update();\n indexBuffer.update();\n\n this.updateVertices();\n }\n\n /** refreshes vertices of Rope mesh */\n public updateVertices(): void\n {\n const points = this.points;\n\n if (points.length < 1)\n {\n return;\n }\n\n let lastPoint = points[0];\n let nextPoint;\n let perpX = 0;\n let perpY = 0;\n\n const vertices = this.buffers[0].data;\n const total = points.length;\n const halfWidth = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2;\n\n for (let i = 0; i < total; i++)\n {\n const point = points[i];\n const index = i * 4;\n\n if (i < points.length - 1)\n {\n nextPoint = points[i + 1];\n }\n else\n {\n nextPoint = point;\n }\n\n perpY = -(nextPoint.x - lastPoint.x);\n perpX = nextPoint.y - lastPoint.y;\n\n let ratio = (1 - (i / (total - 1))) * 10;\n\n if (ratio > 1)\n {\n ratio = 1;\n }\n\n const perpLength = Math.sqrt((perpX * perpX) + (perpY * perpY));\n\n if (perpLength < 1e-6)\n {\n perpX = 0;\n perpY = 0;\n }\n else\n {\n perpX /= perpLength;\n perpY /= perpLength;\n\n perpX *= halfWidth;\n perpY *= halfWidth;\n }\n\n vertices[index] = point.x + perpX;\n vertices[index + 1] = point.y + perpY;\n vertices[index + 2] = point.x - perpX;\n vertices[index + 3] = point.y - perpY;\n\n lastPoint = point;\n }\n\n this.buffers[0].update();\n }\n\n /** Refreshes Rope indices and uvs */\n public update(): void\n {\n if (this.textureScale > 0)\n {\n this._build(); // we need to update UVs\n }\n else\n {\n this.updateVertices();\n }\n }\n}\n","import { definedProps } from '../container/utils/definedProps';\nimport { Mesh } from '../mesh/shared/Mesh';\nimport { RopeGeometry } from './RopeGeometry';\n\nimport type { PointData } from '../../maths/point/PointData';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { MeshOptions } from '../mesh/shared/Mesh';\n\n/**\n * Constructor options used for `MeshRope` instances.\n * ```js\n * const meshRope = new MeshRope({\n * texture: Texture.from('snake.png'),\n * points: [new Point(0, 0), new Point(100, 0)],\n * textureScale: 0,\n * });\n * ```\n * @see {@link scene.MeshRope}\n * @memberof scene\n */\nexport interface MeshRopeOptions extends Omit\n{\n /** The texture to use on the rope. */\n texture: Texture;\n /** An array of points that determine the rope. */\n points: PointData[];\n /**\n * Rope texture scale, if zero then the rope texture is stretched.\n * Positive values scale rope texture\n * keeping its aspect ratio. You can reduce alpha channel artifacts by providing a larger texture\n * and downsampling here. If set to zero, texture will be stretched instead.\n */\n textureScale?: number;\n}\n\n/**\n * The rope allows you to draw a texture across several points and then manipulate these points\n * @example\n * import { Point, MeshRope, Texture } from 'pixi.js';\n *\n * for (let i = 0; i < 20; i++) {\n * points.push(new Point(i * 50, 0));\n * };\n * const rope = new MeshRope(Texture.from('snake.png'), points);\n * @memberof scene\n */\nexport class MeshRope extends Mesh\n{\n public static defaultOptions: Partial = {\n textureScale: 0,\n };\n\n /** re-calculate vertices by rope points each frame */\n public autoUpdate: boolean;\n\n /**\n * Note: The wrap mode of the texture is set to REPEAT if `textureScale` is positive.\n * @param options\n * @param options.texture - The texture to use on the rope.\n * @param options.points - An array of {@link math.Point} objects to construct this rope.\n * @param {number} options.textureScale - Optional. Positive values scale rope texture\n * keeping its aspect ratio. You can reduce alpha channel artifacts by providing a larger texture\n * and downsampling here. If set to zero, texture will be stretched instead.\n */\n constructor(options: MeshRopeOptions)\n {\n const { texture, points, textureScale, ...rest } = { ...MeshRope.defaultOptions, ...options };\n const ropeGeometry = new RopeGeometry(definedProps({ width: texture.height, points, textureScale }));\n\n if (textureScale > 0)\n {\n // attempt to set UV wrapping, will fail on non-power of two textures\n texture.source.style.addressMode = 'repeat';\n }\n super(definedProps({\n ...rest,\n texture,\n geometry: ropeGeometry,\n }));\n\n this.autoUpdate = true;\n\n this.onRender = this._render;\n }\n\n private _render(): void\n {\n const geometry: RopeGeometry = this.geometry as any;\n\n if (this.autoUpdate || geometry._width !== this.texture.height)\n {\n geometry._width = this.texture.height;\n geometry.update();\n }\n }\n}\n","import { definedProps } from '../container/utils/definedProps';\nimport { Mesh } from '../mesh/shared/Mesh';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry';\n\nimport type { TypedArray } from '../../rendering/renderers/shared/buffer/Buffer';\nimport type { Topology } from '../../rendering/renderers/shared/geometry/const';\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { MeshOptions } from '../mesh/shared/Mesh';\n\n/**\n * Options for the simple mesh.\n * @memberof scene\n */\nexport interface SimpleMeshOptions extends Omit\n{\n /** The texture to use */\n texture: Texture,\n /** if you want to specify the vertices */\n vertices?: Float32Array,\n /** if you want to specify the uvs */\n uvs?: Float32Array,\n /** if you want to specify the indices */\n indices?: Uint32Array,\n /** the topology, can be any of the Topology values */\n topology?: Topology\n}\n\n/**\n * The Simple Mesh class mimics Mesh in PixiJS, providing easy-to-use constructor arguments.\n * For more robust customization, use {@link scene.Mesh}.\n * @memberof scene\n */\nexport class MeshSimple extends Mesh\n{\n /** Upload vertices buffer each frame. */\n public autoUpdate: boolean;\n\n /**\n * @param options - Options to be used for construction\n */\n constructor(options: SimpleMeshOptions)\n {\n const { texture, vertices, uvs, indices, topology, ...rest } = options;\n const geometry = new MeshGeometry(definedProps({\n positions: vertices,\n uvs,\n indices,\n topology\n }));\n\n // geometry.getBuffer('aPosition').static = false;\n\n super(definedProps({\n ...rest,\n texture,\n geometry,\n }));\n\n this.autoUpdate = true;\n this.onRender = this._render;\n }\n\n /**\n * Collection of vertices data.\n * @type {Float32Array}\n */\n get vertices(): TypedArray\n {\n return this.geometry.getBuffer('aPosition').data;\n }\n set vertices(value: TypedArray)\n {\n this.geometry.getBuffer('aPosition').data = value;\n }\n\n private _render(): void\n {\n if (this.autoUpdate)\n {\n this.geometry.getBuffer('aPosition').update();\n }\n }\n}\n","import type { Matrix } from '../../../maths/matrix/Matrix';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\n\nexport function getTextureDefaultMatrix(texture: Texture, out: Matrix): Matrix\n{\n const { width, height } = texture.frame;\n\n out.scale(1 / width, 1 / height);\n\n return out;\n}\n","import { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation';\nimport { Container } from '../container/Container';\nimport { NineSliceGeometry } from './NineSliceGeometry';\n\nimport type { Point } from '../../maths/point/Point';\nimport type { View } from '../../rendering/renderers/shared/view/View';\nimport type { Bounds, BoundsData } from '../container/bounds/Bounds';\nimport type { ContainerOptions } from '../container/Container';\nimport type { DestroyOptions } from '../container/destroyTypes';\n\n/**\n * Constructor options used for `NineSliceSprite` instances.\n * ```js\n * const nineSliceSprite = new NineSliceSprite({\n * texture: Texture.from('button.png'),\n * leftWidth: 20,\n * topHeight: 20,\n * rightWidth: 20,\n * bottomHeight: 20,\n * });\n * ```\n * @see {@link scene.NineSliceSprite}\n * @memberof scene\n */\nexport interface NineSliceSpriteOptions extends ContainerOptions\n{\n /** The texture to use on the NineSliceSprite. */\n texture: Texture;\n /** Width of the left vertical bar (A) */\n leftWidth?: number;\n /** Height of the top horizontal bar (C) */\n topHeight?: number;\n /** Width of the right vertical bar (B) */\n rightWidth?: number;\n /** Height of the bottom horizontal bar (D) */\n bottomHeight?: number;\n /** Width of the NineSliceSprite, setting this will actually modify the vertices and not the UV's of this plane. */\n width?: number;\n /** Height of the NineSliceSprite, setting this will actually modify the vertices and not UV's of this plane. */\n height?: number;\n /** Whether or not to round the x/y position. */\n roundPixels?: boolean;\n}\n\n/**\n * The NineSliceSprite allows you to stretch a texture using 9-slice scaling. The corners will remain unscaled (useful\n * for buttons with rounded corners for example) and the other areas will be scaled horizontally and or vertically\n *\n *
\n *      A                          B\n *    +---+----------------------+---+\n *  C | 1 |          2           | 3 |\n *    +---+----------------------+---+\n *    |   |                      |   |\n *    | 4 |          5           | 6 |\n *    |   |                      |   |\n *    +---+----------------------+---+\n *  D | 7 |          8           | 9 |\n *    +---+----------------------+---+\n *  When changing this objects width and/or height:\n *     areas 1 3 7 and 9 will remain unscaled.\n *     areas 2 and 8 will be stretched horizontally\n *     areas 4 and 6 will be stretched vertically\n *     area 5 will be stretched both horizontally and vertically\n * 
\n * @example\n * import { NineSliceSprite, Texture } from 'pixi.js';\n *\n * const plane9 = new NineSliceSprite(Texture.from('BoxWithRoundedCorners.png'), 15, 15, 15, 15);\n * @memberof scene\n */\nexport class NineSliceSprite extends Container implements View\n{\n /** The default options, used to override the initial values of any options passed in the constructor. */\n public static defaultOptions: NineSliceSpriteOptions = {\n /** @default Texture.EMPTY */\n texture: Texture.EMPTY,\n };\n\n public _roundPixels: 0 | 1 = 0;\n public readonly renderPipeId = 'nineSliceSprite';\n public _texture: Texture;\n\n public batched = true;\n\n private _leftWidth: number;\n private _topHeight: number;\n private _rightWidth: number;\n private _bottomHeight: number;\n private _width: number;\n private _height: number;\n\n public _didSpriteUpdate = true;\n\n public bounds: BoundsData = { minX: 0, minY: 0, maxX: 0, maxY: 0 };\n\n /**\n * @param {scene.NineSliceSpriteOptions|Texture} options - Options to use\n * @param options.texture - The texture to use on the NineSliceSprite.\n * @param options.leftWidth - Width of the left vertical bar (A)\n * @param options.topHeight - Height of the top horizontal bar (C)\n * @param options.rightWidth - Width of the right vertical bar (B)\n * @param options.bottomHeight - Height of the bottom horizontal bar (D)\n * @param options.width - Width of the NineSliceSprite,\n * setting this will actually modify the vertices and not the UV's of this plane.\n * @param options.height - Height of the NineSliceSprite,\n * setting this will actually modify the vertices and not UV's of this plane.\n */\n constructor(options: NineSliceSpriteOptions | Texture)\n {\n if ((options instanceof Texture))\n {\n options = { texture: options };\n }\n\n const {\n width,\n height,\n leftWidth,\n rightWidth,\n topHeight,\n bottomHeight,\n texture,\n roundPixels,\n ...rest\n } = options;\n\n super({\n label: 'NineSliceSprite',\n ...rest\n });\n\n this._leftWidth = leftWidth ?? texture?.defaultBorders?.left ?? NineSliceGeometry.defaultOptions.leftWidth;\n this._topHeight = topHeight ?? texture?.defaultBorders?.top ?? NineSliceGeometry.defaultOptions.topHeight;\n this._rightWidth = rightWidth ?? texture?.defaultBorders?.right ?? NineSliceGeometry.defaultOptions.rightWidth;\n this._bottomHeight = bottomHeight\n ?? texture?.defaultBorders?.bottom\n ?? NineSliceGeometry.defaultOptions.bottomHeight;\n this.bounds.maxX = this._width = width ?? texture.width ?? NineSliceGeometry.defaultOptions.width;\n this.bounds.maxY = this._height = height ?? texture.height ?? NineSliceGeometry.defaultOptions.height;\n\n this.allowChildren = false;\n this.texture = texture ?? NineSliceSprite.defaultOptions.texture;\n this.roundPixels = roundPixels ?? false;\n }\n\n /** The width of the NineSliceSprite, setting this will actually modify the vertices and UV's of this plane. */\n get width(): number\n {\n return this._width;\n }\n\n set width(value: number)\n {\n this.bounds.maxX = this._width = value;\n this.onViewUpdate();\n }\n\n /** The height of the NineSliceSprite, setting this will actually modify the vertices and UV's of this plane. */\n get height(): number\n {\n return this._height;\n }\n\n set height(value: number)\n {\n this.bounds.maxY = this._height = value;\n this.onViewUpdate();\n }\n\n /** The width of the left column (a) of the NineSliceSprite. */\n get leftWidth(): number\n {\n return this._leftWidth;\n }\n\n set leftWidth(value: number)\n {\n this._leftWidth = value;\n\n this.onViewUpdate();\n }\n\n /** The width of the right column (b) of the NineSliceSprite. */\n get topHeight(): number\n {\n return this._topHeight;\n }\n\n set topHeight(value: number)\n {\n this._topHeight = value;\n this.onViewUpdate();\n }\n\n /** The width of the right column (b) of the NineSliceSprite. */\n get rightWidth(): number\n {\n return this._rightWidth;\n }\n\n set rightWidth(value: number)\n {\n this._rightWidth = value;\n this.onViewUpdate();\n }\n\n /** The width of the right column (b) of the NineSliceSprite. */\n get bottomHeight(): number\n {\n return this._bottomHeight;\n }\n\n set bottomHeight(value: number)\n {\n this._bottomHeight = value;\n this.onViewUpdate();\n }\n\n /** The texture that the NineSliceSprite is using. */\n get texture(): Texture\n {\n return this._texture;\n }\n\n set texture(value: Texture)\n {\n value ||= Texture.EMPTY;\n\n const currentTexture = this._texture;\n\n if (currentTexture === value) return;\n\n if (currentTexture && currentTexture.dynamic) currentTexture.off('update', this.onViewUpdate, this);\n if (value.dynamic) value.on('update', this.onViewUpdate, this);\n\n this._texture = value;\n\n this.onViewUpdate();\n }\n\n /**\n * Whether or not to round the x/y position of the sprite.\n * @type {boolean}\n */\n get roundPixels()\n {\n return !!this._roundPixels;\n }\n\n set roundPixels(value: boolean)\n {\n this._roundPixels = value ? 1 : 0;\n }\n\n /** The original width of the texture */\n get originalWidth()\n {\n return this._texture.width;\n }\n\n /** The original height of the texture */\n get originalHeight()\n {\n return this._texture.height;\n }\n\n public onViewUpdate()\n {\n // increment from the 12th bit!\n this._didChangeId += 1 << 12;\n this._didSpriteUpdate = true;\n\n if (this.didViewUpdate) return;\n this.didViewUpdate = true;\n\n if (this.renderGroup)\n {\n this.renderGroup.onChildViewUpdate(this);\n }\n }\n\n /**\n * Adds the bounds of this object to the bounds object.\n * @param bounds - The output bounds object.\n */\n public addBounds(bounds: Bounds)\n {\n const _bounds = this.bounds;\n\n bounds.addFrame(_bounds.minX, _bounds.minY, _bounds.maxX, _bounds.maxY);\n }\n\n /**\n * Checks if the object contains the given point.\n * @param point - The point to check\n */\n public containsPoint(point: Point)\n {\n const bounds = this.bounds;\n\n if (point.x >= bounds.minX && point.x <= bounds.maxX)\n {\n if (point.y >= bounds.minY && point.y <= bounds.maxY)\n {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Destroys this sprite renderable and optionally its texture.\n * @param options - Options parameter. A boolean will act as if all options\n * have been set to that value\n * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well\n * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well\n */\n public destroy(options?: DestroyOptions): void\n {\n super.destroy(options);\n\n const destroyTexture = typeof options === 'boolean' ? options : options?.texture;\n\n if (destroyTexture)\n {\n const destroyTextureSource = typeof options === 'boolean' ? options : options?.textureSource;\n\n this._texture.destroy(destroyTextureSource);\n }\n\n this._texture = null;\n (this.bounds as null) = null;\n }\n}\n\n/**\n * Please use the `NineSliceSprite` class instead.\n * @deprecated since 8.0.0\n * @memberof scene\n */\nexport class NineSlicePlane extends NineSliceSprite\n{\n constructor(options: NineSliceSpriteOptions | Texture);\n /** @deprecated since 8.0.0 */\n constructor(texture: Texture, leftWidth: number, topHeight: number, rightWidth: number, bottomHeight: number);\n constructor(...args: [NineSliceSpriteOptions | Texture] | [Texture, number, number, number, number])\n {\n let options = args[0];\n\n if (options instanceof Texture)\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'NineSlicePlane now uses the options object {texture, leftWidth, rightWidth, topHeight, bottomHeight}');\n // #endif\n\n options = {\n texture: options,\n leftWidth: args[1],\n topHeight: args[2],\n rightWidth: args[3],\n bottomHeight: args[4],\n };\n }\n\n // #if _DEBUG\n deprecation(v8_0_0, 'NineSlicePlane is deprecated. Use NineSliceSprite instead.');\n // #endif\n\n super(options);\n }\n}\n","import { HTMLTextStyle } from '../../text-html/HtmlTextStyle';\nimport { TextStyle } from '../TextStyle';\n\nimport type { HTMLTextStyleOptions } from '../../text-html/HtmlTextStyle';\nimport type { TextStyleOptions } from '../TextStyle';\n\n/**\n * converts the style input into the correct type of TextStyle\n * either HTMLTextStyle or TextStyle based on the renderMode.\n * @param renderMode - The render mode to use\n * @param style - The style to use\n * @returns - The style class\n */\nexport function ensureTextStyle(\n renderMode: string,\n style: TextStyle | HTMLTextStyle | TextStyleOptions | HTMLTextStyleOptions\n)\n{\n if (style instanceof TextStyle || style instanceof HTMLTextStyle)\n {\n return style;\n }\n\n return renderMode === 'html'\n ? new HTMLTextStyle(style)\n : new TextStyle(style);\n}\n","import EventEmitter from 'eventemitter3';\n\n/**\n * Regexp for data URI.\n * Based on: {@link https://github.com/ragingwind/data-uri-regex}\n * @static\n * @type {RegExp}\n * @default /(?:^data:image\\/([\\w+]+);(?:[\\w=]+|charset=[\\w-]+)?(?:;base64)?,)/i\n * @example\n * import { DATA_URI } from 'pixi.js';\n *\n * DATA_URI.test('data:image/png;base64,foobar'); // => true\n * @memberof utils\n */\nexport const DATA_URI = /^\\s*data:(?:([\\w-]+)\\/([\\w+.-]+))?(?:;charset=([\\w-]+))?(?:;(base64))?,(.*)/i;\n\n// export the event emitter so we can use it in external modules\nexport { EventEmitter };\n","import type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { Renderer } from '../../rendering/renderers/types';\n\n/**\n * Logs a texture to the console as a base64 image.\n * This can be very useful for debugging issues with rendering.\n * @param texture - The texture to log\n * @param renderer - The renderer to use\n * @param size - The size of the texture to log in the console\n * @ignore\n */\nexport async function logDebugTexture(texture: Texture, renderer: Renderer, size = 200)\n{\n const base64 = await renderer.extract.base64(texture);\n\n await renderer.encoder.commandFinished;\n\n const width = size;\n\n // eslint-disable-next-line no-console\n console.log(`logging texture ${texture.source.width}px ${texture.source.height}px`);\n\n const style = [\n 'font-size: 1px;',\n `padding: ${width}px ${300}px;`,\n `background: url(${base64}) no-repeat;`,\n 'background-size: contain;',\n ].join(' ');\n\n // eslint-disable-next-line no-console\n console.log('%c ', style);\n}\n","/* eslint-disable no-console */\n\nimport { Sprite } from '../../scene/sprite/Sprite';\n\nimport type { Container } from '../../scene/container/Container';\nimport type { RenderGroup } from '../../scene/container/RenderGroup';\n\nconst colors = [\n '#000080', // Navy Blue\n '#228B22', // Forest Green\n '#8B0000', // Dark Red\n '#4169E1', // Royal Blue\n '#008080', // Teal\n '#800000', // Maroon\n '#9400D3', // Dark Violet\n '#FF8C00', // Dark Orange\n '#556B2F', // Olive Green\n '#8B008B' // Dark Magenta\n];\n\nlet colorTick = 0;\n\nexport function logScene(container: Container, depth = 0, data: {color?: string} = { color: '#000000' })\n{\n if (container.isRenderGroupRoot)\n {\n data.color = colors[colorTick++];\n }\n\n // turn depth into number of spaces:\n let spaces = '';\n\n for (let i = 0; i < depth; i++)\n {\n spaces += ' ';\n }\n\n let label = container.label;\n\n if (!label && container instanceof Sprite)\n {\n label = `sprite:${container.texture.label}`;\n }\n\n // eslint-disable-next-line max-len\n let output = `%c ${spaces}|- ${label} (worldX:${container.worldTransform.tx}, relativeRenderX:${container.relativeGroupTransform.tx}, renderX:${container.groupTransform.tx}, localX:${container.x})`;\n\n if (container.isRenderGroupRoot)\n {\n output += ' (RenderGroup)';\n }\n\n if (container.filters)\n {\n output += '(*filters)';\n }\n\n console.log(output, `color:${data.color}; font-weight:bold;`);\n\n depth++;\n\n for (let i = 0; i < container.children.length; i++)\n {\n const child = container.children[i];\n\n logScene(child, depth, { ...data });\n }\n}\n\nexport function logRenderGroupScene(\n renderGroup: RenderGroup, depth = 0,\n data: {index: number, color?: string} = { index: 0, color: '#000000' }\n)\n{\n // turn depth into number of spaces:\n let spaces = '';\n\n for (let i = 0; i < depth; i++)\n {\n spaces += ' ';\n }\n\n const output = `%c ${spaces}- ${data.index}: ${renderGroup.root.label} worldX:${renderGroup.worldTransform.tx}`;\n\n console.log(output, `color:${data.color}; font-weight:bold;`);\n\n depth++;\n\n for (let i = 0; i < renderGroup.renderGroupChildren.length; i++)\n {\n const child = renderGroup.renderGroupChildren[i];\n\n logRenderGroupScene(child, depth, { ...data, index: i });\n }\n}\n"],"names":["ExtensionType","u","normalizeExtension","ext","metadata","__spreadProps","__spreadValues","normalizeExtensionPriority","defaultPriority","_a","extensions","type","_b","handlers","queue","onAdd","onRemove","addHandlers","removeHandlers","map","extension","item","a","b","index","list","has","prefix","Events","EE","fn","context","once","addListener","emitter","event","listener","evt","clearEvent","EventEmitter","names","events","name","i","l","ee","listeners","a1","a2","a3","a4","a5","len","args","length","j","module","r","t","n","e","o","s","h","g","d","f","c","p","v","m","y","N","x","I","M","H","$","w","S","k","E","d$z","extend","namesPlugin","_Color","value","value1","value2","type1","keys1","keys2","key","out","alpha","applyToRGB","hexString","alphaString","int","match","color","colord","min","max","Color","cullingMixin","PI_2","RAD_TO_DEG","DEG_TO_RAD","Point","tempPoint","Matrix","tx","ty","array","transpose","pos","newPos","id","angle","cos","sin","c1","tx1","matrix","b1","d1","b2","c2","d2","pivotX","pivotY","scaleX","scaleY","rotation","skewX","skewY","transform","pivot","delta","identityMatrix","tempMatrix","ObservablePoint","observer","uidCache","uid","resetUids","removeItems","arr","startIdx","removeCount","childrenHelperMixin","beginIndex","endIndex","end","range","removed","child","children","currentIndex","child2","index1","index2","FilterEffect","options","Pool","ClassType","initialSize","total","data","PoolGroupClass","Class","stats","pool","BigPool","MaskEffectManagerClass","test","effect","MaskEffectManager","effectsMixin","hasFilters","didChange","findMixin","deep","label","found","tempPoints","Rectangle","width","height","bounds","rectangle","strokeWidth","_x","_y","outerLeft","outerRight","outerTop","outerBottom","innerLeft","innerRight","innerTop","innerBottom","other","x0","y0","x1","y1","lt","lb","rt","rb","nx","ny","n00","n10","n01","n11","mx","my","m00","m10","m01","m11","paddingX","paddingY","x2","y2","resolution","eps","defaultMatrix","Bounds","minX","minY","maxX","maxY","rect","mask","left","right","top","bottom","vertexData","beginOffset","endOffset","localX","localY","matrixPool","boundsPool","getGlobalBounds","target","skipUpdateTransform","parentTransform","pooledMatrix","updateTransformBackwards","_getGlobalBounds","worldTransform","parentBounds","preserveBounds","parent","getLocalBounds","relativeMatrix","_getLocalBounds","rootContainer","isRoot","relativeTransform","localTransform","getParent","root","checkChildrenDidChange","container","previousData","changeId","measureMixin","localWidth","sign","localHeight","localBoundsCacheData","skipUpdate","onRenderMixin","func","renderGroup","sortMixin","sortChildren","toLocalGlobalMixin","point","position","globalMatrix","from","InstructionSet","instruction","RenderGroup","renderGroupChild","childrenToUpdate","assignWithIgnore","ignore","defaultSkew","defaultPivot","defaultScale","UPDATE_COLOR","UPDATE_BLEND","UPDATE_VISIBLE","UPDATE_TRANSFORM","Container","source","renderGroupParent","parentRenderGroup","childRenderGroup","size","convertedWidth","convertedHeight","skew","opts","scale","sx","sy","px","py","bgr","valueNumber","destroyChildren","oldChildren","FederatedEvent","manager","_type","_bubbles","_cancelable","_typeArg","_bubblesArg","_cancelableArg","_viewArg","_detailArg","appleIphone","appleIpod","appleTablet","appleUniversal","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","isAppleTabletOnIos13","navigator","createMatch","userAgent","regex","isMobile","param","nav","tmp","result","isMobileJs","KEY_CODE_TAB","DIV_TOUCH_SIZE","DIV_TOUCH_POS_X","DIV_TOUCH_POS_Y","DIV_TOUCH_ZINDEX","DIV_HOOK_SIZE","DIV_HOOK_POS_X","DIV_HOOK_POS_Y","DIV_HOOK_ZINDEX","AccessibilitySystem","renderer","_mobileInfo","div","hookDiv","now","viewWidth","viewHeight","hitArea","wt","boundary","accessibilityTarget","ResizePlugin","dom","clientWidth","clientHeight","UPDATE_PRIORITY","L","TickerListener","priority","ticker","redirect","previous","hard","_Ticker","time","current","count","currentTime","elapsedMS","head","fps","minFPS","minFPMS","maxFPS","shared","system","Ticker","TickerPlugin","oldTicker","s$x","paused","rootPointerEvent","EventsTicker","EventsTickerClass","FederatedMouseEvent","globalPos","_canBubbleArg","_screenXArg","_screenYArg","_clientXArg","_clientYArg","_ctrlKeyArg","_altKeyArg","_shiftKeyArg","_metaKeyArg","_buttonArg","_relatedTargetArg","FederatedPointerEvent","FederatedWheelEvent","PROPAGATION_LIMIT","tempHitLocation","tempLocalMapping","EventBoundary","rootTarget","mappers","invertedPath","composedPath","targets","propagationPath","currentTarget","eventMode","location","testFn","pruneFn","shouldReturn","nestedHit","isInteractive","isInteractiveMode","isInteractiveTarget","relativeLocation","handlerKey","isRightButton","trackingData","_c","isMouse","outTarget","outType","outEvent","leaveEvent","overType","overEvent","overTargetAncestor","enterEvent","allMethods","allowGlobalPointerEvents","pressTarget","clickTarget","clickEvent","clickHistory","wheelEvent","to","constructor","MOUSE_POINTER_ID","TOUCH_TO_POINTER","_EventSystem","canvas","mode","applyStyles","style","nativeEvent","federatedEvent","normalizedEvents","outside","element","resolutionMultiplier","li","touch","tempEvent","EventSystem","FederatedContainer","capture","signal","listenerFn","LoaderParserPriority","BrowserAdapter","url","xml","currentAdapter","DOMAdapter","adapter","assertPath","path","removeUrlParams","escapeRegExp","string","replaceAll","str","find","replace","normalizeStringPosix","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","code","lastSlashIndex","matchFile","matchProtocol","customBaseUrl","customRootUrl","baseUrl","rootUrl","protocol","isAbsolute","trailingSeparator","segments","joined","arg","prevArg","hasRoot","matchedSlash","proto","origpath","start","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","ret","convertToList","input","forceTransform","processX","base","ids","depth","tags","createStringVariations","vars","split","isSingleItem","U","B","P","Resolver","bundleId","assetId","assetBundleId","bundleIdentifier","preferOrders","prefer","basePath","rootPath","searchParams","queryValues","asset","alias","src","manifest","bundle","assets","assetNames","convertedAssets","srcs","aliases","bundleAssetId","bundleIds","keyCheck","format","loadParser","srcsToUse","aliasesToUse","resolvedAssets","formattedAsset","parser","singleAsset","results","keys","preferredOrder","priorityKey","filteredAssets","preferred","preference","paramConnector","assetData","getUrlExtension","copySearchParams","targetUrl","sourceUrl","ux","uy","vx","vy","rotationCayley","rotationMatrices","signum","init","row","_ux","_uy","_vx","_vy","mat","groupD8","ind","rotationSecond","rotationFirst","dx","dy","NOOP","nextPow2","isPow2","log2","shift","definedProps","obj","_","idHash","createResourceIdFromString","_TextureStyle","_d","_e","_f","_g","bigKey","TextureStyle","_TextureSource","resource","newPixelWidth","newPixelHeight","_resource","TextureSource","BufferImageSource","buffer","tempMat","TextureMatrix","texture","clampMargin","uvs","tex","orig","trim","texBase","frame","margin","offset","Texture","defaultAnchor","defaultBorders","rotate","dynamic","nX","nY","nW","nH","w2","h2","cX","cY","destroySource","_Spritesheet","metaResolution","resolve","initialFrameIndex","frameIndex","maxFrames","sourceSize","animations","animName","frameName","callback","destroyBase","Spritesheet","validImages","getCacheableAssets","ignoreMultiPack","out2","spritesheetAsset","loader","imageTexture","imageFilename","imagePath","spritesheet","multiPacks","promises","itemUrl","sp","_resolvedAsset","updateQuadBounds","anchor","padding","sourceWidth","sourceHeight","Sprite","roundPixels","rest","__objRest","skipCache","currentTexture","_bounds","sourceBounds","destroyTextureSource","tempBounds","addMaskBounds","boundsToMask","addMaskLocalBounds","localRoot","relativeMask","getMatrixRelativeToParent","AlphaMask","hitTestFn","ColorMask","StencilMask","CanvasSource","didResize","ImageSource","promise","detectVideoAlphaMode","gl","video","framebuffer","pixel","_VideoSource","reject","VideoSource","cacheableAssets","cacheableMap","cacheKeys","cachedAssets","val","cacheMap","Cache","CacheClass","sources","autoDetectSource","hasResource","Source","resourceToTexture","textureFrom","BufferUsage","Buffer","usage","shrinkToFit","mappedAtCreation","syncGPU","oldData","sizeInBytes","ensureIsBuffer","getGeometryBounds","geometry","attributeId","attribute","byteSize","stride","ensureIsAttribute","Geometry","attributes","indexBuffer","topology","destroyBuffers","placeHolderBufferData","placeHolderIndexData","BatchGeometry","attributeBuffer","BindGroup","resources","keyParts","currentResource","tick","MAX_TEXTURES","cachedGroups","getTextureBatchBindGroup","textures","generateTextureBatchBindGroup","bindGroupResources","bindIndex","bindGroup","ViewableBuffer","sizeOrBuffer","fastCopy","sourceBuffer","destinationBuffer","lengthDouble","sourceFloat64View","remainingBytes","sourceUint8View","BLEND_TO_NPM","STENCIL_MODES","getAdjustedBlendModeBlend","blendMode","textureSource","BatchTextureArray","z","T","Batch","BATCH_TICK","_Batcher","vertexSize","indexSize","batchableObject","textureId","instructionSet","elements","textureBatch","firstElement","f32","u32","iBuffer","action","batch","adjustedBlendMode","blendModeChange","indexStart","newSize","newArrayBuffer","newIndexBuffer","Batcher","buildUvs","vertices","verticesStride","verticesOffset","uvsOffset","uvsStride","buildSimpleUvs","transformVertices","multiplyHexColors","color1","color2","r1","g1","r2","g2","BatchableGraphics","indicesOffset","indices","float32View","uint32View","graphics","positions","vertSize","rgb","argb","textureIdAndRound","gpuBuffer","buildCircle","shape","points","rx","ry","circle","ellipse","roundedRect","halfWidth","halfHeight","j1","j2","j3","j4","centerX","centerY","centerIndex","closePointEps","curveEps","getOrientationOfPoints","area","square","innerWeight","outerWeight","clockwise","verts","ix","iy","ox","oy","exx","eyy","eix","eiy","eox","eoy","round","cx","cy","ex","ey","cx2p0x","cy2p0y","angle0","angle1","startAngle","angleDiff","absAngleDiff","radius","segCount","angleInc","buildLine","lineStyle","flipAlignment","closed","_verticesStride","_verticesOffset","_indicesOffset","alignment","orientation","firstPoint","lastPoint","closedShape","closedPath","midPointX","midPointY","indexCount","widthSquared","miterLimitSquared","perpX","perpY","perp1x","perp1y","dist","ratio","dx0","dy0","dx1","dy1","dot","cross","pDist","imx","imy","omx","omy","smallerInsideSegmentSq","insideWeight","smallerInsideDiagonalSq","eps2","earcutModule","earcut","_default","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","last","signedArea","insertNode","equals","removeNode","filterPoints","again","ear","pass","indexCurve","stop","prev","next","isEarHashed","isEar","cureLocalIntersections","splitEarcut","ax","bx","ay","by","pointInTriangle","minZ","zOrder","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","bridge","findHoleBridge","bridgeReverse","hx","hy","qx","tanMin","tan","sectorContainsSector","sortLinked","q","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","p1","p2","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","an","bp","polygonArea","trianglesArea","sum","holeIndex","triangulateWithHoles","holes","emptyArray","buildPolygon","buildRectangle","rectData","verticesIndex","buildTriangle","buildMap","tempRect","buildContextBatches","gpuContext","geometryData","batches","addTextureToGeometryData","isStroke","shapePath","addShapePathToGeometryData","indexOffset","vertOffset","build","textureUvs","graphicsBatch","lastIndex","close","otherPoints","getHoleArrays","holePoints","textureMatrix","holePrimitives","holeArrays","holePrimitive","GpuGraphicsContext","GraphicsContextRenderData","_GraphicsContextSystem","batchMode","graphicsData","batcher","drawBatches","GraphicsContextSystem","blendModeIds","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_State","state","State","colorToUniform","color32BitToUniform","abgr","GraphicsPipe","adaptor","wasBatched","shader","localUniforms","batchPipe","batchClone","graphicsUid","idCounts","createIdFromString","groupId","getDefaultUniformValue","_UniformGroup","uniformStructures","uniforms","uniformData","UniformGroup","BatchableMesh","mesh","uvBuffer","transformedUvs","MeshPipe","meshData","isBatched","batchableMesh","batched","gpuBatchableMesh","gpuMesh","BatchableSprite","sprite","w0","w1","h0","h1","CanvasTextPipe","text","gpuText","newKey","_instructionSet","batchableSprite","textUid","gpuTextData","CanvasPoolClass","canvasOptions","pixelWidth","pixelHeight","minWidth","minHeight","canvasAndContext","CanvasPool","TexturePoolClass","textureOptions","antialias","frameWidth","frameHeight","po2Width","po2Height","renderTexture","destroyTextures","TexturePool","checkRow","checkColumn","getCanvasBoundingBox","warnings","v8_0_0","deprecation","version","message","ignoreDepth","stack","_FillGradient","defaultSize","gradientStops","ctx","gradient","FillGradient","parseSvgPath","parse","segment","command","parseValues","number","numbers","SVGToGraphicsPath","svgPath","commands","subpaths","currentSubPath","lastX","lastY","Circle","distance","Ellipse","normx","normy","halfStrokeWidth","innerA","innerB","outerA","outerB","normalizedX","normalizedY","innerEllipse","outerEllipse","squaredDistanceToLineSegment","lenSq","xx","yy","Polygon","flat","il","polygon","xi","yi","xj","yj","halfStrokeWidthSqrd","iterationLength","isCornerWithinStroke","pX","pY","cornerX","cornerY","RoundedRectangle","radius2","innerX","innerY","innerWidth","innerHeight","rightBound","bottomBound","RECURSION_LIMIT","FLT_EPSILON","PATH_DISTANCE_EPSILON","curveAngleToleranceEpsilon","mAngleTolerance","mCuspLimit","buildAdaptiveBezier","sX","sY","cp1x","cp1y","cp2x","cp2y","eX","eY","smoothness","smoothing","distanceTolerance","begin","recursive","x3","y3","x4","y4","level","pi","x12","y12","x23","y23","x34","y34","x123","y123","x234","y234","x1234","y1234","d3","da1","da2","a23","buildAdaptiveQuadratic","da","buildArc","steps","cs","sn","buildArcTo","fromX","mm","dd","cc","tt","k1","k2","qy","endAngle","TAU","mapToEllipse","cosPhi","sinPhi","xp","yp","approxUnitArc","ang1","ang2","vectorAngle","getArcCenter","largeArcFlag","sweepFlag","pxp","pyp","rxSq","rySq","pxpSq","pypSq","radicant","centerXp","centerYp","vx1","vy1","vx2","vy2","buildArcToSvg","xAxisRotation","lambda","outCurvePoint","curve","roundedShapeArc","vecFrom","pp","sharpCorner","pRadius","p3","v1","v2","radDirection","drawDirection","halfAngle","cRadius","lenOut","roundedShapeQuadraticCurve","pointLerp","numPoints","thisPoint","nextPoint","lastEdgeLength","lastOffsetDistance","nextEdgeLength","nextOffsetDistance","tempRectangle","ShapePath","graphicsPath2D","fromY","counterclockwise","currentPoly","closePath","sides","corner","sideLength","internalAngle","useQuadratic","fillet","maxFillet","inset","dir","chamfer","radiusX","radiusY","lastShape","lx","ly","tempX","shapePrimitives","shapePrimitive","boundsRect","GraphicsPath","instructions","currentX","currentY","cpx1","cpy1","innerRadius","newGraphicsPath2D","cpx2","cpy2","adjustTransform","lastInstruction","currentMatrix","SVGParser","svg","graphicsContext","session","renderChildren","fillStyle","strokeStyle","f1","s1","parseStyle","pointsString","graphicsPath","parseFloatAttribute","defaultValue","useFill","useStroke","styleParts","stylePart","stroke","fill","repetitionMap","FillPattern","repetition","convertFillInputToFillStyle","defaultStyle","fillStyleToParse","styleToMerge","temp","pattern","sourceStyle","tmpPoint","_GraphicsContext","clone","tint","dw","dh","holePath","transformedX","transformedY","cpx","cpy","hasHit","shapes","transformedPoint","holeShapes","GraphicsContext","valuesToIterateForKeys","generateTextStyleKey","prop","addFillStyleKey","addStokeStyleKey","_TextStyle","convertV7Tov8Style","fullStyle","thisKey","TextStyle","oldStyle","defaults","gradientFill","fills","getPo2TextureFromSource","image","genericFontFamilies","fontStringFromTextStyle","fontSizeString","fontFamilies","fontFamily","contextSettings","_CanvasTextMetrics","lines","lineWidths","lineHeight","maxLineWidth","fontProperties","wordWrap","textKey","font","lineWidth","letterSpacing","useExperimentalLetterSpacing","line","cache","whiteSpace","collapseSpaces","collapseNewlines","canPrependSpaces","wordWrapWidth","tokens","token","currIsBreakingSpace","lastIsBreakingSpace","tokenWidth","characters","char","lastChar","nextChar","characterWidth","isLastToken","newLine","_nextChar","_token","breakWords","_char","_index","_breakWords","metrics","properties","segmenter","CanvasTextMetrics","getCanvasFillStyle","fillPattern","fillGradient","CanvasTextSystem","_renderer","measured","_textKey","trimmed","activeTexture","linePositionX","linePositionY","passesCount","isShadowPass","dsOffsetText","dsOffsetShadow","shadowOptions","dropShadowColor","dropShadowAlpha","dropShadowBlur","dropShadowDistance","linePositionYShift","currentPosition","stringArray","previousWidth","currentWidth","currentChar","textStr","AbstractBitmapFont","page","resolveCharacters","chars","startCode","endCode","DynamicBitmapFont","dynamicOptions","requestedFontSize","charList","self","pageData","fontScale","widthScale","maxCharHeight","skipTexture","paddedWidth","paddedHeight","xAdvance","newChars","measureCache","first","second","amount","textureResolution","strokeThickness","descent","getBitmapTextLayout","layoutData","currentLine","previousChar","firstWord","currentWord","nextWord","word","nextLine","adjustedLetterSpacing","adjustedWordWrapWidth","isEnd","charData","spaceWidth","kerning","nextCharWidth","alignCenter","alignRight","alignJustify","measurementData","indy","spaceIndex","totalSpaces","S$b","fontFamilyKey","overrideFill","fnt","dynamicFont","bitmapFont","textStyle","flatChars","cacheKey","BitmapFontManager","BitmapFontManagerClass","BitmapFont","textureFrame","frameReal","bitmapFontTextParser","txt","items","rawData","attributeList","itemData","strValue","floatValue","info","common","distanceField","charNode","letter","bitmapFontXMLParser","bitmapFontXMLStringParser","validExtensions","bitmapFontCachePlugin","loadBitmapFont","bitmapFontData","pages","textureUrls","pageFile","loadedTextures","_options","Graphics","method","getTestContext","maxFragmentPrecision","getMaxFragmentPrecision","addProgramDefines","isES300","isFragment","ensurePrecision","maxSupportedPrecision","precision","insertVersion","fragmentNameCache","VertexNameCache","setProgramName","nameCache","stripVersion","processes","programCache","_GlProgram","preprocessorOptions","fragment","vertex","processKey","processOptions","GlProgram","attributeFormatData","getAttributeInfoFromFormat","WGSL_TO_VERTEX_TYPES","extractAttributesFromGpuProgram","entryPoint","mainVertStart","arrowFunctionStart","functionArgsSubstring","inputsRegex","extractStructAndGroups","wgsl","linePattern","groupPattern","bindingPattern","namePattern","typePattern","structPattern","structMemberPattern","structName","groups","structs","struct","members","acc","member","group","ShaderStage","generateGpuLayoutGroups","layout","generateLayoutHash","removeStructAndGroupDuplicates","vertexStructsAndGroups","fragmentStructsAndGroups","structNameSet","dupeGroupKeySet","GpuProgram","gpuLayout","structsAndGroups","addBits","srcParts","parts","part","sanitisedPart","findHooksRx","compileHooks","programSrc","hook","extractInputs","fragmentSource","compileInputs","fragments","template","sort","mainInput","finalString","inValue","cleanedString","extractOutputs","extractVariableName","stripVariable","compileOutputs","mainStruct","mainStart","mainEnd","compiledCode","injectBits","templateSrc","fragmentParts","bitCacheMap","CACHE_UID","compileHighShader","bits","cacheId","generateCacheId","compileInputsAndOutputs","compileBits","compileHighShaderGl","vertexFragments","shaderBit","fragmentFragments","compiledVertex","compiledFragment","highFragment","vertexParts","vertexGPUTemplate","fragmentGPUTemplate","vertexGlTemplate","fragmentGlTemplate","globalUniformsBit","globalUniformsUBOBitGl","globalUniformsBitGl","compileHighShaderGpuProgram","compileHighShaderGlProgram","colorBit","colorBitGl","textureBatchBitGpuCache","generateBindingSrc","maxTextures","bindingIndex","generateSampleSrc","generateTextureBatchBit","textureBatchBitGlCache","generateSampleGlSrc","generateTextureBatchBitGl","roundPixelsBit","roundPixelsBitGl","sampleValues","batchSamplersUniformGroup","RendererType","W","G","Shader","gpuProgram","glProgram","compatibleRenderers","groupMap","nameHash","uniformName","groupData","bindTick","groupIndex","uniformsOut","destroyPrograms","gpu","localUniformMSDFBit","localUniformMSDFBitGl","mSDFBit","mSDFBitGl","SdfShader","BitmapTextPipe","bitmapText","graphicsRenderable","syncWithProxy","renderableUid","proxyGraphics","bitmapTextLayout","proxyRenderable","worldScale","proxy","HTMLTextPipe","htmlText","htmlTextUid","isSafari","nssvg","nsxhtml","HTMLTextRenderData","foreignObject","svgRoot","styleElement","domElement","textStyleToCSS","cssStyles","strokeToCSS","dropShadowToCSS","tagStyleToCSS","dropShadowStyle","templates","tagStyles","tagStyle","cssTagStyle","HTMLTextStyle","toAdd","toRemove","extractFontFamilies","dedupe","matches","addFontFamily","loadFontAsBase64","blob","reader","loadFontCSS","dataSrc","FontStylePromiseCache","getFontCss","defaultOptions","fontPromises","getSVGUrl","fontCSS","htmlTextData","getTemporaryCanvasFromImage","loadSVGImage","delay","tempHTMLTextRenderData","measureHtmlText","fontStyleCSS","htmlTextRenderData","contentBounds","descenderPadding","HTMLTextSystem","svgURL","F","_MeshGeometry","positionBuffer","MeshGeometry","localUniformBit","localUniformBitGroup2","localUniformBitGl","tilingBit","tilingBitGl","TilingSpriteShader","tilingUniforms","anchorX","anchorY","textureWidth","textureHeight","uTextureTransform","QuadGeometry","setPositions","tilingSprite","applyMatrix","setUvs","sharedQuad","TilingSpritePipe","renderable","tilingSpriteData","couldBatch","canBatch","renderableData","_nonPowOf2wrapping","A","_PlaneGeometry","verticesX","verticesY","sizeX","sizeY","totalSub","xpos","ypos","value3","value4","PlaneGeometry","_NineSliceGeometry","_h","scaleW","scaleH","_uvw","_uvh","NineSliceGeometry","NineSliceSpritePipe","gpuSprite","FilterPipe","filterEffect","_filterEffect","_container","getFastGlobalBounds","_getGlobalBoundsRecursive","manageEffects","localBounds","viewBounds","advanced","getGlobalRenderableBounds","renderables","quadGeometry","FilterSystem","filters","filterData","colorTextureSource","blendRequired","enabled","filter","viewPort","inputTexture","backTexture","previousBounds","renderTarget","flip","flop","lastRenderSurface","backgroundResolution","output","clear","isFinalTarget","filterUniforms","outputFrame","inputSize","inputPixel","inputClamp","globalFrame","outputTexture","rootTexture","batchUniforms","outputMatrix","mappedMatrix","environments","autoDetectEnvironment","manageImports","env","unsafeEval","unsafeEvalSupported","CLEAR","O","SystemRunner","a0","a6","a7","defaultRunners","_AbstractRenderer","config","combinedRunners","systemName","defaultSystemOptions","deprecated","isRGBAArray","desiredScreenWidth","desiredScreenHeight","clearColor","runnerIds","runnerId","systems","ClassRef","pipes","pipeAdaptors","adaptors","pipe","PipeClass","Adaptor","runner","AbstractRenderer","_isWebGLSupported","isWebGLSupported","failIfMajorPerformanceCaveat","contextOptions","success","loseContext","_isWebGPUSupported","isWebGPUSupported","renderPriority","autoDetectRenderer","RendererClass","finalOptions","rendererType","WebGPURenderer","WebGPURenderer$1","WebGLRenderer","WebGLRenderer$1","_Application","plugin","rendererDestroyOptions","plugins","Application","BackgroundLoader","verbose","assetUrls","toLoad","toLoadAmount","cacheTextureArray","testImageFormat","imageData","detectAvif","formats","imageFormats","detectDefaults","inWorker","testVideoFormat","mimeType","detectMp4","detectOgv","detectWebm","detectWebp","R","Loader","parserX","assetsToLoadIn","onProgress","assetsToLoad","assetsToUnloadIn","loadPromise","loadedAsset","hash","checkDataUrl","mimes","mime","checkExtension","tempURL","validJSONExtension","validJSONMIME","loadJson","validTXTExtension","validTXTMIME","loadTxt","validWeights","validFontExtensions","validFontMIMEs","CSS_IDENT_TOKEN_REGEX","getFontFamilyName","nameTokens","valid","fontFamilyName","validURICharactersRegex","encodeURIWhenNeeded","uri","loadWebFont","fonts","fontFaces","weights","weight","getResolutionOfUrl","createTexture","unload","validSVGExtension","validSVGMIME","loadSvg","loadAsGraphics","loadAsTexture","crossOrigin","blobUrl","_p","svgSource","UUID","MAX_WORKERS","u$l","worker","CheckImageBitmapWorker","LoadImageBitmapWorker","toDo","WorkerManager","WorkerManagerClass","validImageExtensions","validImageMIMEs","loadImageBitmap","response","imageBlob","loadTextures","validVideoExtensions","validVideoMIMEs","crossorigin","determineCrossOrigin","preloadVideo","loaded","error","cleanup","err","loc","parsedUrl","loadVideoTextures","isValidDataUrl","isValidExtension","videoElement","attributeMap","sourceElement","onCanPlay","resolveTextureUrl","resolveJsonUrl","AssetsClass","resolutionPref","urls","urlArray","resolveResults","_onProgress","resolveResult","resolveArray","loadedAssets","detection","preferences","Assets","assetKeyMap","ref","detectBasis","CompressedSource","supportedGLCompressedTextureFormats","getSupportedGlCompressedTextureFormats","supportedGPUCompressedTextureFormats","getSupportedGPUCompressedTextureFormats","supportedCompressedTextureFormats","getSupportedCompressedTextureFormats","gpuTextureFormats","glTextureFormats","nonCompressedFormats","supportedTextureFormats","getSupportedTextureFormats","compressedTextureFormats","basisTranscoderUrls","setBasisTranscoderPath","basisWorker","urlHash","getBasisWorker","supportedTextures","BasisWorker","messageEvent","loadBasisOnWorker","ktxWorker","loadBasis","_asset","compressedTextureSource","createLevelBuffers","basisTexture","basisTranscoderFormat","images","levels","levelBuffers","levelIndex","sliceIndex","transcodeSize","levelBuffer","gpuFormatToBasisTranscoderFormatMap","gpuFormatToBasisTranscoderFormat","transcoderFormat","DDS_HEADER_FIELDS","DDS_DX10_FIELDS","DXGI_FORMAT","D3D10_RESOURCE_DIMENSION","fourCCToInt32","D3DFMT","FOURCC_TO_TEXTURE_FORMAT","DXGI_TO_TEXTURE_FORMAT","DDS","TEXTURE_FORMAT_BLOCK_SIZE","parseDDS","arrayBuffer","supportedFormats","fourCC","dataOffset","mipmapCount","parseDDSHeader","getMipmapLevelBuffers","blockBytes","mipWidth","mipHeight","byteLength","header","flags","getTextureFormat","dx10Header","dxgiFormat","getUncompressedTextureFormat","bitCount","rBitMask","gBitMask","bBitMask","aBitMask","loadDDS","ddsArrayBuffer","GL_INTERNAL_FORMAT","GL_FORMATS","GL_TYPES","KTX","parseKTX","dataView","validate","littleEndian","glType","glFormat","glInternalFormat","numberOfMipmapLevels","parseKTXHeader","textureFormat","imagePixelByteSize","getImagePixelByteSize","imageBuffers","getImageBuffers","alignedWidth","alignedHeight","imagePixels","mipByteSize","alignedMipWidth","alignedMipHeight","imageOffset","mipmapLevel","imageSize","elementOffset","pixelDepth","numberOfArrayElements","numberOfFaces","bytesOfKeyValueData","loadKTX","ktxArrayBuffer","ktxTranscoderUrls","setKTXTranscoderPath","getKTX2Worker","KTXWorker","loadKTX2onWorker","loadKTX2","converters","convertRGBtoRGBA","convertFormatIfRequired","convertFunction","pixelCount","levelBufferWithAlpha","createLevelBuffersFromKTX","ktxTexture","glFormatToGPUFormatMap","glFormatToGPUFormat","vkFormatToGPUFormatMap","vkFormatToGPUFormat","vkFormat","getTextureFormatFromKTXTexture","gpuFormatToKTXBasisTranscoderFormat","validFormats","resolveCompressedTextureUrl","splitValue","newFormat","compressedTextureExtensions","detectCompressed","extractExtensionsForCompressedTextureFormats","dupeMap","aIndex","bIndex","_Culler","view","Culler","CullerPlugin","browserExt","_Filter","filterManager","clearMode","Filter","BlendModeFilter","gpuOptions","gpuSource","compileBlendModeShader","blendTemplate","glOptions","glSource","blendTemplateFrag","blendTemplateVert","uniformGroup","functions","main","hslgl","hslgpu","_AlphaFilter","alphaUniforms","AlphaFilter","GAUSSIAN_VALUES","fragTemplate","generateBlurFragSource","kernelSize","kernel","halfLength","fragSource","blurLoop","blur","vertTemplate","generateBlurVertSource","vertSource","generateBlurGlProgram","horizontal","generateBlurProgram","blurStructSource","blurOutSource","blurSamplingSource","kernelIndex","kernelValue","blurStruct","blurOut","blurSampling","finalSource","_BlurFilterPass","tempTexture","BlurFilterPass","BlurFilter","strength","quality","xStrength","yStrength","ColorMatrixFilter","colorMatrixUniforms","multiply","newMatrix","cosR","sinR","sqrt","sqrW","a00","a01","a02","a10","a11","a12","a20","a21","a22","desaturation","toned","lightColor","darkColor","lR","lG","lB","dR","dG","dB","intensity","DisplacementFilter","scaleOption","lenX","lenY","_NoiseFilter","noise","seed","NoiseFilter","MaskFilter","v2x","v2y","v1x","v1y","v0x","v0y","dot00","dot01","dot02","dot11","dot12","invDenom","Triangle","pointX","pointY","halfStrokeWidthSquared","triangle","_PrepareBase","itemsProcessed","queueItem","resourceArray","resourceItem","nextUnique","resolves","PrepareBase","Mesh","step","ind0","ind1","ind2","AnimatedSprite","autoUpdate","frameNumber","deltaTime","elapsed","previousFrame","lag","currentFrame","frames","Transform","_TilingSprite","tilePosition","tileScale","tileRotation","applyAnchorToTexture","TilingSprite","AbstractText","styleClass","ensureOptions","Text","canvasMeasurement","PrepareQueue","textureOrFrame","BitmapText","bitmapMeasurement","HTMLText","htmlMeasurement","PrepareUpload","_text","PrepareSystem","GlBatchAdaptor","batcherPipe","generateGPULayout","generateLayout","tempState","GpuBatchAdaptor","encoder","program","globalUniformsBindGroup","gpuBindGroup","pipeline","BatcherPipe","activeBatch","formatShader","spl","indent","indentedLine","textureBit","textureBitGl","buildInstructions","renderPipes","collectAllRenderablesAdvanced","collectAllRenderables","rendererPipes","collectAllRenderablesSimple","renderPipeId","AlphaMaskEffect","AlphaMaskPipe","maskedContainer","maskContainer","_maskedContainer","renderMask","filterTexture","maskData","ColorMaskPipe","colorStack","currentColor","_mask","ScissorMask","StencilMaskPipe","instructionsLength","renderTargetUid","maskStackIndex","BUFFER_TYPE","GlBuffer","GlBufferSystem","glBuffer","drawType","contextLost","_GlContextSystem","premultipliedAlpha","preferWebGLVersion","provokeExt","supports","isWebGl2","GlContextSystem","warnCount","maxWarnings","warn","ensureAttributes","extractedData","attributeData","ensureStartAndStride","buffers","tempStride","tempStart","GL_TARGETS","GL_WRAP_MODES","infoMap","getGlTypeFromFormat","topologyToGlMap","GlGeometrySystem","nativeVaoExtension","vao","nativeInstancedExtension","bufferSystem","geometryAttributes","shaderAttributes","attribs","strings","_incRefCount","signature","vaoObjectHash","lastBuffer","programAttrib","attributeInfo","instanceCount","glTopology","bigTriangleGeometry","_GlBackBufferSystem","useBackBuffer","bigTriangleProgram","targetSourceTexture","GlBackBufferSystem","GlColorMaskSystem","colorMask","GlEncoderSystem","skipSync","GlRenderTarget","GpuStencilModesToPixi","GlStencilSystem","stencilState","stencilMode","stencilReference","_stencilCache","UboSystem","uniformGroupSignature","syncFunction","uboElements","uniformGroupData","synced","WGSL_TO_STD40_SIZE","createUboElementsSTD40","chunkSize","uboElement","lineUpValue","uniformParsers","createUboSyncFunction","parserCode","arrayGenerationFunction","singleSettersMap","funcFragments","parsed","fragmentSrc","loopMatrix","col","uboSyncFunctionsSTD40","uboSyncFunctionsWGSL","generateArraySyncSTD40","offsetToAdd","rowSize","elementSize","remainder","createUboSyncFunctionSTD40","GlUboSystem","GlRenderTargetAdaptor","renderTargetSystem","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest","glRenderTarget","viewport","gpuRenderTarget","viewPortY","viewPortCache","renderBuffer","_renderTarget","clearColorCache","clearColorArray","resolveTargetFramebuffer","colorTexture","glTexture","viewFramebuffer","msaaRenderBuffer","depthStencilRenderBuffer","calculateProjection","pm","flipY","C","canvasCache","getCanvasTexture","onDestroy","hasCachedCanvasTexture","isRenderingToScreen","_RenderTarget","descriptor","colorSource","_size","skipColorTexture","RenderTarget","RenderTargetSystem","renderSurface","currentRenderTargetData","GlRenderTargetSystem","BufferResource","destroyBuffer","generateShaderSyncCode","shaderSystem","headerFragments","addedTextreSystem","blockIndex","textureCount","programData","functionSource","IGLUniformData","GlProgramData","compileShader","booleanArray","GL_TABLE","GL_TO_GLSL_TYPES","GLSL_TO_VERTEX_TYPES","mapType","typeNames","tn","mapGlToVertexFormat","typeValue","extractAttributesFromGlProgram","sortAttributes","totalAttributes","attribData","getUboData","uniformBlocks","totalUniformsBlocks","uniformBlockIndex","getUniformData","totalUniforms","isArray","logPrettyShaderError","shaderSrc","shaderLog","splitShader","lineNumbers","logArgs","fragmentSourceToLog","logProgramError","vertexShader","fragmentShader","generateProgram","glVertShader","glFragShader","webGLProgram","transformFeedbackVaryings","defaultSyncData","GlShaderSystem","isBufferResource","boundIndex","nextIndex","currentBoundUniformGroup","UNIFORM_TO_SINGLE_SETTERS","UNIFORM_TO_ARRAY_SETTERS","generateUniformsSync","uniform","GlUniformGroupSystem","syncData","uniformGroupSyncHash","preFix","migrateFragmentFromV7toV8","GLSL_TO_SIZE","mapSize","mapWebGLBlendModesToPixi","blendMap","_GlStateSystem","diff","GlStateSystem","GlTexture","glUploadBufferImageResource","compressedFormatMap","glUploadCompressedTextureResource","compressed","glUploadImageResource","webGLVersion","glWidth","glHeight","resourceWidth","resourceHeight","glUploadVideoResource","scaleModeToGlFilter","mipmapScaleModeToGlFilter","wrapModeToGlAddress","compareModeToGlCompare","applyStyleParams","mipmaps","anisotropicExt","glFunctionName","firstParam","forceClamp","firstCreation","castParam","wrapModeS","wrapModeT","wrapModeR","glFilterMode","mapFormatToGlFormat","mapFormatToGlInternalFormat","srgb","bgra8unorm","mapFormatToGlType","unpremultiplyAlpha","pixels","BYTES_PER_PIXEL","GlTextureSystem","sampler","boundTextures","biggestDimension","bind","glSampler","glRenterTarget","GlGraphicsAdaptor","graphicsPipe","contextSystem","GlMeshAdaptor","meshPipe","CustomRenderPipe","executeInstructions","RenderGroupPipe","collectRenderGroups","mixHexColors","WHITE_BGR","mixColors","localBGRColor","parentBGRColor","mixStandardAnd32BitColors","localColorRGB","localAlpha","parentColor","parentAlpha","globalAlpha","sharedBGRColor","tempContainer","updateRenderGroupTransforms","updateChildRenderGroups","updateRenderGroupTransform","updateTick","childrenAtDepth","updateTransformAndChildren","worldAlpha","updateFlags","updateColorBlendVisibility","groupAlpha","validateRenderables","rebuildRequired","RenderGroupSystem","renderGroups","originalLocalTransform","updateRenderables","SpritePipe","_BackgroundSystem","BackgroundSystem","BLEND_MODE_FILTERS","BlendModePipe","imageTypes","_ExtractSystem","pixelInfo","link","base64","ExtractSystem","RenderTexture","noColor","GenerateTextureSystem","region","GlobalUniformSystem","projectionMatrix","worldTransformMatrix","worldColor","currentGlobalUniformData","globalUniformData","saidHello","VERSION","sayHello","HelloSystem","_TextureGCSystem","managedTextures","TextureGCSystem","_ViewSystem","ViewSystem","SharedSystems","SharedRenderPipes","DefaultWebGLSystems","DefaultWebGLPipes","DefaultWebGLAdapters","renderPipeAdaptors","systemConfig","BindGroupSystem","device","groupLayout","entries","gpuResource","bufferResource","GpuBufferSystem","GpuReadBuffer","bufferSize","stagingBuffer","stagingGPUBuffer","commandEncoder","UboBatch","minUniformOffsetAlignment","GpuColorMaskSystem","GpuDeviceSystem","requiredFeatures","feature","GpuEncoderSystem","indexFormat","boundPipeline","boundVertexBuffer","boundIndexBuffer","boundBindGroup","GpuStencilSystem","WGSL_ALIGN_SIZE_DATA","createUboElementsWGSL","align","generateArraySyncWGSL","createUboSyncFunctionWGSL","GpuUboSystem","GpuUniformBatchPipe","totalBuffers","duplicate","firstBuffer","topologyStringToId","getGraphicsStateKey","geometryLayout","shaderKey","getGlobalStateKey","stencilStateId","multiSampleCount","PipelineSystem","multisampleCount","passEncoder","blendModes","keyGen","attributeKeys","stringKey","vertexBuffersLayout","bufferEntry","bufferEntryAttributes","GpuRenderTarget","GpuRenderTargetAdaptor","baseGpuTexture","backGpuTexture","clearValue","colorAttachments","resolveTarget","loadOp","depthStencilAttachment","stencilLoadOp","depthLoadOp","renderPassDescriptor","gpuCommands","alphaMode","msaaTexture","GpuRenderTargetSystem","GpuShaderSystem","bindGroups","pipelineLayoutDesc","GpuBlendModesToPixi","GpuStateSystem","gpuUploadBufferImageResource","gpuTexture","bytesPerPixel","blockDataMap","defaultBlockData","gpuUploadCompressedTextureResource","blockData","bytesPerRow","gpuUploadImageResource","gpuUploadVideoResource","GpuMipmapGenerator","mipTexture","arrayLayerCount","renderToSource","mipTextureDescriptor","bindGroupLayout","arrayLayer","srcView","dstMipLevel","dstView","mipLevelSize","GpuTextureSystem","textureDescriptor","bindGroupId","webGPUCanvas","GpuGraphicsAdaptor","localBindGroup","GpuMeshAdapter","DefaultWebGPUSystems","DefaultWebGPUPipes","DefaultWebGPUAdapters","DEPRECATED_DRAW_MODES","DRAW_MODES","fullFrame","viewportFromFrame","MSAA_QUALITY","DEPRECATED_WRAP_MODES","WRAP_MODES","DEPRECATED_SCALE_MODES","SCALE_MODES","TextureUvs","baseFrame","tw","th","uidCount","generateUID","parseFunctionBody","fnStr","bodyStart","bodyEnd","RenderContainer","render","updateLocalTransform","updateWorldTransform","local","world","lta","ltb","ltc","ltd","lttx","ltty","pta","ptb","ptc","ptd","buildGeometryFromPath","MeshPlane","planeGeometry","_RopeGeometry","textureScale","vertexBuffer","perpLength","RopeGeometry","_MeshRope","ropeGeometry","MeshRope","MeshSimple","getTextureDefaultMatrix","X","V","_NineSliceSprite","_i","_j","_k","leftWidth","rightWidth","topHeight","bottomHeight","NineSliceSprite","NineSlicePlane","ensureTextStyle","renderMode","DATA_URI","logDebugTexture","colors","colorTick","logScene","spaces","logRenderGroupScene"],"mappings":"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E,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAKD,EAAE,EAAE,EAGpFuE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,CAAC,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAAMD,EAAE,EAAE,EAAIC,EAAE,EAAE,EAC3EsE,EAAI,EAAE,EAAKvE,EAAE,EAAE,E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","x_google_ignoreList":[1,2,3,34,111,135]} \ No newline at end of file diff --git a/test_files/basic_diagram.excalidraw b/test_files/basic_diagram.excalidraw new file mode 100644 index 0000000..1318831 --- /dev/null +++ b/test_files/basic_diagram.excalidraw @@ -0,0 +1,1520 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "http://localhost:8080", + "elements": [ + { + "id": "JUIfCHQnzWuxQq4x3bHpr", + "type": "line", + "x": 880, + "y": 280, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1218154726, + "version": 22, + "versionNonce": 2058593082, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "DXuLy70Hyx80RI6vDWLEy", + "type": "line", + "x": 880, + "y": 240, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1531831994, + "version": 17, + "versionNonce": 1983300966, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "gLkPXEB7fTYT11GZ63O5R", + "type": "line", + "x": 880, + "y": 320, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1418084646, + "version": 23, + "versionNonce": 1099901946, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "zb2k4akG5PHQq8MzRfKPz", + "type": "line", + "x": 880, + "y": 400, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1316669798, + "version": 27, + "versionNonce": 1128605862, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "jLr8YKZG3v74i7PWBee1o", + "type": "line", + "x": 880, + "y": 440, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1374291174, + "version": 30, + "versionNonce": 1568382138, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "f89jb5VwMnRah4ld0xJek", + "type": "line", + "x": 880, + "y": 480, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 2051814694, + "version": 33, + "versionNonce": 2133140454, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "HTIx0w9nIetTyfCKr2w_P", + "type": "line", + "x": 880, + "y": 520, + "width": 180, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1443380582, + "version": 37, + "versionNonce": 1276900730, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 180, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "8Tj6LWcBmxRWL5KM9B3WN", + "type": "rectangle", + "x": 940, + "y": 200, + "width": 60, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1625759162, + "version": 19, + "versionNonce": 199472934, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "8w4RDgGoNPt6FXsavyxBI" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "8w4RDgGoNPt6FXsavyxBI", + "type": "text", + "x": 958.28125, + "y": 208, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 888382246, + "version": 16, + "versionNonce": 1588803130, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "PC", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "8Tj6LWcBmxRWL5KM9B3WN", + "originalText": "PC", + "lineHeight": 1.2 + }, + { + "id": "B6msNcyAp-SuqYMisq9Mr", + "type": "rectangle", + "x": 900, + "y": 240, + "width": 140, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 45286374, + "version": 28, + "versionNonce": 32367206, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "IbPASz89jWarSFPEVOiy7" + }, + { + "id": "zQ7JAn-1sHeF242RFs4FS", + "type": "arrow" + }, + { + "id": "sWWcA3E4mNQKjyK8FaHdl", + "type": "arrow" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "IbPASz89jWarSFPEVOiy7", + "type": "text", + "x": 940.703125, + "y": 268, + "width": 58.59375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1352630950, + "version": 22, + "versionNonce": 1176788730, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "Fetch", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "B6msNcyAp-SuqYMisq9Mr", + "originalText": "Fetch", + "lineHeight": 1.2 + }, + { + "id": "4XY2cMjjMs2Xd48vJzV2y", + "type": "rectangle", + "x": 900, + "y": 320, + "width": 140, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 91568698, + "version": 23, + "versionNonce": 1678812582, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "nPmv3NxrSNTCQUduFDcrb" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "nPmv3NxrSNTCQUduFDcrb", + "type": "text", + "x": 928.984375, + "y": 328, + "width": 82.03125, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1492521978, + "version": 19, + "versionNonce": 519204794, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "decoder", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "4XY2cMjjMs2Xd48vJzV2y", + "originalText": "decoder", + "lineHeight": 1.2 + }, + { + "id": "J61LH7w6m8oCEdVMvzlom", + "type": "rectangle", + "x": 900, + "y": 360, + "width": 140, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1526103034, + "version": 32, + "versionNonce": 1400439014, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "4sXKPV-Nm3p6YiFkY1NMD" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "4sXKPV-Nm3p6YiFkY1NMD", + "type": "text", + "x": 911.40625, + "y": 368, + "width": 117.1875, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 408273978, + "version": 38, + "versionNonce": 2101373050, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "dispatcher", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "J61LH7w6m8oCEdVMvzlom", + "originalText": "dispatcher", + "lineHeight": 1.2 + }, + { + "id": "4lbOgzOeYtL2osH7qhe-p", + "type": "rectangle", + "x": 900, + "y": 400, + "width": 140, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 157527802, + "version": 29, + "versionNonce": 1135866918, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "I_JMKWaxOwle22PTCX7cG" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "I_JMKWaxOwle22PTCX7cG", + "type": "text", + "x": 928.984375, + "y": 408, + "width": 82.03125, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 919533818, + "version": 22, + "versionNonce": 2026981690, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "read RF", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "4lbOgzOeYtL2osH7qhe-p", + "originalText": "read RF", + "lineHeight": 1.2 + }, + { + "id": "LORfzsFDqx5rSrwk-wdrq", + "type": "rectangle", + "x": 900, + "y": 440, + "width": 140, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1117065914, + "version": 32, + "versionNonce": 783187814, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "3dyy05oDyFTEZleei6GUP" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "3dyy05oDyFTEZleei6GUP", + "type": "text", + "x": 952.421875, + "y": 448, + "width": 35.15625, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 304597306, + "version": 18, + "versionNonce": 956830202, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "ALU", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "LORfzsFDqx5rSrwk-wdrq", + "originalText": "ALU", + "lineHeight": 1.2 + }, + { + "id": "ZlyNNk05o0Ril1MgPKJ_R", + "type": "rectangle", + "x": 900, + "y": 480, + "width": 140, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1974476410, + "version": 39, + "versionNonce": 1219863206, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ZHqcbY8og6mJ1KnLCtpmj" + }, + { + "id": "2BVJWD5D-Jh0xc3u8BiWW", + "type": "arrow" + }, + { + "id": "wHUR2ScZCKsG_L9WcGXJO", + "type": "arrow" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "ZHqcbY8og6mJ1KnLCtpmj", + "type": "text", + "x": 952.421875, + "y": 508, + "width": 35.15625, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1023569446, + "version": 19, + "versionNonce": 15188666, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "LSU", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "ZlyNNk05o0Ril1MgPKJ_R", + "originalText": "LSU", + "lineHeight": 1.2 + }, + { + "id": "U_JIyTGxNWFtATUncdgu5", + "type": "rectangle", + "x": 900, + "y": 560, + "width": 140, + "height": 40, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1526206842, + "version": 41, + "versionNonce": 880172518, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-nlVthpFAJc8FIBzlyjBC" + } + ], + "updated": 1728832566562, + "link": null, + "locked": false + }, + { + "id": "-nlVthpFAJc8FIBzlyjBC", + "type": "text", + "x": 923.125, + "y": 568, + "width": 93.75, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 882439398, + "version": 25, + "versionNonce": 991124346, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "RF write", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 19, + "containerId": "U_JIyTGxNWFtATUncdgu5", + "originalText": "RF write", + "lineHeight": 1.2 + }, + { + "id": "zQ7JAn-1sHeF242RFs4FS", + "type": "arrow", + "x": 1040, + "y": 260, + "width": 40, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1503793510, + "version": 99, + "versionNonce": 922595622, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 40, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "B6msNcyAp-SuqYMisq9Mr", + "focus": -0.5, + "gap": 1 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle" + }, + { + "id": "sWWcA3E4mNQKjyK8FaHdl", + "type": "arrow", + "x": 1080, + "y": 300, + "width": 40, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 370272358, + "version": 10, + "versionNonce": 97377338, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -40, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "elementId": "B6msNcyAp-SuqYMisq9Mr", + "focus": 0.5, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "triangle" + }, + { + "id": "2BVJWD5D-Jh0xc3u8BiWW", + "type": "arrow", + "x": 1040, + "y": 500, + "width": 40, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 580838202, + "version": 12, + "versionNonce": 1807260774, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 40, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "ZlyNNk05o0Ril1MgPKJ_R", + "focus": -0.5, + "gap": 1 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle" + }, + { + "id": "wHUR2ScZCKsG_L9WcGXJO", + "type": "arrow", + "x": 1080, + "y": 540, + "width": 40, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1834074342, + "version": 11, + "versionNonce": 1056589050, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -40, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": { + "elementId": "ZlyNNk05o0Ril1MgPKJ_R", + "focus": 0.5, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "triangle" + }, + { + "id": "w1_p4oQ1RSvUtmKBbHzm6", + "type": "text", + "x": 1096.0086813760624, + "y": 248.29750963056125, + "width": 105.46875, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 169774906, + "version": 19, + "versionNonce": 2020876198, + "isDeleted": false, + "boundElements": null, + "updated": 1728832566562, + "link": null, + "locked": false, + "text": "fetch cmd", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "fetch cmd", + "lineHeight": 1.2 + }, + { + "id": "_39bD1uPKRO1KZR4p7Z_J", + "type": "text", + "x": 1095.0842871509444, + "y": 288.14161131648234, + "width": 105.46875, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1005024486, + "version": 80, + "versionNonce": 386816058, + "isDeleted": false, + "boundElements": null, + "updated": 1728832596795, + "link": null, + "locked": false, + "text": "fetch rsp", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "fetch rsp", + "lineHeight": 1.2 + }, + { + "id": "mdf3ue1U9PzyM8ZcTILbV", + "type": "text", + "x": 1093.9686656758083, + "y": 488.62321104234087, + "width": 82.03125, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1710325478, + "version": 121, + "versionNonce": 1907514490, + "isDeleted": false, + "boundElements": null, + "updated": 1728832632755, + "link": null, + "locked": false, + "text": "lsu cmd", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "lsu cmd", + "lineHeight": 1.2 + }, + { + "id": "L_yrY7h-H6qP9K55Tdx0Q", + "type": "text", + "x": 1093.9098081089924, + "y": 528.1314066232324, + "width": 82.03125, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 168346598, + "version": 227, + "versionNonce": 2127431014, + "isDeleted": false, + "boundElements": null, + "updated": 1728832639635, + "link": null, + "locked": false, + "text": "lsu rsp", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "lsu rsp", + "lineHeight": 1.2 + }, + { + "id": "fMi2U7Yqm_VDHnuCQUPBf", + "type": "text", + "x": 839.0909465143416, + "y": 207.87717496640562, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 988570598, + "version": 65, + "versionNonce": 1042206630, + "isDeleted": false, + "boundElements": null, + "updated": 1728832950819, + "link": null, + "locked": false, + "text": "F0", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "F0", + "lineHeight": 1.2 + }, + { + "id": "71wj-lVJg_yTeC-v-RF5Y", + "type": "text", + "x": 838.9033700156151, + "y": 326.37486079159004, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1180900986, + "version": 129, + "versionNonce": 1328178874, + "isDeleted": false, + "boundElements": null, + "updated": 1728833052697, + "link": null, + "locked": false, + "text": "D1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "D1", + "lineHeight": 1.2 + }, + { + "id": "VFb6ELy49vPaYhWLGG5o2", + "type": "text", + "x": 839.675220836125, + "y": 407.22327586902304, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1722699386, + "version": 273, + "versionNonce": 636238266, + "isDeleted": false, + "boundElements": null, + "updated": 1728833056315, + "link": null, + "locked": false, + "text": "E0", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "E0", + "lineHeight": 1.2 + }, + { + "id": "yw3P5417wgsNhobhJAnGt", + "type": "text", + "x": 839.2563376018769, + "y": 447.58689206422133, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1813304186, + "version": 411, + "versionNonce": 1757098982, + "isDeleted": false, + "boundElements": null, + "updated": 1728833059505, + "link": null, + "locked": false, + "text": "E1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "E1", + "lineHeight": 1.2 + }, + { + "id": "YZ455Vs3HWL84n2UrEihW", + "type": "text", + "x": 838.8374543676287, + "y": 486.1643958216009, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1664553786, + "version": 544, + "versionNonce": 2038894822, + "isDeleted": false, + "boundElements": null, + "updated": 1728833062586, + "link": null, + "locked": false, + "text": "E2", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "E2", + "lineHeight": 1.2 + }, + { + "id": "5jyRjwFXJki6vbffum7mb", + "type": "text", + "x": 838.5240859366968, + "y": 527.5453734299459, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1920481402, + "version": 889, + "versionNonce": 452750822, + "isDeleted": false, + "boundElements": null, + "updated": 1728833065633, + "link": null, + "locked": false, + "text": "E3", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "E3", + "lineHeight": 1.2 + }, + { + "id": "DD2e0ybw4IP5mZj98XNy9", + "type": "text", + "x": 839.2964464641458, + "y": 248.40425650118016, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1235229562, + "version": 84, + "versionNonce": 2007122106, + "isDeleted": false, + "boundElements": null, + "updated": 1728833045154, + "link": null, + "locked": false, + "text": "F1", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "F1", + "lineHeight": 1.2 + }, + { + "id": "q4Fo8RFOZIu7SYKtb45fF", + "type": "text", + "x": 839.4729084119813, + "y": 287.3791113271115, + "width": 23.4375, + "height": 24, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 16625466, + "version": 43, + "versionNonce": 1856443322, + "isDeleted": false, + "boundElements": null, + "updated": 1728833049761, + "link": null, + "locked": false, + "text": "F2", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 19, + "containerId": null, + "originalText": "F2", + "lineHeight": 1.2 + } + ], + "appState": { + "gridSize": 20, + "viewBackgroundColor": "#f5faff" + }, + "files": {} +} \ No newline at end of file